X-Git-Url: https://git.ti.com/gitweb?p=android%2Fexternal-libkmsxx.git;a=blobdiff_plain;f=libkmstest%2Ftestpat.cpp;h=5c6766045a935ccc4c7b34c35ef2dc8e48ec66eb;hp=f621b911da772f96c456dcd5e43d4c6da6b78452;hb=e689ae60dafcc5db6a7266906f38410f0d6f3e24;hpb=4a6bfde6cd19e9a7b98491761cfbfc491660cd89 diff --git a/libkmstest/testpat.cpp b/libkmstest/testpat.cpp index f621b91..5c67660 100644 --- a/libkmstest/testpat.cpp +++ b/libkmstest/testpat.cpp @@ -40,6 +40,9 @@ static void draw_pixel(DumbFramebuffer& buf, unsigned x, unsigned y, RGB color) break; } case PixelFormat::UYVY: + case PixelFormat::YUYV: + case PixelFormat::YVYU: + case PixelFormat::VYUY: { if ((x & 1) == 0) { c1 = color; @@ -51,28 +54,38 @@ static void draw_pixel(DumbFramebuffer& buf, unsigned x, unsigned y, RGB 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: