141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org/* 241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * Copyright 2011 The LibYuv Project Authors. All rights reserved. 341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * 441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * Use of this source code is governed by a BSD-style license 541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * that can be found in the LICENSE file in the root of the source 641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * tree. An additional intellectual property rights grant can be found 741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * in the file PATENTS. All contributing project authors may 841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org * be found in the AUTHORS file in the root of the source tree. 941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org */ 1041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 1141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 1241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#include "libyuv/video_common.h" 1341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 1441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus 1541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgnamespace libyuv { 1641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgextern "C" { 1741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif 1841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 1941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define ARRAY_SIZE(x) (int)(sizeof(x) / sizeof(x[0])) 2041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 2141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgstruct FourCCAliasEntry { 2241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint32 alias; 2341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org uint32 canonical; 2441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}; 2541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 2641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgstatic const struct FourCCAliasEntry kFourCCAliases[] = { 2741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_IYUV, FOURCC_I420}, 2841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_YU16, FOURCC_I422}, 2941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_YU24, FOURCC_I444}, 3041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_YUYV, FOURCC_YUY2}, 3141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_YUVS, FOURCC_YUY2}, // kCMPixelFormat_422YpCbCr8_yuvs 3241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_HDYC, FOURCC_UYVY}, 3341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_2VUY, FOURCC_UYVY}, // kCMPixelFormat_422YpCbCr8 3441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_JPEG, FOURCC_MJPG}, // Note: JPEG has DHT while MJPG does not. 3541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_DMB1, FOURCC_MJPG}, 3641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_BA81, FOURCC_BGGR}, 3741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_RGB3, FOURCC_RAW }, 3841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_BGR3, FOURCC_24BG}, 3941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_CM32, FOURCC_BGRA}, // kCMPixelFormat_32ARGB 4041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_CM24, FOURCC_RAW }, // kCMPixelFormat_24RGB 4141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_L555, FOURCC_RGBO}, // kCMPixelFormat_16LE555 4241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_L565, FOURCC_RGBP}, // kCMPixelFormat_16LE565 4341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org {FOURCC_5551, FOURCC_RGBO}, // kCMPixelFormat_16LE5551 4441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}; 4541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// TODO(fbarchard): Consider mapping kCMPixelFormat_32BGRA to FOURCC_ARGB. 4641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// {FOURCC_BGRA, FOURCC_ARGB}, // kCMPixelFormat_32BGRA 4741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 4841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API 4941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orguint32 CanonicalFourCC(uint32 fourcc) { 5041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org int i; 5141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org for (i = 0; i < ARRAY_SIZE(kFourCCAliases); ++i) { 5241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org if (kFourCCAliases[i].alias == fourcc) { 5341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org return kFourCCAliases[i].canonical; 5441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org } 5541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org } 5641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org // Not an alias, so return it as-is. 5741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org return fourcc; 5841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org} 5941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 6041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus 6141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org} // extern "C" 6241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org} // namespace libyuv 6341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif 6441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org 65