vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Apr 28 14:25:10 2017 +0200| [6cd58e0e8e07fead49b1e4b4267a000b81787c80] | committer: Francois Cartegnie
input: decoder: fix cc decoders reference leak decoder_QueueVideoWithCc regression > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6cd58e0e8e07fead49b1e4b4267a000b81787c80 --- src/input/decoder.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/input/decoder.c b/src/input/decoder.c index 2a24ed082d..a32ec709d7 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -910,12 +910,12 @@ static void DecoderGetCc( decoder_t *p_dec, decoder_t *p_dec_cc ) block_t *p_cc; bool pb_present[4]; - assert( p_dec_cc->pf_get_cc != NULL ); - /* Do not try retreiving CC if not wanted (sout) or cannot be retreived */ if( !p_owner->cc.b_supported ) return; + assert( p_dec_cc->pf_get_cc != NULL ); + p_cc = p_dec_cc->pf_get_cc( p_dec_cc, pb_present ); if( !p_cc ) return; @@ -954,7 +954,8 @@ static int DecoderPlayVideo( decoder_t *p_dec, picture_t *p_picture, if( unlikely( p_cc != NULL ) ) { - if( ( !p_owner->p_packetizer || !p_owner->p_packetizer->pf_get_cc ) ) + if( p_owner->cc.b_supported && + ( !p_owner->p_packetizer || !p_owner->p_packetizer->pf_get_cc ) ) DecoderExtractCc( p_dec, p_cc, p_cc_present ); else block_Release( p_cc ); @@ -1719,14 +1720,7 @@ static decoder_t * CreateDecoder( vlc_object_t *p_parent, } /* */ - p_owner->cc.b_supported = false; - if( p_sout == NULL ) - { - if( p_owner->p_packetizer && p_owner->p_packetizer->pf_get_cc ) - p_owner->cc.b_supported = true; - if( p_dec->pf_get_cc ) - p_owner->cc.b_supported = true; - } + p_owner->cc.b_supported = ( p_sout == NULL ); for( unsigned i = 0; i < 4; i++ ) { _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
