From 7e11a861755dfa37043c0a9fc800cf7db3f4f7da Mon Sep 17 00:00:00 2001 From: James Almer Date: Mon, 16 Apr 2018 12:44:35 -0300 Subject: [PATCH] avformat/flacenc: add flac_init() Signed-off-by: James Almer (cherry picked from commit 6838359448faeceb4830e7a1cf3ca6e36fb7e4a7) --- libavformat/flacenc.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/libavformat/flacenc.c b/libavformat/flacenc.c index 3179f259e5..617bccdc84 100644 --- a/libavformat/flacenc.c +++ b/libavformat/flacenc.c @@ -199,11 +199,11 @@ static int flac_finish_header(struct AVFormatContext *s) return 0; } -static int flac_write_header(struct AVFormatContext *s) +static int flac_init(struct AVFormatContext *s) { AVCodecParameters *par; FlacMuxerContext *c = s->priv_data; - int ret, i; + int i; c->audio_stream_idx = -1; for (i = 0; i < s->nb_streams; i++) { @@ -238,14 +238,6 @@ static int flac_write_header(struct AVFormatContext *s) return AVERROR(EINVAL); } - if (!c->write_header) - return 0; - - ret = ff_flac_write_header(s->pb, par->extradata, - par->extradata_size, 0); - if (ret) - return ret; - /* add the channel layout tag */ if (par->channel_layout && !(par->channel_layout & ~0x3ffffULL) && @@ -263,6 +255,23 @@ static int flac_write_header(struct AVFormatContext *s) } } + return 0; +} + +static int flac_write_header(struct AVFormatContext *s) +{ + FlacMuxerContext *c = s->priv_data; + AVCodecParameters *par = s->streams[c->audio_stream_idx]->codecpar; + int ret; + + if (!c->write_header) + return 0; + + ret = ff_flac_write_header(s->pb, par->extradata, + par->extradata_size, 0); + if (ret < 0) + return ret; + if (!c->waiting_pics) ret = flac_finish_header(s); @@ -412,6 +421,7 @@ AVOutputFormat ff_flac_muxer = { .extensions = "flac", .audio_codec = AV_CODEC_ID_FLAC, .video_codec = AV_CODEC_ID_PNG, + .init = flac_init, .write_header = flac_write_header, .write_packet = flac_write_packet, .write_trailer = flac_write_trailer,