summaryrefslogtreecommitdiff
path: root/libavformat/ivfenc.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2020-05-10 10:49:15 -0300
committerJames Almer <jamrial@gmail.com>2020-05-11 19:40:40 -0300
commit8e12f09a25d7fa2c9e2b63dd6407aece412750a5 (patch)
treed035b06ac9eed45d479acf5504f427358adbbd4b /libavformat/ivfenc.c
parent7a92147f87129851c1cc2c15f4ba714b8cf23f71 (diff)
avformat/ivfenc: add an AVOutputFormat.init() function
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/ivfenc.c')
-rw-r--r--libavformat/ivfenc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/libavformat/ivfenc.c b/libavformat/ivfenc.c
index 45e5b238dc..0ce4a85171 100644
--- a/libavformat/ivfenc.c
+++ b/libavformat/ivfenc.c
@@ -26,10 +26,9 @@ typedef struct IVFEncContext {
uint64_t last_pts, sum_delta_pts;
} IVFEncContext;
-static int ivf_write_header(AVFormatContext *s)
+static int ivf_init(AVFormatContext *s)
{
AVCodecParameters *par;
- AVIOContext *pb = s->pb;
if (s->nb_streams != 1) {
av_log(s, AV_LOG_ERROR, "Format supports only exactly one video stream\n");
@@ -43,6 +42,15 @@ static int ivf_write_header(AVFormatContext *s)
av_log(s, AV_LOG_ERROR, "Currently only VP8, VP9 and AV1 are supported!\n");
return AVERROR(EINVAL);
}
+
+ return 0;
+}
+
+static int ivf_write_header(AVFormatContext *s)
+{
+ AVCodecParameters *par = s->streams[0]->codecpar;
+ AVIOContext *pb = s->pb;
+
avio_write(pb, "DKIF", 4);
avio_wl16(pb, 0); // version
avio_wl16(pb, 32); // header length
@@ -119,6 +127,7 @@ AVOutputFormat ff_ivf_muxer = {
.extensions = "ivf",
.audio_codec = AV_CODEC_ID_NONE,
.video_codec = AV_CODEC_ID_VP8,
+ .init = ivf_init,
.write_header = ivf_write_header,
.write_packet = ivf_write_packet,
.write_trailer = ivf_write_trailer,