From 2667ae3fc57c696f41bbd58fa4fa9da50109f49b Mon Sep 17 00:00:00 2001 From: Luke Yelavich Date: Wed, 7 Mar 2018 09:30:44 +1100 Subject: [PATCH] mac-vth264: Fix video info set logic In the vt_h264_video_info function, the format of the video to be encoded is always being set to VIDEO_FORMAT_NV12, dispite the presence of code to set the video format to VIDEO_FORMAT_I420 or VIDEO_FORMAT_I444. This commit fixes that function to respect the video format choice of the user. In addition, whilst testing this fix initially, I also discovered that the 4:4:4 colour format is not supported by the VideoToolbox H264 encoder. Looking at the VideoToolbox code in ffmpeg as a reference, the ffmpeg code errors out if a color format other than NV12 or I420 is set. Therefore, this commit also logs a warning about I444 not being supported, and uses the NV12 default. --- plugins/mac-vth264/encoder.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/mac-vth264/encoder.c b/plugins/mac-vth264/encoder.c index a9aab1f64..71e5e897e 100644 --- a/plugins/mac-vth264/encoder.c +++ b/plugins/mac-vth264/encoder.c @@ -424,11 +424,12 @@ static void vt_h264_video_info(void *data, struct video_scale_info *info) enc->vt_pix_fmt = enc->fullrange ? kCVPixelFormatType_420YpCbCr8PlanarFullRange : kCVPixelFormatType_420YpCbCr8Planar; - } else if (info->format == VIDEO_FORMAT_I444) { - enc->obs_pix_fmt = info->format; - enc->vt_pix_fmt = kCVPixelFormatType_444YpCbCr10; + return; } + if (info->format == VIDEO_FORMAT_I444) + VT_BLOG(LOG_WARNING, "I444 color format not supported"); + // Anything else, return default enc->obs_pix_fmt = VIDEO_FORMAT_NV12; enc->vt_pix_fmt = enc->fullrange ?