Skip to content

Commit 86725cf

Browse files
committed
Add YUV(A) 4:4:0 to color format constants for all bit depths
1 parent cfdaf8e commit 86725cf

4 files changed

Lines changed: 66 additions & 1 deletion

File tree

avs_core/core/avisynth.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4442,6 +4442,20 @@ PVideoFrame ScriptEnvironment::NewVideoFrameOnDevice(const VideoInfo& vi, int al
44424442
case VideoInfo::CS_YUVA420PS:
44434443
case VideoInfo::CS_YUVA422PS:
44444444
case VideoInfo::CS_YUVA444PS:
4445+
// planar 4:4:0
4446+
case VideoInfo::CS_YUV440:
4447+
case VideoInfo::CS_YUV440P10:
4448+
case VideoInfo::CS_YUV440P12:
4449+
case VideoInfo::CS_YUV440P14:
4450+
case VideoInfo::CS_YUV440P16:
4451+
case VideoInfo::CS_YUV440PS:
4452+
// planar 4:4:0:A
4453+
case VideoInfo::CS_YUVA440:
4454+
case VideoInfo::CS_YUVA440P10:
4455+
case VideoInfo::CS_YUVA440P12:
4456+
case VideoInfo::CS_YUVA440P14:
4457+
case VideoInfo::CS_YUVA440P16:
4458+
case VideoInfo::CS_YUVA440PS:
44454459
break;
44464460
default:
44474461
ThrowError("Filter Error: Filter attempted to create VideoFrame with invalid pixel_type.");

avs_core/core/parser/script.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1584,6 +1584,20 @@ static const std::map<int, std::string> pixel_format_table =
15841584
{VideoInfo::CS_RGBAP14 , "RGBAP14"},
15851585
{VideoInfo::CS_RGBAP16 , "RGBAP16"},
15861586
{VideoInfo::CS_RGBAPS , "RGBAPS"},
1587+
1588+
{VideoInfo::CS_YUV440 , "YUV440"},
1589+
{VideoInfo::CS_YUV440P10 , "YUV440P10"},
1590+
{VideoInfo::CS_YUV440P12 , "YUV440P12"},
1591+
{VideoInfo::CS_YUV440P14 , "YUV440P14"},
1592+
{VideoInfo::CS_YUV440P16 , "YUV440P16"},
1593+
{VideoInfo::CS_YUV440PS , "YUV440PS"},
1594+
1595+
{VideoInfo::CS_YUVA440 , "YUVA440"},
1596+
{VideoInfo::CS_YUVA440P10 , "YUVA440P10"},
1597+
{VideoInfo::CS_YUVA440P12 , "YUVA440P12"},
1598+
{VideoInfo::CS_YUVA440P14 , "YUVA440P14"},
1599+
{VideoInfo::CS_YUVA440P16 , "YUVA440P16"},
1600+
{VideoInfo::CS_YUVA440PS , "YUVA440PS"},
15871601
};
15881602

15891603
static const std::multimap<int, std::string> pixel_format_table_ex =
@@ -1601,6 +1615,8 @@ static const std::multimap<int, std::string> pixel_format_table_ex =
16011615
{VideoInfo::CS_YUVA420, "YUVA420P8"},
16021616
{VideoInfo::CS_YUVA422, "YUVA422P8"},
16031617
{VideoInfo::CS_YUVA444, "YUVA444P8"},
1618+
{VideoInfo::CS_YUV440 , "YUV440P8"},
1619+
{VideoInfo::CS_YUVA440, "YUVA440P8"},
16041620
};
16051621

16061622
const char *GetPixelTypeName(const int pixel_type)

