• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)14 std::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)79 std::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)90 size_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