ffmpeg | branch: master | Marvin Scholz <epira...@gmail.com> | Mon May 20 03:12:01 2024 +0200| [cd9ceaef22ecc25278c771169d179dbfdb24a355] | committer: Zhao Zhili
avutil/hwcontext_videotoolbox: Set CVBuffer CGColorSpace In addition to the other properties, try to obtain the right CGColorSpace and set it as well, else it could lead to a CVBuffer tagged as BT.2020 but with a CGColorSpace indicating BT.709. Therefore it is essential for consistency to set a colorspace according to the other values, or if none can be obtained (for example because the other values are all unspecified) unset it as well. Fix #10884 Signed-off-by: Zhao Zhili <zhiliz...@tencent.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cd9ceaef22ecc25278c771169d179dbfdb24a355 --- libavutil/hwcontext_videotoolbox.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libavutil/hwcontext_videotoolbox.c b/libavutil/hwcontext_videotoolbox.c index 0af2ab822f..953155ce32 100644 --- a/libavutil/hwcontext_videotoolbox.c +++ b/libavutil/hwcontext_videotoolbox.c @@ -535,6 +535,7 @@ CFStringRef av_map_videotoolbox_color_trc_from_av(enum AVColorTransferCharacteri static int vt_pixbuf_set_colorspace(void *log_ctx, CVPixelBufferRef pixbuf, const AVFrame *src) { + CGColorSpaceRef colorspace = NULL; CFStringRef colormatrix = NULL, colorpri = NULL, colortrc = NULL; Float32 gamma = 0; @@ -587,6 +588,21 @@ static int vt_pixbuf_set_colorspace(void *log_ctx, } else CVBufferRemoveAttachment(pixbuf, kCVImageBufferGammaLevelKey); + if (__builtin_available(macOS 10.8, iOS 10, *)) { + CFDictionaryRef attachments = CVBufferCopyAttachments(pixbuf, kCVAttachmentMode_ShouldPropagate); + if (attachments) { + colorspace = CVImageBufferCreateColorSpaceFromAttachments(attachments); + CFRelease(attachments); + } + } + + if (colorspace) { + CVBufferSetAttachment(pixbuf, kCVImageBufferCGColorSpaceKey, + colorspace, kCVAttachmentMode_ShouldPropagate); + CFRelease(colorspace); + } else + CVBufferRemoveAttachment(pixbuf, kCVImageBufferCGColorSpaceKey); + return 0; } _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".