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 /** 17 * @addtogroup CodecBase 18 * @{ 19 * 20 * @brief The CodecBase module provides variables, properties, and functions 21 * for audio and video muxer, demuxer, and basic encoding and decoding functions. 22 * 23 * @syscap SystemCapability.Multimedia.Media.CodecBase 24 * @since 9 25 */ 26 27 /** 28 * @file avcodec_audio_channel_layout.h 29 * 30 * @brief Declare the enumeration used for audio encoding and decoding. 31 * 32 * @kit AVCodecKit 33 * @library libnative_media_codecbase.so 34 * @syscap SystemCapability.Multimedia.Media.CodecBase 35 * @deprecated since 11 36 * @since 10 37 */ 38 39 #ifndef AVCODEC_AUDIO_CHANNEL_LAYOUT_H 40 #define AVCODEC_AUDIO_CHANNEL_LAYOUT_H 41 42 #ifdef __cplusplus 43 #include <cstdint> 44 #else 45 #include <stdint.h> 46 #endif 47 48 /** 49 * @file avcodec_audio_channel_layout.h 50 * 51 * @brief Audio AudioChannel Layout 52 * 53 * @kit AVCodecKit 54 * @library libnative_media_codecbase.so 55 * @syscap SystemCapability.Multimedia.Media.CodecBase 56 * @deprecated since 11 57 * @since 10 58 */ 59 60 #ifdef __cplusplus 61 extern "C" { 62 #endif 63 64 /** 65 * @brief Audio Channel Set 66 * A 64-bit integer with bits set for each channel. 67 * @syscap SystemCapability.Multimedia.Media.CodecBase 68 * @deprecated since 11 69 * @useinstead OH_AudioChannelSet 70 * @since 10 71 */ 72 typedef enum AudioChannelSet : uint64_t { 73 FRONT_LEFT = 1ULL << 0U, 74 FRONT_RIGHT = 1ULL << 1U, 75 FRONT_CENTER = 1ULL << 2U, 76 LOW_FREQUENCY = 1ULL << 3U, 77 BACK_LEFT = 1ULL << 4U, 78 BACK_RIGHT = 1ULL << 5U, 79 FRONT_LEFT_OF_CENTER = 1ULL << 6U, 80 FRONT_RIGHT_OF_CENTER = 1ULL << 7U, 81 BACK_CENTER = 1ULL << 8U, 82 SIDE_LEFT = 1ULL << 9U, 83 SIDE_RIGHT = 1ULL << 10U, 84 TOP_CENTER = 1ULL << 11U, 85 TOP_FRONT_LEFT = 1ULL << 12U, 86 TOP_FRONT_CENTER = 1ULL << 13U, 87 TOP_FRONT_RIGHT = 1ULL << 14U, 88 TOP_BACK_LEFT = 1ULL << 15U, 89 TOP_BACK_CENTER = 1ULL << 16U, 90 TOP_BACK_RIGHT = 1ULL << 17U, 91 STEREO_LEFT = 1ULL << 29U, 92 STEREO_RIGHT = 1ULL << 30U, 93 WIDE_LEFT = 1ULL << 31U, 94 WIDE_RIGHT = 1ULL << 32U, 95 SURROUND_DIRECT_LEFT = 1ULL << 33U, 96 SURROUND_DIRECT_RIGHT = 1ULL << 34U, 97 LOW_FREQUENCY_2 = 1ULL << 35U, 98 TOP_SIDE_LEFT = 1ULL << 36U, 99 TOP_SIDE_RIGHT = 1ULL << 37U, 100 BOTTOM_FRONT_CENTER = 1ULL << 38U, 101 BOTTOM_FRONT_LEFT = 1ULL << 39U, 102 BOTTOM_FRONT_RIGHT = 1ULL << 40U, 103 104 // Ambisonics ACN formats 105 // 0th and first order ambisonics ACN 106 AMBISONICS_ACN0 = 1ULL << 41U, /** 0th ambisonics channel number 0. */ 107 AMBISONICS_ACN1 = 1ULL << 42U, /** first-order ambisonics channel number 1. */ 108 AMBISONICS_ACN2 = 1ULL << 43U, /** first-order ambisonics channel number 2. */ 109 AMBISONICS_ACN3 = 1ULL << 44U, /** first-order ambisonics channel number 3. */ 110 AMBISONICS_W = AMBISONICS_ACN0, /** same as 0th ambisonics channel number 0. */ 111 AMBISONICS_Y = AMBISONICS_ACN1, /** same as first-order ambisonics channel number 1. */ 112 AMBISONICS_Z = AMBISONICS_ACN2, /** same as first-order ambisonics channel number 2. */ 113 AMBISONICS_X = AMBISONICS_ACN3, /** same as first-order ambisonics channel number 3. */ 114 115 // second order ambisonics ACN 116 AMBISONICS_ACN4 = 1ULL << 45U, /** second-order ambisonics channel number 4. */ 117 AMBISONICS_ACN5 = 1ULL << 46U, /** second-order ambisonics channel number 5. */ 118 AMBISONICS_ACN6 = 1ULL << 47U, /** second-order ambisonics channel number 6. */ 119 AMBISONICS_ACN7 = 1ULL << 48U, /** second-order ambisonics channel number 7. */ 120 AMBISONICS_ACN8 = 1ULL << 49U, /** second-order ambisonics channel number 8. */ 121 122 // third order ambisonics ACN 123 AMBISONICS_ACN9 = 1ULL << 50U, /** third-order ambisonics channel number 9. */ 124 AMBISONICS_ACN10 = 1ULL << 51U, /** third-order ambisonics channel number 10. */ 125 AMBISONICS_ACN11 = 1ULL << 52U, /** third-order ambisonics channel number 11. */ 126 AMBISONICS_ACN12 = 1ULL << 53U, /** third-order ambisonics channel number 12. */ 127 AMBISONICS_ACN13 = 1ULL << 54U, /** third-order ambisonics channel number 13. */ 128 AMBISONICS_ACN14 = 1ULL << 55U, /** third-order ambisonics channel number 14. */ 129 AMBISONICS_ACN15 = 1ULL << 56U, /** third-order ambisonics channel number 15. */ 130 } AudioChannelSet; 131 132 /** 133 * @brief Audio AudioChannel Layout 134 * Indicates that the channel order in which the user requests decoder output 135 * is the native codec channel order. 136 * @syscap SystemCapability.Multimedia.Media.CodecBase 137 * @deprecated since 11 138 * @useinstead OH_AudioChannelLayout 139 * @since 10 140 */ 141 typedef enum AudioChannelLayout : uint64_t { 142 UNKNOWN_CHANNEL_LAYOUT = 0, 143 MONO = (FRONT_CENTER), 144 STEREO = (FRONT_LEFT | FRONT_RIGHT), 145 CH_2POINT1 = (STEREO | LOW_FREQUENCY), 146 CH_2_1 = (STEREO | BACK_CENTER), 147 SURROUND = (STEREO | FRONT_CENTER), 148 CH_3POINT1 = (SURROUND | LOW_FREQUENCY), 149 CH_4POINT0 = (SURROUND | BACK_CENTER), 150 CH_4POINT1 = (CH_4POINT0 | LOW_FREQUENCY), 151 CH_2_2 = (STEREO | SIDE_LEFT | SIDE_RIGHT), 152 QUAD = (STEREO | BACK_LEFT | BACK_RIGHT), 153 CH_5POINT0 = (SURROUND | SIDE_LEFT | SIDE_RIGHT), 154 CH_5POINT1 = (CH_5POINT0 | LOW_FREQUENCY), 155 CH_5POINT0_BACK = (SURROUND | BACK_LEFT | BACK_RIGHT), 156 CH_5POINT1_BACK = (CH_5POINT0_BACK | LOW_FREQUENCY), 157 CH_6POINT0 = (CH_5POINT0 | BACK_CENTER), 158 CH_6POINT0_FRONT = (CH_2_2 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER), 159 HEXAGONAL = (CH_5POINT0_BACK | BACK_CENTER), 160 CH_6POINT1 = (CH_5POINT1 | BACK_CENTER), 161 CH_6POINT1_BACK = (CH_5POINT1_BACK | BACK_CENTER), 162 CH_6POINT1_FRONT = (CH_6POINT0_FRONT | LOW_FREQUENCY), 163 CH_7POINT0 = (CH_5POINT0 | BACK_LEFT | BACK_RIGHT), 164 CH_7POINT0_FRONT = (CH_5POINT0 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER), 165 CH_7POINT1 = (CH_5POINT1 | BACK_LEFT | BACK_RIGHT), 166 CH_7POINT1_WIDE = (CH_5POINT1 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER), 167 CH_7POINT1_WIDE_BACK = 168 (CH_5POINT1_BACK | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER), 169 CH_3POINT1POINT2 = (CH_3POINT1 | TOP_FRONT_LEFT | TOP_FRONT_RIGHT), 170 CH_5POINT1POINT2 = (CH_5POINT1 | TOP_SIDE_LEFT | TOP_SIDE_RIGHT), 171 CH_5POINT1POINT4 = (CH_5POINT1 | TOP_FRONT_LEFT | TOP_FRONT_RIGHT | 172 TOP_BACK_LEFT | TOP_BACK_RIGHT), 173 CH_7POINT1POINT2 = (CH_7POINT1 | TOP_SIDE_LEFT | TOP_SIDE_RIGHT), 174 CH_7POINT1POINT4 = (CH_7POINT1 | TOP_FRONT_LEFT | TOP_FRONT_RIGHT | 175 TOP_BACK_LEFT | TOP_BACK_RIGHT), 176 CH_9POINT1POINT4 = (CH_7POINT1POINT4 | WIDE_LEFT | WIDE_RIGHT), 177 CH_9POINT1POINT6 = (CH_9POINT1POINT4 | TOP_SIDE_LEFT | TOP_SIDE_RIGHT), 178 CH_10POINT2 = (FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER | 179 TOP_FRONT_LEFT | TOP_FRONT_RIGHT | BACK_LEFT | 180 BACK_RIGHT | BACK_CENTER | SIDE_LEFT | 181 SIDE_RIGHT | WIDE_LEFT | WIDE_RIGHT), 182 CH_22POINT2 = (CH_7POINT1POINT4 | FRONT_LEFT_OF_CENTER | FRONT_RIGHT_OF_CENTER | 183 BACK_CENTER | TOP_CENTER | TOP_FRONT_CENTER | 184 TOP_BACK_CENTER | TOP_SIDE_LEFT | TOP_SIDE_RIGHT | 185 BOTTOM_FRONT_LEFT | BOTTOM_FRONT_RIGHT | 186 BOTTOM_FRONT_CENTER | LOW_FREQUENCY_2), 187 OCTAGONAL = (CH_5POINT0 | BACK_LEFT | BACK_CENTER | BACK_RIGHT), 188 HEXADECAGONAL = 189 (OCTAGONAL | WIDE_LEFT | WIDE_RIGHT | TOP_BACK_LEFT | 190 TOP_BACK_RIGHT | TOP_BACK_CENTER | TOP_FRONT_CENTER | 191 TOP_FRONT_LEFT | TOP_FRONT_RIGHT), 192 STEREO_DOWNMIX = (STEREO_LEFT | STEREO_RIGHT), 193 194 HOA_FIRST = AMBISONICS_ACN0 | AMBISONICS_ACN1 | AMBISONICS_ACN2 | 195 AMBISONICS_ACN3, 196 HOA_SECOND = HOA_FIRST | AMBISONICS_ACN4 | AMBISONICS_ACN5 | 197 AMBISONICS_ACN6 | AMBISONICS_ACN7 | AMBISONICS_ACN8, 198 HOA_THIRD = HOA_SECOND | AMBISONICS_ACN9 | AMBISONICS_ACN10 | 199 AMBISONICS_ACN11 | AMBISONICS_ACN12 | 200 AMBISONICS_ACN13 | AMBISONICS_ACN14 | 201 AMBISONICS_ACN15, 202 } AudioChannelLayout; 203 #ifdef __cplusplus 204 } 205 #endif 206 #endif // AVCODEC_AUDIO_CHANNEL_LAYOUT_H 207 /** @} */