]> git.sesse.net Git - vlc/commitdiff
Fixed buffer size computation with non zero bits per sample mod 8.
authorLaurent Aimar <fenrir@videolan.org>
Sat, 28 Jun 2008 22:03:31 +0000 (22:03 +0000)
committerLaurent Aimar <fenrir@videolan.org>
Sat, 28 Jun 2008 22:03:31 +0000 (22:03 +0000)
modules/codec/araw.c

index 43de4ddff5afdee54728b0ba8d8c4811f49b5e6e..e75e2d4dcc84c794738504f1da90c1c61fcc9a78 100644 (file)
@@ -72,6 +72,7 @@ static block_t *EncoderEncode( encoder_t *, aout_buffer_t * );
 struct decoder_sys_t
 {
     const int16_t *p_logtos16;  /* used with m/alaw to int16_t */
+    int i_bytespersample;
 
     audio_date_t end_date;
 };
@@ -404,6 +405,7 @@ static int DecoderOpen( vlc_object_t *p_this )
 
     aout_DateInit( &p_sys->end_date, p_dec->fmt_out.audio.i_rate );
     aout_DateSet( &p_sys->end_date, 0 );
+    p_sys->i_bytespersample = ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8;
 
     p_dec->pf_decode_audio = DecodeBlock;
 
@@ -441,7 +443,7 @@ static aout_buffer_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     /* Don't re-use the same pts twice */
     p_block->i_pts = 0;
 
-    i_samples = p_block->i_buffer * 8 / p_dec->fmt_in.audio.i_bitspersample /
+    i_samples = p_block->i_buffer / p_sys->i_bytespersample /
         p_dec->fmt_in.audio.i_channels;
 
     if( i_samples <= 0 )