mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-11-03 09:40:50 +08:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
Reference in New Issue
Block a user