[FFmpeg-devel] [PATCH 1/2] lavc/libopenh264: Support full range videos in transcoding

Jun Zhao mypopydev at gmail.com
Tue Apr 18 18:33:50 EEST 2023


Support full range videos when transcoding, enabled the
YUVJ420P to avoid auto scale from YUVJ420P to YUV420P

Signed-off-by: Jun Zhao <barryjzhao at tencent.com>
---
 libavcodec/libopenh264enc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index 8b4755f5ba..cccc11fbb7 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -311,10 +311,12 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
 
 #if OPENH264_VER_AT_LEAST(1, 6)
     param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF;
+
     if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED) {
         param.sSpatialLayers[0].bVideoSignalTypePresent = true;
         param.sSpatialLayers[0].bFullRange = (avctx->color_range == AVCOL_RANGE_JPEG);
-    }
+    }  else if (avctx->pix_fmt == AV_PIX_FMT_YUVJ420P)
+        param.sSpatialLayers[0].bFullRange = 1;
 
     if (avctx->colorspace != AVCOL_SPC_UNSPECIFIED      ||
         avctx->color_primaries != AVCOL_PRI_UNSPECIFIED ||
@@ -443,6 +445,7 @@ const FFCodec ff_libopenh264_encoder = {
     .caps_internal  = FF_CODEC_CAP_INIT_CLEANUP |
                       FF_CODEC_CAP_AUTO_THREADS,
     .p.pix_fmts     = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P,
+                                                    AV_PIX_FMT_YUVJ420P,
                                                     AV_PIX_FMT_NONE },
     .defaults       = svc_enc_defaults,
     .p.priv_class   = &class,
-- 
2.25.1



More information about the ffmpeg-devel mailing list