[FFmpeg-devel] [PATCH 2/2] avformat/ivfenc: move bsf insertion to the init function

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Mon May 11 14:59:27 EEST 2020


James Almer:
> Signed-off-by: James Almer <jamrial at 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?)

- Andreas


More information about the ffmpeg-devel mailing list