encoder_sys_t *p_sys;
/* FIXME: what about layers 1 and 2 ? shine is an 'MP3' encoder */
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('m','p','3',' ') ||
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_MP3 ||
p_enc->fmt_out.audio.i_channels > 2 )
return VLC_EGENERIC;
p_enc->fmt_out.i_bitrate, p_enc->fmt_out.audio.i_rate,
p_enc->fmt_out.audio.i_channels );
- p_sys = p_enc->p_sys = malloc( sizeof( encoder_sys_t ) );
+ p_enc->p_sys = p_sys = calloc( 1, sizeof( *p_sys ) );
if( !p_sys )
return VLC_ENOMEM;
- memset( p_sys, 0, sizeof( encoder_sys_t ) );
if( !( p_sys->p_fifo = block_FifoNew() ) )
{
p_enc->fmt_out.audio.i_channels, p_enc->fmt_out.i_bitrate / 1000 );
p_enc->pf_encode_audio = EncodeFrame;
+ p_enc->fmt_out.i_cat = AUDIO_ES;
return VLC_SUCCESS;
}
if( !p_block ) goto buffered; /* just return a block if we can */
/* Put the PCM samples sent by VLC in the Fifo */
- while( p_sys->i_buffer + p_block->i_nb_bytes >= pcm_chunk_size )
+ while( p_sys->i_buffer + p_block->i_buffer >= pcm_chunk_size )
{
unsigned int i_buffer = 0;
p_pcm_block = block_New( p_enc, pcm_chunk_size );
p_block->p_buffer, pcm_chunk_size - i_buffer );
p_block->p_buffer += pcm_chunk_size - i_buffer;
- p_block->i_nb_bytes -= pcm_chunk_size - i_buffer;
+ p_block->i_buffer -= pcm_chunk_size - i_buffer;
block_FifoPut( p_sys->p_fifo, p_pcm_block );
}
/* We hadn't enough data to make a block, put it in standby */
- if( p_block->i_nb_bytes )
+ if( p_block->i_buffer )
{
uint8_t *p_tmp;
if( p_sys->i_buffer > 0 )
- p_tmp = realloc( p_sys->p_buffer, p_block->i_nb_bytes + p_sys->i_buffer );
+ p_tmp = realloc( p_sys->p_buffer, p_block->i_buffer + p_sys->i_buffer );
else
- p_tmp = malloc( p_block->i_nb_bytes );
+ p_tmp = malloc( p_block->i_buffer );
if( !p_tmp )
{
}
p_sys->p_buffer = p_tmp;
vlc_memcpy( p_sys->p_buffer + p_sys->i_buffer,
- p_block->p_buffer, p_block->i_nb_bytes );
+ p_block->p_buffer, p_block->i_buffer );
- p_sys->i_buffer += p_block->i_nb_bytes;
- p_block->i_nb_bytes = 0;
+ p_sys->i_buffer += p_block->i_buffer;
+ p_block->i_buffer = 0;
}
buffered:
static block_t *EncodeFrame( encoder_t *p_enc, aout_buffer_t *p_block )
{
- encoder_sys_t *p_sys = (encoder_sys_t *)p_enc->p_sys;
block_t *p_pcm_block;
block_t *p_chain = NULL;
- unsigned int i_samples = p_block->i_nb_bytes >> 2 /* s16l stereo */;
- mtime_t start_date = p_block->start_date;
+ unsigned int i_samples = p_block->i_buffer >> 2 /* s16l stereo */;
+ mtime_t start_date = p_block->i_pts;
start_date -= (mtime_t)i_samples * (mtime_t)1000000 / (mtime_t)p_enc->fmt_out.audio.i_rate;
+ VLC_UNUSED(p_enc);
+
do {
p_pcm_block = GetPCM( p_enc, p_block );
if( !p_pcm_block )
start_date += p_mp3_block->i_length;
p_mp3_block->i_dts = p_mp3_block->i_pts = start_date;
- p_mp3_block->i_samples = SAMP_PER_FRAME1;
+ p_mp3_block->i_nb_samples = SAMP_PER_FRAME1;
block_ChainAppend( &p_chain, p_mp3_block );