diff options
author | Hamsalekha S <hamsalekha.s@ittiam.com> | 2017-08-09 13:41:39 +0530 |
---|---|---|
committer | Nikoli Cartagena <dargeren@google.com> | 2017-11-28 21:27:51 -0800 |
commit | dcc10009e45138d0eaa4a17debf38bdcb5029ff4 (patch) | |
tree | 6341827313b7b58cc4f6759278545f7b5091a8f5 | |
parent | ba2f2fa15f068d115fd4a23a439b9ea5afbfe1e8 (diff) | |
download | android_external_libavc-dcc10009e45138d0eaa4a17debf38bdcb5029ff4.tar.gz android_external_libavc-dcc10009e45138d0eaa4a17debf38bdcb5029ff4.tar.bz2 android_external_libavc-dcc10009e45138d0eaa4a17debf38bdcb5029ff4.zip |
Decoder: Detect change of mbaff flag in SPS
Change in Mbaff flag needs re-initialization of NMB group
and other variables in decoder context.
Bug: 64380237
Test: ran poc on ASAN before/after
Change-Id: I0fc65e4dfc3cc2c15528ec52da1782ecec61feab
(cherry picked from commit d524ba03101c0c662c9d365d7357536b42a0265e)
-rw-r--r-- | decoder/ih264d_parse_headers.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/decoder/ih264d_parse_headers.c b/decoder/ih264d_parse_headers.c index 4f3136f..f0d0d88 100644 --- a/decoder/ih264d_parse_headers.c +++ b/decoder/ih264d_parse_headers.c @@ -479,7 +479,7 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) { UWORD8 i; dec_seq_params_t *ps_seq = NULL; - UWORD8 u1_profile_idc, u1_level_idc, u1_seq_parameter_set_id; + UWORD8 u1_profile_idc, u1_level_idc, u1_seq_parameter_set_id, u1_mb_aff_flag = 0; UWORD16 i2_max_frm_num; UWORD32 *pu4_bitstrm_buf = ps_bitstrm->pu4_buffer; UWORD32 *pu4_bitstrm_ofst = &ps_bitstrm->u4_ofst; @@ -802,9 +802,19 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) COPYTHECONTEXT("SPS: frame_mbs_only_flag", u1_frm); if(!u1_frm) + u1_mb_aff_flag = ih264d_get_bit_h264(ps_bitstrm); + + if((ps_dec->i4_header_decoded & 1) + && (ps_seq->u1_mb_aff_flag != u1_mb_aff_flag)) + { + ps_dec->u1_res_changed = 1; + return IVD_RES_CHANGED; + } + + if(!u1_frm) { u2_pic_ht <<= 1; - ps_seq->u1_mb_aff_flag = ih264d_get_bit_h264(ps_bitstrm); + ps_seq->u1_mb_aff_flag = u1_mb_aff_flag; COPYTHECONTEXT("SPS: mb_adaptive_frame_field_flag", ps_seq->u1_mb_aff_flag); |