[FFmpeg-devel] [PATCH v9 2/6] avcodec/webp: separate VP8 decoding

Anton Khirnov anton at khirnov.net
Sun Jan 28 12:29:22 EET 2024


Quoting Thilo Borgmann via ffmpeg-devel (2024-01-25 16:39:19)
> Am 25.01.24 um 11:04 schrieb Anton Khirnov:
> > Quoting Thilo Borgmann via ffmpeg-devel (2023-12-31 13:30:14)
> >> ---
> >>   libavcodec/webp.c | 50 +++++++++++++++++++++++++++++++++++++++++------
> >>   1 file changed, 44 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/libavcodec/webp.c b/libavcodec/webp.c
> >> index 4fd107aa0c..58a20b73da 100644
> >> --- a/libavcodec/webp.c
> >> +++ b/libavcodec/webp.c
> >> @@ -194,6 +194,7 @@ typedef struct WebPContext {
> >>       AVFrame *alpha_frame;               /* AVFrame for alpha data decompressed from VP8L */
> >>       AVPacket *pkt;                      /* AVPacket to be passed to the underlying VP8 decoder */
> >>       AVCodecContext *avctx;              /* parent AVCodecContext */
> >> +    AVCodecContext *avctx_vp8;          /* wrapper context for VP8 decoder */
> > 
> > Nested codec contexts are in general highly undesirable and should be
> > avoided whenever possible.
> 
> AFAICT we do it that way in the other codecs as well (cri, ftr, imm5,
> tdsc, tiff). So what do you suggest to do to avoid having it nested?

Integrating the two decoders directly, as is done now.

With nesting it is very tricky to handle all the corner cases properly,
especially passing through all the options to the innner decoder, like
direct rendering, other user callbacks, etc. It should only be done as a
last resort and there should be a strong argument to do it this way.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list