diff options
author | David Conrad <lessen42@gmail.com> | 2009-08-14 02:38:45 -0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-10-27 01:03:22 +0200 |
commit | 1c5670dbb204369477ee1b5d967f9e8b4f4a33b8 (patch) | |
tree | 2ac2c1cd68e3d339e9e06ea9b9b9fb3eae3fa207 | |
parent | fc3203fcf9372b6733ddf89b7c66ca2f8ede8b59 (diff) | |
download | ffmpeg-1c5670dbb204369477ee1b5d967f9e8b4f4a33b8.tar.gz |
Timecode v2 muxer
(cherry picked from commit 79ca161498744330ac940ae773dda3f1796ce955)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/Makefile | 1 | ||||
-rw-r--r-- | libavformat/allformats.c | 1 | ||||
-rw-r--r-- | libavformat/timecode_v2.c | 53 |
3 files changed, 55 insertions, 0 deletions
diff --git a/libavformat/Makefile b/libavformat/Makefile index 47045d321c..61109b729d 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 7e0e9cef52..5ce50806a0 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 0000000000..f41e6569b9 --- /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, +}; |