From: François Cartegnie Date: Thu, 27 Jun 2024 11:24:03 +0000 (+0700) Subject: packetizer: hxxx: add missing drain for non annexb content X-Git-Tag: archive/raspbian/3.0.21-6+rpi1^2~103 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=42a1cb9dbd1a76711cf1670ec5f87dd01b6ad23c;p=vlc.git 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 --- 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