Bug fix: error-concealment enabled changed postproc output
When error concealment is enabled, it swaps the mi and prev_mi ptrs after each frame is decoded. The postproc uses the mi ptr for the mode info context. Now the postproc will use the correct mode info context. Change-Id: I537ae5450f319c624999b44525bb52bb30047b7b
This commit is contained in:
Родитель
de5546c372
Коммит
0c2919c3d5
|
@ -280,7 +280,7 @@ void vp8_multiframe_quality_enhance
|
|||
|
||||
FRAME_TYPE frame_type = cm->frame_type;
|
||||
/* Point at base of Mb MODE_INFO list has motion vectors etc */
|
||||
const MODE_INFO *mode_info_context = cm->mi;
|
||||
const MODE_INFO *mode_info_context = cm->show_frame_mi;
|
||||
int mb_row;
|
||||
int mb_col;
|
||||
int totmap, map[4];
|
||||
|
|
|
@ -127,7 +127,8 @@ typedef struct VP8Common
|
|||
MODE_INFO *prev_mip; /* MODE_INFO array 'mip' from last decoded frame */
|
||||
MODE_INFO *prev_mi; /* 'mi' from last frame (points into prev_mip) */
|
||||
#endif
|
||||
|
||||
MODE_INFO *show_frame_mi; /* MODE_INFO for the last decoded frame
|
||||
to show */
|
||||
LOOPFILTERTYPE filter_type;
|
||||
|
||||
loop_filter_info_n lf_info;
|
||||
|
|
|
@ -334,7 +334,7 @@ void vp8_deblock(VP8_COMMON *cm,
|
|||
double level = 6.0e-05 * q * q * q - .0067 * q * q + .306 * q + .0065;
|
||||
int ppl = (int)(level + .5);
|
||||
|
||||
const MODE_INFO *mode_info_context = cm->mi;
|
||||
const MODE_INFO *mode_info_context = cm->show_frame_mi;
|
||||
int mbr, mbc;
|
||||
|
||||
/* The pixel thresholds are adjusted according to if or not the macroblock
|
||||
|
|
|
@ -419,7 +419,13 @@ int vp8dx_receive_compressed_data(VP8D_COMP *pbi, size_t size,
|
|||
|
||||
vp8_clear_system_state();
|
||||
|
||||
#if CONFIG_ERROR_CONCEALMENT
|
||||
if (cm->show_frame)
|
||||
{
|
||||
cm->current_video_frame++;
|
||||
cm->show_frame_mi = cm->mi;
|
||||
}
|
||||
|
||||
#if CONFIG_ERROR_CONCEALMENT
|
||||
/* swap the mode infos to storage for future error concealment */
|
||||
if (pbi->ec_enabled && pbi->common.prev_mi)
|
||||
{
|
||||
|
@ -441,9 +447,6 @@ int vp8dx_receive_compressed_data(VP8D_COMP *pbi, size_t size,
|
|||
}
|
||||
#endif
|
||||
|
||||
if (cm->show_frame)
|
||||
cm->current_video_frame++;
|
||||
|
||||
pbi->ready_for_new_data = 0;
|
||||
pbi->last_time_stamp = time_stamp;
|
||||
|
||||
|
|
|
@ -5362,6 +5362,7 @@ int vp8_get_preview_raw_frame(VP8_COMP *cpi, YV12_BUFFER_CONFIG *dest, vp8_ppfla
|
|||
#endif
|
||||
|
||||
#if CONFIG_POSTPROC
|
||||
cpi->common.show_frame_mi = cpi->common.mi;
|
||||
ret = vp8_post_proc_frame(&cpi->common, dest, flags);
|
||||
#else
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче