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