#include <vlc_block.h>
#include <vlc_bits.h>
-#include "vlc_block_helper.h"
+#include <vlc_block_helper.h>
#include <assert.h>
/*
* Common properties
*/
- audio_date_t end_date;
+ date_t end_date;
mtime_t i_pts;
int i_frame_size;
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'm', 'p', '4', 'a' ) )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MP4A )
{
return VLC_EGENERIC;
}
/* Misc init */
p_sys->i_state = STATE_NOSYNC;
- aout_DateSet( &p_sys->end_date, 0 );
+ date_Set( &p_sys->end_date, 0 );
p_sys->bytestream = block_BytestreamInit();
p_sys->b_latm_cfg = false;
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('m','p','4','a');
+ p_dec->fmt_out.i_codec = VLC_CODEC_MP4A;
msg_Dbg( p_dec, "running MPEG4 audio packetizer" );
p_dec->fmt_out.audio.i_rate,
p_dec->fmt_out.audio.i_frame_length );
- aout_DateInit( &p_sys->end_date, p_dec->fmt_out.audio.i_rate );
+ date_Init( &p_sys->end_date, p_dec->fmt_out.audio.i_rate, 1 );
p_dec->fmt_out.i_extra = p_dec->fmt_in.i_extra;
p_dec->fmt_out.p_extra = malloc( p_dec->fmt_in.i_extra );
{
msg_Dbg( p_dec, "no decoder specific info, must be an ADTS or LOAS stream" );
- aout_DateInit( &p_sys->end_date, p_dec->fmt_in.audio.i_rate );
+ date_Init( &p_sys->end_date, p_dec->fmt_in.audio.i_rate, 1 );
/* We will try to create a AAC Config from adts/loas */
p_dec->fmt_out.i_extra = 0;
if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
{
- aout_DateSet( &p_sys->end_date, 0 );
+ date_Set( &p_sys->end_date, 0 );
block_Release( *pp_block );
return NULL;
}
p_block = *pp_block;
*pp_block = NULL; /* Don't reuse this block */
- if( !aout_DateGet( &p_sys->end_date ) && !p_block->i_pts )
+ if( !date_Get( &p_sys->end_date ) && p_block->i_pts <= VLC_TS_INVALID )
{
/* We've just started the stream, wait for the first PTS. */
block_Release( p_block );
return NULL;
}
- else if( p_block->i_pts != 0 &&
- p_block->i_pts != aout_DateGet( &p_sys->end_date ) )
+ else if( p_block->i_pts > VLC_TS_INVALID &&
+ p_block->i_pts != date_Get( &p_sys->end_date ) )
{
- aout_DateSet( &p_sys->end_date, p_block->i_pts );
+ date_Set( &p_sys->end_date, p_block->i_pts );
}
- p_block->i_pts = p_block->i_dts = aout_DateGet( &p_sys->end_date );
+ p_block->i_pts = p_block->i_dts = date_Get( &p_sys->end_date );
- p_block->i_length = aout_DateIncrement( &p_sys->end_date,
+ p_block->i_length = date_Increment( &p_sys->end_date,
p_dec->fmt_out.audio.i_frame_length ) - p_block->i_pts;
return p_block;
static int Mpeg4ReadAudioObjectType( bs_t *s )
{
int i_type = bs_read( s, 5 );
- if( i_type == 0x1f )
- i_type += bs_read( s, 6 );
+ if( i_type == 31 )
+ i_type = 32 + bs_read( s, 6 );
return i_type;
}
p_sys->i_state = STATE_NOSYNC;
block_BytestreamEmpty( &p_sys->bytestream );
}
- aout_DateSet( &p_sys->end_date, 0 );
+ date_Set( &p_sys->end_date, 0 );
block_Release( *pp_block );
return NULL;
}
- if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts )
+ if( !date_Get( &p_sys->end_date ) && (*pp_block)->i_pts <= VLC_TS_INVALID )
{
/* We've just started the stream, wait for the first PTS. */
block_Release( *pp_block );
case STATE_SYNC:
/* New frame, set the Presentation Time Stamp */
p_sys->i_pts = p_sys->bytestream.p_block->i_pts;
- if( p_sys->i_pts != 0 &&
- p_sys->i_pts != aout_DateGet( &p_sys->end_date ) )
+ if( p_sys->i_pts > VLC_TS_INVALID &&
+ p_sys->i_pts != date_Get( &p_sys->end_date ) )
{
- aout_DateSet( &p_sys->end_date, p_sys->i_pts );
+ date_Set( &p_sys->end_date, p_sys->i_pts );
}
p_sys->i_state = STATE_HEADER;
break;
SetupOutput( p_dec, p_out_buffer );
/* Make sure we don't reuse the same pts twice */
if( p_sys->i_pts == p_sys->bytestream.p_block->i_pts )
- p_sys->i_pts = p_sys->bytestream.p_block->i_pts = 0;
+ p_sys->i_pts = p_sys->bytestream.p_block->i_pts = VLC_TS_INVALID;
/* So p_block doesn't get re-added several times */
*pp_block = block_BytestreamPop( &p_sys->bytestream );
msg_Info( p_dec, "AAC channels: %d samplerate: %d",
p_sys->i_channels, p_sys->i_rate );
- aout_DateInit( &p_sys->end_date, p_sys->i_rate );
- aout_DateSet( &p_sys->end_date, p_sys->i_pts );
+ const mtime_t i_end_date = date_Get( &p_sys->end_date );
+ date_Init( &p_sys->end_date, p_sys->i_rate, 1 );
+ date_Set( &p_sys->end_date, i_end_date );
}
p_dec->fmt_out.audio.i_rate = p_sys->i_rate;
p_sys->i_channels_conf & AOUT_CHAN_PHYSMASK;
#endif
- p_block->i_pts = p_block->i_dts = aout_DateGet( &p_sys->end_date );
+ p_block->i_pts = p_block->i_dts = date_Get( &p_sys->end_date );
p_block->i_length =
- aout_DateIncrement( &p_sys->end_date, p_sys->i_frame_length ) - p_block->i_pts;
+ date_Increment( &p_sys->end_date, p_sys->i_frame_length ) - p_block->i_pts;
}
/*****************************************************************************