avs_core/include/avisynth.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,24 @@ struct VideoInfo {
823823
CS_YUVA444PS = CS_GENERIC_YUVA444 | CS_Sample_Bits_32, // YUVA 4:4:4 32bit samples
824824
CS_YUVA422PS = CS_GENERIC_YUVA422 | CS_Sample_Bits_32, // YUVA 4:2:2 32bit samples
825825
CS_YUVA420PS = CS_GENERIC_YUVA420 | CS_Sample_Bits_32, // YUVA 4:2:0 32bit samples
826+
827+
// Planar YUV(A) 4:4:0, 2026-07-29
828+
CS_GENERIC_YUV440 = CS_PLANAR | CS_YUV | CS_VPlaneFirst | CS_Sub_Width_1 | CS_Sub_Height_2, // 4:4:0 planar
829+
CS_GENERIC_YUVA440 = CS_PLANAR | CS_YUVA | CS_VPlaneFirst | CS_Sub_Width_1 | CS_Sub_Height_2, // 4:4:0:A planar
830+
831+
CS_YUV440 = CS_GENERIC_YUV440 | CS_Sample_Bits_8, // YUV 4:4:0 8bit samples
832+
CS_YUV440P10 = CS_GENERIC_YUV440 | CS_Sample_Bits_10, // YUV 4:4:0 10bit samples
833+
CS_YUV440P12 = CS_GENERIC_YUV440 | CS_Sample_Bits_12, // YUV 4:4:0 12bit samples
834+
CS_YUV440P14 = CS_GENERIC_YUV440 | CS_Sample_Bits_14, // YUV 4:4:0 14bit samples
835+
CS_YUV440P16 = CS_GENERIC_YUV440 | CS_Sample_Bits_16, // YUV 4:4:0 16bit samples
836+
CS_YUV440PS = CS_GENERIC_YUV440 | CS_Sample_Bits_32, // YUV 4:4:0 32bit samples
837+
838+
CS_YUVA440 = CS_GENERIC_YUVA440 | CS_Sample_Bits_8, // YUVA 4:4:0 8bit samples
839+
CS_YUVA440P10 = CS_GENERIC_YUVA440 | CS_Sample_Bits_10, // YUVA 4:4:0 10bit samples
840+
CS_YUVA440P12 = CS_GENERIC_YUVA440 | CS_Sample_Bits_12, // YUVA 4:4:0 12bit samples
841+
CS_YUVA440P14 = CS_GENERIC_YUVA440 | CS_Sample_Bits_14, // YUVA 4:4:0 14bit samples
842+
CS_YUVA440P16 = CS_GENERIC_YUVA440 | CS_Sample_Bits_16, // YUVA 4:4:0 16bit samples
843+
CS_YUVA440PS = CS_GENERIC_YUVA440 | CS_Sample_Bits_32 // YUVA 4:4:0 32bit samples
826844
};
827845

828846
int pixel_type; // changed to int as of 2.5

avs_core/include/avisynth_c.h

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,9 @@ enum {
247247
AVS_CS_GENERIC_RGBAP = AVS_CS_PLANAR | AVS_CS_BGR | AVS_CS_RGBA_TYPE, // planar RGBA
248248
AVS_CS_GENERIC_YUVA444 = AVS_CS_PLANAR | AVS_CS_YUVA | AVS_CS_VPLANEFIRST | AVS_CS_SUB_WIDTH_1 | AVS_CS_SUB_HEIGHT_1, // 4:4:4:A planar
249249
AVS_CS_GENERIC_YUVA422 = AVS_CS_PLANAR | AVS_CS_YUVA | AVS_CS_VPLANEFIRST | AVS_CS_SUB_WIDTH_2 | AVS_CS_SUB_HEIGHT_1, // 4:2:2:A planar
250-
AVS_CS_GENERIC_YUVA420 = AVS_CS_PLANAR | AVS_CS_YUVA | AVS_CS_VPLANEFIRST | AVS_CS_SUB_WIDTH_2 | AVS_CS_SUB_HEIGHT_2 // 4:2:0:A planar
250+
AVS_CS_GENERIC_YUVA420 = AVS_CS_PLANAR | AVS_CS_YUVA | AVS_CS_VPLANEFIRST | AVS_CS_SUB_WIDTH_2 | AVS_CS_SUB_HEIGHT_2, // 4:2:0:A planar
251+
AVS_CS_GENERIC_YUV440 = AVS_CS_PLANAR | AVS_CS_YUV | AVS_CS_VPLANEFIRST | AVS_CS_SUB_WIDTH_1 | AVS_CS_SUB_HEIGHT_2, // 4:4:0 planar
252+
AVS_CS_GENERIC_YUVA440 = AVS_CS_PLANAR | AVS_CS_YUVA | AVS_CS_VPLANEFIRST | AVS_CS_SUB_WIDTH_1 | AVS_CS_SUB_HEIGHT_2 // 4:4:0:A planar
251253
};
252254

