@@ -96,11 +96,6 @@ avifBool avifGetRGBColorSpaceInfo(const avifRGBImage * rgb, avifRGBColorSpaceInf
96
96
97
97
avifBool avifGetYUVColorSpaceInfo (const avifImage * image , avifYUVColorSpaceInfo * info )
98
98
{
99
- #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R )
100
- const avifBool useYCgCo = (image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO_RE ) ||
101
- (image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO_RO );
102
- #endif
103
-
104
99
AVIF_CHECK (image -> depth == 8 || image -> depth == 10 || image -> depth == 12 || image -> depth == 16 );
105
100
AVIF_CHECK (image -> yuvFormat >= AVIF_PIXEL_FORMAT_YUV444 && image -> yuvFormat < AVIF_PIXEL_FORMAT_COUNT );
106
101
AVIF_CHECK (image -> yuvRange == AVIF_RANGE_LIMITED || image -> yuvRange == AVIF_RANGE_FULL );
@@ -110,11 +105,8 @@ avifBool avifGetYUVColorSpaceInfo(const avifImage * image, avifYUVColorSpaceInfo
110
105
// YCgCo performs limited-full range adjustment on R,G,B but the current implementation performs range adjustment
111
106
// on Y,U,V. So YCgCo with limited range is unsupported.
112
107
if ((image -> matrixCoefficients == 3 /* CICP reserved */ ) ||
113
- ((image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO
114
- #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R )
115
- || useYCgCo
116
- #endif
117
- ) &&
108
+ ((image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO || image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO_RE ||
109
+ image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO_RO ) &&
118
110
(image -> yuvRange == AVIF_RANGE_LIMITED )) ||
119
111
(image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_BT2020_CL ) ||
120
112
(image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_SMPTE2085 ) ||
@@ -146,7 +138,6 @@ avifBool avifGetYUVColorSpaceInfo(const avifImage * image, avifYUVColorSpaceInfo
146
138
147
139
static avifBool avifPrepareReformatState (const avifImage * image , const avifRGBImage * rgb , avifReformatState * state )
148
140
{
149
- #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R )
150
141
const avifBool useYCgCoRe = (image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO_RE );
151
142
const avifBool useYCgCoRo = (image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO_RO );
152
143
if (useYCgCoRe || useYCgCoRo ) {
@@ -155,7 +146,6 @@ static avifBool avifPrepareReformatState(const avifImage * image, const avifRGBI
155
146
return AVIF_FALSE ;
156
147
}
157
148
}
158
- #endif
159
149
160
150
AVIF_CHECK (avifGetRGBColorSpaceInfo (rgb , & state -> rgb ));
161
151
AVIF_CHECK (avifGetYUVColorSpaceInfo (image , & state -> yuv ));
@@ -166,12 +156,10 @@ static avifBool avifPrepareReformatState(const avifImage * image, const avifRGBI
166
156
state -> yuv .mode = AVIF_REFORMAT_MODE_IDENTITY ;
167
157
} else if (image -> matrixCoefficients == AVIF_MATRIX_COEFFICIENTS_YCGCO ) {
168
158
state -> yuv .mode = AVIF_REFORMAT_MODE_YCGCO ;
169
- #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R )
170
159
} else if (useYCgCoRe ) {
171
160
state -> yuv .mode = AVIF_REFORMAT_MODE_YCGCO_RE ;
172
161
} else if (useYCgCoRo ) {
173
162
state -> yuv .mode = AVIF_REFORMAT_MODE_YCGCO_RO ;
174
- #endif
175
163
}
176
164
177
165
if (state -> yuv .mode != AVIF_REFORMAT_MODE_YUV_COEFFICIENTS ) {
@@ -196,12 +184,8 @@ static int avifYUVColorSpaceInfoUVToUNorm(avifYUVColorSpaceInfo * info, float v)
196
184
197
185
// YCgCo performs limited-full range adjustment on R,G,B but the current implementation performs range adjustment
198
186
// on Y,U,V. So YCgCo with limited range is unsupported.
199
- #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R )
200
187
assert ((info -> mode != AVIF_REFORMAT_MODE_YCGCO && info -> mode != AVIF_REFORMAT_MODE_YCGCO_RE && info -> mode != AVIF_REFORMAT_MODE_YCGCO_RO ) ||
201
188
(info -> range == AVIF_RANGE_FULL ));
202
- #else
203
- assert ((info -> mode != AVIF_REFORMAT_MODE_YCGCO ) || (info -> range == AVIF_RANGE_FULL ));
204
- #endif
205
189
206
190
if (info -> mode == AVIF_REFORMAT_MODE_IDENTITY ) {
207
191
unorm = (int )avifRoundf (v * info -> rangeY + info -> biasY );
@@ -359,7 +343,6 @@ avifResult avifImageRGBToYUV(avifImage * image, const avifRGBImage * rgb)
359
343
yuvBlock [bI ][bJ ].y = 0.5f * rgbPixel [1 ] + 0.25f * (rgbPixel [0 ] + rgbPixel [2 ]);
360
344
yuvBlock [bI ][bJ ].u = 0.5f * rgbPixel [1 ] - 0.25f * (rgbPixel [0 ] + rgbPixel [2 ]);
361
345
yuvBlock [bI ][bJ ].v = 0.5f * (rgbPixel [0 ] - rgbPixel [2 ]);
362
- #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R )
363
346
} else if (state .yuv .mode == AVIF_REFORMAT_MODE_YCGCO_RE || state .yuv .mode == AVIF_REFORMAT_MODE_YCGCO_RO ) {
364
347
// Formulas 58,59,60,61 from https://www.itu.int/rec/T-REC-H.273-202407-P
365
348
const int R = (int )avifRoundf (AVIF_CLAMP (rgbPixel [0 ] * rgbMaxChannelF , 0.0f , rgbMaxChannelF ));
@@ -371,7 +354,6 @@ avifResult avifImageRGBToYUV(avifImage * image, const avifRGBImage * rgb)
371
354
yuvBlock [bI ][bJ ].y = (t + (Cg >> 1 )) / state .yuv .rangeY ;
372
355
yuvBlock [bI ][bJ ].u = Cg / state .yuv .rangeUV ;
373
356
yuvBlock [bI ][bJ ].v = Co / state .yuv .rangeUV ;
374
- #endif
375
357
} else {
376
358
float Y = (kr * rgbPixel [0 ]) + (kg * rgbPixel [1 ]) + (kb * rgbPixel [2 ]);
377
359
yuvBlock [bI ][bJ ].y = Y ;
@@ -769,7 +751,6 @@ static avifResult avifImageYUVAnyToRGBAnySlow(const avifImage * image,
769
751
G = Y + Cb ;
770
752
B = t - Cr ;
771
753
R = t + Cr ;
772
- #if defined(AVIF_ENABLE_EXPERIMENTAL_YCGCO_R )
773
754
} else if (state -> yuv .mode == AVIF_REFORMAT_MODE_YCGCO_RE || state -> yuv .mode == AVIF_REFORMAT_MODE_YCGCO_RO ) {
774
755
// YCgCoRe/YCgCoRo: Formulas 62,63,64,65 from https://www.itu.int/rec/T-REC-H.273-202407-P
775
756
const int YY = unormY ;
@@ -782,7 +763,6 @@ static avifResult avifImageYUVAnyToRGBAnySlow(const avifImage * image,
782
763
G /= rgbMaxChannelF ;
783
764
B /= rgbMaxChannelF ;
784
765
R /= rgbMaxChannelF ;
785
- #endif
786
766
} else {
787
767
// Normal YUV
788
768
R = Y + (2 * (1 - kr )) * Cr ;
0 commit comments