vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Jan 17 16:40:13 2018 +0100| [b408655d355324254ad3a84972473b2e233fdd7c] | committer: Francois Cartegnie
mux: mp4: reject spu for fragmented mp4 for now too broken > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b408655d355324254ad3a84972473b2e233fdd7c --- modules/demux/smooth/playlist/ForgedInitSegment.cpp | 2 +- modules/mux/mp4/libmp4mux.c | 8 +++++--- modules/mux/mp4/libmp4mux.h | 2 +- modules/mux/mp4/mp4.c | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/demux/smooth/playlist/ForgedInitSegment.cpp b/modules/demux/smooth/playlist/ForgedInitSegment.cpp index 258bf26756..74783fce00 100644 --- a/modules/demux/smooth/playlist/ForgedInitSegment.cpp +++ b/modules/demux/smooth/playlist/ForgedInitSegment.cpp @@ -274,7 +274,7 @@ block_t * ForgedInitSegment::buildMoovBox() mp4mux_trackinfo_t *p_tracks = &trackinfo; bo_t *box = NULL; - if(mp4mux_CanMux( NULL, &trackinfo.fmt )) + if(mp4mux_CanMux( NULL, &trackinfo.fmt, true, false )) box = mp4mux_GetMoovBox(NULL, &p_tracks, 1, trackTimescale.ToTime(duration.Get()), true, false, false, false); diff --git a/modules/mux/mp4/libmp4mux.c b/modules/mux/mp4/libmp4mux.c index 0d40a87589..015d0772b5 100644 --- a/modules/mux/mp4/libmp4mux.c +++ b/modules/mux/mp4/libmp4mux.c @@ -1816,8 +1816,10 @@ bo_t *mp4mux_GetFtyp(vlc_fourcc_t major, uint32_t minor, vlc_fourcc_t extra[], s return box; } -bool mp4mux_CanMux(vlc_object_t *p_obj, const es_format_t *p_fmt) +bool mp4mux_CanMux(vlc_object_t *p_obj, const es_format_t *p_fmt, + bool b_fragmented, bool b_mov) { + VLC_UNUSED(b_mov); switch(p_fmt->i_codec) { case VLC_CODEC_A52: @@ -1856,10 +1858,10 @@ bool mp4mux_CanMux(vlc_object_t *p_obj, const es_format_t *p_fmt) case VLC_CODEC_SUBT: if(p_obj) msg_Warn(p_obj, "subtitle track added like in .mov (even when creating .mp4)"); - break; + return !b_fragmented; case VLC_CODEC_QTXT: case VLC_CODEC_TX3G: - break; + return !b_fragmented; default: return false; } diff --git a/modules/mux/mp4/libmp4mux.h b/modules/mux/mp4/libmp4mux.h index 1a280a9915..ee0e6ba62d 100644 --- a/modules/mux/mp4/libmp4mux.h +++ b/modules/mux/mp4/libmp4mux.h @@ -82,7 +82,7 @@ bo_t *box_full_new(const char *fcc, uint8_t v, uint32_t f); void box_fix (bo_t *box, uint32_t); void box_gather (bo_t *box, bo_t *box2); -bool mp4mux_CanMux(vlc_object_t *, const es_format_t *); +bool mp4mux_CanMux(vlc_object_t *, const es_format_t *, bool, 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, diff --git a/modules/mux/mp4/mp4.c b/modules/mux/mp4/mp4.c index e22963490a..73cfb13a31 100644 --- a/modules/mux/mp4/mp4.c +++ b/modules/mux/mp4/mp4.c @@ -395,7 +395,8 @@ static int AddStream(sout_mux_t *p_mux, sout_input_t *p_input) sout_mux_sys_t *p_sys = p_mux->p_sys; mp4_stream_t *p_stream; - if(!mp4mux_CanMux(VLC_OBJECT(p_mux), p_input->p_fmt)) + if(!mp4mux_CanMux(VLC_OBJECT(p_mux), p_input->p_fmt, + p_sys->b_fragmented, p_sys->b_mov)) { msg_Err(p_mux, "unsupported codec %4.4s in mp4", (char*)&p_input->p_fmt->i_codec); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
