[vlc-commits] twolame: use FL32 as input
Ilkka Ollakka
git at videolan.org
Wed Jan 8 12:21:57 CET 2014
vlc | branch: master | Ilkka Ollakka <ileoo at videolan.org> | Mon Jan 6 21:49:55 2014 +0200| [2363d00e1131bc4b50e3a15a6593e824bee68dd7] | committer: Ilkka Ollakka
twolame: use FL32 as input
as FL32 is used in filters/resamplers also, this hopefully
removes a need of one conversion.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2363d00e1131bc4b50e3a15a6593e824bee68dd7
---
modules/codec/twolame.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/modules/codec/twolame.c b/modules/codec/twolame.c
index 996f4aa..0607c57 100644
--- a/modules/codec/twolame.c
+++ b/modules/codec/twolame.c
@@ -101,7 +101,7 @@ struct encoder_sys_t
/*
* Input properties
*/
- int16_t p_buffer[MPEG_FRAME_SIZE * 2];
+ float p_buffer[MPEG_FRAME_SIZE * 2];
int i_nb_samples;
mtime_t i_pts;
@@ -161,8 +161,7 @@ static int OpenEncoder( vlc_object_t *p_this )
return VLC_ENOMEM;
p_enc->p_sys = p_sys;
- p_enc->pf_encode_audio = Encode;
- p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
+ p_enc->fmt_in.i_codec = VLC_CODEC_FL32;
p_enc->fmt_out.i_cat = AUDIO_ES;
p_enc->fmt_out.i_codec = VLC_CODEC_MPGA;
@@ -239,6 +238,7 @@ static int OpenEncoder( vlc_object_t *p_this )
}
p_sys->i_nb_samples = 0;
+ p_enc->pf_encode_audio = Encode;
return VLC_SUCCESS;
}
@@ -248,25 +248,26 @@ static int OpenEncoder( vlc_object_t *p_this )
****************************************************************************
* This function spits out MPEG packets.
****************************************************************************/
-static void Bufferize( encoder_t *p_enc, int16_t *p_in, int i_nb_samples )
+static void Bufferize( encoder_t *p_enc, float *p_in, int i_nb_samples )
{
- int16_t *p_buffer = p_enc->p_sys->p_buffer
+ float *p_buffer = (float *)p_enc->p_sys->p_buffer
+ (p_enc->p_sys->i_nb_samples
* p_enc->fmt_in.audio.i_channels);
memcpy( p_buffer, p_in, i_nb_samples * p_enc->fmt_in.audio.i_channels
- * sizeof(int16_t) );
+ * sizeof(float) );
}
static block_t *Encode( encoder_t *p_enc, block_t *p_aout_buf )
{
encoder_sys_t *p_sys = p_enc->p_sys;
block_t *p_chain = NULL;
+ block_t *p_block;
if( unlikely( !p_aout_buf ) ) {
int i_used = 0;
- i_used = twolame_encode_flush_interleaved( p_sys->p_twolame,
+ i_used = twolame_encode_flush( p_sys->p_twolame,
p_sys->p_out_buffer, MAX_CODED_FRAME_SIZE );
if( i_used < 0 )
@@ -282,7 +283,7 @@ static block_t *Encode( encoder_t *p_enc, block_t *p_aout_buf )
return p_block;
}
- int16_t *p_buffer = (int16_t *)p_aout_buf->p_buffer;
+ float *p_buffer = (float*)p_aout_buf->p_buffer;
int i_nb_samples = p_aout_buf->i_nb_samples;
p_sys->i_pts = p_aout_buf->i_pts -
@@ -292,13 +293,12 @@ static block_t *Encode( encoder_t *p_enc, block_t *p_aout_buf )
while ( p_sys->i_nb_samples + i_nb_samples >= MPEG_FRAME_SIZE )
{
int i_used;
- block_t *p_block;
Bufferize( p_enc, p_buffer, MPEG_FRAME_SIZE - p_sys->i_nb_samples );
i_nb_samples -= MPEG_FRAME_SIZE - p_sys->i_nb_samples;
p_buffer += (MPEG_FRAME_SIZE - p_sys->i_nb_samples) * 2;
- i_used = twolame_encode_buffer_interleaved( p_sys->p_twolame,
+ i_used = twolame_encode_buffer_float32_interleaved( p_sys->p_twolame,
p_sys->p_buffer, MPEG_FRAME_SIZE,
p_sys->p_out_buffer, MAX_CODED_FRAME_SIZE );
p_sys->i_nb_samples = 0;
More information about the vlc-commits
mailing list