253255
// Specific color formats
@@ -343,6 +345,21 @@ enum {
343345
AVS_CS_YUVA444PS = AVS_CS_GENERIC_YUVA444 | AVS_CS_SAMPLE_BITS_32, // YUVA 4:4:4 32bit samples
344346
AVS_CS_YUVA422PS = AVS_CS_GENERIC_YUVA422 | AVS_CS_SAMPLE_BITS_32, // YUVA 4:2:2 32bit samples
345347
AVS_CS_YUVA420PS = AVS_CS_GENERIC_YUVA420 | AVS_CS_SAMPLE_BITS_32, // YUVA 4:2:0 32bit samples
348+
349+
// Planar YUV(A) 4:4:0 - 2026-07-29
350+
AVS_CS_YUV440 = AVS_CS_GENERIC_YUV440 | AVS_CS_SAMPLE_BITS_8, // YUV 4:4:0 8bit samples
351+
AVS_CS_YUV440P10 = AVS_CS_GENERIC_YUV440 | AVS_CS_SAMPLE_BITS_10, // YUV 4:4:0 10bit samples
352+
AVS_CS_YUV440P12 = AVS_CS_GENERIC_YUV440 | AVS_CS_SAMPLE_BITS_12, // YUV 4:4:0 12bit samples
353+
AVS_CS_YUV440P14 = AVS_CS_GENERIC_YUV440 | AVS_CS_SAMPLE_BITS_14, // YUV 4:4:0 14bit samples
354+
AVS_CS_YUV440P16 = AVS_CS_GENERIC_YUV440 | AVS_CS_SAMPLE_BITS_16, // YUV 4:4:0 16bit samples
355+
AVS_CS_YUV440PS = AVS_CS_GENERIC_YUV440 | AVS_CS_SAMPLE_BITS_32, // YUV 4:4:0 32bit samples
356+
357+
AVS_CS_YUVA440 = AVS_CS_GENERIC_YUVA440 | AVS_CS_SAMPLE_BITS_8, // YUVA 4:4:0 8bit samples
358+
AVS_CS_YUVA440P10 = AVS_CS_GENERIC_YUVA440 | AVS_CS_SAMPLE_BITS_10, // YUVA 4:4:0 10bit samples
359+
AVS_CS_YUVA440P12 = AVS_CS_GENERIC_YUVA440 | AVS_CS_SAMPLE_BITS_12, // YUVA 4:4:0 12bit samples
360+
AVS_CS_YUVA440P14 = AVS_CS_GENERIC_YUVA440 | AVS_CS_SAMPLE_BITS_14, // YUVA 4:4:0 14bit samples
361+
AVS_CS_YUVA440P16 = AVS_CS_GENERIC_YUVA440 | AVS_CS_SAMPLE_BITS_16, // YUVA 4:4:0 16bit samples
362+
AVS_CS_YUVA440PS = AVS_CS_GENERIC_YUVA440 | AVS_CS_SAMPLE_BITS_32, // YUVA 4:4:0 32bit samples
346363
};
347364

348365
// AvsChannelMask enum: Unshifted channel mask constants like in WAVEFORMATEXTENSIBLE

0 commit comments

Comments
 (0)