vlc | branch: master | Rafaël Carré <[email protected]> | Fri Jan 11 00:45:28 2013 +0100| [c99738f05e07ef0e25c3bdc353c66544b28f54ba] | committer: Rafaël Carré
avcodec audio: factorize error case > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c99738f05e07ef0e25c3bdc353c66544b28f54ba --- modules/codec/avcodec/audio.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c index 272038a..4aa4bfc 100644 --- a/modules/codec/avcodec/audio.c +++ b/modules/codec/avcodec/audio.c @@ -278,22 +278,20 @@ block_t * DecodeAudio ( decoder_t *p_dec, block_t **pp_block ) if( ffmpeg_OpenCodec( p_dec ) ) msg_Err( p_dec, "Cannot open decoder %s", p_sys->psz_namecodec ); } + if( p_sys->b_delayed_open ) - { - block_Release( p_block ); - return NULL; - } + goto end; if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) { - block_Release( p_block ); avcodec_flush_buffers( p_sys->p_context ); p_sys->i_samples = 0; date_Set( &p_sys->end_date, 0 ); if( p_sys->i_codec_id == CODEC_ID_MP2 || p_sys->i_codec_id == CODEC_ID_MP3 ) p_sys->i_reject_count = 3; - return NULL; + + goto end; } if( p_sys->i_samples > 0 ) @@ -304,18 +302,12 @@ block_t * DecodeAudio ( decoder_t *p_dec, block_t **pp_block ) return p_buffer; } + /* We've just started the stream, wait for the first PTS. */ if( !date_Get( &p_sys->end_date ) && !p_block->i_pts ) - { - /* We've just started the stream, wait for the first PTS. */ - block_Release( p_block ); - return NULL; - } + goto end; if( p_block->i_buffer <= 0 ) - { - block_Release( p_block ); - return NULL; - } + goto end; if( (p_block->i_flags & BLOCK_FLAG_PRIVATE_REALLOCATED) == 0 ) { @@ -350,8 +342,7 @@ block_t * DecodeAudio ( decoder_t *p_dec, block_t **pp_block ) msg_Warn( p_dec, "cannot decode one frame (%zu bytes)", p_block->i_buffer ); - block_Release( p_block ); - return NULL; + goto end; } else if( (size_t)i_used > p_block->i_buffer ) { @@ -368,8 +359,7 @@ block_t * DecodeAudio ( decoder_t *p_dec, block_t **pp_block ) { msg_Warn( p_dec, "invalid audio properties channels count %d, sample rate %d", p_sys->p_context->channels, p_sys->p_context->sample_rate ); - block_Release( p_block ); - return NULL; + goto end; } if( p_dec->fmt_out.audio.i_rate != (unsigned int)p_sys->p_context->sample_rate ) @@ -402,6 +392,10 @@ block_t * DecodeAudio ( decoder_t *p_dec, block_t **pp_block ) p_buffer = SplitBuffer( p_dec ); if( !p_buffer ) block_Release( p_block ); return p_buffer; + +end: + block_Release(p_block); + return NULL; } /***************************************************************************** _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
