vp10: remove duplicate frame_parallel_decode field.
Keep the one in VP10_COMMON in favour of the one in VP10_DECODER. Change-Id: Ia81983ccc95d83829dc815e28d9b1143e16e27b1
This commit is contained in:
@@ -233,8 +233,6 @@ typedef struct VP10Common {
|
|||||||
struct loopfilter lf;
|
struct loopfilter lf;
|
||||||
struct segmentation seg;
|
struct segmentation seg;
|
||||||
|
|
||||||
// TODO(hkuang): Remove this as it is the same as frame_parallel_decode
|
|
||||||
// in pbi.
|
|
||||||
int frame_parallel_decode; // frame-based threading.
|
int frame_parallel_decode; // frame-based threading.
|
||||||
|
|
||||||
// Context probabilities for reference frame prediction
|
// Context probabilities for reference frame prediction
|
||||||
|
|||||||
@@ -527,6 +527,7 @@ static void dec_build_inter_predictors(VP10Decoder *const pbi, MACROBLOCKD *xd,
|
|||||||
struct buf_2d *dst_buf, const MV* mv,
|
struct buf_2d *dst_buf, const MV* mv,
|
||||||
RefCntBuffer *ref_frame_buf,
|
RefCntBuffer *ref_frame_buf,
|
||||||
int is_scaled, int ref) {
|
int is_scaled, int ref) {
|
||||||
|
VP10_COMMON *const cm = &pbi->common;
|
||||||
struct macroblockd_plane *const pd = &xd->plane[plane];
|
struct macroblockd_plane *const pd = &xd->plane[plane];
|
||||||
uint8_t *const dst = dst_buf->buf + dst_buf->stride * y + x;
|
uint8_t *const dst = dst_buf->buf + dst_buf->stride * y + x;
|
||||||
MV32 scaled_mv;
|
MV32 scaled_mv;
|
||||||
@@ -623,7 +624,7 @@ static void dec_build_inter_predictors(VP10Decoder *const pbi, MACROBLOCKD *xd,
|
|||||||
|
|
||||||
// Wait until reference block is ready. Pad 7 more pixels as last 7
|
// Wait until reference block is ready. Pad 7 more pixels as last 7
|
||||||
// pixels of each superblock row can be changed by next superblock row.
|
// pixels of each superblock row can be changed by next superblock row.
|
||||||
if (pbi->frame_parallel_decode)
|
if (cm->frame_parallel_decode)
|
||||||
vp10_frameworker_wait(pbi->frame_worker_owner, ref_frame_buf,
|
vp10_frameworker_wait(pbi->frame_worker_owner, ref_frame_buf,
|
||||||
VPXMAX(0, (y1 + 7)) << (plane == 0 ? 0 : 1));
|
VPXMAX(0, (y1 + 7)) << (plane == 0 ? 0 : 1));
|
||||||
|
|
||||||
@@ -650,7 +651,7 @@ static void dec_build_inter_predictors(VP10Decoder *const pbi, MACROBLOCKD *xd,
|
|||||||
} else {
|
} else {
|
||||||
// Wait until reference block is ready. Pad 7 more pixels as last 7
|
// Wait until reference block is ready. Pad 7 more pixels as last 7
|
||||||
// pixels of each superblock row can be changed by next superblock row.
|
// pixels of each superblock row can be changed by next superblock row.
|
||||||
if (pbi->frame_parallel_decode) {
|
if (cm->frame_parallel_decode) {
|
||||||
const int y1 = (y0_16 + (h - 1) * ys) >> SUBPEL_BITS;
|
const int y1 = (y0_16 + (h - 1) * ys) >> SUBPEL_BITS;
|
||||||
vp10_frameworker_wait(pbi->frame_worker_owner, ref_frame_buf,
|
vp10_frameworker_wait(pbi->frame_worker_owner, ref_frame_buf,
|
||||||
VPXMAX(0, (y1 + 7)) << (plane == 0 ? 0 : 1));
|
VPXMAX(0, (y1 + 7)) << (plane == 0 ? 0 : 1));
|
||||||
@@ -1509,7 +1510,7 @@ static const uint8_t *decode_tiles(VP10Decoder *pbi,
|
|||||||
// After loopfiltering, the last 7 row pixels in each superblock row may
|
// After loopfiltering, the last 7 row pixels in each superblock row may
|
||||||
// still be changed by the longest loopfilter of the next superblock
|
// still be changed by the longest loopfilter of the next superblock
|
||||||
// row.
|
// row.
|
||||||
if (pbi->frame_parallel_decode)
|
if (cm->frame_parallel_decode)
|
||||||
vp10_frameworker_broadcast(pbi->cur_buf,
|
vp10_frameworker_broadcast(pbi->cur_buf,
|
||||||
mi_row << MI_BLOCK_SIZE_LOG2);
|
mi_row << MI_BLOCK_SIZE_LOG2);
|
||||||
}
|
}
|
||||||
@@ -1527,7 +1528,7 @@ static const uint8_t *decode_tiles(VP10Decoder *pbi,
|
|||||||
// Get last tile data.
|
// Get last tile data.
|
||||||
tile_data = pbi->tile_data + tile_cols * tile_rows - 1;
|
tile_data = pbi->tile_data + tile_cols * tile_rows - 1;
|
||||||
|
|
||||||
if (pbi->frame_parallel_decode)
|
if (cm->frame_parallel_decode)
|
||||||
vp10_frameworker_broadcast(pbi->cur_buf, INT_MAX);
|
vp10_frameworker_broadcast(pbi->cur_buf, INT_MAX);
|
||||||
return vpx_reader_find_end(&tile_data->bit_reader);
|
return vpx_reader_find_end(&tile_data->bit_reader);
|
||||||
}
|
}
|
||||||
@@ -1817,7 +1818,7 @@ static size_t read_uncompressed_header(VP10Decoder *pbi,
|
|||||||
cm->lf.filter_level = 0;
|
cm->lf.filter_level = 0;
|
||||||
cm->show_frame = 1;
|
cm->show_frame = 1;
|
||||||
|
|
||||||
if (pbi->frame_parallel_decode) {
|
if (cm->frame_parallel_decode) {
|
||||||
for (i = 0; i < REF_FRAMES; ++i)
|
for (i = 0; i < REF_FRAMES; ++i)
|
||||||
cm->next_ref_frame_map[i] = cm->ref_frame_map[i];
|
cm->next_ref_frame_map[i] = cm->ref_frame_map[i];
|
||||||
}
|
}
|
||||||
@@ -2186,7 +2187,7 @@ void vp10_decode_frame(VP10Decoder *pbi,
|
|||||||
|
|
||||||
// If encoded in frame parallel mode, frame context is ready after decoding
|
// If encoded in frame parallel mode, frame context is ready after decoding
|
||||||
// the frame header.
|
// the frame header.
|
||||||
if (pbi->frame_parallel_decode && cm->frame_parallel_decoding_mode) {
|
if (cm->frame_parallel_decode && cm->frame_parallel_decoding_mode) {
|
||||||
VPxWorker *const worker = pbi->frame_worker_owner;
|
VPxWorker *const worker = pbi->frame_worker_owner;
|
||||||
FrameWorkerData *const frame_worker_data = worker->data1;
|
FrameWorkerData *const frame_worker_data = worker->data1;
|
||||||
if (cm->refresh_frame_context) {
|
if (cm->refresh_frame_context) {
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ static void swap_frame_buffers(VP10Decoder *pbi) {
|
|||||||
pbi->hold_ref_buf = 0;
|
pbi->hold_ref_buf = 0;
|
||||||
cm->frame_to_show = get_frame_new_buffer(cm);
|
cm->frame_to_show = get_frame_new_buffer(cm);
|
||||||
|
|
||||||
if (!pbi->frame_parallel_decode || !cm->show_frame) {
|
if (!cm->frame_parallel_decode || !cm->show_frame) {
|
||||||
lock_buffer_pool(pool);
|
lock_buffer_pool(pool);
|
||||||
--frame_bufs[cm->new_fb_idx].ref_count;
|
--frame_bufs[cm->new_fb_idx].ref_count;
|
||||||
unlock_buffer_pool(pool);
|
unlock_buffer_pool(pool);
|
||||||
@@ -297,7 +297,7 @@ int vp10_receive_compressed_data(VP10Decoder *pbi,
|
|||||||
|
|
||||||
// Check if the previous frame was a frame without any references to it.
|
// Check if the previous frame was a frame without any references to it.
|
||||||
// Release frame buffer if not decoding in frame parallel mode.
|
// Release frame buffer if not decoding in frame parallel mode.
|
||||||
if (!pbi->frame_parallel_decode && cm->new_fb_idx >= 0
|
if (!cm->frame_parallel_decode && cm->new_fb_idx >= 0
|
||||||
&& frame_bufs[cm->new_fb_idx].ref_count == 0)
|
&& frame_bufs[cm->new_fb_idx].ref_count == 0)
|
||||||
pool->release_fb_cb(pool->cb_priv,
|
pool->release_fb_cb(pool->cb_priv,
|
||||||
&frame_bufs[cm->new_fb_idx].raw_frame_buffer);
|
&frame_bufs[cm->new_fb_idx].raw_frame_buffer);
|
||||||
@@ -310,7 +310,7 @@ int vp10_receive_compressed_data(VP10Decoder *pbi,
|
|||||||
cm->cur_frame = &pool->frame_bufs[cm->new_fb_idx];
|
cm->cur_frame = &pool->frame_bufs[cm->new_fb_idx];
|
||||||
|
|
||||||
pbi->hold_ref_buf = 0;
|
pbi->hold_ref_buf = 0;
|
||||||
if (pbi->frame_parallel_decode) {
|
if (cm->frame_parallel_decode) {
|
||||||
VPxWorker *const worker = pbi->frame_worker_owner;
|
VPxWorker *const worker = pbi->frame_worker_owner;
|
||||||
vp10_frameworker_lock_stats(worker);
|
vp10_frameworker_lock_stats(worker);
|
||||||
frame_bufs[cm->new_fb_idx].frame_worker_owner = worker;
|
frame_bufs[cm->new_fb_idx].frame_worker_owner = worker;
|
||||||
@@ -379,12 +379,12 @@ int vp10_receive_compressed_data(VP10Decoder *pbi,
|
|||||||
if (!cm->show_existing_frame) {
|
if (!cm->show_existing_frame) {
|
||||||
cm->last_show_frame = cm->show_frame;
|
cm->last_show_frame = cm->show_frame;
|
||||||
cm->prev_frame = cm->cur_frame;
|
cm->prev_frame = cm->cur_frame;
|
||||||
if (cm->seg.enabled && !pbi->frame_parallel_decode)
|
if (cm->seg.enabled && !cm->frame_parallel_decode)
|
||||||
vp10_swap_current_and_last_seg_map(cm);
|
vp10_swap_current_and_last_seg_map(cm);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update progress in frame parallel decode.
|
// Update progress in frame parallel decode.
|
||||||
if (pbi->frame_parallel_decode) {
|
if (cm->frame_parallel_decode) {
|
||||||
// Need to lock the mutex here as another thread may
|
// Need to lock the mutex here as another thread may
|
||||||
// be accessing this buffer.
|
// be accessing this buffer.
|
||||||
VPxWorker *const worker = pbi->frame_worker_owner;
|
VPxWorker *const worker = pbi->frame_worker_owner;
|
||||||
|
|||||||
@@ -55,8 +55,6 @@ typedef struct VP10Decoder {
|
|||||||
|
|
||||||
int refresh_frame_flags;
|
int refresh_frame_flags;
|
||||||
|
|
||||||
int frame_parallel_decode; // frame-based threading.
|
|
||||||
|
|
||||||
// TODO(hkuang): Combine this with cur_buf in macroblockd as they are
|
// TODO(hkuang): Combine this with cur_buf in macroblockd as they are
|
||||||
// the same.
|
// the same.
|
||||||
RefCntBuffer *cur_buf; // Current decoding frame buffer.
|
RefCntBuffer *cur_buf; // Current decoding frame buffer.
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ static int frame_worker_hook(void *arg1, void *arg2) {
|
|||||||
&data);
|
&data);
|
||||||
frame_worker_data->data_end = data;
|
frame_worker_data->data_end = data;
|
||||||
|
|
||||||
if (frame_worker_data->pbi->frame_parallel_decode) {
|
if (frame_worker_data->pbi->common.frame_parallel_decode) {
|
||||||
// In frame parallel decoding, a worker thread must successfully decode all
|
// In frame parallel decoding, a worker thread must successfully decode all
|
||||||
// the compressed data.
|
// the compressed data.
|
||||||
if (frame_worker_data->result != 0 ||
|
if (frame_worker_data->result != 0 ||
|
||||||
@@ -433,7 +433,6 @@ static vpx_codec_err_t init_decoder(vpx_codec_alg_priv_t *ctx) {
|
|||||||
(ctx->frame_parallel_decode == 0) ? ctx->cfg.threads : 0;
|
(ctx->frame_parallel_decode == 0) ? ctx->cfg.threads : 0;
|
||||||
|
|
||||||
frame_worker_data->pbi->inv_tile_order = ctx->invert_tile_order;
|
frame_worker_data->pbi->inv_tile_order = ctx->invert_tile_order;
|
||||||
frame_worker_data->pbi->frame_parallel_decode = ctx->frame_parallel_decode;
|
|
||||||
frame_worker_data->pbi->common.frame_parallel_decode =
|
frame_worker_data->pbi->common.frame_parallel_decode =
|
||||||
ctx->frame_parallel_decode;
|
ctx->frame_parallel_decode;
|
||||||
worker->hook = (VPxWorkerHook)frame_worker_hook;
|
worker->hook = (VPxWorkerHook)frame_worker_hook;
|
||||||
|
|||||||
Reference in New Issue
Block a user