vlc | branch: master | Francois Cartegnie <[email protected]> | Tue May 27 23:05:01 2014 +0200| [3ff38b860a5bd13273568a478ee33efe205db688] | committer: Francois Cartegnie
demux: mp4: fix TRUN composition time signedness > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3ff38b860a5bd13273568a478ee33efe205db688 --- modules/demux/mp4/libmp4.h | 2 +- modules/demux/mp4/mp4.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index 30f0f87..6850b2b 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -953,7 +953,7 @@ typedef struct MP4_descriptor_trun_sample_t uint32_t i_duration; uint32_t i_size; uint32_t i_flags; - uint32_t i_composition_time_offset; + uint32_t i_composition_time_offset; /* version == 0 ? signed : unsigned */ } MP4_descriptor_trun_sample_t; typedef struct MP4_Box_data_trun_s diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index 71d2d8e..a365992 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -3933,8 +3933,10 @@ static int MP4_frg_GetChunk( demux_t *p_demux, MP4_Box_t *p_chunk, unsigned *i_t if( ret->p_sample_offset_pts ) { - ret->p_sample_offset_pts[i] = - p_trun_data->p_samples[i].i_composition_time_offset; + if ( p_trun_data->i_version == 0 ) + ret->p_sample_offset_pts[i] = (int32_t) p_trun_data->p_samples[i].i_composition_time_offset; + else + ret->p_sample_offset_pts[i] = __MIN( INT32_MAX, p_trun_data->p_samples[i].i_composition_time_offset ); } if( p_trun_data->i_flags & MP4_TRUN_SAMPLE_SIZE ) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
