[vlc-commits] demux: mp4: compute cts_shift when missing

Francois Cartegnie git at videolan.org
Sun Feb 7 20:21:45 UTC 2021


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Feb  4 20:24:36 2021 +0100| [a1ad08a051f85a645c0353116c930806cdda6128] | committer: Francois Cartegnie

demux: mp4: compute cts_shift when missing

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a1ad08a051f85a645c0353116c930806cdda6128
---

 modules/demux/mp4/mp4.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c
index c926d47e72..2f12ab7c7e 100644
--- a/modules/demux/mp4/mp4.c
+++ b/modules/demux/mp4/mp4.c
@@ -2686,7 +2686,17 @@ static int TrackCreateSamplesIndex( demux_t *p_demux,
         int64_t i_cts_shift = 0;
         const MP4_Box_t *p_cslg = MP4_BoxGet( p_demux_track->p_stbl, "cslg" );
         if( p_cslg && BOXDATA(p_cslg) )
+        {
             i_cts_shift = BOXDATA(p_cslg)->ct_to_dts_shift;
+        }
+        else if( ctts->i_entry_count ) /* Compute for Quicktime */
+        {
+            for( uint32_t i = 0; i < ctts->i_entry_count; i++ )
+            {
+                if( ctts->pi_sample_offset[i] < 0 && ctts->pi_sample_offset[i] < -i_cts_shift )
+                    i_cts_shift = -ctts->pi_sample_offset[i];
+            }
+        }
 
         /* Create pts-dts table per chunk */
         uint32_t i_index = 0;



More information about the vlc-commits mailing list