codeworkx | f1be2fe | 2012-03-24 17:38:29 +0100 | [diff] [blame] | 1 | /* |
| 2 | * Copyright@ Samsung Electronics Co. LTD |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | #ifndef _AUDIO_H_ |
| 18 | #define _AUDIO_H_ |
| 19 | |
| 20 | #ifdef __cplusplus |
| 21 | extern "C" { |
| 22 | #endif |
| 23 | |
| 24 | #ifndef __HDMI_AUDIO_HDMIAUDIOPORT__ |
| 25 | #define __HDMI_AUDIO_HDMIAUDIOPORT__ |
| 26 | /** |
| 27 | * @enum HDMIAudioPort |
| 28 | * Available audio inputs on HDMI HW module. |
| 29 | */ |
| 30 | enum HDMIAudioPort { |
| 31 | /** I2S input port */ |
| 32 | I2S_PORT, |
| 33 | /** SPDIF input port */ |
| 34 | SPDIF_PORT, |
| 35 | /** DSD input port */ |
| 36 | DSD_PORT, |
| 37 | }; |
| 38 | #endif /* __HDMI_AUDIO_HDMIAUDIOPORT__ */ |
| 39 | |
| 40 | #ifndef __HDMI_AUDIO_AUDIOFORMAT__ |
| 41 | #define __HDMI_AUDIO_AUDIOFORMAT__ |
| 42 | /** |
| 43 | * @enum AudioFormat |
| 44 | * The encoding format of audio stream |
| 45 | */ |
| 46 | enum AudioFormat { |
| 47 | /** LPCM encoding format */ |
| 48 | LPCM_FORMAT = 1, |
| 49 | /** AC3 encoding format */ |
| 50 | AC3_FORMAT, |
| 51 | /** MPEG1 encoding format */ |
| 52 | MPEG1_FORMAT, |
| 53 | /** MP3 encoding format */ |
| 54 | MP3_FORMAT, |
| 55 | /** MPEG2 encoding format */ |
| 56 | MPEG2_FORMAT, |
| 57 | /** AAC encoding format */ |
| 58 | AAC_FORMAT, |
| 59 | /** DTS encoding format */ |
| 60 | DTS_FORMAT, |
| 61 | /** ATRAC encoding format */ |
| 62 | ATRAC_FORMAT, |
| 63 | /** DSD encoding format */ |
| 64 | DSD_FORMAT, |
| 65 | /** Dolby Digital+ encoding format */ |
| 66 | Dolby_Digital_Plus_FORMAT, |
| 67 | /** DTS HD encoding format */ |
| 68 | DTS_HD_FORMAT, |
| 69 | /** MAT encoding format */ |
| 70 | MAT_FORMAT, |
| 71 | /** DST encoding format */ |
| 72 | DST_FORMAT, |
| 73 | /** WAM_Pro encoding format */ |
| 74 | WAM_Pro_FORMAT |
| 75 | }; |
| 76 | #endif /* __HDMI_AUDIO_AUDIOFORMAT__ */ |
| 77 | |
| 78 | #ifndef __HDMI_AUDIO_LPCMWORDLENGTH__ |
| 79 | #define __HDMI_AUDIO_LPCMWORDLENGTH__ |
| 80 | /** |
| 81 | * @enum LPCM_WordLen |
| 82 | * Word length of LPCM audio stream. |
| 83 | */ |
| 84 | enum LPCM_WordLen { |
| 85 | /** 16bit word length */ |
| 86 | WORD_16 = 0, |
| 87 | /** 17bit word length */ |
| 88 | WORD_17, |
| 89 | /** 18bit word length */ |
| 90 | WORD_18, |
| 91 | /** 19bit word length */ |
| 92 | WORD_19, |
| 93 | /** 20bit word length */ |
| 94 | WORD_20, |
| 95 | /** 21bit word length */ |
| 96 | WORD_21, |
| 97 | /** 22bit word length */ |
| 98 | WORD_22, |
| 99 | /** 23bit word length */ |
| 100 | WORD_23, |
| 101 | /** 24bit word length */ |
| 102 | WORD_24 |
| 103 | }; |
| 104 | #endif /* __HDMI_AUDIO_LPCMWORDLENGTH__ */ |
| 105 | |
| 106 | #ifndef __HDMI_AUDIO_SAMPLINGFREQUENCY__ |
| 107 | #define __HDMI_AUDIO_SAMPLINGFREQUENCY__ |
| 108 | /** |
| 109 | * @enum SamplingFreq |
| 110 | * Sampling frequency of audio stream. |
| 111 | */ |
| 112 | enum SamplingFreq { |
| 113 | /** 32KHz sampling frequency */ |
| 114 | SF_32KHZ = 0, |
| 115 | /** 44.1KHz sampling frequency */ |
| 116 | SF_44KHZ, |
| 117 | /** 48KHz sampling frequency */ |
| 118 | SF_48KHZ, |
| 119 | /** 88.2KHz sampling frequency */ |
| 120 | SF_88KHZ, |
| 121 | /** 96KHz sampling frequency */ |
| 122 | SF_96KHZ, |
| 123 | /** 176.4KHz sampling frequency */ |
| 124 | SF_176KHZ, |
| 125 | /** 192KHz sampling frequency */ |
| 126 | SF_192KHZ |
| 127 | }; |
| 128 | #endif /* __HDMI_AUDIO_SAMPLINGFREQUENCY__ */ |
| 129 | |
| 130 | #ifndef __HDMI_AUDIO_CHANNELNUMBER__ |
| 131 | #define __HDMI_AUDIO_CHANNELNUMBER__ |
| 132 | /** |
| 133 | * @enum ChannelNum |
| 134 | * Channel number of audio stream. |
| 135 | */ |
| 136 | enum ChannelNum { |
| 137 | /** 2 channel audio stream */ |
| 138 | CH_2 = 2, |
| 139 | /** 3 channel audio stream */ |
| 140 | CH_3, |
| 141 | /** 4 channel audio stream */ |
| 142 | CH_4, |
| 143 | /** 5 channel audio stream */ |
| 144 | CH_5, |
| 145 | /** 6 channel audio stream */ |
| 146 | CH_6, |
| 147 | /** 7 channel audio stream */ |
| 148 | CH_7, |
| 149 | /** 8 channel audio stream */ |
| 150 | CH_8, |
| 151 | }; |
| 152 | #endif /* __HDMI_AUDIO_CHANNELNUMBER__ */ |
| 153 | |
| 154 | #ifndef __HDMI_AUDIO_AUDIOSAMPLEPACKETTYPE__ |
| 155 | #define __HDMI_AUDIO_AUDIOSAMPLEPACKETTYPE__ |
| 156 | /** |
| 157 | * @enum HDMIASPType |
| 158 | * Type of HDMI audio sample packet |
| 159 | */ |
| 160 | enum HDMIASPType { |
| 161 | /** Audio Sample Packet Type */ |
| 162 | HDMI_ASP, |
| 163 | /** One Bit Audio Packet Type */ |
| 164 | HDMI_DSD, |
| 165 | /** High Bit Rate Packet Type */ |
| 166 | HDMI_HBR, |
| 167 | /** DST Packet Type */ |
| 168 | HDMI_DST |
| 169 | }; |
| 170 | #endif /* __HDMI_AUDID_AUDIOSAMPLEPACKETTYPE__ */ |
| 171 | |
| 172 | #ifndef __HDMI_AUDIO_I2S_CUV_AUDIO_CODING_TYPE__ |
| 173 | #define __HDMI_AUDIO_I2S_CUV_AUDIO_CODING_TYPE__ |
| 174 | /** |
| 175 | * @enum CUVAudioCoding |
| 176 | * Audio coding type information for CUV fields. |
| 177 | */ |
| 178 | enum CUVAudioCoding { |
| 179 | /** Linear PCM coding type */ |
| 180 | CUV_LPCM, |
| 181 | /** Non-linear PCM coding type */ |
| 182 | CUV_NLPCM |
| 183 | }; |
| 184 | #endif /* __HDMI_AUDIO_I2S_CUV_AUDIO_CODING_TYPE__ */ |
| 185 | |
| 186 | #ifndef __HDMI_AUDIO_SPDIF_AUDIO_CODING_TYPE__ |
| 187 | #define __HDMI_AUDIO_SPDIF_AUDIO_CODING_TYPE__ |
| 188 | /** |
| 189 | * @enum SPDIFAudioCoding |
| 190 | * Audio coding type information for SPDIF input port. |
| 191 | */ |
| 192 | enum SPDIFAudioCoding { |
| 193 | /** Linear PCM coding type */ |
| 194 | SPDIF_LPCM, |
| 195 | /** Non-linear PCM coding type */ |
| 196 | SPDIF_NLPCM |
| 197 | }; |
| 198 | #endif /* __HDMI_AUDIO_SPDIF_AUDIO_CODING_TYPE__ */ |
| 199 | |
| 200 | #ifndef __HDMI_AUDIO_I2S_CUV_CHANNEL_NUMBER__ |
| 201 | #define __HDMI_AUDIO_I2S_CUV_CHANNEL_NUMBER__ |
| 202 | /** |
| 203 | * @enum CUVChannelNumber |
| 204 | * Channel number information for CUV fields. |
| 205 | */ |
| 206 | enum CUVChannelNumber { |
| 207 | /** Unknown channel audio stream */ |
| 208 | CUV_CH_UNDEFINED = 0, |
| 209 | /** 1 channel audio stream */ |
| 210 | CUV_CH_01, |
| 211 | /** 2 channel audio stream */ |
| 212 | CUV_CH_02, |
| 213 | /** 3 channel audio stream */ |
| 214 | CUV_CH_03, |
| 215 | /** 4 channel audio stream */ |
| 216 | CUV_CH_04, |
| 217 | /** 5 channel audio stream */ |
| 218 | CUV_CH_05, |
| 219 | /** 6 channel audio stream */ |
| 220 | CUV_CH_06, |
| 221 | /** 7 channel audio stream */ |
| 222 | CUV_CH_07, |
| 223 | /** 8 channel audio stream */ |
| 224 | CUV_CH_08, |
| 225 | /** 9 channel audio stream */ |
| 226 | CUV_CH_09, |
| 227 | /** 10 channel audio stream */ |
| 228 | CUV_CH_10, |
| 229 | /** 11 channel audio stream */ |
| 230 | CUV_CH_11, |
| 231 | /** 12 channel audio stream */ |
| 232 | CUV_CH_12, |
| 233 | /** 13 channel audio stream */ |
| 234 | CUV_CH_13, |
| 235 | /** 14 channel audio stream */ |
| 236 | CUV_CH_14, |
| 237 | /** 15 channel audio stream */ |
| 238 | CUV_CH_15, |
| 239 | }; |
| 240 | #endif /* __HDMI_AUDIO_I2S_CUV_CHANNEL_NUMBER__ */ |
| 241 | |
| 242 | #ifndef __HDMI_AUDIO_I2S_CUV_WORD_LENGTH__ |
| 243 | #define __HDMI_AUDIO_I2S_CUV_WORD_LENGTH__ |
| 244 | /** |
| 245 | * @enum CUVWordLength |
| 246 | * Word length information of LPCM audio stream for CUV fields. |
| 247 | */ |
| 248 | enum CUVWordLength { |
| 249 | /** Max word length is 20 bits, number of valid bits is not defined */ |
| 250 | CUV_WL_20_NOT_DEFINED, |
| 251 | /** Max word length is 20 bits, 16 bits are valid */ |
| 252 | CUV_WL_20_16, |
| 253 | /** Max word length is 20 bits, 18 bits are valid */ |
| 254 | CUV_WL_20_18, |
| 255 | /** Max word length is 20 bits, 19 bits are valid */ |
| 256 | CUV_WL_20_19, |
| 257 | /** Max word length is 20 bits, 20 bits are valid */ |
| 258 | CUV_WL_20_20, |
| 259 | /** Max word length is 20 bits, 17 bits are valid */ |
| 260 | CUV_WL_20_17, |
| 261 | /** Max word length is 24 bits, number of valid bits is not defined */ |
| 262 | CUV_WL_24_NOT_DEFINED, |
| 263 | /** Max word length is 24 bits, 20 bits are valid */ |
| 264 | CUV_WL_24_20, |
| 265 | /** Max word length is 24 bits, 22 bits are valid */ |
| 266 | CUV_WL_24_22, |
| 267 | /** Max word length is 24 bits, 23 bits are valid */ |
| 268 | CUV_WL_24_23, |
| 269 | /** Max word length is 24 bits, 24 bits are valid */ |
| 270 | CUV_WL_24_24, |
| 271 | /** Max word length is 24 bits, 21 bits are valid */ |
| 272 | CUV_WL_24_21, |
| 273 | }; |
| 274 | #endif /* __HDMI_AUDIO_I2S_CUV_WORD_LENGTH__ */ |
| 275 | |
| 276 | #ifndef __HDMI_AUDIO_I2S_BITS_PER_CHANNEL__ |
| 277 | #define __HDMI_AUDIO_I2S_BITS_PER_CHANNEL__ |
| 278 | |
| 279 | /** |
| 280 | * @enum I2SBitsPerChannel |
| 281 | * Serial data bit per channel in I2S audio stream. |
| 282 | */ |
| 283 | enum I2SBitsPerChannel { |
| 284 | /** 16 bits per channel */ |
| 285 | I2S_BPC_16, |
| 286 | /** 20 bits per channel */ |
| 287 | I2S_BPC_20, |
| 288 | /** 24 bits per channel */ |
| 289 | I2S_BPC_24 |
| 290 | }; |
| 291 | |
| 292 | #endif /* __HDMI_AUDIO_I2S_BITS_PER_CHANNEL__ */ |
| 293 | |
| 294 | #ifndef __HDMI_AUDIO_I2S_DATA_FORMAT__ |
| 295 | #define __HDMI_AUDIO_I2S_DATA_FORMAT__ |
| 296 | |
| 297 | /** |
| 298 | * @enum I2SDataFormat |
| 299 | * Foramt of data in I2S audio stream. |
| 300 | */ |
| 301 | enum I2SDataFormat { |
| 302 | /** Basic format */ |
| 303 | I2S_BASIC, |
| 304 | /** Left justified format */ |
| 305 | I2S_LEFT_JUSTIFIED, |
| 306 | /** Right justified format */ |
| 307 | I2S_RIGHT_JUSTIFIED |
| 308 | }; |
| 309 | |
| 310 | #endif /* __HDMI_AUDIO_I2S_DATA_FORMAT__ */ |
| 311 | |
| 312 | #ifndef __HDMI_AUDIO_I2S_CLOCK_PER_FRAME__ |
| 313 | #define __HDMI_AUDIO_I2S_CLOCK_PER_FRAME__ |
| 314 | |
| 315 | /** |
| 316 | * @enum I2SClockPerFrame |
| 317 | * Bit clock per Frame in I2S audio stream. |
| 318 | */ |
| 319 | enum I2SClockPerFrame { |
| 320 | /** 32 clock per Frame */ |
| 321 | I2S_32FS, |
| 322 | /** 48 clock per Frame */ |
| 323 | I2S_48FS, |
| 324 | /** 64 clock per Frame */ |
| 325 | I2S_64FS |
| 326 | }; |
| 327 | |
| 328 | #endif /* __HDMI_AUDIO_I2S_CLOCK_PER_FRAME__ */ |
| 329 | |
| 330 | #ifndef __HDMI_AUDIO_I2S_PARAMETER__ |
| 331 | #define __HDMI_AUDIO_I2S_PARAMETER__ |
| 332 | |
| 333 | //! Structure for I2S audio stream |
| 334 | struct I2SParameter { |
| 335 | enum I2SBitsPerChannel bpc; |
| 336 | enum I2SDataFormat format; |
| 337 | enum I2SClockPerFrame clk; |
| 338 | }; |
| 339 | #endif /* __HDMI_AUDIO_I2S_PARAMETER__ */ |
| 340 | |
| 341 | //! Structure for HDMI audio input |
| 342 | struct HDMIAudioParameter { |
| 343 | /** Input audio port to HDMI HW */ |
| 344 | enum HDMIAudioPort inputPort; |
| 345 | /** Output Packet type **/ |
| 346 | enum HDMIASPType outPacket; |
| 347 | /** Encoding format */ |
| 348 | enum AudioFormat formatCode; |
| 349 | /** Channel number */ |
| 350 | enum ChannelNum channelNum; |
| 351 | /** Sampling frequency */ |
| 352 | enum SamplingFreq sampleFreq; |
| 353 | /** Word length. This is avaliable only if LPCM encoding format */ |
| 354 | enum LPCM_WordLen wordLength; |
| 355 | /** structure for I2S audio stream */ |
| 356 | struct I2SParameter i2sParam; |
| 357 | }; |
| 358 | |
| 359 | #ifdef __cplusplus |
| 360 | } |
| 361 | #endif |
| 362 | |
| 363 | #endif // _AUDIO_H_ |