diff options
author | Hamsalekha S <hamsalekha.s@ittiam.com> | 2017-02-21 16:02:23 +0530 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-06-15 18:55:40 +0000 |
commit | 715b398ab821907bdd1e46b20f53a241c99c510d (patch) | |
tree | b7461e74ffe2770cd1370ddd29459bf45a27d09c | |
parent | aa861e202bdc301112d7bacf1be9a1ba635448f7 (diff) | |
download | android_external_libavc-715b398ab821907bdd1e46b20f53a241c99c510d.tar.gz android_external_libavc-715b398ab821907bdd1e46b20f53a241c99c510d.tar.bz2 android_external_libavc-715b398ab821907bdd1e46b20f53a241c99c510d.zip |
DO NOT MERGE Fixed bug in the case of resolution change.
Modified the way i4_header_decoded in decoder context
is used, to ensure that resolution change is detected
even if PPS has not been decoded.
Bug: 35583675
Test: ran POC, no longer hangs
Change-Id: Ibb3f8dfbeb66a999fd81720a7d2a02dd951a55c4
(cherry picked from commit 1d06027c69e31d450b1e837c81073362d41084d3)
-rw-r--r-- | decoder/ih264d_parse_headers.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/decoder/ih264d_parse_headers.c b/decoder/ih264d_parse_headers.c index 3807a14..068ee5b 100644 --- a/decoder/ih264d_parse_headers.c +++ b/decoder/ih264d_parse_headers.c @@ -569,13 +569,13 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) if(NULL == ps_dec->ps_cur_sps) ps_dec->ps_cur_sps = ps_seq; - if((3 == ps_dec->i4_header_decoded) && (ps_seq->u1_profile_idc != u1_profile_idc)) + if((ps_dec->i4_header_decoded & 1) && (ps_seq->u1_profile_idc != u1_profile_idc)) { ps_dec->u1_res_changed = 1; return IVD_RES_CHANGED; } - if((3 == ps_dec->i4_header_decoded) && (ps_seq->u1_level_idc != u1_level_idc)) + if((ps_dec->i4_header_decoded & 1) && (ps_seq->u1_level_idc != u1_level_idc)) { ps_dec->u1_res_changed = 1; return IVD_RES_CHANGED; @@ -749,7 +749,7 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) } /* Compare with older num_ref_frames is header is already once */ - if((3 == ps_dec->i4_header_decoded) && (ps_seq->u1_num_ref_frames != u4_temp)) + if((ps_dec->i4_header_decoded & 1) && (ps_seq->u1_num_ref_frames != u4_temp)) { ps_dec->u1_res_changed = 1; return IVD_RES_CHANGED; @@ -899,12 +899,12 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) return ERROR_INV_SPS_PPS_T; } - if((3 == ps_dec->i4_header_decoded) && (ps_dec->u2_pic_wd != u2_pic_wd)) + if((ps_dec->i4_header_decoded & 1) && (ps_dec->u2_pic_wd != u2_pic_wd)) { ps_dec->u1_res_changed = 1; return IVD_RES_CHANGED; } - if((3 == ps_dec->i4_header_decoded) && (ps_dec->u2_pic_ht != u2_pic_ht)) + if((ps_dec->i4_header_decoded & 1) && (ps_dec->u2_pic_ht != u2_pic_ht)) { ps_dec->u1_res_changed = 1; return IVD_RES_CHANGED; @@ -932,7 +932,7 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) } /* Backup u4_num_reorder_frames if header is already decoded */ - if((3 == ps_dec->i4_header_decoded) && + if((ps_dec->i4_header_decoded & 1) && (1 == ps_seq->u1_vui_parameters_present_flag) && (1 == ps_seq->s_vui.u1_bitstream_restriction_flag)) { @@ -950,7 +950,7 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) } /* Compare older u4_num_reorder_frames with the new one if header is already decoded */ - if((3 == ps_dec->i4_header_decoded) && + if((ps_dec->i4_header_decoded & 1) && (-1 != (WORD32)u4_num_reorder_frames) && (1 == ps_seq->u1_vui_parameters_present_flag) && (1 == ps_seq->s_vui.u1_bitstream_restriction_flag) && |