diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-09-14 23:16:44 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-09-14 23:16:44 +0000 |
commit | 63989c47c9058e1c8e4ad0b056bd14bb279100ab (patch) | |
tree | 6a483e4c6b4f507b33b49e2ff581719508df7f0b | |
parent | 317bf0f2ea6e70866bd1beed5b14782c97a06e31 (diff) | |
parent | fe5a6ada3e86ef4441cdf868aec44bd359b832df (diff) | |
download | libavc-android10-qpr1-b-release.tar.gz |
Snap for 5876498 from fe5a6ada3e86ef4441cdf868aec44bd359b832df to qt-qpr1-releaseandroid-10.0.0_r29android-10.0.0_r28android-10.0.0_r27android-10.0.0_r26android-10.0.0_r25android-10.0.0_r24android-10.0.0_r23android-10.0.0_r22android-10.0.0_r21android-10.0.0_r20android-10.0.0_r19android-10.0.0_r18android-10.0.0_r16android-10.0.0_r15android10-qpr1-releaseandroid10-qpr1-d-releaseandroid10-qpr1-c-s1-releaseandroid10-qpr1-c-releaseandroid10-qpr1-b-s1-releaseandroid10-qpr1-b-release
Change-Id: I3a46d4867143bdb2be7713a32ffae0e62bca9ee7
-rw-r--r-- | decoder/ih264d_api.c | 9 | ||||
-rw-r--r-- | decoder/ih264d_structs.h | 3 | ||||
-rw-r--r-- | decoder/ih264d_utils.c | 3 | ||||
-rw-r--r-- | decoder/ivd.h | 11 |
4 files changed, 24 insertions, 2 deletions
diff --git a/decoder/ih264d_api.c b/decoder/ih264d_api.c index c9426a6..247c48f 100644 --- a/decoder/ih264d_api.c +++ b/decoder/ih264d_api.c @@ -1044,6 +1044,7 @@ void ih264d_init_decoder(void * ps_dec_params) ps_dec->i4_max_poc = 0; ps_dec->i4_prev_max_display_seq = 0; ps_dec->u1_recon_mb_grp = 4; + ps_dec->i4_reorder_depth = -1; /* Field PIC initializations */ ps_dec->u1_second_field = 0; @@ -1850,7 +1851,8 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op) ps_dec->u1_pic_decode_done = 0; ps_dec_op->u4_num_bytes_consumed = 0; - + ps_dec_op->i4_reorder_depth = -1; + ps_dec_op->i4_display_index = DEFAULT_POC; ps_dec->ps_out_buffer = NULL; if(ps_dec_ip->u4_size @@ -2039,6 +2041,8 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op) ps_dec_op->u4_pic_wd = (UWORD32)ps_dec->u2_disp_width; ps_dec_op->u4_pic_ht = (UWORD32)ps_dec->u2_disp_height; + ps_dec_op->i4_reorder_depth = ps_dec->i4_reorder_depth; + ps_dec_op->i4_display_index = ps_dec->i4_display_index; ps_dec_op->u4_new_seq = 0; @@ -2357,6 +2361,7 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op) { ps_dec_op->u4_pic_wd = (UWORD32)ps_dec->u2_disp_width; ps_dec_op->u4_pic_ht = (UWORD32)ps_dec->u2_disp_height; + ps_dec_op->i4_reorder_depth = ps_dec->i4_reorder_depth; } //Report if header (sps and pps) has not been decoded yet @@ -3665,6 +3670,8 @@ void ih264d_fill_output_struct_from_context(dec_struct_t *ps_dec, ps_dec_op->u4_pic_wd = (UWORD32)ps_dec->u2_disp_width; ps_dec_op->u4_pic_ht = (UWORD32)ps_dec->u2_disp_height; } + ps_dec_op->i4_reorder_depth = ps_dec->i4_reorder_depth; + ps_dec_op->i4_display_index = ps_dec->i4_display_index; ps_dec_op->e_pic_type = ps_dec->i4_frametype; ps_dec_op->u4_new_seq = 0; diff --git a/decoder/ih264d_structs.h b/decoder/ih264d_structs.h index 97e9797..41cc885 100644 --- a/decoder/ih264d_structs.h +++ b/decoder/ih264d_structs.h @@ -1053,6 +1053,7 @@ typedef struct _DecStruct struct _DecMbInfo * ps_cur_mb_info, const UWORD16 u2_mbxn_mb); UWORD8 u1_init_dec_flag; + WORD32 i4_reorder_depth; prev_seq_params_t s_prev_seq_params; UWORD8 u1_cur_mb_fld_dec_flag; /* current Mb fld or Frm */ @@ -1315,7 +1316,7 @@ typedef struct _DecStruct * */ WORD32 i4_degrade_pic_cnt; - + WORD32 i4_display_index; UWORD32 u4_pic_buf_got; /** diff --git a/decoder/ih264d_utils.c b/decoder/ih264d_utils.c index 0381763..48a98f6 100644 --- a/decoder/ih264d_utils.c +++ b/decoder/ih264d_utils.c @@ -769,6 +769,7 @@ WORD32 ih264d_init_pic(dec_struct_t *ps_dec, else ps_dec->i4_display_delay = ps_seq->s_vui.u4_num_reorder_frames * 2 + 2; } + ps_dec->i4_reorder_depth = ps_dec->i4_display_delay; if(IVD_DECODE_FRAME_OUT == ps_dec->e_frm_out_mode) ps_dec->i4_display_delay = 0; @@ -945,6 +946,7 @@ WORD32 ih264d_get_next_display_field(dec_struct_t * ps_dec, pv_disp_op->s_disp_frm_buf.pv_y_buf = ps_out_buffer->pu1_bufs[0]; pv_disp_op->s_disp_frm_buf.pv_u_buf = ps_out_buffer->pu1_bufs[1]; pv_disp_op->s_disp_frm_buf.pv_v_buf = ps_out_buffer->pu1_bufs[2]; + ps_dec->i4_display_index = DEFAULT_POC; if(pic_buf != NULL) { pv_disp_op->e4_fld_type = 0; @@ -961,6 +963,7 @@ WORD32 ih264d_get_next_display_field(dec_struct_t * ps_dec, /* ! */ pv_disp_op->u4_ts = pic_buf->u4_ts; + ps_dec->i4_display_index = pic_buf->i4_poc; /* set the start of the Y, U and V buffer pointer for display */ ps_op_frm->pv_y_buf = pic_buf->pu1_buf1 + pic_buf->u2_crop_offset_y; diff --git a/decoder/ivd.h b/decoder/ivd.h index 8d304bc..f3a9f62 100644 --- a/decoder/ivd.h +++ b/decoder/ivd.h @@ -486,6 +486,17 @@ typedef struct{ * disp_buf_id */ UWORD32 u4_disp_buf_id; + + /** + * reorder_depth + */ + WORD32 i4_reorder_depth; + + /** + * disp_buf_id + */ + WORD32 i4_display_index; + }ivd_video_decode_op_t; |