From patchwork Sat Sep 24 20:40:35 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 709 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.66 with SMTP id o63csp1209195vsd; Sat, 24 Sep 2016 13:40:46 -0700 (PDT) X-Received: by 10.194.157.226 with SMTP id wp2mr14495079wjb.48.1474749646619; Sat, 24 Sep 2016 13:40:46 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w3si212667wma.102.2016.09.24.13.40.45; Sat, 24 Sep 2016 13:40:46 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 263AD689D9E; Sat, 24 Sep 2016 23:40:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-dmta-pe04-1.mx.upcmail.net (vie01a-dmta-pe04-1.mx.upcmail.net [62.179.121.163]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2DE1B680B17 for ; Sat, 24 Sep 2016 23:40:21 +0300 (EEST) Received: from [172.31.216.43] (helo=vie01a-pemc-psmtp-pe01) by vie01a-dmta-pe04.mx.upcmail.net with esmtp (Exim 4.87) (envelope-from ) id 1bntkS-000728-W7 for ffmpeg-devel@ffmpeg.org; Sat, 24 Sep 2016 22:40:37 +0200 Received: from [192.168.1.3] ([80.110.107.246]) by vie01a-pemc-psmtp-pe01 with SMTP @ mailcloud.upcmail.net id nYgb1t00T5Jzyoo01Ygctv; Sat, 24 Sep 2016 22:40:36 +0200 X-SourceIP: 80.110.107.246 From: Carl Eugen Hoyos To: FFmpeg development discussions and patches Date: Sat, 24 Sep 2016 22:40:35 +0200 User-Agent: KMail/1.9.10 MIME-Version: 1.0 Message-Id: <201609242240.35695.cehoyos@ag.or.at> Subject: [FFmpeg-devel] [PATCH]lavf/movenc: Allow to disable writing the timecode track X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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 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). +@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}, { 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; #define FF_MOV_FLAG_RTP_HINT (1 << 0)