Merge changes I3b89e7a6,I8ef772a0
* changes: vp9_dx_iface: move struct defs to separate header vp9_decodeframe.h: add missing include
This commit is contained in:
Коммит
082434b274
|
@ -14,9 +14,7 @@
|
|||
#include "test/encode_test_driver.h"
|
||||
#include "test/util.h"
|
||||
#include "test/y4m_video_source.h"
|
||||
#include "vp9/decoder/vp9_decoder.h"
|
||||
|
||||
#include "vp9/vp9_dx_iface.c"
|
||||
#include "vp9/vp9_dx_iface.h"
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "vp9/common/vp9_enums.h"
|
||||
|
||||
struct VP9Decoder;
|
||||
struct vpx_read_bit_buffer;
|
||||
|
||||
|
|
|
@ -24,62 +24,13 @@
|
|||
#include "vp9/common/vp9_alloccommon.h"
|
||||
#include "vp9/common/vp9_frame_buffers.h"
|
||||
|
||||
#include "vp9/decoder/vp9_decoder.h"
|
||||
#include "vp9/decoder/vp9_decodeframe.h"
|
||||
|
||||
#include "vp9/vp9_dx_iface.h"
|
||||
#include "vp9/vp9_iface_common.h"
|
||||
|
||||
#define VP9_CAP_POSTPROC (CONFIG_VP9_POSTPROC ? VPX_CODEC_CAP_POSTPROC : 0)
|
||||
|
||||
typedef vpx_codec_stream_info_t vp9_stream_info_t;
|
||||
|
||||
// This limit is due to framebuffer numbers.
|
||||
// TODO(hkuang): Remove this limit after implementing ondemand framebuffers.
|
||||
#define FRAME_CACHE_SIZE 6 // Cache maximum 6 decoded frames.
|
||||
|
||||
typedef struct cache_frame {
|
||||
int fb_idx;
|
||||
vpx_image_t img;
|
||||
} cache_frame;
|
||||
|
||||
struct vpx_codec_alg_priv {
|
||||
vpx_codec_priv_t base;
|
||||
vpx_codec_dec_cfg_t cfg;
|
||||
vp9_stream_info_t si;
|
||||
int postproc_cfg_set;
|
||||
vp8_postproc_cfg_t postproc_cfg;
|
||||
vpx_decrypt_cb decrypt_cb;
|
||||
void *decrypt_state;
|
||||
vpx_image_t img;
|
||||
int img_avail;
|
||||
int flushed;
|
||||
int invert_tile_order;
|
||||
int last_show_frame; // Index of last output frame.
|
||||
int byte_alignment;
|
||||
int skip_loop_filter;
|
||||
|
||||
// Frame parallel related.
|
||||
int frame_parallel_decode; // frame-based threading.
|
||||
VPxWorker *frame_workers;
|
||||
int num_frame_workers;
|
||||
int next_submit_worker_id;
|
||||
int last_submit_worker_id;
|
||||
int next_output_worker_id;
|
||||
int available_threads;
|
||||
cache_frame frame_cache[FRAME_CACHE_SIZE];
|
||||
int frame_cache_write;
|
||||
int frame_cache_read;
|
||||
int num_cache_frames;
|
||||
int need_resync; // wait for key/intra-only frame
|
||||
// BufferPool that holds all reference frames. Shared by all the FrameWorkers.
|
||||
BufferPool *buffer_pool;
|
||||
|
||||
// External frame buffer info to save for VP9 common.
|
||||
void *ext_priv; // Private data associated with the external frame buffers.
|
||||
vpx_get_frame_buffer_cb_fn_t get_ext_fb_cb;
|
||||
vpx_release_frame_buffer_cb_fn_t release_ext_fb_cb;
|
||||
};
|
||||
|
||||
static vpx_codec_err_t decoder_init(vpx_codec_ctx_t *ctx,
|
||||
vpx_codec_priv_enc_mr_cfg_t *data) {
|
||||
// This function only allocates space for the vpx_codec_alg_priv_t
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright (c) 2015 The WebM project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#ifndef VP9_VP9_DX_IFACE_H_
|
||||
#define VP9_VP9_DX_IFACE_H_
|
||||
|
||||
#include "vp9/decoder/vp9_decoder.h"
|
||||
|
||||
typedef vpx_codec_stream_info_t vp9_stream_info_t;
|
||||
|
||||
// This limit is due to framebuffer numbers.
|
||||
// TODO(hkuang): Remove this limit after implementing ondemand framebuffers.
|
||||
#define FRAME_CACHE_SIZE 6 // Cache maximum 6 decoded frames.
|
||||
|
||||
typedef struct cache_frame {
|
||||
int fb_idx;
|
||||
vpx_image_t img;
|
||||
} cache_frame;
|
||||
|
||||
struct vpx_codec_alg_priv {
|
||||
vpx_codec_priv_t base;
|
||||
vpx_codec_dec_cfg_t cfg;
|
||||
vp9_stream_info_t si;
|
||||
int postproc_cfg_set;
|
||||
vp8_postproc_cfg_t postproc_cfg;
|
||||
vpx_decrypt_cb decrypt_cb;
|
||||
void *decrypt_state;
|
||||
vpx_image_t img;
|
||||
int img_avail;
|
||||
int flushed;
|
||||
int invert_tile_order;
|
||||
int last_show_frame; // Index of last output frame.
|
||||
int byte_alignment;
|
||||
int skip_loop_filter;
|
||||
|
||||
// Frame parallel related.
|
||||
int frame_parallel_decode; // frame-based threading.
|
||||
VPxWorker *frame_workers;
|
||||
int num_frame_workers;
|
||||
int next_submit_worker_id;
|
||||
int last_submit_worker_id;
|
||||
int next_output_worker_id;
|
||||
int available_threads;
|
||||
cache_frame frame_cache[FRAME_CACHE_SIZE];
|
||||
int frame_cache_write;
|
||||
int frame_cache_read;
|
||||
int num_cache_frames;
|
||||
int need_resync; // wait for key/intra-only frame
|
||||
// BufferPool that holds all reference frames. Shared by all the FrameWorkers.
|
||||
BufferPool *buffer_pool;
|
||||
|
||||
// External frame buffer info to save for VP9 common.
|
||||
void *ext_priv; // Private data associated with the external frame buffers.
|
||||
vpx_get_frame_buffer_cb_fn_t get_ext_fb_cb;
|
||||
vpx_release_frame_buffer_cb_fn_t release_ext_fb_cb;
|
||||
};
|
||||
|
||||
#endif // VP9_VP9_DX_IFACE_H_
|
|
@ -16,6 +16,7 @@ VP9_DX_SRCS_REMOVE-yes += $(VP9_COMMON_SRCS_REMOVE-yes)
|
|||
VP9_DX_SRCS_REMOVE-no += $(VP9_COMMON_SRCS_REMOVE-no)
|
||||
|
||||
VP9_DX_SRCS-yes += vp9_dx_iface.c
|
||||
VP9_DX_SRCS-yes += vp9_dx_iface.h
|
||||
|
||||
VP9_DX_SRCS-yes += decoder/vp9_decodemv.c
|
||||
VP9_DX_SRCS-yes += decoder/vp9_decodeframe.c
|
||||
|
|
Загрузка…
Ссылка в новой задаче