vlc | branch: master | Thomas Guillem <[email protected]> | Fri Nov 24 13:31:55 
2017 +0100| [e4fffa8b85d6cdb0a28621a76a1ae95b5144e4bd] | committer: Thomas 
Guillem

codec: videotoolbox: setup YUV->RGB matrix

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e4fffa8b85d6cdb0a28621a76a1ae95b5144e4bd
---

 modules/codec/videotoolbox.m | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m
index 517c18edd3..afc08915e1 100644
--- a/modules/codec/videotoolbox.m
+++ b/modules/codec/videotoolbox.m
@@ -1030,6 +1030,33 @@ static CFMutableDictionaryRef 
CreateSessionDescriptionFormat(decoder_t *p_dec,
         CFRelease(pixelaspectratio);
     }
 
+    /* Setup YUV->RGB matrix since VT can output BGRA directly. Don't setup
+     * transfer and primaries since the transformation is done via the GL
+     * fragment shader. */
+    CFStringRef yuvmatrix;
+    switch (p_dec->fmt_out.video.space)
+    {
+        case COLOR_SPACE_BT601:
+            yuvmatrix = kCVImageBufferYCbCrMatrix_ITU_R_601_4;
+            break;
+        case COLOR_SPACE_BT2020:
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpartial-availability"
+            if (&kCVImageBufferColorPrimaries_ITU_R_2020 != nil)
+            {
+                yuvmatrix = kCVImageBufferColorPrimaries_ITU_R_2020;
+                break;
+            }
+#pragma clang diagnostic pop
+            /* fall through */
+        case COLOR_SPACE_BT709:
+        default:
+            yuvmatrix = kCVImageBufferColorPrimaries_ITU_R_709_2;
+            break;
+    }
+    CFDictionarySetValue(decoderConfiguration, kCVImageBufferYCbCrMatrixKey,
+                         yuvmatrix);
+
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wpartial-availability"
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to