| /* | |
| * 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 |