1 // Copyright 2015 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // Note: ported from Chromium commit head: 3b7ce92816e2 5 // Note: only necessary functions are ported from video_types.cc 6 7 #include "video_pixel_format.h" 8 9 #include "base/logging.h" 10 #include "base/strings/stringprintf.h" 11 12 namespace media { 13 VideoPixelFormatToString(VideoPixelFormat format)14std::string VideoPixelFormatToString(VideoPixelFormat format) { 15 switch (format) { 16 case PIXEL_FORMAT_UNKNOWN: 17 return "PIXEL_FORMAT_UNKNOWN"; 18 case PIXEL_FORMAT_I420: 19 return "PIXEL_FORMAT_I420"; 20 case PIXEL_FORMAT_YV12: 21 return "PIXEL_FORMAT_YV12"; 22 case PIXEL_FORMAT_I422: 23 return "PIXEL_FORMAT_I422"; 24 case PIXEL_FORMAT_I420A: 25 return "PIXEL_FORMAT_I420A"; 26 case PIXEL_FORMAT_I444: 27 return "PIXEL_FORMAT_I444"; 28 case PIXEL_FORMAT_NV12: 29 return "PIXEL_FORMAT_NV12"; 30 case PIXEL_FORMAT_NV21: 31 return "PIXEL_FORMAT_NV21"; 32 case PIXEL_FORMAT_YUY2: 33 return "PIXEL_FORMAT_YUY2"; 34 case PIXEL_FORMAT_ARGB: 35 return "PIXEL_FORMAT_ARGB"; 36 case PIXEL_FORMAT_XRGB: 37 return "PIXEL_FORMAT_XRGB"; 38 case PIXEL_FORMAT_RGB24: 39 return "PIXEL_FORMAT_RGB24"; 40 case PIXEL_FORMAT_MJPEG: 41 return "PIXEL_FORMAT_MJPEG"; 42 case PIXEL_FORMAT_YUV420P9: 43 return "PIXEL_FORMAT_YUV420P9"; 44 case PIXEL_FORMAT_YUV420P10: 45 return "PIXEL_FORMAT_YUV420P10"; 46 case PIXEL_FORMAT_YUV422P9: 47 return "PIXEL_FORMAT_YUV422P9"; 48 case PIXEL_FORMAT_YUV422P10: 49 return "PIXEL_FORMAT_YUV422P10"; 50 case PIXEL_FORMAT_YUV444P9: 51 return "PIXEL_FORMAT_YUV444P9"; 52 case PIXEL_FORMAT_YUV444P10: 53 return "PIXEL_FORMAT_YUV444P10"; 54 case PIXEL_FORMAT_YUV420P12: 55 return "PIXEL_FORMAT_YUV420P12"; 56 case PIXEL_FORMAT_YUV422P12: 57 return "PIXEL_FORMAT_YUV422P12"; 58 case PIXEL_FORMAT_YUV444P12: 59 return "PIXEL_FORMAT_YUV444P12"; 60 case PIXEL_FORMAT_Y16: 61 return "PIXEL_FORMAT_Y16"; 62 case PIXEL_FORMAT_ABGR: 63 return "PIXEL_FORMAT_ABGR"; 64 case PIXEL_FORMAT_XBGR: 65 return "PIXEL_FORMAT_XBGR"; 66 case PIXEL_FORMAT_P016LE: 67 return "PIXEL_FORMAT_P016LE"; 68 case PIXEL_FORMAT_XR30: 69 return "PIXEL_FORMAT_XR30"; 70 case PIXEL_FORMAT_XB30: 71 return "PIXEL_FORMAT_XB30"; 72 case PIXEL_FORMAT_BGRA: 73 return "PIXEL_FORMAT_BGRA"; 74 } 75 NOTREACHED() << "Invalid VideoPixelFormat provided: " << format; 76 return ""; 77 } 78 FourccToString(uint32_t fourcc)79std::string FourccToString(uint32_t fourcc) { 80 std::string result = "0000"; 81 for (size_t i = 0; i < 4; ++i, fourcc >>= 8) { 82 const char c = static_cast<char>(fourcc & 0xFF); 83 if (c <= 0x1f || c >= 0x7f) 84 return base::StringPrintf("0x%x", fourcc); 85 result[i] = c; 86 } 87 return result; 88 } 89 BitDepth(VideoPixelFormat format)90size_t BitDepth(VideoPixelFormat format) { 91 switch (format) { 92 case PIXEL_FORMAT_UNKNOWN: 93 NOTREACHED(); 94 FALLTHROUGH; 95 case PIXEL_FORMAT_I420: 96 case PIXEL_FORMAT_YV12: 97 case PIXEL_FORMAT_I422: 98 case PIXEL_FORMAT_I420A: 99 case PIXEL_FORMAT_I444: 100 case PIXEL_FORMAT_NV12: 101 case PIXEL_FORMAT_NV21: 102 case PIXEL_FORMAT_YUY2: 103 case PIXEL_FORMAT_ARGB: 104 case PIXEL_FORMAT_XRGB: 105 case PIXEL_FORMAT_RGB24: 106 case PIXEL_FORMAT_MJPEG: 107 case PIXEL_FORMAT_ABGR: 108 case PIXEL_FORMAT_XBGR: 109 case PIXEL_FORMAT_BGRA: 110 return 8; 111 case PIXEL_FORMAT_YUV420P9: 112 case PIXEL_FORMAT_YUV422P9: 113 case PIXEL_FORMAT_YUV444P9: 114 return 9; 115 case PIXEL_FORMAT_YUV420P10: 116 case PIXEL_FORMAT_YUV422P10: 117 case PIXEL_FORMAT_YUV444P10: 118 case PIXEL_FORMAT_XR30: 119 case PIXEL_FORMAT_XB30: 120 return 10; 121 case PIXEL_FORMAT_YUV420P12: 122 case PIXEL_FORMAT_YUV422P12: 123 case PIXEL_FORMAT_YUV444P12: 124 return 12; 125 case PIXEL_FORMAT_Y16: 126 case PIXEL_FORMAT_P016LE: 127 return 16; 128 } 129 NOTREACHED(); 130 return 0; 131 } 132 133 } // namespace media 134 135