* Declaration of local function
*****************************************************************************/
static void MP4_TrackCreate ( demux_t *, mp4_track_t *, MP4_Box_t *);
-static void MP4_TrackDestroy( demux_t *, mp4_track_t * );
+static void MP4_TrackDestroy( mp4_track_t * );
static int MP4_TrackSelect ( demux_t *, mp4_track_t *, mtime_t );
static void MP4_TrackUnselect(demux_t *, mp4_track_t * );
return INT64_C(1000000) * i_dts / p_track->i_timescale;
}
-static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_track )
+static inline int64_t MP4_TrackGetPTSDelta( mp4_track_t *p_track )
{
mp4_chunk_t *ck = &p_track->chunk[p_track->i_chunk];
unsigned int i_index = 0;
if( end ) end[1] = '\0';
else *psz_path = '\0';
- asprintf( &psz_absolute, "%s://%s%s",
- p_demux->psz_access, psz_path, psz_ref );
+ if( asprintf( &psz_absolute, "%s://%s%s",
+ p_demux->psz_access, psz_path, psz_ref ) < 0 )
+ return VLC_ENOMEM;
free( psz_ref );
psz_ref = psz_absolute;
/* dts */
p_block->i_dts = MP4_TrackGetDTS( p_demux, tk ) + 1;
/* pts */
- i_delta = MP4_TrackGetPTSDelta( p_demux, tk );
+ i_delta = MP4_TrackGetPTSDelta( tk );
if( i_delta != -1 )
p_block->i_pts = p_block->i_dts + i_delta;
else if( tk->fmt.i_cat != VIDEO_ES )
MP4_BoxFree( p_demux->s, p_sys->p_root );
for( i_track = 0; i_track < p_sys->i_tracks; i_track++ )
{
- MP4_TrackDestroy( p_demux, &p_sys->track[i_track] );
+ MP4_TrackDestroy( &p_sys->track[i_track] );
}
FREENULL( p_sys->track );
for( tk->i_sample = 0; tk->i_sample < tk->i_sample_count; tk->i_sample++ )
{
const int64_t i_dts = MP4_TrackGetDTS( p_demux, tk );
- const int64_t i_pts_delta = MP4_TrackGetPTSDelta( p_demux, tk );
+ const int64_t i_pts_delta = MP4_TrackGetPTSDelta( tk );
const unsigned int i_size = MP4_TrackSampleSize( tk );
if( i_size > 0 && !stream_Seek( p_demux->s, MP4_TrackGetPos( tk ) ) )
break;
}
+ case VLC_FOURCC('m','s',0x00,0x02):
+ case VLC_FOURCC('m','s',0x00,0x11):
+ p_track->fmt.audio.i_blockalign = p_sample->data.p_sample_soun->i_bytes_per_frame;
+ break;
+
default:
break;
}
/* do we launch this track by default ? */
p_track->b_enable =
( ( p_tkhd->data.p_tkhd->i_flags&MP4_TRACK_ENABLED ) != 0 );
+ if( !p_track->b_enable )
+ p_track->fmt.i_priority = -1;
p_track->i_track_ID = p_tkhd->data.p_tkhd->i_track_ID;
p_track->i_width = p_tkhd->data.p_tkhd->i_width / 65536;
****************************************************************************
* Destroy a track created by MP4_TrackCreate.
****************************************************************************/
-static void MP4_TrackDestroy( demux_t *p_demux, mp4_track_t *p_track )
+static void MP4_TrackDestroy( mp4_track_t *p_track )
{
unsigned int i_chunk;