You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
364 lines
8.9 KiB
364 lines
8.9 KiB
13 years ago
|
/*
|
||
|
* Copyright@ Samsung Electronics Co. LTD
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
#ifndef _AUDIO_H_
|
||
|
#define _AUDIO_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_HDMIAUDIOPORT__
|
||
|
#define __HDMI_AUDIO_HDMIAUDIOPORT__
|
||
|
/**
|
||
|
* @enum HDMIAudioPort
|
||
|
* Available audio inputs on HDMI HW module.
|
||
|
*/
|
||
|
enum HDMIAudioPort {
|
||
|
/** I2S input port */
|
||
|
I2S_PORT,
|
||
|
/** SPDIF input port */
|
||
|
SPDIF_PORT,
|
||
|
/** DSD input port */
|
||
|
DSD_PORT,
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_HDMIAUDIOPORT__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_AUDIOFORMAT__
|
||
|
#define __HDMI_AUDIO_AUDIOFORMAT__
|
||
|
/**
|
||
|
* @enum AudioFormat
|
||
|
* The encoding format of audio stream
|
||
|
*/
|
||
|
enum AudioFormat {
|
||
|
/** LPCM encoding format */
|
||
|
LPCM_FORMAT = 1,
|
||
|
/** AC3 encoding format */
|
||
|
AC3_FORMAT,
|
||
|
/** MPEG1 encoding format */
|
||
|
MPEG1_FORMAT,
|
||
|
/** MP3 encoding format */
|
||
|
MP3_FORMAT,
|
||
|
/** MPEG2 encoding format */
|
||
|
MPEG2_FORMAT,
|
||
|
/** AAC encoding format */
|
||
|
AAC_FORMAT,
|
||
|
/** DTS encoding format */
|
||
|
DTS_FORMAT,
|
||
|
/** ATRAC encoding format */
|
||
|
ATRAC_FORMAT,
|
||
|
/** DSD encoding format */
|
||
|
DSD_FORMAT,
|
||
|
/** Dolby Digital+ encoding format */
|
||
|
Dolby_Digital_Plus_FORMAT,
|
||
|
/** DTS HD encoding format */
|
||
|
DTS_HD_FORMAT,
|
||
|
/** MAT encoding format */
|
||
|
MAT_FORMAT,
|
||
|
/** DST encoding format */
|
||
|
DST_FORMAT,
|
||
|
/** WAM_Pro encoding format */
|
||
|
WAM_Pro_FORMAT
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_AUDIOFORMAT__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_LPCMWORDLENGTH__
|
||
|
#define __HDMI_AUDIO_LPCMWORDLENGTH__
|
||
|
/**
|
||
|
* @enum LPCM_WordLen
|
||
|
* Word length of LPCM audio stream.
|
||
|
*/
|
||
|
enum LPCM_WordLen {
|
||
|
/** 16bit word length */
|
||
|
WORD_16 = 0,
|
||
|
/** 17bit word length */
|
||
|
WORD_17,
|
||
|
/** 18bit word length */
|
||
|
WORD_18,
|
||
|
/** 19bit word length */
|
||
|
WORD_19,
|
||
|
/** 20bit word length */
|
||
|
WORD_20,
|
||
|
/** 21bit word length */
|
||
|
WORD_21,
|
||
|
/** 22bit word length */
|
||
|
WORD_22,
|
||
|
/** 23bit word length */
|
||
|
WORD_23,
|
||
|
/** 24bit word length */
|
||
|
WORD_24
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_LPCMWORDLENGTH__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_SAMPLINGFREQUENCY__
|
||
|
#define __HDMI_AUDIO_SAMPLINGFREQUENCY__
|
||
|
/**
|
||
|
* @enum SamplingFreq
|
||
|
* Sampling frequency of audio stream.
|
||
|
*/
|
||
|
enum SamplingFreq {
|
||
|
/** 32KHz sampling frequency */
|
||
|
SF_32KHZ = 0,
|
||
|
/** 44.1KHz sampling frequency */
|
||
|
SF_44KHZ,
|
||
|
/** 48KHz sampling frequency */
|
||
|
SF_48KHZ,
|
||
|
/** 88.2KHz sampling frequency */
|
||
|
SF_88KHZ,
|
||
|
/** 96KHz sampling frequency */
|
||
|
SF_96KHZ,
|
||
|
/** 176.4KHz sampling frequency */
|
||
|
SF_176KHZ,
|
||
|
/** 192KHz sampling frequency */
|
||
|
SF_192KHZ
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_SAMPLINGFREQUENCY__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_CHANNELNUMBER__
|
||
|
#define __HDMI_AUDIO_CHANNELNUMBER__
|
||
|
/**
|
||
|
* @enum ChannelNum
|
||
|
* Channel number of audio stream.
|
||
|
*/
|
||
|
enum ChannelNum {
|
||
|
/** 2 channel audio stream */
|
||
|
CH_2 = 2,
|
||
|
/** 3 channel audio stream */
|
||
|
CH_3,
|
||
|
/** 4 channel audio stream */
|
||
|
CH_4,
|
||
|
/** 5 channel audio stream */
|
||
|
CH_5,
|
||
|
/** 6 channel audio stream */
|
||
|
CH_6,
|
||
|
/** 7 channel audio stream */
|
||
|
CH_7,
|
||
|
/** 8 channel audio stream */
|
||
|
CH_8,
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_CHANNELNUMBER__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_AUDIOSAMPLEPACKETTYPE__
|
||
|
#define __HDMI_AUDIO_AUDIOSAMPLEPACKETTYPE__
|
||
|
/**
|
||
|
* @enum HDMIASPType
|
||
|
* Type of HDMI audio sample packet
|
||
|
*/
|
||
|
enum HDMIASPType {
|
||
|
/** Audio Sample Packet Type */
|
||
|
HDMI_ASP,
|
||
|
/** One Bit Audio Packet Type */
|
||
|
HDMI_DSD,
|
||
|
/** High Bit Rate Packet Type */
|
||
|
HDMI_HBR,
|
||
|
/** DST Packet Type */
|
||
|
HDMI_DST
|
||
|
};
|
||
|
#endif /* __HDMI_AUDID_AUDIOSAMPLEPACKETTYPE__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_I2S_CUV_AUDIO_CODING_TYPE__
|
||
|
#define __HDMI_AUDIO_I2S_CUV_AUDIO_CODING_TYPE__
|
||
|
/**
|
||
|
* @enum CUVAudioCoding
|
||
|
* Audio coding type information for CUV fields.
|
||
|
*/
|
||
|
enum CUVAudioCoding {
|
||
|
/** Linear PCM coding type */
|
||
|
CUV_LPCM,
|
||
|
/** Non-linear PCM coding type */
|
||
|
CUV_NLPCM
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_I2S_CUV_AUDIO_CODING_TYPE__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_SPDIF_AUDIO_CODING_TYPE__
|
||
|
#define __HDMI_AUDIO_SPDIF_AUDIO_CODING_TYPE__
|
||
|
/**
|
||
|
* @enum SPDIFAudioCoding
|
||
|
* Audio coding type information for SPDIF input port.
|
||
|
*/
|
||
|
enum SPDIFAudioCoding {
|
||
|
/** Linear PCM coding type */
|
||
|
SPDIF_LPCM,
|
||
|
/** Non-linear PCM coding type */
|
||
|
SPDIF_NLPCM
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_SPDIF_AUDIO_CODING_TYPE__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_I2S_CUV_CHANNEL_NUMBER__
|
||
|
#define __HDMI_AUDIO_I2S_CUV_CHANNEL_NUMBER__
|
||
|
/**
|
||
|
* @enum CUVChannelNumber
|
||
|
* Channel number information for CUV fields.
|
||
|
*/
|
||
|
enum CUVChannelNumber {
|
||
|
/** Unknown channel audio stream */
|
||
|
CUV_CH_UNDEFINED = 0,
|
||
|
/** 1 channel audio stream */
|
||
|
CUV_CH_01,
|
||
|
/** 2 channel audio stream */
|
||
|
CUV_CH_02,
|
||
|
/** 3 channel audio stream */
|
||
|
CUV_CH_03,
|
||
|
/** 4 channel audio stream */
|
||
|
CUV_CH_04,
|
||
|
/** 5 channel audio stream */
|
||
|
CUV_CH_05,
|
||
|
/** 6 channel audio stream */
|
||
|
CUV_CH_06,
|
||
|
/** 7 channel audio stream */
|
||
|
CUV_CH_07,
|
||
|
/** 8 channel audio stream */
|
||
|
CUV_CH_08,
|
||
|
/** 9 channel audio stream */
|
||
|
CUV_CH_09,
|
||
|
/** 10 channel audio stream */
|
||
|
CUV_CH_10,
|
||
|
/** 11 channel audio stream */
|
||
|
CUV_CH_11,
|
||
|
/** 12 channel audio stream */
|
||
|
CUV_CH_12,
|
||
|
/** 13 channel audio stream */
|
||
|
CUV_CH_13,
|
||
|
/** 14 channel audio stream */
|
||
|
CUV_CH_14,
|
||
|
/** 15 channel audio stream */
|
||
|
CUV_CH_15,
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_I2S_CUV_CHANNEL_NUMBER__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_I2S_CUV_WORD_LENGTH__
|
||
|
#define __HDMI_AUDIO_I2S_CUV_WORD_LENGTH__
|
||
|
/**
|
||
|
* @enum CUVWordLength
|
||
|
* Word length information of LPCM audio stream for CUV fields.
|
||
|
*/
|
||
|
enum CUVWordLength {
|
||
|
/** Max word length is 20 bits, number of valid bits is not defined */
|
||
|
CUV_WL_20_NOT_DEFINED,
|
||
|
/** Max word length is 20 bits, 16 bits are valid */
|
||
|
CUV_WL_20_16,
|
||
|
/** Max word length is 20 bits, 18 bits are valid */
|
||
|
CUV_WL_20_18,
|
||
|
/** Max word length is 20 bits, 19 bits are valid */
|
||
|
CUV_WL_20_19,
|
||
|
/** Max word length is 20 bits, 20 bits are valid */
|
||
|
CUV_WL_20_20,
|
||
|
/** Max word length is 20 bits, 17 bits are valid */
|
||
|
CUV_WL_20_17,
|
||
|
/** Max word length is 24 bits, number of valid bits is not defined */
|
||
|
CUV_WL_24_NOT_DEFINED,
|
||
|
/** Max word length is 24 bits, 20 bits are valid */
|
||
|
CUV_WL_24_20,
|
||
|
/** Max word length is 24 bits, 22 bits are valid */
|
||
|
CUV_WL_24_22,
|
||
|
/** Max word length is 24 bits, 23 bits are valid */
|
||
|
CUV_WL_24_23,
|
||
|
/** Max word length is 24 bits, 24 bits are valid */
|
||
|
CUV_WL_24_24,
|
||
|
/** Max word length is 24 bits, 21 bits are valid */
|
||
|
CUV_WL_24_21,
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_I2S_CUV_WORD_LENGTH__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_I2S_BITS_PER_CHANNEL__
|
||
|
#define __HDMI_AUDIO_I2S_BITS_PER_CHANNEL__
|
||
|
|
||
|
/**
|
||
|
* @enum I2SBitsPerChannel
|
||
|
* Serial data bit per channel in I2S audio stream.
|
||
|
*/
|
||
|
enum I2SBitsPerChannel {
|
||
|
/** 16 bits per channel */
|
||
|
I2S_BPC_16,
|
||
|
/** 20 bits per channel */
|
||
|
I2S_BPC_20,
|
||
|
/** 24 bits per channel */
|
||
|
I2S_BPC_24
|
||
|
};
|
||
|
|
||
|
#endif /* __HDMI_AUDIO_I2S_BITS_PER_CHANNEL__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_I2S_DATA_FORMAT__
|
||
|
#define __HDMI_AUDIO_I2S_DATA_FORMAT__
|
||
|
|
||
|
/**
|
||
|
* @enum I2SDataFormat
|
||
|
* Foramt of data in I2S audio stream.
|
||
|
*/
|
||
|
enum I2SDataFormat {
|
||
|
/** Basic format */
|
||
|
I2S_BASIC,
|
||
|
/** Left justified format */
|
||
|
I2S_LEFT_JUSTIFIED,
|
||
|
/** Right justified format */
|
||
|
I2S_RIGHT_JUSTIFIED
|
||
|
};
|
||
|
|
||
|
#endif /* __HDMI_AUDIO_I2S_DATA_FORMAT__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_I2S_CLOCK_PER_FRAME__
|
||
|
#define __HDMI_AUDIO_I2S_CLOCK_PER_FRAME__
|
||
|
|
||
|
/**
|
||
|
* @enum I2SClockPerFrame
|
||
|
* Bit clock per Frame in I2S audio stream.
|
||
|
*/
|
||
|
enum I2SClockPerFrame {
|
||
|
/** 32 clock per Frame */
|
||
|
I2S_32FS,
|
||
|
/** 48 clock per Frame */
|
||
|
I2S_48FS,
|
||
|
/** 64 clock per Frame */
|
||
|
I2S_64FS
|
||
|
};
|
||
|
|
||
|
#endif /* __HDMI_AUDIO_I2S_CLOCK_PER_FRAME__ */
|
||
|
|
||
|
#ifndef __HDMI_AUDIO_I2S_PARAMETER__
|
||
|
#define __HDMI_AUDIO_I2S_PARAMETER__
|
||
|
|
||
|
//! Structure for I2S audio stream
|
||
|
struct I2SParameter {
|
||
|
enum I2SBitsPerChannel bpc;
|
||
|
enum I2SDataFormat format;
|
||
|
enum I2SClockPerFrame clk;
|
||
|
};
|
||
|
#endif /* __HDMI_AUDIO_I2S_PARAMETER__ */
|
||
|
|
||
|
//! Structure for HDMI audio input
|
||
|
struct HDMIAudioParameter {
|
||
|
/** Input audio port to HDMI HW */
|
||
|
enum HDMIAudioPort inputPort;
|
||
|
/** Output Packet type **/
|
||
|
enum HDMIASPType outPacket;
|
||
|
/** Encoding format */
|
||
|
enum AudioFormat formatCode;
|
||
|
/** Channel number */
|
||
|
enum ChannelNum channelNum;
|
||
|
/** Sampling frequency */
|
||
|
enum SamplingFreq sampleFreq;
|
||
|
/** Word length. This is avaliable only if LPCM encoding format */
|
||
|
enum LPCM_WordLen wordLength;
|
||
|
/** structure for I2S audio stream */
|
||
|
struct I2SParameter i2sParam;
|
||
|
};
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // _AUDIO_H_
|