summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHamsalekha S <hamsalekha.s@ittiam.com>2017-02-21 16:02:23 +0530
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-06-15 18:55:40 +0000
commit715b398ab821907bdd1e46b20f53a241c99c510d (patch)
treeb7461e74ffe2770cd1370ddd29459bf45a27d09c
parentaa861e202bdc301112d7bacf1be9a1ba635448f7 (diff)
downloadandroid_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.c14
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) &&