Commit 8e12f09a authored by James Almer's avatar James Almer

avformat/ivfenc: add an AVOutputFormat.init() function

Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent 7a92147f
...@@ -26,10 +26,9 @@ typedef struct IVFEncContext { ...@@ -26,10 +26,9 @@ typedef struct IVFEncContext {
uint64_t last_pts, sum_delta_pts; uint64_t last_pts, sum_delta_pts;
} IVFEncContext; } IVFEncContext;
static int ivf_write_header(AVFormatContext *s) static int ivf_init(AVFormatContext *s)
{ {
AVCodecParameters *par; AVCodecParameters *par;
AVIOContext *pb = s->pb;
if (s->nb_streams != 1) { if (s->nb_streams != 1) {
av_log(s, AV_LOG_ERROR, "Format supports only exactly one video stream\n"); 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) ...@@ -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"); av_log(s, AV_LOG_ERROR, "Currently only VP8, VP9 and AV1 are supported!\n");
return AVERROR(EINVAL); 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_write(pb, "DKIF", 4);
avio_wl16(pb, 0); // version avio_wl16(pb, 0); // version
avio_wl16(pb, 32); // header length avio_wl16(pb, 32); // header length
...@@ -119,6 +127,7 @@ AVOutputFormat ff_ivf_muxer = { ...@@ -119,6 +127,7 @@ AVOutputFormat ff_ivf_muxer = {
.extensions = "ivf", .extensions = "ivf",
.audio_codec = AV_CODEC_ID_NONE, .audio_codec = AV_CODEC_ID_NONE,
.video_codec = AV_CODEC_ID_VP8, .video_codec = AV_CODEC_ID_VP8,
.init = ivf_init,
.write_header = ivf_write_header, .write_header = ivf_write_header,
.write_packet = ivf_write_packet, .write_packet = ivf_write_packet,
.write_trailer = ivf_write_trailer, .write_trailer = ivf_write_trailer,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment