| /* | 
 |  *  Copyright 2011 The LibYuv Project Authors. All rights reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS. All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | #include "libyuv/video_common.h" | 
 |  | 
 | #ifdef __cplusplus | 
 | namespace libyuv { | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | struct FourCCAliasEntry { | 
 |   uint32_t alias; | 
 |   uint32_t canonical; | 
 | }; | 
 |  | 
 | #define NUM_ALIASES 18 | 
 | static const struct FourCCAliasEntry kFourCCAliases[NUM_ALIASES] = { | 
 |     {FOURCC_IYUV, FOURCC_I420}, | 
 |     {FOURCC_YU12, FOURCC_I420}, | 
 |     {FOURCC_YU16, FOURCC_I422}, | 
 |     {FOURCC_YU24, FOURCC_I444}, | 
 |     {FOURCC_YUYV, FOURCC_YUY2}, | 
 |     {FOURCC_YUVS, FOURCC_YUY2},  // kCMPixelFormat_422YpCbCr8_yuvs | 
 |     {FOURCC_HDYC, FOURCC_UYVY}, | 
 |     {FOURCC_2VUY, FOURCC_UYVY},  // kCMPixelFormat_422YpCbCr8 | 
 |     {FOURCC_JPEG, FOURCC_MJPG},  // Note: JPEG has DHT while MJPG does not. | 
 |     {FOURCC_DMB1, FOURCC_MJPG}, | 
 |     {FOURCC_BA81, FOURCC_BGGR},  // deprecated. | 
 |     {FOURCC_RGB3, FOURCC_RAW}, | 
 |     {FOURCC_BGR3, FOURCC_24BG}, | 
 |     {FOURCC_CM32, FOURCC_BGRA},  // kCMPixelFormat_32ARGB | 
 |     {FOURCC_CM24, FOURCC_RAW},   // kCMPixelFormat_24RGB | 
 |     {FOURCC_L555, FOURCC_RGBO},  // kCMPixelFormat_16LE555 | 
 |     {FOURCC_L565, FOURCC_RGBP},  // kCMPixelFormat_16LE565 | 
 |     {FOURCC_5551, FOURCC_RGBO},  // kCMPixelFormat_16LE5551 | 
 | }; | 
 | // TODO(fbarchard): Consider mapping kCMPixelFormat_32BGRA to FOURCC_ARGB. | 
 | //  {FOURCC_BGRA, FOURCC_ARGB},  // kCMPixelFormat_32BGRA | 
 |  | 
 | LIBYUV_API | 
 | uint32_t CanonicalFourCC(uint32_t fourcc) { | 
 |   int i; | 
 |   for (i = 0; i < NUM_ALIASES; ++i) { | 
 |     if (kFourCCAliases[i].alias == fourcc) { | 
 |       return kFourCCAliases[i].canonical; | 
 |     } | 
 |   } | 
 |   // Not an alias, so return it as-is. | 
 |   return fourcc; | 
 | } | 
 |  | 
 | #ifdef __cplusplus | 
 | }  // extern "C" | 
 | }  // namespace libyuv | 
 | #endif |