1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/libyuv/unit_test/video_common_test.cc Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,111 @@ 1.4 +/* 1.5 + * Copyright 2012 The LibYuv Project Authors. All rights reserved. 1.6 + * 1.7 + * Use of this source code is governed by a BSD-style license 1.8 + * that can be found in the LICENSE file in the root of the source 1.9 + * tree. An additional intellectual property rights grant can be found 1.10 + * in the file PATENTS. All contributing project authors may 1.11 + * be found in the AUTHORS file in the root of the source tree. 1.12 + */ 1.13 + 1.14 +#include <stdlib.h> 1.15 +#include <string.h> 1.16 + 1.17 +#include "libyuv/video_common.h" 1.18 +#include "../unit_test/unit_test.h" 1.19 + 1.20 +namespace libyuv { 1.21 + 1.22 +// Tests FourCC codes in video common, which are used for ConvertToI420(). 1.23 + 1.24 +static bool TestValidChar(uint32 onecc) { 1.25 + if ((onecc >= '0' && onecc <= '9') || 1.26 + (onecc >= 'A' && onecc <= 'Z') || 1.27 + (onecc >= 'a' && onecc <= 'z') || 1.28 + (onecc == ' ') || (onecc == 0xff)) { 1.29 + return true; 1.30 + } 1.31 + return false; 1.32 +} 1.33 + 1.34 +static bool TestValidFourCC(uint32 fourcc, int bpp) { 1.35 + if (!TestValidChar(fourcc & 0xff) || 1.36 + !TestValidChar((fourcc >> 8) & 0xff) || 1.37 + !TestValidChar((fourcc >> 16) & 0xff) || 1.38 + !TestValidChar((fourcc >> 24) & 0xff)) { 1.39 + return false; 1.40 + } 1.41 + if (bpp < 0 || bpp > 32) { 1.42 + return false; 1.43 + } 1.44 + return true; 1.45 +} 1.46 + 1.47 +TEST_F(libyuvTest, TestCanonicalFourCC) { 1.48 + EXPECT_EQ(FOURCC_I420, CanonicalFourCC(FOURCC_IYUV)); 1.49 + EXPECT_EQ(FOURCC_I422, CanonicalFourCC(FOURCC_YU16)); 1.50 + EXPECT_EQ(FOURCC_I444, CanonicalFourCC(FOURCC_YU24)); 1.51 + EXPECT_EQ(FOURCC_YUY2, CanonicalFourCC(FOURCC_YUYV)); 1.52 + EXPECT_EQ(FOURCC_YUY2, CanonicalFourCC(FOURCC_YUVS)); 1.53 + EXPECT_EQ(FOURCC_UYVY, CanonicalFourCC(FOURCC_HDYC)); 1.54 + EXPECT_EQ(FOURCC_UYVY, CanonicalFourCC(FOURCC_2VUY)); 1.55 + EXPECT_EQ(FOURCC_MJPG, CanonicalFourCC(FOURCC_JPEG)); 1.56 + EXPECT_EQ(FOURCC_MJPG, CanonicalFourCC(FOURCC_DMB1)); 1.57 + EXPECT_EQ(FOURCC_BGGR, CanonicalFourCC(FOURCC_BA81)); 1.58 + EXPECT_EQ(FOURCC_RAW, CanonicalFourCC(FOURCC_RGB3)); 1.59 + EXPECT_EQ(FOURCC_24BG, CanonicalFourCC(FOURCC_BGR3)); 1.60 + EXPECT_EQ(FOURCC_BGRA, CanonicalFourCC(FOURCC_CM32)); 1.61 + EXPECT_EQ(FOURCC_RAW, CanonicalFourCC(FOURCC_CM24)); 1.62 + EXPECT_EQ(FOURCC_RGBO, CanonicalFourCC(FOURCC_L555)); 1.63 + EXPECT_EQ(FOURCC_RGBP, CanonicalFourCC(FOURCC_L565)); 1.64 + EXPECT_EQ(FOURCC_RGBO, CanonicalFourCC(FOURCC_5551)); 1.65 +} 1.66 + 1.67 +TEST_F(libyuvTest, TestFourCC) { 1.68 + EXPECT_TRUE(TestValidFourCC(FOURCC_I420, FOURCC_BPP_I420)); 1.69 + EXPECT_TRUE(TestValidFourCC(FOURCC_I420, FOURCC_BPP_I420)); 1.70 + EXPECT_TRUE(TestValidFourCC(FOURCC_I422, FOURCC_BPP_I422)); 1.71 + EXPECT_TRUE(TestValidFourCC(FOURCC_I444, FOURCC_BPP_I444)); 1.72 + EXPECT_TRUE(TestValidFourCC(FOURCC_I411, FOURCC_BPP_I411)); 1.73 + EXPECT_TRUE(TestValidFourCC(FOURCC_I400, FOURCC_BPP_I400)); 1.74 + EXPECT_TRUE(TestValidFourCC(FOURCC_NV21, FOURCC_BPP_NV21)); 1.75 + EXPECT_TRUE(TestValidFourCC(FOURCC_NV12, FOURCC_BPP_NV12)); 1.76 + EXPECT_TRUE(TestValidFourCC(FOURCC_YUY2, FOURCC_BPP_YUY2)); 1.77 + EXPECT_TRUE(TestValidFourCC(FOURCC_UYVY, FOURCC_BPP_UYVY)); 1.78 + EXPECT_TRUE(TestValidFourCC(FOURCC_M420, FOURCC_BPP_M420)); 1.79 + EXPECT_TRUE(TestValidFourCC(FOURCC_Q420, FOURCC_BPP_Q420)); 1.80 + EXPECT_TRUE(TestValidFourCC(FOURCC_ARGB, FOURCC_BPP_ARGB)); 1.81 + EXPECT_TRUE(TestValidFourCC(FOURCC_BGRA, FOURCC_BPP_BGRA)); 1.82 + EXPECT_TRUE(TestValidFourCC(FOURCC_ABGR, FOURCC_BPP_ABGR)); 1.83 + EXPECT_TRUE(TestValidFourCC(FOURCC_24BG, FOURCC_BPP_24BG)); 1.84 + EXPECT_TRUE(TestValidFourCC(FOURCC_RAW, FOURCC_BPP_RAW)); 1.85 + EXPECT_TRUE(TestValidFourCC(FOURCC_RGBA, FOURCC_BPP_RGBA)); 1.86 + EXPECT_TRUE(TestValidFourCC(FOURCC_RGBP, FOURCC_BPP_RGBP)); 1.87 + EXPECT_TRUE(TestValidFourCC(FOURCC_RGBO, FOURCC_BPP_RGBO)); 1.88 + EXPECT_TRUE(TestValidFourCC(FOURCC_R444, FOURCC_BPP_R444)); 1.89 + EXPECT_TRUE(TestValidFourCC(FOURCC_RGGB, FOURCC_BPP_RGGB)); 1.90 + EXPECT_TRUE(TestValidFourCC(FOURCC_BGGR, FOURCC_BPP_BGGR)); 1.91 + EXPECT_TRUE(TestValidFourCC(FOURCC_GRBG, FOURCC_BPP_GRBG)); 1.92 + EXPECT_TRUE(TestValidFourCC(FOURCC_GBRG, FOURCC_BPP_GBRG)); 1.93 + EXPECT_TRUE(TestValidFourCC(FOURCC_MJPG, FOURCC_BPP_MJPG)); 1.94 + EXPECT_TRUE(TestValidFourCC(FOURCC_YV12, FOURCC_BPP_YV12)); 1.95 + EXPECT_TRUE(TestValidFourCC(FOURCC_YV16, FOURCC_BPP_YV16)); 1.96 + EXPECT_TRUE(TestValidFourCC(FOURCC_YV24, FOURCC_BPP_YV24)); 1.97 + EXPECT_TRUE(TestValidFourCC(FOURCC_YU12, FOURCC_BPP_YU12)); 1.98 + EXPECT_TRUE(TestValidFourCC(FOURCC_IYUV, FOURCC_BPP_IYUV)); 1.99 + EXPECT_TRUE(TestValidFourCC(FOURCC_YU16, FOURCC_BPP_YU16)); 1.100 + EXPECT_TRUE(TestValidFourCC(FOURCC_YU24, FOURCC_BPP_YU24)); 1.101 + EXPECT_TRUE(TestValidFourCC(FOURCC_YUYV, FOURCC_BPP_YUYV)); 1.102 + EXPECT_TRUE(TestValidFourCC(FOURCC_YUVS, FOURCC_BPP_YUVS)); 1.103 + EXPECT_TRUE(TestValidFourCC(FOURCC_HDYC, FOURCC_BPP_HDYC)); 1.104 + EXPECT_TRUE(TestValidFourCC(FOURCC_2VUY, FOURCC_BPP_2VUY)); 1.105 + EXPECT_TRUE(TestValidFourCC(FOURCC_JPEG, FOURCC_BPP_JPEG)); 1.106 + EXPECT_TRUE(TestValidFourCC(FOURCC_DMB1, FOURCC_BPP_DMB1)); 1.107 + EXPECT_TRUE(TestValidFourCC(FOURCC_BA81, FOURCC_BPP_BA81)); 1.108 + EXPECT_TRUE(TestValidFourCC(FOURCC_RGB3, FOURCC_BPP_RGB3)); 1.109 + EXPECT_TRUE(TestValidFourCC(FOURCC_BGR3, FOURCC_BPP_BGR3)); 1.110 + EXPECT_TRUE(TestValidFourCC(FOURCC_H264, FOURCC_BPP_H264)); 1.111 + EXPECT_TRUE(TestValidFourCC(FOURCC_ANY, FOURCC_BPP_ANY)); 1.112 +} 1.113 + 1.114 +} // namespace libyuv