Merge QQ3A.200605.002 into master
Bug: 158095402
Merged-In: Ie57dcb92f1c0aaebd5e701f01ebdc899add7f9ba
Change-Id: Iddded152601d50b336a2a313789acf156a82eb76
diff --git a/decoder/ih264d_parse_slice.c b/decoder/ih264d_parse_slice.c
index 35a078a..927f1c0 100644
--- a/decoder/ih264d_parse_slice.c
+++ b/decoder/ih264d_parse_slice.c
@@ -1037,7 +1037,6 @@
ps_st_next_dpb->ps_prev_short = ps_st_curr_dpb->ps_prev_short;
}
ps_dec->ps_dpb_mgr->u1_num_st_ref_bufs--;
- ps_dec->ps_dpb_mgr->u1_num_lt_ref_bufs++;
no_of_nodes_deleted++;
break;
}
@@ -1315,7 +1314,12 @@
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))