<div dir="auto">Our software (cinelerra-gg) uses array of pixelformats from libavcodec encoders  for presenting user with menu to choose from<div dir="auto"><br></div><div dir="auto">yuv4mpeg encoder does not have this array populated so menu basically useless ...</div><div dir="auto"><br></div><div dir="auto">I tried to make this patch</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">~ $ cat cinelerra/cinelerra-5.1/thirdparty/src/ffmpeg-5.1.patchZ1</div><div dir="auto">--- ./libavcodec/wrapped_avframe.c.orig 2022-07-22 20:58:39.000000000 +0300</div><div dir="auto">+++ ./libavcodec/wrapped_avframe.c      2022-07-24 05:51:27.513268806 +0300</div><div dir="auto">@@ -33,6 +33,38 @@</div><div dir="auto"> #include "libavutil/buffer.h"</div><div dir="auto"> #include "libavutil/pixdesc.h"</div><div dir="auto"><br></div><div dir="auto">+</div><div dir="auto">+</div><div dir="auto">+static const enum AVPixelFormat pix_fmts_all[] = {</div><div dir="auto">+    AV_PIX_FMT_YUV411P,</div><div dir="auto">+    AV_PIX_FMT_YUV420P,</div><div dir="auto">+    AV_PIX_FMT_YUVJ420P,</div><div dir="auto">+    AV_PIX_FMT_YUV422P,</div><div dir="auto">+    AV_PIX_FMT_YUVJ422P,</div><div dir="auto">+    AV_PIX_FMT_YUV444P,</div><div dir="auto">+    AV_PIX_FMT_YUVJ444P,</div><div dir="auto">+    AV_PIX_FMT_YUV420P10,</div><div dir="auto">+    AV_PIX_FMT_YUV422P10,</div><div dir="auto">+    AV_PIX_FMT_YUV444P10,</div><div dir="auto">+    AV_PIX_FMT_YUV420P12,</div><div dir="auto">+    AV_PIX_FMT_YUV422P12,</div><div dir="auto">+    AV_PIX_FMT_YUV444P12,</div><div dir="auto">+    AV_PIX_FMT_YUV420P14,</div><div dir="auto">+    AV_PIX_FMT_YUV422P14,</div><div dir="auto">+    AV_PIX_FMT_YUV444P14,</div><div dir="auto">+    AV_PIX_FMT_YUV420P16,</div><div dir="auto">+    AV_PIX_FMT_YUV422P16,</div><div dir="auto">+    AV_PIX_FMT_YUV444P16,</div><div dir="auto">+    AV_PIX_FMT_GRAY8,</div><div dir="auto">+    AV_PIX_FMT_GRAY9,</div><div dir="auto">+    AV_PIX_FMT_GRAY10,</div><div dir="auto">+    AV_PIX_FMT_GRAY12,</div><div dir="auto">+    AV_PIX_FMT_GRAY16,</div><div dir="auto">+    AV_PIX_FMT_NONE</div><div dir="auto">+};</div><div dir="auto">+</div><div dir="auto">+</div><div dir="auto">+</div><div dir="auto"> static void wrapped_avframe_release_buffer(void *unused, uint8_t *data)</div><div dir="auto"> {</div><div dir="auto">     AVFrame *frame = (AVFrame *)data;</div><div dir="auto">@@ -109,6 +141,7 @@</div><div dir="auto">     .<a href="http://p.id">p.id</a>           = AV_CODEC_ID_WRAPPED_AVFRAME,</div><div dir="auto">     FF_CODEC_ENCODE_CB(wrapped_avframe_encode),</div><div dir="auto">     .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,</div><div dir="auto">+    .p.pix_fmts       = pix_fmts_all,</div><div dir="auto"> };</div><div dir="auto"><br></div><div dir="auto"> const FFCodec ff_wrapped_avframe_decoder = {</div><div dir="auto">@@ -118,4 +151,5 @@</div><div dir="auto">     .<a href="http://p.id">p.id</a>           = AV_CODEC_ID_WRAPPED_AVFRAME,</div><div dir="auto">     FF_CODEC_DECODE_CB(wrapped_avframe_decode),</div><div dir="auto">     .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,</div><div dir="auto">+</div><div dir="auto"> };</div><div dir="auto">~ $</div><div dir="auto"><br></div><div dir="auto">So it compiles and I can select in our gui y4m with say 444yuv 16 bit. And resulting file is huge, but decodeble by ffmpeg/libavcodec.</div><div dir="auto"><br></div><div dir="auto">Does my patch break some assumptions somewhere? I saw wrapped avframe used for hw accelerated encoding, but this part seems to work after my patch ...</div></div>