vlc | branch: master | Steve Lhomme <rob...@ycbcr.xyz> | Mon Jun 11 17:45:58 2018 +0200| [50bad3eec6b769aa9e46f5ad89426a43be1f6814] | committer: Steve Lhomme
mux:mp4: the duration passed to mp4mux_GetMoovBox() is an mtime_t We then scale it to the movie and use it scaled. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=50bad3eec6b769aa9e46f5ad89426a43be1f6814 --- modules/mux/mp4/libmp4mux.c | 15 +++++++-------- modules/mux/mp4/libmp4mux.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/modules/mux/mp4/libmp4mux.c b/modules/mux/mp4/libmp4mux.c index 7b45db12ca..5b54d50528 100644 --- a/modules/mux/mp4/libmp4mux.c +++ b/modules/mux/mp4/libmp4mux.c @@ -1398,7 +1398,7 @@ static bo_t *GetStblBox(vlc_object_t *p_obj, mp4mux_trackinfo_t *p_track, bool b } bo_t * mp4mux_GetMoovBox(vlc_object_t *p_obj, mp4mux_trackinfo_t **pp_tracks, unsigned int i_tracks, - int64_t i_movie_duration, + mtime_t i_duration, bool b_fragmented, bool b_mov, bool b_64_ext, bool b_stco64 ) { bo_t *moov, *mvhd; @@ -1415,17 +1415,16 @@ bo_t * mp4mux_GetMoovBox(vlc_object_t *p_obj, mp4mux_trackinfo_t **pp_tracks, un if(!moov) return NULL; /* Create general info */ - if( i_movie_duration == 0 && !b_fragmented ) + if( i_duration == 0 && !b_fragmented ) { for (unsigned int i = 0; i < i_tracks; i++) { mp4mux_trackinfo_t *p_stream = pp_tracks[i]; - i_movie_duration = __MAX(i_movie_duration, p_stream->i_read_duration); + i_duration = __MAX(i_duration, p_stream->i_read_duration); } if(p_obj) - msg_Dbg(p_obj, "movie duration %"PRId64"s", i_movie_duration / CLOCK_FREQ); - - i_movie_duration = i_movie_duration * i_movie_timescale / CLOCK_FREQ; + msg_Dbg(p_obj, "movie duration %"PRId64"s", i_duration / CLOCK_FREQ); } + int64_t i_movie_duration = i_duration * i_movie_timescale / CLOCK_FREQ; /* *** add /moov/mvhd *** */ if (!b_64_ext) { @@ -1796,9 +1795,9 @@ bo_t * mp4mux_GetMoovBox(vlc_object_t *p_obj, mp4mux_trackinfo_t **pp_tracks, un if(mehd) { if(b_64_ext) - bo_add_64be(mehd, i_movie_duration * i_movie_timescale / CLOCK_FREQ); + bo_add_64be(mehd, i_movie_duration); else - bo_add_32be(mehd, i_movie_duration * i_movie_timescale / CLOCK_FREQ); + bo_add_32be(mehd, i_movie_duration); box_gather(mvex, mehd); } } diff --git a/modules/mux/mp4/libmp4mux.h b/modules/mux/mp4/libmp4mux.h index 12df3017f2..36f8052f9a 100644 --- a/modules/mux/mp4/libmp4mux.h +++ b/modules/mux/mp4/libmp4mux.h @@ -85,5 +85,5 @@ void box_gather (bo_t *box, bo_t *box2); bool mp4mux_CanMux(vlc_object_t *, const es_format_t *, vlc_fourcc_t, bool); bo_t *mp4mux_GetFtyp(vlc_fourcc_t, uint32_t, vlc_fourcc_t[], size_t i_fourcc); bo_t *mp4mux_GetMoovBox(vlc_object_t *, mp4mux_trackinfo_t **pp_tracks, unsigned int i_tracks, - int64_t i_movie_duration, + mtime_t i_movie_duration, bool b_fragmented, bool b_mov, bool b_64ext, bool b_stco64); _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits