vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Jan 26 
09:54:05 2021 +0100| [34ba6ab03b4594ad4e4bfd518e0cb982cc1bb369] | committer: 
Francois Cartegnie

demux: libmp4: fix reading signed cslg

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

 modules/demux/mp4/libmp4.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index 16a9d8ac20..4d01935699 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -1649,17 +1649,22 @@ static int MP4_ReadBox_cslg( stream_t *p_stream, 
MP4_Box_t *p_box )
     if( i_version > 1 )
         MP4_READBOX_EXIT( 0 );
 
-#define READ_CSLG(readbytes) {\
-    readbytes( p_box->data.p_cslg->ct_to_dts_shift );\
-    readbytes( p_box->data.p_cslg->i_least_delta );\
-    readbytes( p_box->data.p_cslg->i_max_delta );\
-    readbytes( p_box->data.p_cslg->i_composition_starttime );\
-    readbytes( p_box->data.p_cslg->i_composition_endtime ); }
+    union { int32_t s; uint32_t u; } u32;
+    union { int64_t s; uint64_t u; } u64;
+#define DOREAD_CSLG( readbytes, temp, member ) \
+        { readbytes( temp.u ); member = temp.s; }
+
+#define READ_CSLG( readbytes, temp ) {\
+    DOREAD_CSLG( readbytes, temp, p_box->data.p_cslg->ct_to_dts_shift );\
+    DOREAD_CSLG( readbytes, temp, p_box->data.p_cslg->i_least_delta );\
+    DOREAD_CSLG( readbytes, temp, p_box->data.p_cslg->i_max_delta );\
+    DOREAD_CSLG( readbytes, temp, p_box->data.p_cslg->i_composition_starttime 
);\
+    DOREAD_CSLG( readbytes, temp, p_box->data.p_cslg->i_composition_endtime ); 
}
 
     if( i_version == 0 )
-        READ_CSLG(MP4_GET4BYTES)
+        READ_CSLG( MP4_GET4BYTES, u32 )
     else
-        READ_CSLG(MP4_GET8BYTES)
+        READ_CSLG( MP4_GET8BYTES, u64 )
 
     MP4_READBOX_EXIT( 1 );
 }

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to