Chromium Code Reviews| 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 |
| 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}, |
|
scherkus (not reviewing)
2014/01/27 22:37:31
FYI if dale was here he might be able to comment h
| |
| 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 |