[FFmpeg-cvslog] Timecode v2 muxer

David Conrad git at videolan.org
Thu Oct 27 01:14:50 CEST 2011


ffmpeg | branch: master | David Conrad <lessen42 at gmail.com> | Fri Aug 14 02:38:45 2009 -0400| [1c5670dbb204369477ee1b5d967f9e8b4f4a33b8] | committer: Michael Niedermayer

Timecode v2 muxer
(cherry picked from commit 79ca161498744330ac940ae773dda3f1796ce955)

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1c5670dbb204369477ee1b5d967f9e8b4f4a33b8
---

 libavformat/Makefile      |    1 +
 libavformat/allformats.c  |    1 +
 libavformat/timecode_v2.c |   53 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/libavformat/Makefile b/libavformat/Makefile
index 47045d3..61109b7 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -291,6 +291,7 @@ OBJS-$(CONFIG_SWF_DEMUXER)               += swfdec.o
 OBJS-$(CONFIG_SWF_MUXER)                 += swfenc.o
 OBJS-$(CONFIG_THP_DEMUXER)               += thp.o
 OBJS-$(CONFIG_TIERTEXSEQ_DEMUXER)        += tiertexseq.o
+OBJS-$(CONFIG_TIMECODE_V2_MUXER)         += timecode_v2.o
 OBJS-$(CONFIG_TMV_DEMUXER)               += tmv.o
 OBJS-$(CONFIG_TRUEHD_DEMUXER)            += rawdec.o
 OBJS-$(CONFIG_TRUEHD_MUXER)              += rawenc.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 7e0e9ce..5ce5080 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -217,6 +217,7 @@ void av_register_all(void)
     REGISTER_MUXER    (TGP, tgp);
     REGISTER_DEMUXER  (THP, thp);
     REGISTER_DEMUXER  (TIERTEXSEQ, tiertexseq);
+    REGISTER_MUXER    (TIMECODE_V2, timecode_v2);
     REGISTER_DEMUXER  (TMV, tmv);
     REGISTER_MUXDEMUX (TRUEHD, truehd);
     REGISTER_DEMUXER  (TTA, tta);
diff --git a/libavformat/timecode_v2.c b/libavformat/timecode_v2.c
new file mode 100644
index 0000000..f41e656
--- /dev/null
+++ b/libavformat/timecode_v2.c
@@ -0,0 +1,53 @@
+/*
+ * extract pts as timecode v2, as defined by mkvtoolnix
+ * Copyright (c) 2009 David Conrad
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "avformat.h"
+
+static int timecode_v2_write_header(AVFormatContext *s)
+{
+    static const char *header = "# timecode format v2\n";
+    put_buffer(s->pb, header, strlen(header));
+    av_set_pts_info(s->streams[0], 64, 1, 1000);
+    return 0;
+}
+
+static int timecode_v2_write_packet(AVFormatContext *s, AVPacket *pkt)
+{
+    char buf[256];
+    if (pkt->stream_index)
+        av_log(s, AV_LOG_WARNING, "More than one stream unsupported\n");
+    snprintf(buf, sizeof(buf), "%" PRId64 "\n", pkt->dts);
+    put_buffer(s->pb, buf, strlen(buf));
+    put_flush_packet(s->pb);
+    return 0;
+}
+
+AVOutputFormat ff_timecode_v2_muxer = {
+    "timecode_v2",
+    NULL_IF_CONFIG_SMALL("timecode format v2"),
+    NULL,
+    "",
+    0,
+    CODEC_ID_NONE,
+    CODEC_ID_RAWVIDEO,
+    timecode_v2_write_header,
+    timecode_v2_write_packet,
+};



More information about the ffmpeg-cvslog mailing list