OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/base/channel_layout.h" | 5 #include "media/base/channel_layout.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 | 9 |
10 namespace media { | 10 namespace media { |
(...skipping 30 matching lines...) Expand all Loading... | |
41 8, // CHANNEL_LAYOUT_OCTAGONAL | 41 8, // CHANNEL_LAYOUT_OCTAGONAL |
42 0, // CHANNEL_LAYOUT_DISCRETE | 42 0, // CHANNEL_LAYOUT_DISCRETE |
43 }; | 43 }; |
44 | 44 |
45 // The channel orderings for each layout as specified by FFmpeg. Each value | 45 // The channel orderings for each layout as specified by FFmpeg. Each value |
46 // represents the index of each channel in each layout. Values of -1 mean the | 46 // represents the index of each channel in each layout. Values of -1 mean the |
47 // channel at that index is not used for that layout.For example, the left side | 47 // channel at that index is not used for that layout.For example, the left side |
48 // surround sound channel in FFmpeg's 5.1 layout is in the 5th position (because | 48 // surround sound channel in FFmpeg's 5.1 layout is in the 5th position (because |
49 // the order is L, R, C, LFE, LS, RS), so | 49 // the order is L, R, C, LFE, LS, RS), so |
50 // kChannelOrderings[CHANNEL_LAYOUT_5POINT1][SIDE_LEFT] = 4; | 50 // kChannelOrderings[CHANNEL_LAYOUT_5POINT1][SIDE_LEFT] = 4; |
51 static const int kChannelOrderings[CHANNEL_LAYOUT_MAX][CHANNELS_MAX] = { | 51 static const int |
rileya (GONE FROM CHROMIUM)
2014/01/27 20:59:38
This possibly unnecessary indenting brought to you
| |
52 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR | 52 kChannelOrderings[CHANNEL_LAYOUT_HISTOGRAM_MAX][CHANNELS_HISTOGRAM_MAX] = { |
53 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR | |
53 | 54 |
54 // CHANNEL_LAYOUT_NONE | 55 // CHANNEL_LAYOUT_NONE |
55 { -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 56 {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, |
56 | 57 |
57 // CHANNEL_LAYOUT_UNSUPPORTED | 58 // CHANNEL_LAYOUT_UNSUPPORTED |
58 { -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 59 {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, |
59 | 60 |
60 // CHANNEL_LAYOUT_MONO | 61 // CHANNEL_LAYOUT_MONO |
61 { -1 , -1 , 0 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 62 {-1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1}, |
62 | 63 |
63 // CHANNEL_LAYOUT_STEREO | 64 // CHANNEL_LAYOUT_STEREO |
64 { 0 , 1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 65 {0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, |
65 | 66 |
66 // CHANNEL_LAYOUT_2_1 | 67 // CHANNEL_LAYOUT_2_1 |
67 { 0 , 1 , -1 , -1 , -1 , -1 , -1 , -1 , 2 , -1 , -1 }, | 68 {0, 1, -1, -1, -1, -1, -1, -1, 2, -1, -1}, |
68 | 69 |
69 // CHANNEL_LAYOUT_SURROUND | 70 // CHANNEL_LAYOUT_SURROUND |
70 { 0 , 1 , 2 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 71 {0, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1}, |
71 | 72 |
72 // CHANNEL_LAYOUT_4_0 | 73 // CHANNEL_LAYOUT_4_0 |
73 { 0 , 1 , 2 , -1 , -1 , -1 , -1 , -1 , 3 , -1 , -1 }, | 74 {0, 1, 2, -1, -1, -1, -1, -1, 3, -1, -1}, |
74 | 75 |
75 // CHANNEL_LAYOUT_2_2 | 76 // CHANNEL_LAYOUT_2_2 |
76 { 0 , 1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 2 , 3 }, | 77 {0, 1, -1, -1, -1, -1, -1, -1, -1, 2, 3}, |
77 | 78 |
78 // CHANNEL_LAYOUT_QUAD | 79 // CHANNEL_LAYOUT_QUAD |
79 { 0 , 1 , -1 , -1 , 2 , 3 , -1 , -1 , -1 , -1 , -1 }, | 80 {0, 1, -1, -1, 2, 3, -1, -1, -1, -1, -1}, |
80 | 81 |
81 // CHANNEL_LAYOUT_5_0 | 82 // CHANNEL_LAYOUT_5_0 |
82 { 0 , 1 , 2 , -1 , -1 , -1 , -1 , -1 , -1 , 3 , 4 }, | 83 {0, 1, 2, -1, -1, -1, -1, -1, -1, 3, 4}, |
83 | 84 |
84 // CHANNEL_LAYOUT_5_1 | 85 // CHANNEL_LAYOUT_5_1 |
85 { 0 , 1 , 2 , 3 , -1 , -1 , -1 , -1 , -1 , 4 , 5 }, | 86 {0, 1, 2, 3, -1, -1, -1, -1, -1, 4, 5}, |
86 | 87 |
87 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR | 88 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR |
88 | 89 |
89 // CHANNEL_LAYOUT_5_0_BACK | 90 // CHANNEL_LAYOUT_5_0_BACK |
90 { 0 , 1 , 2 , -1 , 3 , 4 , -1 , -1 , -1 , -1 , -1 }, | 91 {0, 1, 2, -1, 3, 4, -1, -1, -1, -1, -1}, |
91 | 92 |
92 // CHANNEL_LAYOUT_5_1_BACK | 93 // CHANNEL_LAYOUT_5_1_BACK |
93 { 0 , 1 , 2 , 3 , 4 , 5 , -1 , -1 , -1 , -1 , -1 }, | 94 {0, 1, 2, 3, 4, 5, -1, -1, -1, -1, -1}, |
94 | 95 |
95 // CHANNEL_LAYOUT_7_0 | 96 // CHANNEL_LAYOUT_7_0 |
96 { 0 , 1 , 2 , -1 , 5 , 6 , -1 , -1 , -1 , 3 , 4 }, | 97 {0, 1, 2, -1, 5, 6, -1, -1, -1, 3, 4}, |
97 | 98 |
98 // CHANNEL_LAYOUT_7_1 | 99 // CHANNEL_LAYOUT_7_1 |
99 { 0 , 1 , 2 , 3 , 6 , 7 , -1 , -1 , -1 , 4 , 5 }, | 100 {0, 1, 2, 3, 6, 7, -1, -1, -1, 4, 5}, |
100 | 101 |
101 // CHANNEL_LAYOUT_7_1_WIDE | 102 // CHANNEL_LAYOUT_7_1_WIDE |
102 { 0 , 1 , 2 , 3 , -1 , -1 , 6 , 7 , -1 , 4 , 5 }, | 103 {0, 1, 2, 3, -1, -1, 6, 7, -1, 4, 5}, |
103 | 104 |
104 // CHANNEL_LAYOUT_STEREO_DOWNMIX | 105 // CHANNEL_LAYOUT_STEREO_DOWNMIX |
105 { 0 , 1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 106 {0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, |
106 | 107 |
107 // CHANNEL_LAYOUT_2POINT1 | 108 // CHANNEL_LAYOUT_2POINT1 |
108 { 0 , 1 , -1 , 2 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 109 {0, 1, -1, 2, -1, -1, -1, -1, -1, -1, -1}, |
109 | 110 |
110 // CHANNEL_LAYOUT_3_1 | 111 // CHANNEL_LAYOUT_3_1 |
111 { 0 , 1 , 2 , 3 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 112 {0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1}, |
112 | 113 |
113 // CHANNEL_LAYOUT_4_1 | 114 // CHANNEL_LAYOUT_4_1 |
114 { 0 , 1 , 2 , 4 , -1 , -1 , -1 , -1 , 3 , -1 , -1 }, | 115 {0, 1, 2, 4, -1, -1, -1, -1, 3, -1, -1}, |
115 | 116 |
116 // CHANNEL_LAYOUT_6_0 | 117 // CHANNEL_LAYOUT_6_0 |
117 { 0 , 1 , 2 , -1 , -1 , -1 , -1 , -1 , 5 , 3 , 4 }, | 118 {0, 1, 2, -1, -1, -1, -1, -1, 5, 3, 4}, |
118 | 119 |
119 // CHANNEL_LAYOUT_6_0_FRONT | 120 // CHANNEL_LAYOUT_6_0_FRONT |
120 { 0 , 1 , -1 , -1 , -1 , -1 , 4 , 5 , -1 , 2 , 3 }, | 121 {0, 1, -1, -1, -1, -1, 4, 5, -1, 2, 3}, |
121 | 122 |
122 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR | 123 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR |
123 | 124 |
124 // CHANNEL_LAYOUT_HEXAGONAL | 125 // CHANNEL_LAYOUT_HEXAGONAL |
125 { 0 , 1 , 2 , -1 , 3 , 4 , -1 , -1 , 5 , -1 , -1 }, | 126 {0, 1, 2, -1, 3, 4, -1, -1, 5, -1, -1}, |
126 | 127 |
127 // CHANNEL_LAYOUT_6_1 | 128 // CHANNEL_LAYOUT_6_1 |
128 { 0 , 1 , 2 , 3 , -1 , -1 , -1 , -1 , 6 , 4 , 5 }, | 129 {0, 1, 2, 3, -1, -1, -1, -1, 6, 4, 5}, |
129 | 130 |
130 // CHANNEL_LAYOUT_6_1_BACK | 131 // CHANNEL_LAYOUT_6_1_BACK |
131 { 0 , 1 , 2 , 3 , 4 , 5 , -1 , -1 , 6 , -1 , -1 }, | 132 {0, 1, 2, 3, 4, 5, -1, -1, 6, -1, -1}, |
132 | 133 |
133 // CHANNEL_LAYOUT_6_1_FRONT | 134 // CHANNEL_LAYOUT_6_1_FRONT |
134 { 0 , 1 , -1 , 6 , -1 , -1 , 4 , 5 , -1 , 2 , 3 }, | 135 {0, 1, -1, 6, -1, -1, 4, 5, -1, 2, 3}, |
135 | 136 |
136 // CHANNEL_LAYOUT_7_0_FRONT | 137 // CHANNEL_LAYOUT_7_0_FRONT |
137 { 0 , 1 , 2 , -1 , -1 , -1 , 5 , 6 , -1 , 3 , 4 }, | 138 {0, 1, 2, -1, -1, -1, 5, 6, -1, 3, 4}, |
138 | 139 |
139 // CHANNEL_LAYOUT_7_1_WIDE_BACK | 140 // CHANNEL_LAYOUT_7_1_WIDE_BACK |
140 { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , -1 , -1 , -1 }, | 141 {0, 1, 2, 3, 4, 5, 6, 7, -1, -1, -1}, |
141 | 142 |
142 // CHANNEL_LAYOUT_OCTAGONAL | 143 // CHANNEL_LAYOUT_OCTAGONAL |
143 { 0 , 1 , 2 , -1 , 5 , 6 , -1 , -1 , 7 , 3 , 4 }, | 144 {0, 1, 2, -1, 5, 6, -1, -1, 7, 3, 4}, |
144 | 145 |
145 // CHANNEL_LAYOUT_DISCRETE | 146 // CHANNEL_LAYOUT_DISCRETE |
146 { -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }, | 147 {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, |
147 | 148 |
148 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR | 149 // FL | FR | FC | LFE | BL | BR | FLofC | FRofC | BC | SL | SR |
149 }; | 150 }; |
150 | 151 |
151 int ChannelLayoutToChannelCount(ChannelLayout layout) { | 152 int ChannelLayoutToChannelCount(ChannelLayout layout) { |
152 DCHECK_LT(static_cast<size_t>(layout), arraysize(kLayoutToChannels)); | 153 DCHECK_LT(static_cast<size_t>(layout), arraysize(kLayoutToChannels)); |
153 return kLayoutToChannels[layout]; | 154 return kLayoutToChannels[layout]; |
154 } | 155 } |
155 | 156 |
156 // Converts a channel count into a channel layout. | 157 // Converts a channel count into a channel layout. |
157 ChannelLayout GuessChannelLayout(int channels) { | 158 ChannelLayout GuessChannelLayout(int channels) { |
158 switch (channels) { | 159 switch (channels) { |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
239 case CHANNEL_LAYOUT_6_1_FRONT: | 240 case CHANNEL_LAYOUT_6_1_FRONT: |
240 return "6.1_FRONT"; | 241 return "6.1_FRONT"; |
241 case CHANNEL_LAYOUT_7_0_FRONT: | 242 case CHANNEL_LAYOUT_7_0_FRONT: |
242 return "7.0_FRONT"; | 243 return "7.0_FRONT"; |
243 case CHANNEL_LAYOUT_7_1_WIDE_BACK: | 244 case CHANNEL_LAYOUT_7_1_WIDE_BACK: |
244 return "7.1_WIDE_BACK"; | 245 return "7.1_WIDE_BACK"; |
245 case CHANNEL_LAYOUT_OCTAGONAL: | 246 case CHANNEL_LAYOUT_OCTAGONAL: |
246 return "OCTAGONAL"; | 247 return "OCTAGONAL"; |
247 case CHANNEL_LAYOUT_DISCRETE: | 248 case CHANNEL_LAYOUT_DISCRETE: |
248 return "DISCRETE"; | 249 return "DISCRETE"; |
249 case CHANNEL_LAYOUT_MAX: | 250 case CHANNEL_LAYOUT_HISTOGRAM_MAX: |
250 break; | 251 break; |
251 } | 252 } |
252 NOTREACHED() << "Invalid channel layout provided: " << layout; | 253 NOTREACHED() << "Invalid channel layout provided: " << layout; |
253 return ""; | 254 return ""; |
254 } | 255 } |
255 | 256 |
256 } // namespace media | 257 } // namespace media |
OLD | NEW |