From b3eda69490db5172f08a2816bc828ca920b4e1c2 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 31 Mar 2016 16:01:09 -0400 Subject: [PATCH] swscale: add bt2020 yuv2rgb coefficients. --- libswscale/swscale.h | 1 + libswscale/swscale_internal.h | 2 +- libswscale/version.h | 2 +- libswscale/yuv2rgb.c | 9 ++++++--- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libswscale/swscale.h b/libswscale/swscale.h index 8449948931..87511a8752 100644 --- a/libswscale/swscale.h +++ b/libswscale/swscale.h @@ -91,6 +91,7 @@ const char *swscale_license(void); #define SWS_CS_SMPTE170M 5 #define SWS_CS_SMPTE240M 7 #define SWS_CS_DEFAULT 5 +#define SWS_CS_BT2020 9 /** * Return a pointer to yuv<->rgb coefficients for the given colorspace diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 6647c7261f..566c6d560b 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -861,7 +861,7 @@ extern const uint8_t ff_dither_8x8_73[9][8]; extern const uint8_t ff_dither_8x8_128[9][8]; extern const uint8_t ff_dither_8x8_220[9][8]; -extern const int32_t ff_yuv2rgb_coeffs[8][4]; +extern const int32_t ff_yuv2rgb_coeffs[11][4]; extern const AVClass ff_sws_context_class; diff --git a/libswscale/version.h b/libswscale/version.h index 5c1cfb1fb6..d03a5cb74e 100644 --- a/libswscale/version.h +++ b/libswscale/version.h @@ -27,7 +27,7 @@ #include "libavutil/version.h" #define LIBSWSCALE_VERSION_MAJOR 4 -#define LIBSWSCALE_VERSION_MINOR 0 +#define LIBSWSCALE_VERSION_MINOR 1 #define LIBSWSCALE_VERSION_MICRO 100 #define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c index a0242bfd11..1fe5abed9c 100644 --- a/libswscale/yuv2rgb.c +++ b/libswscale/yuv2rgb.c @@ -46,7 +46,7 @@ * * where Y = cr * R + cg * G + cb * B and cr + cg + cb = 1. */ -const int32_t ff_yuv2rgb_coeffs[8][4] = { +const int32_t ff_yuv2rgb_coeffs[11][4] = { { 117489, 138438, 13975, 34925 }, /* no sequence_display_extension */ { 117489, 138438, 13975, 34925 }, /* ITU-R Rec. 709 (1990) */ { 104597, 132201, 25675, 53279 }, /* unspecified */ @@ -54,12 +54,15 @@ const int32_t ff_yuv2rgb_coeffs[8][4] = { { 104448, 132798, 24759, 53109 }, /* FCC */ { 104597, 132201, 25675, 53279 }, /* ITU-R Rec. 624-4 System B, G */ { 104597, 132201, 25675, 53279 }, /* SMPTE 170M */ - { 117579, 136230, 16907, 35559 } /* SMPTE 240M (1987) */ + { 117579, 136230, 16907, 35559 }, /* SMPTE 240M (1987) */ + { 0 }, /* YCgCo */ + { 110013, 140363, 12277, 42626 }, /* Bt-2020-NCL */ + { 110013, 140363, 12277, 42626 }, /* Bt-2020-CL */ }; const int *sws_getCoefficients(int colorspace) { - if (colorspace > 7 || colorspace < 0) + if (colorspace > 10 || colorspace < 0 || colorspace == 8) colorspace = SWS_CS_DEFAULT; return ff_yuv2rgb_coeffs[colorspace]; }