[FFmpeg-devel] [PATCH 2/2] avcodec/libdav1d: honor the requested skip_frame level

Hendrik Leppkes h.leppkes at gmail.com
Fri Jan 7 18:14:04 EET 2022


On Fri, Jan 7, 2022 at 3:22 PM James Almer <jamrial at gmail.com> wrote:
>
> This supports dropping non-intra, non-key, or all frames.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/libdav1d.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c
> index 8e45f533cb..9252a2572d 100644
> --- a/libavcodec/libdav1d.c
> +++ b/libavcodec/libdav1d.c
> @@ -299,6 +299,7 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame)
>  #endif
>      int res;
>
> +redo:
>      if (!data->sz) {
>          AVPacket *const pkt = dav1d->pkt;
>
> @@ -363,6 +364,14 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame)
>
>      av_assert0(p->data[0] && p->allocator_data);
>
> +    if ((c->skip_frame >= AVDISCARD_NONINTRA && (p->frame_hdr->frame_type != DAV1D_FRAME_TYPE_KEY &&
> +                                                 p->frame_hdr->frame_type != DAV1D_FRAME_TYPE_INTRA)) ||
> +        (c->skip_frame >= AVDISCARD_NONKEY   &&  p->frame_hdr->frame_type != DAV1D_FRAME_TYPE_KEY) ||
> +         c->skip_frame >= AVDISCARD_ALL) {
> +        dav1d_picture_unref(p);
> +        goto redo;
> +    }

Is skipping still meaningful if it doesn't actually speed up decoding?

- Hendrik


More information about the ffmpeg-devel mailing list