]> git.sesse.net Git - vlc/commitdiff
* modules/demux/mp4/mp4.c: fixed bug in PTS calculation.
authorGildas Bazin <gbazin@videolan.org>
Mon, 16 May 2005 19:53:10 +0000 (19:53 +0000)
committerGildas Bazin <gbazin@videolan.org>
Mon, 16 May 2005 19:53:10 +0000 (19:53 +0000)
modules/demux/mp4/mp4.c

index 31d719e4682a167613b1469932bff2a4f4998219..695cf615eeffce040d07ec292f4ed1bb25566b8d 100644 (file)
@@ -77,7 +77,7 @@ typedef struct
     uint32_t     *p_sample_delta_dts;   /* dts delta */
 
     uint32_t     *p_sample_count_pts;
-    uint32_t     *p_sample_offset_pts;  /* pts-dts */
+    int32_t      *p_sample_offset_pts;  /* pts-dts */
 
     /* TODO if needed add pts
         but quickly *add* support for edts and seeking */
@@ -228,7 +228,8 @@ static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_tra
     for( i_index = 0;; i_index++ )
     {
         if( i_sample < ck->p_sample_count_pts[i_index] )
-            return ck->p_sample_offset_pts[i_index] * I64C(1000000) / p_track->i_timescale;
+            return ck->p_sample_offset_pts[i_index] * I64C(1000000) /
+                   (int64_t)p_track->i_timescale;
 
         i_sample -= ck->p_sample_count_pts[i_index];
     }
@@ -1145,7 +1146,7 @@ static int TrackCreateSamplesIndex( demux_t *p_demux,
 
             /* allocate them */
             ck->p_sample_count_pts = calloc( i_entry, sizeof( uint32_t ) );
-            ck->p_sample_offset_pts = calloc( i_entry, sizeof( uint32_t ) );
+            ck->p_sample_offset_pts = calloc( i_entry, sizeof( int32_t ) );
 
             /* now copy */
             i_sample_count = ck->i_sample_count;