From 42a1cb9dbd1a76711cf1670ec5f87dd01b6ad23c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Cartegnie?= Date: Thu, 27 Jun 2024 18:24:03 +0700 Subject: [PATCH] packetizer: hxxx: add missing drain for non annexb content (cherry picked from commit 4f0a39ada1bd9314601e80d7f48855462524d1fc) Gbp-Pq: Name 0022-packetizer-hxxx-add-missing-drain-for-non-annexb-con.patch --- modules/packetizer/h264.c | 2 +- modules/packetizer/hevc.c | 2 +- modules/packetizer/hxxx_common.c | 8 ++++++-- modules/packetizer/hxxx_common.h | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c index b015079d..5a4a5196 100644 --- a/modules/packetizer/h264.c +++ b/modules/packetizer/h264.c @@ -536,7 +536,7 @@ static block_t *PacketizeAVC1( decoder_t *p_dec, block_t **pp_block ) return PacketizeXXC1( p_dec, VLC_OBJECT(p_dec), p_sys->i_avcC_length_size, pp_block, - ParseNALBlockW ); + ParseNALBlockW, PacketizeDrain ); } /***************************************************************************** diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c index dc8877aa..e63023b9 100644 --- a/modules/packetizer/hevc.c +++ b/modules/packetizer/hevc.c @@ -303,7 +303,7 @@ static block_t *PacketizeHVC1(decoder_t *p_dec, block_t **pp_block) return PacketizeXXC1( p_dec, VLC_OBJECT(p_dec), p_sys->i_nal_length_size, pp_block, - ParseNALBlockW ); + ParseNALBlockW, PacketizeDrain ); } static block_t *PacketizeAnnexB(decoder_t *p_dec, block_t **pp_block) diff --git a/modules/packetizer/hxxx_common.c b/modules/packetizer/hxxx_common.c index 043dc38b..386d49b5 100644 --- a/modules/packetizer/hxxx_common.c +++ b/modules/packetizer/hxxx_common.c @@ -112,13 +112,17 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t *p_desc ****************************************************************************/ block_t *PacketizeXXC1( void *p_private, vlc_object_t *p_obj, uint8_t i_nal_length_size, block_t **pp_block, - pf_annexb_nal_parse pf_nal_parser ) + pf_annexb_nal_parse pf_nal_parser, + pf_annexb_nal_drain pf_nal_drain ) { block_t *p_block; block_t *p_ret = NULL; uint8_t *p; - if( !pp_block || !*pp_block ) + if( !pp_block ) + return pf_nal_drain ? pf_nal_drain( p_private ) : NULL; + + if( !*pp_block ) return NULL; if( (*pp_block)->i_flags&(BLOCK_FLAG_CORRUPTED) ) { diff --git a/modules/packetizer/hxxx_common.h b/modules/packetizer/hxxx_common.h index c2a6df00..1c8241e0 100644 --- a/modules/packetizer/hxxx_common.h +++ b/modules/packetizer/hxxx_common.h @@ -38,9 +38,10 @@ block_t * cc_storage_get_current( cc_storage_t *p_ccs, decoder_cc_desc_t * ); /* */ typedef block_t * (*pf_annexb_nal_parse)(void *, bool *, block_t *); +typedef block_t * (*pf_annexb_nal_drain)(void *); block_t *PacketizeXXC1( void *, vlc_object_t *obj, uint8_t, block_t **, - pf_annexb_nal_parse ); + pf_annexb_nal_parse, pf_annexb_nal_drain ); #endif // HXXX_COMMON_H -- 2.30.2