1ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian/* 2ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * 4ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * Use of this source code is governed by a BSD-style license 5ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * that can be found in the LICENSE file in the root of the source 6ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * tree. An additional intellectual property rights grant can be found 7ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * in the file PATENTS. All contributing project authors may 8ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * be found in the AUTHORS file in the root of the source tree. 9ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian */ 10ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 11ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 12ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#include "libyuv/video_common.h" 13ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 14ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#ifdef __cplusplus 15ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniannamespace libyuv { 16ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianextern "C" { 17ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#endif 18ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 19ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#define ARRAY_SIZE(x) (int)(sizeof(x) / sizeof(x[0])) 20ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 21ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianstruct FourCCAliasEntry { 22ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian uint32 alias; 23ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian uint32 canonical; 24ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian}; 25ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 26ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianstatic const struct FourCCAliasEntry kFourCCAliases[] = { 27ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_IYUV, FOURCC_I420}, 28ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_YU16, FOURCC_I422}, 29ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_YU24, FOURCC_I444}, 30ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_YUYV, FOURCC_YUY2}, 31ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_YUVS, FOURCC_YUY2}, // kCMPixelFormat_422YpCbCr8_yuvs 32ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_HDYC, FOURCC_UYVY}, 33ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_2VUY, FOURCC_UYVY}, // kCMPixelFormat_422YpCbCr8 34ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_JPEG, FOURCC_MJPG}, // Note: JPEG has DHT while MJPG does not. 35ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_DMB1, FOURCC_MJPG}, 367ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian {FOURCC_BA81, FOURCC_BGGR}, // deprecated. 37ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_RGB3, FOURCC_RAW }, 38ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_BGR3, FOURCC_24BG}, 39ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_CM32, FOURCC_BGRA}, // kCMPixelFormat_32ARGB 40ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_CM24, FOURCC_RAW }, // kCMPixelFormat_24RGB 41ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_L555, FOURCC_RGBO}, // kCMPixelFormat_16LE555 42ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_L565, FOURCC_RGBP}, // kCMPixelFormat_16LE565 43ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian {FOURCC_5551, FOURCC_RGBO}, // kCMPixelFormat_16LE5551 44ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian}; 45ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// TODO(fbarchard): Consider mapping kCMPixelFormat_32BGRA to FOURCC_ARGB. 46ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian// {FOURCC_BGRA, FOURCC_ARGB}, // kCMPixelFormat_32BGRA 47ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 48ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBYUV_API 49ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianuint32 CanonicalFourCC(uint32 fourcc) { 50ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian int i; 51ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian for (i = 0; i < ARRAY_SIZE(kFourCCAliases); ++i) { 52ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian if (kFourCCAliases[i].alias == fourcc) { 53ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian return kFourCCAliases[i].canonical; 54ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian } 55ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian } 56ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian // Not an alias, so return it as-is. 57ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian return fourcc; 58ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 59ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 60ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#ifdef __cplusplus 61ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} // extern "C" 62ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} // namespace libyuv 63ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#endif 64ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 65