diff --git a/libkmstest/testpat.cpp b/libkmstest/testpat.cpp
index f621b911da772f96c456dcd5e43d4c6da6b78452..5c6766045a935ccc4c7b34c35ef2dc8e48ec66eb 100644 (file)
--- a/libkmstest/testpat.cpp
+++ b/libkmstest/testpat.cpp
break;
}
case PixelFormat::UYVY:
+ case PixelFormat::YUYV:
+ case PixelFormat::YVYU:
+ case PixelFormat::VYUY:
{
if ((x & 1) == 0) {
c1 = color;
YUV yuv1 = c1.yuv();
YUV yuv2 = color.yuv();
- p[0] = (yuv1.u + yuv2.u) / 2;
- p[1] = yuv1.y;
- p[2] = (yuv1.v + yuv2.v) / 2;
- p[3] = yuv2.y;
- break;
- }
- case PixelFormat::YUYV:
- {
- if ((x & 1) == 0) {
- c1 = color;
- return;
+ switch (buf.format()) {
+ case PixelFormat::UYVY:
+ p[0] = (yuv1.u + yuv2.u) / 2;
+ p[1] = yuv1.y;
+ p[2] = (yuv1.v + yuv2.v) / 2;
+ p[3] = yuv2.y;
+ break;
+
+ case PixelFormat::YUYV:
+ p[0] = yuv1.y;
+ p[1] = (yuv1.u + yuv2.u) / 2;
+ p[2] = yuv2.y;
+ p[3] = (yuv1.v + yuv2.v) / 2;
+ break;
+
+ case PixelFormat::YVYU:
+ p[0] = yuv1.y;
+ p[1] = (yuv1.v + yuv2.v) / 2;
+ p[2] = yuv2.y;
+ p[3] = (yuv1.u + yuv2.u) / 2;
+ break;
+
+ case PixelFormat::VYUY:
+ p[0] = (yuv1.v + yuv2.v) / 2;
+ p[1] = yuv1.y;
+ p[2] = (yuv1.u + yuv2.u) / 2;
+ p[3] = yuv2.y;
+ break;
+ default:
+ break;
}
- uint8_t *p = (uint8_t*)(buf.map(0) + buf.stride(0) * y + x * 2);
-
- YUV yuv1 = c1.yuv();
- YUV yuv2 = color.yuv();
-
- p[0] = yuv1.y;
- p[1] = (yuv1.u + yuv2.u) / 2;
- p[2] = yuv2.y;
- p[3] = (yuv1.v + yuv2.v) / 2;
break;
}
default: