From 279c0020b51cc35fa7efd14e044b9beaa7ae31d6 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <randrianasulu@gmail.com>
Date: Mon, 21 Jun 2021 16:40:23 +0300
Subject: [PATCH 40/43] Hack: pix_fmts for yuv4mpegpipe muxer/encoder allow
 format choice in cingg via std menu

---
 .../thirdparty/src/ffmpeg-4.4.patchZ1         | 47 +++++++++++++++++++
 .../thirdparty/src/ffmpeg-4.4.patchZ2         | 11 +++++
 2 files changed, 58 insertions(+)
 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ1
 create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ2

diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ1 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ1
new file mode 100644
index 00000000..363d4607
--- /dev/null
+++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ1
@@ -0,0 +1,47 @@
+--- a/libavcodec/wrapped_avframe.c.orig	2021-06-15 22:37:02.955552877 +0300
++++ b/libavcodec/wrapped_avframe.c	2021-06-15 23:50:34.439553140 +0300
+@@ -109,6 +109,36 @@
+     return 0;
+ }
+ 
++
++
++static const enum AVPixelFormat pix_fmts_all[] = {
++    AV_PIX_FMT_YUV411P,
++    AV_PIX_FMT_YUV420P,
++    AV_PIX_FMT_YUVJ420P,
++    AV_PIX_FMT_YUV422P,
++    AV_PIX_FMT_YUVJ422P,
++    AV_PIX_FMT_YUV444P,
++    AV_PIX_FMT_YUVJ444P,
++    AV_PIX_FMT_YUV420P10,
++    AV_PIX_FMT_YUV422P10,
++    AV_PIX_FMT_YUV444P10,
++    AV_PIX_FMT_YUV420P12,
++    AV_PIX_FMT_YUV422P12,
++    AV_PIX_FMT_YUV444P12,
++    AV_PIX_FMT_YUV420P14,
++    AV_PIX_FMT_YUV422P14,
++    AV_PIX_FMT_YUV444P14,
++    AV_PIX_FMT_YUV420P16,
++    AV_PIX_FMT_YUV422P16,
++    AV_PIX_FMT_YUV444P16,    
++    AV_PIX_FMT_GRAY8,
++    AV_PIX_FMT_GRAY9,
++    AV_PIX_FMT_GRAY10,
++    AV_PIX_FMT_GRAY12,
++    AV_PIX_FMT_GRAY16,
++    AV_PIX_FMT_NONE
++};
++
+ AVCodec ff_wrapped_avframe_encoder = {
+     .name           = "wrapped_avframe",
+     .long_name      = NULL_IF_CONFIG_SMALL("AVFrame to AVPacket passthrough"),
+@@ -116,6 +146,7 @@
+     .id             = AV_CODEC_ID_WRAPPED_AVFRAME,
+     .encode2        = wrapped_avframe_encode,
+     .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
++    .pix_fmts       = pix_fmts_all,
+ };
+ 
+ AVCodec ff_wrapped_avframe_decoder = {
diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ2 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ2
new file mode 100644
index 00000000..d70788d1
--- /dev/null
+++ b/cinelerra-5.1/thirdparty/src/ffmpeg-4.4.patchZ2
@@ -0,0 +1,11 @@
+--- a/libavformat/yuv4mpegenc.c.orig	2021-06-15 23:40:32.239553104 +0300
++++ b/libavformat/yuv4mpegenc.c	2021-06-15 23:40:40.851553105 +0300
+@@ -313,7 +313,7 @@
+             av_log(s, AV_LOG_ERROR, "'%s' is not an official yuv4mpegpipe pixel format. "
+                    "Use '-strict -1' to encode to this pixel format.\n",
+                    av_get_pix_fmt_name(s->streams[0]->codecpar->format));
+-            return AVERROR(EINVAL);
++            //return AVERROR(EINVAL);
+         }
+         av_log(s, AV_LOG_WARNING, "Warning: generating non standard YUV stream. "
+                "Mjpegtools will not work.\n");
-- 
2.32.0

