[vlc-commits] twolame: add error checking
Tristan Matthews
git at videolan.org
Tue Sep 30 03:07:26 CEST 2014
vlc | branch: master | Tristan Matthews <tmatth at videolan.org> | Sat Sep 27 13:47:06 2014 -0400| [9b196c6333e8973ba3704af22b1d8b9d600bbd6f] | committer: Tristan Matthews
twolame: add error checking
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9b196c6333e8973ba3704af22b1d8b9d600bbd6f
---
modules/codec/twolame.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/modules/codec/twolame.c b/modules/codec/twolame.c
index 20ef952..3257b76 100644
--- a/modules/codec/twolame.c
+++ b/modules/codec/twolame.c
@@ -274,6 +274,8 @@ static block_t *Encode( encoder_t *p_enc, block_t *p_aout_buf )
return NULL;
p_block = block_Alloc( i_used );
+ if( !p_block )
+ return NULL;
memcpy( p_block->p_buffer, p_sys->p_out_buffer, i_used );
p_block->i_length = CLOCK_FREQ *
(mtime_t)MPEG_FRAME_SIZE / (mtime_t)p_enc->fmt_out.audio.i_rate;
@@ -302,8 +304,21 @@ static block_t *Encode( encoder_t *p_enc, block_t *p_aout_buf )
i_used = twolame_encode_buffer_interleaved( p_sys->p_twolame,
p_sys->p_buffer, MPEG_FRAME_SIZE,
p_sys->p_out_buffer, MAX_CODED_FRAME_SIZE );
+ /* On error, buffer samples and return what was already encoded */
+ if( i_used < 0 )
+ {
+ msg_Err( p_enc, "encoder error: %d", i_used );
+ break;
+ }
+
p_sys->i_nb_samples = 0;
p_block = block_Alloc( i_used );
+ if( !p_block )
+ {
+ if( p_chain )
+ block_Release( p_chain );
+ return NULL;
+ }
memcpy( p_block->p_buffer, p_sys->p_out_buffer, i_used );
p_block->i_length = CLOCK_FREQ *
(mtime_t)MPEG_FRAME_SIZE / (mtime_t)p_enc->fmt_out.audio.i_rate;
More information about the vlc-commits
mailing list