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
