--- libavformat/allformats.c | 1 + libavformat/dnxhddec.c | 22 ++++++++++++++++++++-- libavformat/rawenc.c | 11 +++++++++++ libavformat/version.h | 2 +- 4 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/libavformat/allformats.c b/libavformat/allformats.c index d490cc4..0ee3b85 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -107,6 +107,7 @@ void av_register_all(void) REGISTER_DEMUXER (DFA, dfa); REGISTER_MUXDEMUX(DIRAC, dirac); REGISTER_MUXDEMUX(DNXHD, dnxhd); + REGISTER_MUXDEMUX(DNXHR, dnxhr); REGISTER_DEMUXER (DSF, dsf); REGISTER_DEMUXER (DSICIN, dsicin); REGISTER_DEMUXER (DSS, dss); diff --git a/libavformat/dnxhddec.c b/libavformat/dnxhddec.c index 48c890d..081daaa 100644 --- a/libavformat/dnxhddec.c +++ b/libavformat/dnxhddec.c @@ -25,12 +25,13 @@ #include "rawdec.h" #include "libavcodec/dnxhddata.h" -static int dnxhd_probe(AVProbeData *p) +static uint64_t dnxhd_probe_header(AVProbeData *p) { int w, h, compression_id; + uint64_t header_prefix; if (p->buf_size < 0x2c) return 0; - if (avpriv_dnxhd_parse_header_prefix(p->buf) == 0) + if ((header_prefix = avpriv_dnxhd_parse_header_prefix(p->buf)) == 0) return 0; h = AV_RB16(p->buf + 0x18); w = AV_RB16(p->buf + 0x1a); @@ -40,7 +41,24 @@ static int dnxhd_probe(AVProbeData *p) if ((compression_id < 1235 || compression_id > 1260) && (compression_id < 1270 || compression_id > 1274)) return 0; + return header_prefix; +} + +static int dnxhd_probe(AVProbeData *p) +{ + uint64_t header_prefix = dnxhd_probe_header(p); + if(header_prefix == DNXHD_HEADER_INITIAL || header_prefix == DNXHD_HEADER_444) + return AVPROBE_SCORE_MAX; + return 0; +} + +static int dnxhr_probe(AVProbeData *p) +{ + uint64_t header_prefix = dnxhd_probe_header(p); + if(header_prefix == DNXHD_HEADER_HR1 || header_prefix == DNXHD_HEADER_HR2) return AVPROBE_SCORE_MAX; + return 0; } FF_DEF_RAWVIDEO_DEMUXER(dnxhd, "raw DNxHD (SMPTE VC-3)", dnxhd_probe, NULL, AV_CODEC_ID_DNXHD) +FF_DEF_RAWVIDEO_DEMUXER(dnxhr, "raw DNxHR", dnxhr_probe, NULL, AV_CODEC_ID_DNXHR) diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c index 4b8b41c..271400d 100644 --- a/libavformat/rawenc.c +++ b/libavformat/rawenc.c @@ -135,6 +135,17 @@ AVOutputFormat ff_dnxhd_muxer = { .write_packet = ff_raw_write_packet, .flags = AVFMT_NOTIMESTAMPS, }; + +AVOutputFormat ff_dnxhr_muxer = { + .name = "dnxhr", + .long_name = NULL_IF_CONFIG_SMALL("raw DNxHR"), + .extensions = "dnxhr", + .audio_codec = AV_CODEC_ID_NONE, + .video_codec = AV_CODEC_ID_DNXHR, + .write_header = force_one_stream, + .write_packet = ff_raw_write_packet, + .flags = AVFMT_NOTIMESTAMPS, +}; #endif #if CONFIG_DTS_MUXER diff --git a/libavformat/version.h b/libavformat/version.h index 47a8afb..3921ee5 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -32,7 +32,7 @@ // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) // Also please add any ticket numbers that you belive might be affected here #define LIBAVFORMAT_VERSION_MAJOR 57 -#define LIBAVFORMAT_VERSION_MINOR 41 +#define LIBAVFORMAT_VERSION_MINOR 42 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ -- 2.7.3 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel