[FFmpeg-devel] [PATCH 5/8] lavc/libvpxenc: handle frame durations and AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE
James Zern
jzern at google.com
Tue Feb 28 23:11:29 EET 2023
On Tue, Feb 28, 2023 at 4:01 AM Anton Khirnov <anton at khirnov.net> wrote:
>
> ---
> libavcodec/libvpxenc.c | 139 +++++++++++++++++++++++++++++------------
> libavcodec/version.h | 2 +-
> 2 files changed, 100 insertions(+), 41 deletions(-)
>
lgtm
> diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
> index 77921badba..af16e53deb 100644
> --- a/libavcodec/libvpxenc.c
> +++ b/libavcodec/libvpxenc.c
> @@ -68,6 +68,14 @@ struct FrameListData {
>
> typedef struct FrameData {
> int64_t pts;
> + int64_t duration;
> +
> +#if FF_API_REORDERED_OPAQUE
> + int64_t reordered_opaque;
> +#endif
> + void *frame_opaque;
> + AVBufferRef *frame_opaque_ref;
> +
> AVBufferRef *hdr10_plus;
> } FrameData;
>
> @@ -329,32 +337,101 @@ static av_cold void free_frame_list(struct FrameListData *list)
> }
> }
>
> +static void frame_data_uninit(FrameData *fd)
> +{
> + av_buffer_unref(&fd->frame_opaque_ref);
> + av_buffer_unref(&fd->hdr10_plus);
> +}
> +
> static av_cold void fifo_free(AVFifo **fifo)
> {
> FrameData fd;
> while (av_fifo_read(*fifo, &fd, 1) >= 0)
> - av_buffer_unref(&fd.hdr10_plus);
> + frame_data_uninit(&fd);
> av_fifo_freep2(fifo);
> }
>
> -static int frame_data_apply(AVFifo *fifo, AVPacket *pkt)
> +static int frame_data_submit(AVCodecContext *avctx, AVFifo *fifo,
> + const AVFrame *frame)
> +{
> + VPxContext *ctx = avctx->priv_data;
> + const struct vpx_codec_enc_cfg *enccfg = ctx->encoder.config.enc;
> +
> + FrameData fd = { .pts = frame->pts };
> +
The alignment of this declaration looks strange.
> + AVFrameSideData *av_uninit(sd);
> + int ret;
> +
> +#if CONFIG_LIBVPX_VP9_ENCODER
> + // Keep HDR10+ if it has bit depth higher than 8 and
> + // it has PQ trc (SMPTE2084).
Out of curiosity are there any HDR10+ files in fate?
> [...]
> diff --git a/libavcodec/version.h b/libavcodec/version.h
> index 06631ffa8c..789d9047c2 100644
> --- a/libavcodec/version.h
> +++ b/libavcodec/version.h
> @@ -30,7 +30,7 @@
> #include "version_major.h"
>
> #define LIBAVCODEC_VERSION_MINOR 4
> -#define LIBAVCODEC_VERSION_MICRO 100
> +#define LIBAVCODEC_VERSION_MICRO 101
>
This needs a rebase to apply cleanly.
More information about the ffmpeg-devel
mailing list