Merge "Fix show existing frame"
This commit is contained in:
commit
8458c8c450
@ -132,6 +132,7 @@ typedef struct VP9Common {
|
||||
|
||||
int show_frame;
|
||||
int last_show_frame;
|
||||
int show_existing_frame;
|
||||
|
||||
// Flag signaling that the frame is encoded using only INTRA modes.
|
||||
int intra_only;
|
||||
|
@ -1132,7 +1132,8 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi,
|
||||
cm->version = vp9_rb_read_bit(rb);
|
||||
RESERVED;
|
||||
|
||||
if (vp9_rb_read_bit(rb)) {
|
||||
cm->show_existing_frame = vp9_rb_read_bit(rb);
|
||||
if (cm->show_existing_frame) {
|
||||
// show an existing frame directly
|
||||
int frame_to_show = cm->ref_frame_map[vp9_rb_read_literal(rb, 3)];
|
||||
ref_cnt_fb(cm->fb_idx_ref_cnt, &cm->new_fb_idx, frame_to_show);
|
||||
|
@ -389,23 +389,25 @@ int vp9_receive_compressed_data(VP9D_PTR ptr,
|
||||
|
||||
cm->last_show_frame = cm->show_frame;
|
||||
if (cm->show_frame) {
|
||||
// current mip will be the prev_mip for the next frame
|
||||
MODE_INFO *temp = cm->prev_mip;
|
||||
MODE_INFO **temp2 = cm->prev_mi_grid_base;
|
||||
cm->prev_mip = cm->mip;
|
||||
cm->mip = temp;
|
||||
cm->prev_mi_grid_base = cm->mi_grid_base;
|
||||
cm->mi_grid_base = temp2;
|
||||
if (!cm->show_existing_frame) {
|
||||
// current mip will be the prev_mip for the next frame
|
||||
MODE_INFO *temp = cm->prev_mip;
|
||||
MODE_INFO **temp2 = cm->prev_mi_grid_base;
|
||||
cm->prev_mip = cm->mip;
|
||||
cm->mip = temp;
|
||||
cm->prev_mi_grid_base = cm->mi_grid_base;
|
||||
cm->mi_grid_base = temp2;
|
||||
|
||||
// update the upper left visible macroblock ptrs
|
||||
cm->mi = cm->mip + cm->mode_info_stride + 1;
|
||||
cm->prev_mi = cm->prev_mip + cm->mode_info_stride + 1;
|
||||
cm->mi_grid_visible = cm->mi_grid_base + cm->mode_info_stride + 1;
|
||||
cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mode_info_stride + 1;
|
||||
|
||||
pbi->mb.mi_8x8 = cm->mi_grid_visible;
|
||||
pbi->mb.mi_8x8[0] = cm->mi;
|
||||
// update the upper left visible macroblock ptrs
|
||||
cm->mi = cm->mip + cm->mode_info_stride + 1;
|
||||
cm->prev_mi = cm->prev_mip + cm->mode_info_stride + 1;
|
||||
cm->mi_grid_visible = cm->mi_grid_base + cm->mode_info_stride + 1;
|
||||
cm->prev_mi_grid_visible = cm->prev_mi_grid_base +
|
||||
cm->mode_info_stride + 1;
|
||||
|
||||
pbi->mb.mi_8x8 = cm->mi_grid_visible;
|
||||
pbi->mb.mi_8x8[0] = cm->mi;
|
||||
}
|
||||
cm->current_video_frame++;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user