Commit 2f0a363d authored by Francois Cartegnie's avatar Francois Cartegnie

demux: mp4: use CLOCK_FREQ

parent 64c4b59c
...@@ -158,7 +158,7 @@ static inline int64_t MP4_TrackGetDTS( demux_t *p_demux, mp4_track_t *p_track ) ...@@ -158,7 +158,7 @@ static inline int64_t MP4_TrackGetDTS( demux_t *p_demux, mp4_track_t *p_track )
if( i_dts < 0 ) i_dts = 0; if( i_dts < 0 ) i_dts = 0;
} }
return INT64_C(1000000) * i_dts / p_track->i_timescale; return CLOCK_FREQ * 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( demux_t *p_demux, mp4_track_t *p_track )
...@@ -179,7 +179,7 @@ static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_tra ...@@ -179,7 +179,7 @@ static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_tra
for( i_index = 0;; i_index++ ) for( i_index = 0;; i_index++ )
{ {
if( i_sample < ck->p_sample_count_pts[i_index] ) if( i_sample < ck->p_sample_count_pts[i_index] )
return ck->p_sample_offset_pts[i_index] * INT64_C(1000000) / return ck->p_sample_offset_pts[i_index] * CLOCK_FREQ /
(int64_t)p_track->i_timescale; (int64_t)p_track->i_timescale;
i_sample -= ck->p_sample_count_pts[i_index]; i_sample -= ck->p_sample_count_pts[i_index];
...@@ -188,7 +188,7 @@ static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_tra ...@@ -188,7 +188,7 @@ static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_tra
static inline int64_t MP4_GetMoviePTS(demux_sys_t *p_sys ) static inline int64_t MP4_GetMoviePTS(demux_sys_t *p_sys )
{ {
return INT64_C(1000000) * p_sys->i_time / p_sys->i_timescale; return CLOCK_FREQ * p_sys->i_time / p_sys->i_timescale;
} }
static void LoadChapter( demux_t *p_demux ); static void LoadChapter( demux_t *p_demux );
...@@ -692,7 +692,7 @@ static int Demux( demux_t *p_demux ) ...@@ -692,7 +692,7 @@ static int Demux( demux_t *p_demux )
p_sys->i_time += __MAX( p_sys->i_timescale / 10 , 1 ); p_sys->i_time += __MAX( p_sys->i_timescale / 10 , 1 );
if( p_sys->i_timescale > 0 ) if( p_sys->i_timescale > 0 )
{ {
int64_t i_length = (mtime_t)1000000 * int64_t i_length = CLOCK_FREQ *
(mtime_t)p_sys->i_duration / (mtime_t)p_sys->i_duration /
(mtime_t)p_sys->i_timescale; (mtime_t)p_sys->i_timescale;
if( MP4_GetMoviePTS( p_sys ) >= i_length ) if( MP4_GetMoviePTS( p_sys ) >= i_length )
...@@ -832,7 +832,7 @@ static int Seek( demux_t *p_demux, mtime_t i_date ) ...@@ -832,7 +832,7 @@ static int Seek( demux_t *p_demux, mtime_t i_date )
unsigned int i_track; unsigned int i_track;
/* First update global time */ /* First update global time */
p_sys->i_time = i_date * p_sys->i_timescale / 1000000; p_sys->i_time = i_date * p_sys->i_timescale / CLOCK_FREQ;
p_sys->i_pcr = VLC_TS_INVALID; p_sys->i_pcr = VLC_TS_INVALID;
/* Now for each stream try to go to this time */ /* Now for each stream try to go to this time */
...@@ -914,7 +914,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) ...@@ -914,7 +914,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
} }
else if( p_sys->i_timescale > 0 ) else if( p_sys->i_timescale > 0 )
{ {
i64 = (int64_t)( f * (double)1000000 * i64 = (int64_t)( f * CLOCK_FREQ *
(double)p_sys->i_duration / (double)p_sys->i_duration /
(double)p_sys->i_timescale ); (double)p_sys->i_timescale );
return Seek( p_demux, i64 ); return Seek( p_demux, i64 );
...@@ -925,7 +925,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) ...@@ -925,7 +925,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
pi64 = (int64_t*)va_arg( args, int64_t * ); pi64 = (int64_t*)va_arg( args, int64_t * );
if( p_sys->i_timescale > 0 ) if( p_sys->i_timescale > 0 )
{ {
*pi64 = (mtime_t)1000000 * *pi64 = CLOCK_FREQ *
(mtime_t)p_sys->i_time / (mtime_t)p_sys->i_time /
(mtime_t)p_sys->i_timescale; (mtime_t)p_sys->i_timescale;
} }
...@@ -940,7 +940,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) ...@@ -940,7 +940,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
pi64 = (int64_t*)va_arg( args, int64_t * ); pi64 = (int64_t*)va_arg( args, int64_t * );
if( p_sys->i_timescale > 0 ) if( p_sys->i_timescale > 0 )
{ {
*pi64 = (mtime_t)1000000 * *pi64 = CLOCK_FREQ *
(mtime_t)p_sys->i_duration / (mtime_t)p_sys->i_duration /
(mtime_t)p_sys->i_timescale; (mtime_t)p_sys->i_timescale;
} }
...@@ -1343,7 +1343,7 @@ static void LoadChapter( demux_t *p_demux ) ...@@ -1343,7 +1343,7 @@ static void LoadChapter( demux_t *p_demux )
/* Add duration if titles are enabled */ /* Add duration if titles are enabled */
if( p_sys->p_title ) if( p_sys->p_title )
{ {
p_sys->p_title->i_length = (uint64_t)1000000 * p_sys->p_title->i_length = CLOCK_FREQ *
(uint64_t)p_sys->i_duration / (uint64_t)p_sys->i_timescale; (uint64_t)p_sys->i_duration / (uint64_t)p_sys->i_timescale;
} }
} }
...@@ -2381,11 +2381,11 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track, ...@@ -2381,11 +2381,11 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track,
if( p_track->p_elst && p_track->p_elst->data.p_elst->i_entry_count > 0 ) if( p_track->p_elst && p_track->p_elst->data.p_elst->i_entry_count > 0 )
{ {
MP4_Box_data_elst_t *elst = p_track->p_elst->data.p_elst; MP4_Box_data_elst_t *elst = p_track->p_elst->data.p_elst;
int64_t i_mvt= i_start * p_sys->i_timescale / (int64_t)1000000; int64_t i_mvt= i_start * p_sys->i_timescale / CLOCK_FREQ;
/* now calculate i_start for this elst */ /* now calculate i_start for this elst */
/* offset */ /* offset */
i_start -= p_track->i_elst_time * INT64_C(1000000) / p_sys->i_timescale; i_start -= p_track->i_elst_time * CLOCK_FREQ / p_sys->i_timescale;
if( i_start < 0 ) if( i_start < 0 )
{ {
*pi_chunk = 0; *pi_chunk = 0;
...@@ -2394,7 +2394,7 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track, ...@@ -2394,7 +2394,7 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track,
return VLC_SUCCESS; return VLC_SUCCESS;
} }
/* to track time scale */ /* to track time scale */
i_start = i_start * p_track->i_timescale / (int64_t)1000000; i_start = i_start * p_track->i_timescale / CLOCK_FREQ;
/* add elst offset */ /* add elst offset */
if( ( elst->i_media_rate_integer[p_track->i_elst] > 0 || if( ( elst->i_media_rate_integer[p_track->i_elst] > 0 ||
elst->i_media_rate_fraction[p_track->i_elst] > 0 ) && elst->i_media_rate_fraction[p_track->i_elst] > 0 ) &&
...@@ -2411,7 +2411,7 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track, ...@@ -2411,7 +2411,7 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track,
else else
{ {
/* convert absolute time to in timescale unit */ /* convert absolute time to in timescale unit */
i_start = i_start * p_track->i_timescale / (int64_t)1000000; i_start = i_start * p_track->i_timescale / CLOCK_FREQ;
} }
/* we start from sample 0/chunk 0, hope it won't take too much time */ /* we start from sample 0/chunk 0, hope it won't take too much time */
...@@ -3074,7 +3074,7 @@ static int MP4_TrackNextSample( demux_t *p_demux, mp4_track_t *p_track, int i_sa ...@@ -3074,7 +3074,7 @@ static int MP4_TrackNextSample( demux_t *p_demux, mp4_track_t *p_track, int i_sa
demux_sys_t *p_sys = p_demux->p_sys; demux_sys_t *p_sys = p_demux->p_sys;
MP4_Box_data_elst_t *elst = p_track->p_elst->data.p_elst; MP4_Box_data_elst_t *elst = p_track->p_elst->data.p_elst;
uint64_t i_mvt = MP4_TrackGetDTS( p_demux, p_track ) * uint64_t i_mvt = MP4_TrackGetDTS( p_demux, p_track ) *
p_sys->i_timescale / (int64_t)1000000; p_sys->i_timescale / CLOCK_FREQ;
if( (unsigned int)p_track->i_elst < elst->i_entry_count && if( (unsigned int)p_track->i_elst < elst->i_entry_count &&
i_mvt >= p_track->i_elst_time + i_mvt >= p_track->i_elst_time +
...@@ -3100,7 +3100,7 @@ static void MP4_TrackSetELST( demux_t *p_demux, mp4_track_t *tk, ...@@ -3100,7 +3100,7 @@ static void MP4_TrackSetELST( demux_t *p_demux, mp4_track_t *tk,
if( tk->p_elst && tk->p_elst->data.p_elst->i_entry_count > 0 ) if( tk->p_elst && tk->p_elst->data.p_elst->i_entry_count > 0 )
{ {
MP4_Box_data_elst_t *elst = tk->p_elst->data.p_elst; MP4_Box_data_elst_t *elst = tk->p_elst->data.p_elst;
int64_t i_mvt= i_time * p_sys->i_timescale / (int64_t)1000000; int64_t i_mvt= i_time * p_sys->i_timescale / CLOCK_FREQ;
for( tk->i_elst = 0; (unsigned int)tk->i_elst < elst->i_entry_count; tk->i_elst++ ) for( tk->i_elst = 0; (unsigned int)tk->i_elst < elst->i_entry_count; tk->i_elst++ )
{ {
...@@ -3801,7 +3801,7 @@ int DemuxFrg( demux_t *p_demux ) ...@@ -3801,7 +3801,7 @@ int DemuxFrg( demux_t *p_demux )
p_sys->i_time += __MAX( p_sys->i_timescale / 10 , 1 ); p_sys->i_time += __MAX( p_sys->i_timescale / 10 , 1 );
if( p_sys->i_timescale > 0 ) if( p_sys->i_timescale > 0 )
{ {
int64_t i_length = (mtime_t)1000000 * int64_t i_length = CLOCK_FREQ *
(mtime_t)p_sys->i_duration / (mtime_t)p_sys->i_duration /
(mtime_t)p_sys->i_timescale; (mtime_t)p_sys->i_timescale;
if( MP4_GetMoviePTS( p_sys ) >= i_length ) if( MP4_GetMoviePTS( p_sys ) >= i_length )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment