fix[h264d]: fix drop packets after reset when err stream

1. put err stream to mpp and not get valid sps/pps.
2. put eos packet.
3. reset mpp but reset failed in init_dpb().
4. always drop new stream causeby has_get_eos flasg not
clear in h264d_reset().

Fixs: redmine(485349).

Change-Id: I2955ea4ab48f116daa717949f28411bf4798c666
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
This commit is contained in:
Yandong Lin
2024-06-04 15:41:33 +08:00
committed by Herman Chen
parent 34e1508c7b
commit bebca81b26

View File

@@ -396,13 +396,13 @@ MPP_RET h264d_reset(void *decoder)
INP_CHECK(ret, !decoder);
FUN_CHECK(ret = flush_dpb(p_Dec->p_Vid->p_Dpb_layer[0], 1));
FUN_CHECK(ret = init_dpb(p_Dec->p_Vid, p_Dec->p_Vid->p_Dpb_layer[0], 1));
flush_dpb(p_Dec->p_Vid->p_Dpb_layer[0], 1);
init_dpb(p_Dec->p_Vid, p_Dec->p_Vid->p_Dpb_layer[0], 1);
if (p_Dec->mvc_valid) {
// layer_id == 1
FUN_CHECK(ret = flush_dpb(p_Dec->p_Vid->p_Dpb_layer[1], 1));
FUN_CHECK(ret = init_dpb(p_Dec->p_Vid, p_Dec->p_Vid->p_Dpb_layer[1], 2));
FUN_CHECK(ret = check_mvc_dpb(p_Dec->p_Vid, p_Dec->p_Vid->p_Dpb_layer[0], p_Dec->p_Vid->p_Dpb_layer[1]));
flush_dpb(p_Dec->p_Vid->p_Dpb_layer[1], 1);
init_dpb(p_Dec->p_Vid, p_Dec->p_Vid->p_Dpb_layer[1], 2);
check_mvc_dpb(p_Dec->p_Vid, p_Dec->p_Vid->p_Dpb_layer[0], p_Dec->p_Vid->p_Dpb_layer[1]);
}
flush_dpb_buf_slot(p_Dec);
//!< reset input parameter
@@ -451,8 +451,6 @@ MPP_RET h264d_reset(void *decoder)
__RETURN:
return ret = MPP_OK;
__FAILED:
return ret = MPP_NOK;
}
/*!