135 lines
3.8 KiB
C++
135 lines
3.8 KiB
C++
// Copyright 2015 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
// Note: ported from Chromium commit head: 3b7ce92816e2
|
|
// Note: only necessary functions are ported from video_types.cc
|
|
|
|
#include "video_pixel_format.h"
|
|
|
|
#include "base/logging.h"
|
|
#include "base/strings/stringprintf.h"
|
|
|
|
namespace media {
|
|
|
|
std::string VideoPixelFormatToString(VideoPixelFormat format) {
|
|
switch (format) {
|
|
case PIXEL_FORMAT_UNKNOWN:
|
|
return "PIXEL_FORMAT_UNKNOWN";
|
|
case PIXEL_FORMAT_I420:
|
|
return "PIXEL_FORMAT_I420";
|
|
case PIXEL_FORMAT_YV12:
|
|
return "PIXEL_FORMAT_YV12";
|
|
case PIXEL_FORMAT_I422:
|
|
return "PIXEL_FORMAT_I422";
|
|
case PIXEL_FORMAT_I420A:
|
|
return "PIXEL_FORMAT_I420A";
|
|
case PIXEL_FORMAT_I444:
|
|
return "PIXEL_FORMAT_I444";
|
|
case PIXEL_FORMAT_NV12:
|
|
return "PIXEL_FORMAT_NV12";
|
|
case PIXEL_FORMAT_NV21:
|
|
return "PIXEL_FORMAT_NV21";
|
|
case PIXEL_FORMAT_YUY2:
|
|
return "PIXEL_FORMAT_YUY2";
|
|
case PIXEL_FORMAT_ARGB:
|
|
return "PIXEL_FORMAT_ARGB";
|
|
case PIXEL_FORMAT_XRGB:
|
|
return "PIXEL_FORMAT_XRGB";
|
|
case PIXEL_FORMAT_RGB24:
|
|
return "PIXEL_FORMAT_RGB24";
|
|
case PIXEL_FORMAT_MJPEG:
|
|
return "PIXEL_FORMAT_MJPEG";
|
|
case PIXEL_FORMAT_YUV420P9:
|
|
return "PIXEL_FORMAT_YUV420P9";
|
|
case PIXEL_FORMAT_YUV420P10:
|
|
return "PIXEL_FORMAT_YUV420P10";
|
|
case PIXEL_FORMAT_YUV422P9:
|
|
return "PIXEL_FORMAT_YUV422P9";
|
|
case PIXEL_FORMAT_YUV422P10:
|
|
return "PIXEL_FORMAT_YUV422P10";
|
|
case PIXEL_FORMAT_YUV444P9:
|
|
return "PIXEL_FORMAT_YUV444P9";
|
|
case PIXEL_FORMAT_YUV444P10:
|
|
return "PIXEL_FORMAT_YUV444P10";
|
|
case PIXEL_FORMAT_YUV420P12:
|
|
return "PIXEL_FORMAT_YUV420P12";
|
|
case PIXEL_FORMAT_YUV422P12:
|
|
return "PIXEL_FORMAT_YUV422P12";
|
|
case PIXEL_FORMAT_YUV444P12:
|
|
return "PIXEL_FORMAT_YUV444P12";
|
|
case PIXEL_FORMAT_Y16:
|
|
return "PIXEL_FORMAT_Y16";
|
|
case PIXEL_FORMAT_ABGR:
|
|
return "PIXEL_FORMAT_ABGR";
|
|
case PIXEL_FORMAT_XBGR:
|
|
return "PIXEL_FORMAT_XBGR";
|
|
case PIXEL_FORMAT_P016LE:
|
|
return "PIXEL_FORMAT_P016LE";
|
|
case PIXEL_FORMAT_XR30:
|
|
return "PIXEL_FORMAT_XR30";
|
|
case PIXEL_FORMAT_XB30:
|
|
return "PIXEL_FORMAT_XB30";
|
|
case PIXEL_FORMAT_BGRA:
|
|
return "PIXEL_FORMAT_BGRA";
|
|
}
|
|
NOTREACHED() << "Invalid VideoPixelFormat provided: " << format;
|
|
return "";
|
|
}
|
|
|
|
std::string FourccToString(uint32_t fourcc) {
|
|
std::string result = "0000";
|
|
for (size_t i = 0; i < 4; ++i, fourcc >>= 8) {
|
|
const char c = static_cast<char>(fourcc & 0xFF);
|
|
if (c <= 0x1f || c >= 0x7f)
|
|
return base::StringPrintf("0x%x", fourcc);
|
|
result[i] = c;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
size_t BitDepth(VideoPixelFormat format) {
|
|
switch (format) {
|
|
case PIXEL_FORMAT_UNKNOWN:
|
|
NOTREACHED();
|
|
FALLTHROUGH;
|
|
case PIXEL_FORMAT_I420:
|
|
case PIXEL_FORMAT_YV12:
|
|
case PIXEL_FORMAT_I422:
|
|
case PIXEL_FORMAT_I420A:
|
|
case PIXEL_FORMAT_I444:
|
|
case PIXEL_FORMAT_NV12:
|
|
case PIXEL_FORMAT_NV21:
|
|
case PIXEL_FORMAT_YUY2:
|
|
case PIXEL_FORMAT_ARGB:
|
|
case PIXEL_FORMAT_XRGB:
|
|
case PIXEL_FORMAT_RGB24:
|
|
case PIXEL_FORMAT_MJPEG:
|
|
case PIXEL_FORMAT_ABGR:
|
|
case PIXEL_FORMAT_XBGR:
|
|
case PIXEL_FORMAT_BGRA:
|
|
return 8;
|
|
case PIXEL_FORMAT_YUV420P9:
|
|
case PIXEL_FORMAT_YUV422P9:
|
|
case PIXEL_FORMAT_YUV444P9:
|
|
return 9;
|
|
case PIXEL_FORMAT_YUV420P10:
|
|
case PIXEL_FORMAT_YUV422P10:
|
|
case PIXEL_FORMAT_YUV444P10:
|
|
case PIXEL_FORMAT_XR30:
|
|
case PIXEL_FORMAT_XB30:
|
|
return 10;
|
|
case PIXEL_FORMAT_YUV420P12:
|
|
case PIXEL_FORMAT_YUV422P12:
|
|
case PIXEL_FORMAT_YUV444P12:
|
|
return 12;
|
|
case PIXEL_FORMAT_Y16:
|
|
case PIXEL_FORMAT_P016LE:
|
|
return 16;
|
|
}
|
|
NOTREACHED();
|
|
return 0;
|
|
}
|
|
|
|
} // namespace media
|
|
|