Browse Source

Timecode v2 muxer
(cherry picked from commit 79ca161498744330ac940ae773dda3f1796ce955)

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

David Conrad 15 years ago
parent
commit
1c5670dbb2
3 changed files with 55 additions and 0 deletions
  1. 1 0
      libavformat/Makefile
  2. 1 0
      libavformat/allformats.c
  3. 53 0
      libavformat/timecode_v2.c

+ 1 - 0
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

+ 1 - 0
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);

+ 53 - 0
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,
+};