• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef AVCODEC_AUDIO_CHANNEL_LAYOUT_H
17 #define AVCODEC_AUDIO_CHANNEL_LAYOUT_H
18 
19 #ifdef __cplusplus
20 #include <cstdint>
21 #else
22 #include <stdint.h>
23 #endif
24 
25 /**
26  * @file avcodec_audio_channel_layout.h
27  *
28  * @brief Audio AudioChannel Layout
29  *
30  * @kit AVCodecKit
31  * @library libnative_media_codecbase.so
32  * @syscap SystemCapability.Multimedia.Media.CodecBase
33  * @deprecated since 11
34  * @since 10
35  */
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 /**
42  * @brief Audio Channel Set
43  * A 64-bit integer with bits set for each channel.
44  * @syscap SystemCapability.Multimedia.Media.CodecBase
45  * @deprecated since 11
46  * @useinstead OH_AudioChannelSet
47  * @since 10
48  */
49 typedef enum AudioChannelSet : uint64_t {
50     FRONT_LEFT = 1ULL << 0U,
51     FRONT_RIGHT = 1ULL << 1U,
52     FRONT_CENTER = 1ULL << 2U,
53     LOW_FREQUENCY = 1ULL << 3U,
54     BACK_LEFT = 1ULL << 4U,
55     BACK_RIGHT = 1ULL << 5U,
56     FRONT_LEFT_OF_CENTER = 1ULL << 6U,
57     FRONT_RIGHT_OF_CENTER = 1ULL << 7U,
58     BACK_CENTER = 1ULL << 8U,
59     SIDE_LEFT = 1ULL << 9U,
60     SIDE_RIGHT = 1ULL << 10U,
61     TOP_CENTER = 1ULL << 11U,
62     TOP_FRONT_LEFT = 1ULL << 12U,
63     TOP_FRONT_CENTER = 1ULL << 13U,
64     TOP_FRONT_RIGHT = 1ULL << 14U,
65     TOP_BACK_LEFT = 1ULL << 15U,
66     TOP_BACK_CENTER = 1ULL << 16U,
67     TOP_BACK_RIGHT = 1ULL << 17U,
68     STEREO_LEFT = 1ULL << 29U,
69     STEREO_RIGHT = 1ULL << 30U,
70     WIDE_LEFT = 1ULL << 31U,
71     WIDE_RIGHT = 1ULL << 32U,
72     SURROUND_DIRECT_LEFT = 1ULL << 33U,
73     SURROUND_DIRECT_RIGHT = 1ULL << 34U,
74     LOW_FREQUENCY_2 = 1ULL << 35U,
75     TOP_SIDE_LEFT = 1ULL << 36U,
76     TOP_SIDE_RIGHT = 1ULL << 37U,
77     BOTTOM_FRONT_CENTER = 1ULL << 38U,
78     BOTTOM_FRONT_LEFT = 1ULL << 39U,
79     BOTTOM_FRONT_RIGHT = 1ULL << 40U,
80 
81     // Ambisonics ACN formats
82     // 0th and first order ambisonics ACN
83     AMBISONICS_ACN0 = 1ULL << 41U,  /** 0th ambisonics channel number 0. */
84     AMBISONICS_ACN1 = 1ULL << 42U,  /** first-order ambisonics channel number 1. */
85     AMBISONICS_ACN2 = 1ULL << 43U,  /** first-order ambisonics channel number 2. */
86     AMBISONICS_ACN3 = 1ULL << 44U,  /** first-order ambisonics channel number 3. */
87     AMBISONICS_W = AMBISONICS_ACN0, /** same as 0th ambisonics channel number 0. */
88     AMBISONICS_Y = AMBISONICS_ACN1, /** same as first-order ambisonics channel number 1. */
89     AMBISONICS_Z = AMBISONICS_ACN2, /** same as first-order ambisonics channel number 2. */
90     AMBISONICS_X = AMBISONICS_ACN3, /** same as first-order ambisonics channel number 3. */
91 
92     // second order ambisonics ACN
93     AMBISONICS_ACN4 = 1ULL << 45U, /** second-order ambisonics channel number 4. */
94     AMBISONICS_ACN5 = 1ULL << 46U, /** second-order ambisonics channel number 5. */
95     AMBISONICS_ACN6 = 1ULL << 47U, /** second-order ambisonics channel number 6. */
96     AMBISONICS_ACN7 = 1ULL << 48U, /** second-order ambisonics channel number 7. */
97     AMBISONICS_ACN8 = 1ULL << 49U, /** second-order ambisonics channel number 8. */
98 
99     // third order ambisonics ACN
100     AMBISONICS_ACN9 = 1ULL << 50U,  /** third-order ambisonics channel number 9. */
101     AMBISONICS_ACN10 = 1ULL << 51U, /** third-order ambisonics channel number 10. */
102     AMBISONICS_ACN11 = 1ULL << 52U, /** third-order ambisonics channel number 11. */
103     AMBISONICS_ACN12 = 1ULL << 53U, /** third-order ambisonics channel number 12. */
104     AMBISONICS_ACN13 = 1ULL << 54U, /** third-order ambisonics channel number 13. */
105     AMBISONICS_ACN14 = 1ULL << 55U, /** third-order ambisonics channel number 14. */
106     AMBISONICS_ACN15 = 1ULL << 56U, /** third-order ambisonics channel number 15. */
107 } AudioChannelSet;
108 
109 /**
110  * @brief Audio AudioChannel Layout
111  * Indicates that the channel order in which the user requests decoder output
112  * is the native codec channel order.
113  * @syscap SystemCapability.Multimedia.Media.CodecBase
114  * @deprecated since 11
115  * @useinstead OH_AudioChannelLayout
116  * @since 10
117  */
118 typedef enum AudioChannelLayout : uint64_t {
119     UNKNOWN_CHANNEL_LAYOUT = 0,
120     MONO = (FRONT_CENTER),
121     STEREO = (FRONT_LEFT | FRONT_RIGHT),
122     CH_2POINT1 = (STEREO | LOW_FREQUENCY),
123     CH_2_1 = (STEREO | BACK_CENTER),
124     SURROUND = (STEREO | FRONT_CENTER),
125     CH_3POINT1 = (SURROUND | LOW_FREQUENCY),
126     CH_4POINT0 = (SURROUND | BACK_CENTER),
127     CH_4POINT1 = (CH_4POINT0 | LOW_FREQUENCY),
128     CH_2_2 = (STEREO | SIDE_LEFT | SIDE_RIGHT),
129     QUAD = (STEREO | BACK_LEFT | BACK_RIGHT),
130     CH_5POINT0 = (SURROUND | SIDE_LEFT | SIDE_RIGHT),
131     CH_5POINT1 = (CH_5POINT0 | LOW_FREQUENCY),
132     CH_5POINT0_BACK = (SURROUND | BACK_LEFT | BACK_RIGHT),
133     CH_5POINT1_BACK = (CH_5POINT0_BACK | LOW_FREQUENCY),
134     CH_6POINT0 = (CH_5POINT0 | BACK_CENTER),
135     CH_6POINT0_FRONT = (CH_2_2 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER),
136     HEXAGONAL = (CH_5POINT0_BACK | BACK_CENTER),
137     CH_6POINT1 = (CH_5POINT1 | BACK_CENTER),
138     CH_6POINT1_BACK = (CH_5POINT1_BACK | BACK_CENTER),
139     CH_6POINT1_FRONT = (CH_6POINT0_FRONT | LOW_FREQUENCY),
140     CH_7POINT0 = (CH_5POINT0 | BACK_LEFT | BACK_RIGHT),
141     CH_7POINT0_FRONT = (CH_5POINT0 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER),
142     CH_7POINT1 = (CH_5POINT1 | BACK_LEFT | BACK_RIGHT),
143     CH_7POINT1_WIDE = (CH_5POINT1 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER),
144     CH_7POINT1_WIDE_BACK =
145         (CH_5POINT1_BACK | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER),
146     CH_3POINT1POINT2 = (CH_3POINT1 | TOP_FRONT_LEFT | TOP_FRONT_RIGHT),
147     CH_5POINT1POINT2 = (CH_5POINT1 | TOP_SIDE_LEFT | TOP_SIDE_RIGHT),
148     CH_5POINT1POINT4 = (CH_5POINT1 | TOP_FRONT_LEFT | TOP_FRONT_RIGHT |
149                         TOP_BACK_LEFT | TOP_BACK_RIGHT),
150     CH_7POINT1POINT2 = (CH_7POINT1 | TOP_SIDE_LEFT | TOP_SIDE_RIGHT),
151     CH_7POINT1POINT4 = (CH_7POINT1 | TOP_FRONT_LEFT | TOP_FRONT_RIGHT |
152                         TOP_BACK_LEFT | TOP_BACK_RIGHT),
153     CH_9POINT1POINT4 = (CH_7POINT1POINT4 | WIDE_LEFT | WIDE_RIGHT),
154     CH_9POINT1POINT6 = (CH_9POINT1POINT4 | TOP_SIDE_LEFT | TOP_SIDE_RIGHT),
155     CH_10POINT2 = (FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER |
156                    TOP_FRONT_LEFT | TOP_FRONT_RIGHT | BACK_LEFT |
157                    BACK_RIGHT | BACK_CENTER | SIDE_LEFT |
158                    SIDE_RIGHT | WIDE_LEFT | WIDE_RIGHT),
159     CH_22POINT2 = (CH_7POINT1POINT4 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER |
160                    BACK_CENTER | TOP_CENTER | TOP_FRONT_CENTER |
161                    TOP_BACK_CENTER | TOP_SIDE_LEFT | TOP_SIDE_RIGHT |
162                    BOTTOM_FRONT_LEFT | BOTTOM_FRONT_RIGHT |
163                    BOTTOM_FRONT_CENTER | LOW_FREQUENCY_2),
164     OCTAGONAL = (CH_5POINT0 | BACK_LEFT | BACK_CENTER | BACK_RIGHT),
165     HEXADECAGONAL =
166         (OCTAGONAL | WIDE_LEFT | WIDE_RIGHT | TOP_BACK_LEFT |
167          TOP_BACK_RIGHT | TOP_BACK_CENTER | TOP_FRONT_CENTER |
168          TOP_FRONT_LEFT | TOP_FRONT_RIGHT),
169     STEREO_DOWNMIX = (STEREO_LEFT | STEREO_RIGHT),
170 
171     HOA_FIRST = AMBISONICS_ACN0 | AMBISONICS_ACN1 | AMBISONICS_ACN2 |
172                 AMBISONICS_ACN3,
173     HOA_SECOND = HOA_FIRST | AMBISONICS_ACN4 | AMBISONICS_ACN5 |
174                  AMBISONICS_ACN6 | AMBISONICS_ACN7 | AMBISONICS_ACN8,
175     HOA_THIRD = HOA_SECOND | AMBISONICS_ACN9 | AMBISONICS_ACN10 |
176                 AMBISONICS_ACN11 | AMBISONICS_ACN12 |
177                 AMBISONICS_ACN13 | AMBISONICS_ACN14 |
178                 AMBISONICS_ACN15,
179 } AudioChannelLayout;
180 #ifdef __cplusplus
181 }
182 #endif
183 #endif