From bd09e8a7df91c6e2c506a3c2d7b2805da75a91e4 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Fri, 24 Oct 2008 01:42:57 +0000 Subject: [PATCH] raw dnxhd de/muxer Originally committed as revision 15674 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/Makefile | 2 ++ libavformat/allformats.c | 1 + libavformat/avformat.h | 2 +- libavformat/raw.c | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/libavformat/Makefile b/libavformat/Makefile index 1537a24..de5cae2 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -38,6 +38,8 @@ OBJS-$(CONFIG_DAUD_DEMUXER) += daud.o OBJS-$(CONFIG_DAUD_MUXER) += daud.o OBJS-$(CONFIG_DIRAC_DEMUXER) += raw.o OBJS-$(CONFIG_DIRAC_MUXER) += raw.o +OBJS-$(CONFIG_DNXHD_DEMUXER) += raw.o +OBJS-$(CONFIG_DNXHD_MUXER) += raw.o OBJS-$(CONFIG_DSICIN_DEMUXER) += dsicin.o OBJS-$(CONFIG_DTS_DEMUXER) += raw.o OBJS-$(CONFIG_DTS_MUXER) += raw.o diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 41cdcfb..8c0cd5d 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -72,6 +72,7 @@ void av_register_all(void) REGISTER_MUXER (CRC, crc); REGISTER_MUXDEMUX (DAUD, daud); REGISTER_MUXDEMUX (DIRAC, dirac); + REGISTER_MUXDEMUX (DNXHD, dnxhd); REGISTER_DEMUXER (DSICIN, dsicin); REGISTER_MUXDEMUX (DTS, dts); REGISTER_MUXDEMUX (DV, dv); diff --git a/libavformat/avformat.h b/libavformat/avformat.h index d8e0b0a..78e7878 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -22,7 +22,7 @@ #define AVFORMAT_AVFORMAT_H #define LIBAVFORMAT_VERSION_MAJOR 52 -#define LIBAVFORMAT_VERSION_MINOR 22 +#define LIBAVFORMAT_VERSION_MINOR 23 #define LIBAVFORMAT_VERSION_MICRO 1 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ diff --git a/libavformat/raw.c b/libavformat/raw.c index 6c6ea27..f2a886c 100644 --- a/libavformat/raw.c +++ b/libavformat/raw.c @@ -505,6 +505,17 @@ static int dirac_probe(AVProbeData *p) } #endif +#ifdef CONFIG_DNXHD_DEMUXER +static int dnxhd_probe(AVProbeData *p) +{ + static const uint8_t header[] = {0x00,0x00,0x02,0x80,0x01}; + if (!memcmp(p->buf, header, 5)) + return AVPROBE_SCORE_MAX; + else + return 0; +} +#endif + #if defined(CONFIG_AC3_DEMUXER) || defined(CONFIG_EAC3_DEMUXER) static int ac3_eac3_probe(AVProbeData *p, enum CodecID expected_codec_id) { @@ -640,6 +651,34 @@ AVOutputFormat dirac_muxer = { }; #endif +#ifdef CONFIG_DNXHD_DEMUXER +AVInputFormat dnxhd_demuxer = { + "dnxhd", + NULL_IF_CONFIG_SMALL("raw DNxHD (SMPTE VC-3)"), + 0, + dnxhd_probe, + video_read_header, + raw_read_partial_packet, + .flags= AVFMT_GENERIC_INDEX, + .value = CODEC_ID_DNXHD, +}; +#endif + +#ifdef CONFIG_DNXHD_MUXER +AVOutputFormat dnxhd_muxer = { + "dnxhd", + NULL_IF_CONFIG_SMALL("raw DNxHD (SMPTE VC-3)"), + NULL, + "dnxhd", + 0, + CODEC_ID_NONE, + CODEC_ID_DNXHD, + NULL, + raw_write_packet, + .flags= AVFMT_NOTIMESTAMPS, +}; +#endif + #ifdef CONFIG_DTS_DEMUXER AVInputFormat dts_demuxer = { "dts", -- 2.7.4