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