Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
2ce189cc by Francois Cartegnie at 2023-02-17T10:15:11+00:00
demux: mp4: fix duration probing on missing info

- - - - -


3 changed files:

- modules/demux/mp4/fragments.c
- modules/demux/mp4/fragments.h
- modules/demux/mp4/mp4.c


Changes:

=====================================
modules/demux/mp4/fragments.c
=====================================
@@ -66,9 +66,9 @@ stime_t MP4_Fragment_Index_GetTrackStartTime( 
mp4_fragments_index_t *p_index,
     return 0;
 }
 
-stime_t MP4_Fragment_Index_GetTrackDuration( mp4_fragments_index_t *p_index, 
unsigned i )
+stime_t MP4_Fragment_Index_GetTracksDuration( const mp4_fragments_index_t 
*p_index )
 {
-    return p_index->p_times[(size_t)(p_index->i_entries - 1) * 
p_index->i_tracks + i];
+    return p_index->i_last_time;
 }
 
 bool MP4_Fragments_Index_Lookup( mp4_fragments_index_t *p_index, stime_t 
*pi_time,


=====================================
modules/demux/mp4/fragments.h
=====================================
@@ -37,7 +37,7 @@ mp4_fragments_index_t * MP4_Fragments_Index_New( unsigned 
i_tracks, unsigned i_n
 
 stime_t MP4_Fragment_Index_GetTrackStartTime( mp4_fragments_index_t *p_index,
                                               unsigned i_track_index, uint64_t 
i_moof_pos );
-stime_t MP4_Fragment_Index_GetTrackDuration( mp4_fragments_index_t *p_index, 
unsigned i_track_index );
+stime_t MP4_Fragment_Index_GetTracksDuration( const mp4_fragments_index_t 
*p_index );
 
 bool MP4_Fragments_Index_Lookup( mp4_fragments_index_t *p_index,
                                  stime_t *pi_time, uint64_t *pi_pos, unsigned 
i_track_index );


=====================================
modules/demux/mp4/mp4.c
=====================================
@@ -4290,7 +4290,6 @@ static stime_t GetCumulatedDuration( demux_t *p_demux )
 
     for ( unsigned int i=0; i<p_sys->i_tracks; i++ )
     {
-        stime_t i_track_duration = 0;
         MP4_Box_t *p_trak = MP4_GetTrakByTrackID( p_sys->p_moov, 
p_sys->track[i].i_track_ID );
         const MP4_Box_t *p_stsz;
         const MP4_Box_t *p_tkhd;
@@ -4301,13 +4300,11 @@ static stime_t GetCumulatedDuration( demux_t *p_demux )
         {
             i_max_duration = __MAX( (uint64_t)i_max_duration, 
BOXDATA(p_tkhd)->i_duration );
         }
-
-        if( p_sys->p_fragsindex )
-        {
-            i_track_duration += MP4_Fragment_Index_GetTrackDuration( 
p_sys->p_fragsindex, i );
-        }
-
-        i_max_duration = __MAX( i_max_duration, i_track_duration );
+    }
+    if( p_sys->p_fragsindex )
+    {
+        stime_t i_tracks_duration = MP4_Fragment_Index_GetTracksDuration( 
p_sys->p_fragsindex );
+        i_max_duration = __MAX( i_max_duration, i_tracks_duration );
     }
 
     return i_max_duration;



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/commit/2ce189cc177f1b7ae923c9a40ea0c4c1660c9d9c

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/commit/2ce189cc177f1b7ae923c9a40ea0c4c1660c9d9c
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to