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