ivfenc: add AV1 support
authorTristan Matthews <tmatth@videolan.org>
Sun, 10 Dec 2017 23:28:50 +0000 (18:28 -0500)
committerRostislav Pehlivanov <atomnuker@gmail.com>
Wed, 13 Dec 2017 15:10:07 +0000 (15:10 +0000)
libaom tools work with ivf files.

libavformat/ivfenc.c

index fdc0ee0..f591327 100644 (file)
@@ -37,14 +37,17 @@ static int ivf_write_header(AVFormatContext *s)
     }
     par = s->streams[0]->codecpar;
     if (par->codec_type != AVMEDIA_TYPE_VIDEO ||
-        !(par->codec_id == AV_CODEC_ID_VP8 || par->codec_id == AV_CODEC_ID_VP9)) {
-        av_log(s, AV_LOG_ERROR, "Currently only VP8 and VP9 are supported!\n");
+        !(par->codec_id == AV_CODEC_ID_VP8 || par->codec_id == AV_CODEC_ID_VP9 ||
+          par->codec_id == AV_CODEC_ID_AV1)) {
+        av_log(s, AV_LOG_ERROR, "Currently only VP8, VP9 and AV1 are supported!\n");
         return AVERROR(EINVAL);
     }
     avio_write(pb, "DKIF", 4);
     avio_wl16(pb, 0); // version
     avio_wl16(pb, 32); // header length
-    avio_wl32(pb, par->codec_tag ? par->codec_tag : par->codec_id == AV_CODEC_ID_VP9 ? AV_RL32("VP90") : AV_RL32("VP80"));
+    avio_wl32(pb, par->codec_tag ? par->codec_tag :
+              par->codec_id == AV_CODEC_ID_VP9 ? AV_RL32("VP90") :
+              par->codec_id == AV_CODEC_ID_VP8 ? AV_RL32("VP80") : AV_RL32("AV01"));
     avio_wl16(pb, par->width);
     avio_wl16(pb, par->height);
     avio_wl32(pb, s->streams[0]->time_base.den);
@@ -100,6 +103,7 @@ static int ivf_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt)
 static const AVCodecTag codec_ivf_tags[] = {
     { AV_CODEC_ID_VP8,  MKTAG('V', 'P', '8', '0') },
     { AV_CODEC_ID_VP9,  MKTAG('V', 'P', '9', '0') },
+    { AV_CODEC_ID_AV1,  MKTAG('A', 'V', '0', '1') },
     { AV_CODEC_ID_NONE, 0 }
 };