vlc | branch: master | Francois Cartegnie <[email protected]> | Fri May 10 17:42:29 2019 +0200| [c2cb744329c1143c1a1044966cfcdefa0bb2a87e] | committer: Francois Cartegnie
packetizer: handle discontinuity without flush > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c2cb744329c1143c1a1044966cfcdefa0bb2a87e --- modules/packetizer/h264.c | 4 ++-- modules/packetizer/hevc.c | 11 ++++++----- modules/packetizer/mjpeg.c | 4 ++-- modules/packetizer/mpeg4video.c | 4 ++-- modules/packetizer/mpegvideo.c | 4 ++-- modules/packetizer/packetizer_helper.h | 10 ++-------- modules/packetizer/vc1.c | 4 ++-- 7 files changed, 18 insertions(+), 23 deletions(-) diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c index 13806a1ba8..18e4ae871a 100644 --- a/modules/packetizer/h264.c +++ b/modules/packetizer/h264.c @@ -540,12 +540,12 @@ static void ResetOutputVariables( decoder_sys_t *p_sys ) p_sys->i_recovery_frame_cnt = UINT_MAX; } -static void PacketizeReset( void *p_private, bool b_broken ) +static void PacketizeReset( void *p_private, bool b_flush ) { decoder_t *p_dec = p_private; decoder_sys_t *p_sys = p_dec->p_sys; - if( b_broken || !p_sys->b_slice ) + if( b_flush || !p_sys->b_slice ) { DropStoredNAL( p_sys ); ResetOutputVariables( p_sys ); diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c index 8cba9a66b7..f9b38fa8c6 100644 --- a/modules/packetizer/hevc.c +++ b/modules/packetizer/hevc.c @@ -348,10 +348,8 @@ static block_t *GetCc( decoder_t *p_dec, decoder_cc_desc_t *p_desc ) /**************************************************************************** * Packetizer Helpers ****************************************************************************/ -static void PacketizeReset(void *p_private, bool b_broken) +static void PacketizeReset(void *p_private, bool b_flush) { - VLC_UNUSED(b_broken); - decoder_t *p_dec = p_private; decoder_sys_t *p_sys = p_dec->p_sys; @@ -359,8 +357,11 @@ static void PacketizeReset(void *p_private, bool b_broken) if(p_out) block_ChainRelease(p_out); - p_sys->sets = MISSING; - p_sys->b_recovery_point = false; + if(b_flush) + { + p_sys->sets = MISSING; + p_sys->b_recovery_point = false; + } p_sys->b_need_ts = true; date_Set(&p_sys->dts, VLC_TICK_INVALID); } diff --git a/modules/packetizer/mjpeg.c b/modules/packetizer/mjpeg.c index 5f4e6ff8f3..223f7e9c7c 100644 --- a/modules/packetizer/mjpeg.c +++ b/modules/packetizer/mjpeg.c @@ -80,9 +80,9 @@ static void PacketizeFlush( decoder_t *p_dec ) /***************************************************************************** * Helpers: *****************************************************************************/ -static void PacketizeReset( void *p_private, bool b_broken ) +static void PacketizeReset( void *p_private, bool b_flush ) { - VLC_UNUSED(b_broken); + VLC_UNUSED(b_flush); decoder_t *p_dec = p_private; decoder_sys_t *p_sys = p_dec->p_sys; diff --git a/modules/packetizer/mpeg4video.c b/modules/packetizer/mpeg4video.c index 4b67a8829c..927f71e828 100644 --- a/modules/packetizer/mpeg4video.c +++ b/modules/packetizer/mpeg4video.c @@ -204,12 +204,12 @@ static void PacketizeFlush( decoder_t *p_dec ) /***************************************************************************** * Helpers: *****************************************************************************/ -static void PacketizeReset( void *p_private, bool b_broken ) +static void PacketizeReset( void *p_private, bool b_flush ) { decoder_t *p_dec = p_private; decoder_sys_t *p_sys = p_dec->p_sys; - if( b_broken ) + if( b_flush ) { if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame ); diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c index 158f5cfd06..ac8040f0d0 100644 --- a/modules/packetizer/mpegvideo.c +++ b/modules/packetizer/mpegvideo.c @@ -351,9 +351,9 @@ static block_t *GetCc( decoder_t *p_dec, decoder_cc_desc_t *p_desc ) /***************************************************************************** * Helpers: *****************************************************************************/ -static void PacketizeReset( void *p_private, bool b_broken ) +static void PacketizeReset( void *p_private, bool b_flush ) { - VLC_UNUSED(b_broken); + VLC_UNUSED(b_flush); decoder_t *p_dec = p_private; decoder_sys_t *p_sys = p_dec->p_sys; diff --git a/modules/packetizer/packetizer_helper.h b/modules/packetizer/packetizer_helper.h index dece985b24..c65c4e5911 100644 --- a/modules/packetizer/packetizer_helper.h +++ b/modules/packetizer/packetizer_helper.h @@ -36,7 +36,7 @@ enum STATE_CUSTOM_FIRST, }; -typedef void (*packetizer_reset_t)( void *p_private, bool b_broken ); +typedef void (*packetizer_reset_t)( void *p_private, bool b_flush ); typedef block_t *(*packetizer_parse_t)( void *p_private, bool *pb_ts_used, block_t * ); typedef int (*packetizer_validate_t)( void *p_private, block_t * ); @@ -115,16 +115,10 @@ static inline block_t *packetizer_Packetize( packetizer_t *p_pack, block_t **pp_ if( p_drained ) return p_drained; - const bool b_broken = !!( p_block->i_flags&BLOCK_FLAG_CORRUPTED ); p_pack->i_state = STATE_NOSYNC; block_BytestreamEmpty( &p_pack->bytestream ); p_pack->i_offset = 0; - p_pack->pf_reset( p_pack->p_private, b_broken ); - if( b_broken ) - { - block_Release( p_block ); - return NULL; - } + p_pack->pf_reset( p_pack->p_private, false ); } if( p_block ) diff --git a/modules/packetizer/vc1.c b/modules/packetizer/vc1.c index 2d4fdf13d2..e08ab034e8 100644 --- a/modules/packetizer/vc1.c +++ b/modules/packetizer/vc1.c @@ -272,12 +272,12 @@ static void Flush( decoder_t *p_dec ) packetizer_Flush( &p_sys->packetizer ); } -static void PacketizeReset( void *p_private, bool b_broken ) +static void PacketizeReset( void *p_private, bool b_flush ) { decoder_t *p_dec = p_private; decoder_sys_t *p_sys = p_dec->p_sys; - if( b_broken ) + if( b_flush ) { if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
