[FFmpeg-devel] [PATCH]lavf/movenc: Allow to disable writing the timecode track
Clément Bœsch
u at pkh.me
Sun Sep 25 22:47:22 EEST 2016
On Sat, Sep 24, 2016 at 10:40:35PM +0200, Carl Eugen Hoyos wrote:
> Hi!
>
> Not everybody is happy about a timecode track in mp4,
> see ticket #5492.
>
> Please comment, Carl Eugen
> From 47a813709643106b0d0a2eceff822107c395d15c Mon Sep 17 00:00:00 2001
> From: Carl Eugen Hoyos <cehoyos at ag.or.at>
> Date: Sat, 24 Sep 2016 22:38:14 +0200
> Subject: [PATCH] lavf/movenc: Allow to disable writing the timecode track.
>
> Fixes ticket #5492.
> ---
> doc/muxers.texi | 3 +++
> libavformat/movenc.c | 6 ++++--
> libavformat/movenc.h | 1 +
> 3 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/doc/muxers.texi b/doc/muxers.texi
> index 27eb9a0..61476ca 100644
> --- a/doc/muxers.texi
> +++ b/doc/muxers.texi
> @@ -884,6 +884,9 @@ the new default-base-is-moof flag instead. This flag is new from
> 14496-12:2012. This may make the fragments easier to parse in certain
> circumstances (avoiding basing track fragment location calculations
> on the implicit end of the previous track fragment).
> + at item -write_tmcd
> +Specify 1 to force writing a timecode track, 0 to disable it and -1 to
> +write a timecode track only for mov and mp4 output (default).
> @end table
>
> @subsection Example
> diff --git a/libavformat/movenc.c b/libavformat/movenc.c
> index 0382309..a5e4ad1 100644
> --- a/libavformat/movenc.c
> +++ b/libavformat/movenc.c
> @@ -90,6 +90,7 @@ static const AVOption options[] = {
> { "encryption_key", "The media encryption key (hex)", offsetof(MOVMuxContext, encryption_key), AV_OPT_TYPE_BINARY, .flags = AV_OPT_FLAG_ENCODING_PARAM },
> { "encryption_kid", "The media encryption key identifier (hex)", offsetof(MOVMuxContext, encryption_kid), AV_OPT_TYPE_BINARY, .flags = AV_OPT_FLAG_ENCODING_PARAM },
> { "use_stream_ids_as_track_ids", "use stream ids as track ids", offsetof(MOVMuxContext, use_stream_ids_as_track_ids), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
> + { "write_tmcd", "force or disable writing tmcd", offsetof(MOVMuxContext, write_tmcd), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, AV_OPT_FLAG_ENCODING_PARAM},
AV_OPT_TYPE_BOOL
> { NULL },
> };
>
> @@ -2312,7 +2313,7 @@ static int mov_write_minf_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext
> } else if (track->tag == MKTAG('r','t','p',' ')) {
> mov_write_hmhd_tag(pb);
> } else if (track->tag == MKTAG('t','m','c','d')) {
> - if (track->mode == MODE_MP4)
> + if (track->mode != MODE_MOV)
> mov_write_nmhd_tag(pb);
> else
> mov_write_gmhd_tag(pb, track);
> @@ -5539,7 +5540,8 @@ static int mov_write_header(AVFormatContext *s)
> }
> }
>
> - if (mov->mode == MODE_MOV || mov->mode == MODE_MP4) {
> + if ( mov->write_tmcd == -1 && (mov->mode == MODE_MOV || mov->mode == MODE_MP4)
> + || mov->write_tmcd == 1) {
> tmcd_track = mov->nb_streams;
>
> /* +1 tmcd track for each video stream with a timecode */
> diff --git a/libavformat/movenc.h b/libavformat/movenc.h
> index ea76e39..1f7a9d7 100644
> --- a/libavformat/movenc.h
> +++ b/libavformat/movenc.h
> @@ -219,6 +219,7 @@ typedef struct MOVMuxContext {
>
> int use_stream_ids_as_track_ids;
> int track_ids_ok;
> + int write_tmcd;
> } MOVMuxContext;
>
Didn't test nor looked in depth, but OK if it disable timecode in MP4 by
default. Timecode is only (badly) "standardized" in MOV, so we shouldn't
write such track in MP4.
--
Clément B.
More information about the ffmpeg-devel
mailing list