38 [0] = {
"FL",
"front left" },
39 [1] = {
"FR",
"front right" },
40 [2] = {
"FC",
"front center" },
41 [3] = {
"LFE",
"low frequency" },
42 [4] = {
"BL",
"back left" },
43 [5] = {
"BR",
"back right" },
44 [6] = {
"FLC",
"front left-of-center" },
45 [7] = {
"FRC",
"front right-of-center" },
46 [8] = {
"BC",
"back center" },
47 [9] = {
"SL",
"side left" },
48 [10] = {
"SR",
"side right" },
49 [11] = {
"TC",
"top center" },
50 [12] = {
"TFL",
"top front left" },
51 [13] = {
"TFC",
"top front center" },
52 [14] = {
"TFR",
"top front right" },
53 [15] = {
"TBL",
"top back left" },
54 [16] = {
"TBC",
"top back center" },
55 [17] = {
"TBR",
"top back right" },
56 [29] = {
"DL",
"downmix left" },
57 [30] = {
"DR",
"downmix right" },
58 [31] = {
"WL",
"wide left" },
59 [32] = {
"WR",
"wide right" },
60 [33] = {
"SDL",
"surround direct left" },
61 [34] = {
"SDR",
"surround direct right" },
62 [35] = {
"LFE2",
"low frequency 2" },
69 return channel_names[channel_id].
name;
106 #if FF_API_GET_CHANNEL_LAYOUT_COMPAT
122 if (channel_names[i].name &&
123 strlen(channel_names[i].name) == name_len &&
124 !memcmp(channel_names[i].name, name, name_len))
125 return (int64_t)1 << i;
126 i = strtol(name, &end, 10);
128 #if FF_API_GET_CHANNEL_LAYOUT_COMPAT
130 if (end - name == name_len ||
131 (end + 1 - name == name_len && *end ==
'c')) {
133 if (end - name == name_len) {
135 "Single channel layout '%.*s' is interpreted as a number of channels, "
136 "switch to the syntax '%.*sc' otherwise it will be interpreted as a "
137 "channel layout number in a later version\n",
138 name_len, name, name_len, name);
144 if ((end + 1 - name == name_len && *end ==
'c'))
146 #if FF_API_GET_CHANNEL_LAYOUT_COMPAT
150 layout = strtoll(name, &end, 0);
151 if (end - name == name_len)
152 return FFMAX(layout, 0);
156 #if FF_API_GET_CHANNEL_LAYOUT_COMPAT
163 const char *name_end = name + strlen(name);
164 int64_t
layout = 0, layout_single;
166 for (n = name; n < name_end; n = e + 1) {
167 for (e = n; e < name_end && *e !=
'+' && *e !=
'|'; e++);
168 #if FF_API_GET_CHANNEL_LAYOUT_COMPAT
175 layout |= layout_single;
180 #if FF_API_GET_CHANNEL_LAYOUT_COMPAT
192 if (nb_channels <= 0)
203 if (channel_layout) {
206 for (i = 0, ch = 0; i < 64; i++) {
207 if ((channel_layout & (UINT64_C(1) << i))) {
232 return av_popcount64(channel_layout);
246 if (!(channel_layout & channel) ||
249 channel_layout &= channel - 1;
258 for (i = 0; i < 64; i++)
259 if ((1ULL<<i) & channel)
270 if ((1ULL<<i) & channel)
271 return channel_names[i].description;
282 for (i = 0; i < 64; i++) {
283 if ((1ULL << i) & channel_layout && !index--)