17cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde/* 233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * Copyright 2011 The LibYuv Project Authors. All rights reserved. 37cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * 47cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * Use of this source code is governed by a BSD-style license 57cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * that can be found in the LICENSE file in the root of the source 67cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * tree. An additional intellectual property rights grant can be found 77cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * in the file PATENTS. All contributing project authors may 87cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * be found in the AUTHORS file in the root of the source tree. 97cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde */ 107cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 117cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 1233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include "libyuv/video_common.h" 137cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 1433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus 157cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordenamespace libyuv { 1633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampextern "C" { 1733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 187cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 1933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define ARRAY_SIZE(x) (static_cast<int>((sizeof(x) / sizeof(x[0])))) 207cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 217cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordestruct FourCCAliasEntry { 227cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde uint32 alias; 237cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde uint32 canonical; 247cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde}; 257cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 267cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordestatic const FourCCAliasEntry kFourCCAliases[] = { 277cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_IYUV, FOURCC_I420}, 2833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp {FOURCC_YU16, FOURCC_I422}, 2933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp {FOURCC_YU24, FOURCC_I444}, 307cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_YUYV, FOURCC_YUY2}, 317cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_YUVS, FOURCC_YUY2}, 327cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_HDYC, FOURCC_UYVY}, 337cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_2VUY, FOURCC_UYVY}, 347cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_BA81, FOURCC_BGGR}, 357cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_JPEG, FOURCC_MJPG}, // Note: JPEG has DHT while MJPG does not. 367cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_RGB3, FOURCC_RAW}, 377cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde {FOURCC_BGR3, FOURCC_24BG}, 387cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde}; 397cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 4033cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 417cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordeuint32 CanonicalFourCC(uint32 fourcc) { 427cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde for (int i = 0; i < ARRAY_SIZE(kFourCCAliases); ++i) { 437cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde if (kFourCCAliases[i].alias == fourcc) { 447cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde return kFourCCAliases[i].canonical; 457cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde } 467cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde } 477cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde // Not an alias, so return it as-is. 487cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde return fourcc; 497cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde} 507cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 5133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus 5233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp} // extern "C" 537cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde} // namespace libyuv 5433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 5533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 56