blob: e0e948e16ca2fd88cbe059ff2b5a8205ec196a9c [file] [log] [blame]
James Zernca163b82015-10-29 16:42:26 -07001/*
2 * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef VP9_VP9_DX_IFACE_H_
12#define VP9_VP9_DX_IFACE_H_
13
14#include "vp9/decoder/vp9_decoder.h"
15
16typedef vpx_codec_stream_info_t vp9_stream_info_t;
17
18// This limit is due to framebuffer numbers.
19// TODO(hkuang): Remove this limit after implementing ondemand framebuffers.
20#define FRAME_CACHE_SIZE 6 // Cache maximum 6 decoded frames.
21
22typedef struct cache_frame {
23 int fb_idx;
24 vpx_image_t img;
25} cache_frame;
26
27struct vpx_codec_alg_priv {
28 vpx_codec_priv_t base;
29 vpx_codec_dec_cfg_t cfg;
30 vp9_stream_info_t si;
31 int postproc_cfg_set;
32 vp8_postproc_cfg_t postproc_cfg;
33 vpx_decrypt_cb decrypt_cb;
34 void *decrypt_state;
35 vpx_image_t img;
36 int img_avail;
37 int flushed;
38 int invert_tile_order;
39 int last_show_frame; // Index of last output frame.
40 int byte_alignment;
41 int skip_loop_filter;
42
43 // Frame parallel related.
44 int frame_parallel_decode; // frame-based threading.
45 VPxWorker *frame_workers;
46 int num_frame_workers;
47 int next_submit_worker_id;
48 int last_submit_worker_id;
49 int next_output_worker_id;
50 int available_threads;
51 cache_frame frame_cache[FRAME_CACHE_SIZE];
52 int frame_cache_write;
53 int frame_cache_read;
54 int num_cache_frames;
55 int need_resync; // wait for key/intra-only frame
56 // BufferPool that holds all reference frames. Shared by all the FrameWorkers.
57 BufferPool *buffer_pool;
58
59 // External frame buffer info to save for VP9 common.
60 void *ext_priv; // Private data associated with the external frame buffers.
61 vpx_get_frame_buffer_cb_fn_t get_ext_fb_cb;
62 vpx_release_frame_buffer_cb_fn_t release_ext_fb_cb;
63};
64
65#endif // VP9_VP9_DX_IFACE_H_