On 5/11/2020 8:59 AM, Andreas Rheinhardt wrote: > James Almer: >> Signed-off-by: James Almer <jamr...@gmail.com> >> --- >> libavformat/ivfenc.c | 24 ++++++++++-------------- >> 1 file changed, 10 insertions(+), 14 deletions(-) >> >> diff --git a/libavformat/ivfenc.c b/libavformat/ivfenc.c >> index 0ce4a85171..0951f56c92 100644 >> --- a/libavformat/ivfenc.c >> +++ b/libavformat/ivfenc.c >> @@ -43,6 +43,16 @@ static int ivf_init(AVFormatContext *s) >> return AVERROR(EINVAL); >> } >> >> + if (par->codec_id == AV_CODEC_ID_VP9) { >> + int ret = ff_stream_add_bitstream_filter(s->streams[0], >> "vp9_superframe", NULL); >> + if (ret < 0) >> + return ret; >> + } else if (par->codec_id == AV_CODEC_ID_AV1) { >> + int ret = ff_stream_add_bitstream_filter(s->streams[0], >> "av1_metadata", "td=insert"); >> + if (ret < 0) >> + return ret; >> + } >> + >> return 0; >> } >> >> @@ -100,19 +110,6 @@ static int ivf_write_trailer(AVFormatContext *s) >> return 0; >> } >> >> -static int ivf_check_bitstream(struct AVFormatContext *s, const AVPacket >> *pkt) >> -{ >> - int ret = 1; >> - AVStream *st = s->streams[pkt->stream_index]; >> - >> - if (st->codecpar->codec_id == AV_CODEC_ID_VP9) >> - ret = ff_stream_add_bitstream_filter(st, "vp9_superframe", NULL); >> - else if (st->codecpar->codec_id == AV_CODEC_ID_AV1) >> - ret = ff_stream_add_bitstream_filter(st, "av1_metadata", >> "td=insert"); >> - >> - return ret; >> -} >> - >> static const AVCodecTag codec_ivf_tags[] = { >> { AV_CODEC_ID_VP8, MKTAG('V', 'P', '8', '0') }, >> { AV_CODEC_ID_VP9, MKTAG('V', 'P', '9', '0') }, >> @@ -131,6 +128,5 @@ AVOutputFormat ff_ivf_muxer = { >> .write_header = ivf_write_header, >> .write_packet = ivf_write_packet, >> .write_trailer = ivf_write_trailer, >> - .check_bitstream = ivf_check_bitstream, >> .codec_tag = (const AVCodecTag* const []){ codec_ivf_tags, 0 }, >> }; >> > LGTM. (Would it actually make sense/be possible to replace st->codecpar > with the output codecparameters of the bsf if the bsf is initialized in > the init function, so that it is easier for the muxer to locate the > right codecparameters when writing the header?)
It's possible, but i don't know if that's expected behavior or not. Editing the codecpar is done by some muxers, true, but the doxy stats it's "filled by the caller before avformat_write_header()". An option could be to have a copy of the AVCodecParameters that can be edited in st->internal instead, and leave the caller one in st alone. Will apply, thanks. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".