diff options
author | Harish Mahendrakar <harish.mahendrakar@ittiam.com> | 2019-12-30 16:56:12 -0800 |
---|---|---|
committer | Ray Essick <essick@google.com> | 2020-02-11 16:03:29 -0800 |
commit | 6dd54b9e180c838c82767878d10c9615af2c5866 (patch) | |
tree | 96abc1bc59fdde61d099154eff788f3c0d1b3d63 | |
parent | 8c2ee3ea8bf5b8d520bdcb5a1952e87ddaa881c4 (diff) | |
download | platform_external_libavc-6dd54b9e180c838c82767878d10c9615af2c5866.tar.gz platform_external_libavc-6dd54b9e180c838c82767878d10c9615af2c5866.tar.bz2 platform_external_libavc-6dd54b9e180c838c82767878d10c9615af2c5866.zip |
decoder: Fix in detecting dangling fields
When decoder is expecting to decode a field, ensure current slice
being decoded is a field and frame number matches with previous slice's
frame number.
Bug: 144687080
Test: poc in bug
Change-Id: I89d9d7b6fc26797de0420ecb0ca7e66b066aa908
-rw-r--r-- | decoder/ih264d_parse_slice.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/decoder/ih264d_parse_slice.c b/decoder/ih264d_parse_slice.c index 8d50f9a..198ef63 100644 --- a/decoder/ih264d_parse_slice.c +++ b/decoder/ih264d_parse_slice.c @@ -1307,7 +1307,12 @@ WORD32 ih264d_parse_decode_slice(UWORD8 u1_is_idr_slice, if(i1_is_end_of_poc || ps_dec->u1_first_slice_in_stream) { - if(u2_frame_num != ps_dec->u2_prv_frame_num + /* If the current slice is not a field or frame number of the current + * slice doesn't match with previous slice, and decoder is expecting + * to decode a field i.e. ps_dec->u1_top_bottom_decoded is not 0 and + * is not (TOP_FIELD_ONLY | BOT_FIELD_ONLY), treat it as a dangling + * field */ + if((u1_field_pic_flag == 0 || u2_frame_num != ps_dec->u2_prv_frame_num) && ps_dec->u1_top_bottom_decoded != 0 && ps_dec->u1_top_bottom_decoded != (TOP_FIELD_ONLY | BOT_FIELD_ONLY)) |