⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tvpaudio.h

📁 ti的数字电视芯片 tvp9000的源码
💻 H
字号:
/********************************************************************* 
*    Property of Texas Instruments Incorporated, Copyright 2004
*    All rights reserved
**********************************************************************/

/*********************************************************************
*
* Description:
*   public include file for the audio decoder
*   It includes only the definitions that are needed for the API
*   
**********************************************************************/
/**********************************************************************
*  
* $Revision: $ 
* 
* $History: TvpAudio.h $   
* 
**********************************************************************/

#ifndef TVP_AUDIO_DOT_H_IS_DEFINED
#define TVP_AUDIO_DOT_H_IS_DEFINED


#define TVP_AUD_MAX_ATTEN     0x3f
#define TVP_AUD_MAX_TONE_FREQ 0x3fff

#define TVP_AD_MAX_PCM_OUT_BUF  (0x3ff0 * 6)     // Available Size per channel
#define TVP_AD_MAX_MIC_BUF      0xffff0

#define TVP_AD_MAX_START_CYCLE  31        // Max number of clock offset cycles for mike
#define TVP_AD_MAX_MIX_WEIGHT   32        // Max mixing weight; 32=All mike, 0=All tone/Ac3/Mpeg
#define TVP_AD_MAX_MIKE_DELAY   49        // Max delay in 10ms increments

/*----------------------------------------------------------------------**
** #defines used in the TvpInfo_s structure returning audio stream info **
**----------------------------------------------------------------------*/
#define TVP_AUD_INFO_SF_48      0
#define TVP_AUD_INFO_SF_44_1    1
#define TVP_AUD_INFO_SF_32      2

#define TVP_AUD_INFO_ACMOD_1_1  0         // 1+1  Ch1, Ch2
#define TVP_AUD_INFO_ACMOD_1_0  1         // 1/0  C
#define TVP_AUD_INFO_ACMOD_2_0  2         // 2/0  L, R
#define TVP_AUD_INFO_ACMOD_3_0  3         // 3/0  L, C, R
#define TVP_AUD_INFO_ACMOD_2_1  4         // 2/1  L, R, S
#define TVP_AUD_INFO_ACMOD_3_1  5         // 3/1  L, C, R, S
#define TVP_AUD_INFO_ACMOD_2_2  6         // 2/2  L, R, SL, SR
#define TVP_AUD_INFO_ACMOD_3_2  7         // 3/2  L, R, C, SL, SR

#define TVP_AUD_INFO_DSURMOD_NOT_DOLBY  1
#define TVP_AUD_INFO_DSURMOD_DOLBY      2

#define TVP_AUD_INFO_LFEON_OFF          0
#define TVP_AUD_INFO_LFEON_ON           1
/*--------------------------------------**
** TvpAudIntEvent Reasons / Status Bits **
**--------------------------------------*/

#define TVP_AUD_INT_NONE                0
#define TVP_AUD_ANCILLARY_DATA_DETECTED 0x1
#define TVP_AUD_PCM_BUFFER_OVERFLOW     0x2       // PG2.0
#define TVP_AUD_SAMP_FREQ_CHANGE        0x4       // PG2.0
#define TVP_AUD_ACMOD_CHANGE            0x8       // PG2.0
#define TVP_AUD_DSUR_MOD_CHANGE         0x10      // PG2.0
#define TVP_AUD_LFE_CHANGE              0x20      // PG2.0
#define TVP_AUD_FRAME_INT               0x10000   // PG2.0
#define TVP_AUD_DSP_ERROR               0x20000   // PG2.0
#define TVP_AUD_INCORRECT_ALGORITHM     0x40000


typedef unsigned long   TvpAudIntEvent;
typedef signed short    TvpAudVolAtten;
typedef unsigned short  TvpAudToneFreq;

typedef struct 
{
   unsigned char fscod;
   unsigned char acmod;
   unsigned char dsurmod;
   unsigned char lfeon;  
}TvpAudInfo_s;

typedef enum {
   TVP_AUD_STEREO=0,
   TVP_AUD_CHAN_1_MONO=1,
   TVP_AUD_CHAN_2_MONO=2,
   TVP_AUD_MIXED_MONO=3 
} TvpAudDualMode;


typedef enum {
   TVP_AUD_NO_ALGORITHM,
   TVP_AUD_AC3,
   TVP_AUD_MPEG1,
   TVP_AUD_TONE_GEN
} TvpAudAlgorithmType;

typedef enum {
   TVP_AUD_AC3_UCODE,
   TVP_AUD_AC3_COEFFICIENT,
   TVP_AUD_MPEG1_UCODE,
   TVP_AUD_MPEG1_COEFFICIENT,
   TVP_AUD_TONE_UCODE,
   TVP_AUD_TONE_COEFFICIENT
} TvpAudDnLoadType;

typedef enum {
   TVP_AUD_TONE_SF_48=0,
   TVP_AUD_TONE_SF_44_1=1,
   TVP_AUD_TONE_SF_32=2   
} TvpAudToneSampFreq;

typedef enum {
   TVP_AUD_HALT,
   TVP_AUD_PLAY   
} TvpAudPlayCmd;

typedef enum {
   TVP_AUD_UNMUTE,
   TVP_AUD_MUTE   
} TvpAudMuteCmd;

typedef enum {
   TVP_AUD_LO_RO_DNMIX=0,
   TVP_AUD_LT_RT_DNMIX=1,
   TVP_AUD_PREF_THEN_LO_RO_DNMIX=2,
   TVP_AUD_PREF_THEN_LT_RT_DNMIX=3
}TvpAudDnMixOption;

typedef enum {
   TVP_AUD_SPDIF_AS_PCM = 0,      // Old name maintained 
   TVP_AUD_SPDIF_AS_PCM_MUTE = 0,
   TVP_AUD_SPDIF_AS_PCM_16_BIT = 2,
   TVP_AUD_SPDIF_AS_PCM_20_BIT = 4,
   TVP_AUD_SPDIF_AS_PCM_24_BIT = 6,
   TVP_AUD_SPDIF_NON_PCM_NULL_BURSTS = 1,
   TVP_AUD_SPDIF_NON_PCM_ENC_DATA = 3   
} TvpAudPcmType;

typedef enum {
   TVP_AUD_PCM_16_BIT_SAMPLES=0,
   TVP_AUD_PCM_18_BIT_SAMPLES=1,
   TVP_AUD_PCM_20_BIT_SAMPLES=2,
   TVP_AUD_PCM_24_BIT_SAMPLES=3
} TvpAudSampleWidth;

typedef enum {
   TVP_AUD_PCM_LT_JUST = 0,
   TVP_AUD_PCM_I2S_PATTERN = 4,
   TVP_AUD_PCM_RT_JUST_LEAD_0 = 8,
   TVP_AUD_PCM_RT_JUST_MSB_EXTEND = 0xC
} TvpAudPcmFormat;

typedef enum {
   TVP_AUD_CLOCK_NO_DIV = 0,
   TVP_AUD_CLOCK_DIV_2 = (2<<7),
   TVP_AUD_CLOCK_DIV_4 = (3<<7)
} TvpAudClkDiv;

typedef struct {
   unsigned char cs_msb;      // Channel Status Most Significant Byte
   unsigned char cs_1;
   unsigned char cs_2;
   unsigned char cs_3;
   unsigned char cs_lsb;      // Channel Status Least Significant Byte
   unsigned short burstInfo;  // Burst info for burst_preamble word
   unsigned short pauseFreq;  // spdif frames with pause bursts
   unsigned short pauseCount; // # pause bursts within pcm frame time
   unsigned char  gapLengthInPause; // Gap Length Param written in first pause burst  
} TvpAudSpdifConfig;

typedef enum 
{
   TVP_AUD_PRO_LOG_3_0=3,
   TVP_AUD_PRO_LOG_2_2=6,
   TVP_AUD_PRO_LOG_3_2=7
} TvpAudProLogChannelConfig;

typedef unsigned char  TvpAudProLogDimension;

typedef enum 
{
   TVP_AUD_PRO_LOG_PROLOGIC = 0,
   TVP_AUD_PRO_LOG_VIRTUAL  = 1,
   TVP_AUD_PRO_LOG_MUSIC    = 2,
   TVP_AUD_PRO_LOG_MOVIE    = 3,
   TVP_AUD_PRO_LOG_MATRIX   = 4   
} TvpAudProLogDecodeMode;

typedef unsigned char TvpAudProLogWidthControl;

typedef enum 
{
   TVP_AUD_SURROUND_15_DEGREE  = 0,
   TVP_AUD_SURROUND_20_DEGREE  = 1
   
} TvpAudSurroundSpeakerSeparation;
                                  
typedef enum 
{
   TVP_AUD_SURROUND_AUTO_CHAN = 0,
   TVP_AUD_SURROUND_2_0_CHAN = 2,
   TVP_AUD_SURROUND_3_0_CHAN = 3,
   TVP_AUD_SURROUND_2_1_CHAN = 4,
   TVP_AUD_SURROUND_3_1_CHAN = 5,
   TVP_AUD_SURROUND_2_2_CHAN = 6,
   TVP_AUD_SURROUND_3_2_CHAN = 7
} TvpAudSurroundChannelConfig;

typedef unsigned char TvpAudSurroundChannelAdjust;

typedef enum 
{
   TVP_AUD_SURROUND_SAMP_FULL = 0,
   TVP_AUD_SURROUND_SAMP_HALF = 1,
   TVP_AUD_SURROUND_SAMP_QRTR = 2
     
} TvpAudSurroundSampRate;

typedef enum 
{
   TVP_AUD_DUAL_MONO_LEFT,
   TVP_AUD_DUAL_MONO_RIGHT
} TvpAudLeftRight;

/***********************************************************************************
*********************************** API FUNCTIONS **********************************
***********************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif

TVP_FERROR tvpAudAlgorithmDownload (TvpAudAlgorithmType algorithm, 
                                    unsigned long *addressCode,
                                    unsigned long sizeWordsCode,
                                    unsigned long *addressCoef,
                                    unsigned long sizeWordsCoef);
TVP_FERROR tvpAudDrvrInit (unsigned char *audDecodeBuffer, 
                           unsigned char *audPcmOutBuffer,
                           unsigned long audPcmOutBufSize);
TVP_FERROR tvpAudConfigPcm (TvpAudSampleWidth sampleWidth, TvpAudPcmFormat pcmFormat,
                            TvpAudPcmType pcmType, Tvp_En_Dis reverseBitOrder, 
                            Tvp_En_Dis invertBClk, Tvp_En_Dis invertChID, 
                            TvpAudClkDiv clockDiv );
TVP_FERROR tvpAudConfigAC3 (TvpAudDualMode dualMode, Tvp_En_Dis karaokeCapable,
                            TvpAudDnMixOption ltrtOption, Tvp_En_Dis downmixStereo,
                            Tvp_En_Dis normalizeDialog, Tvp_En_Dis rfMode,
                            Tvp_En_Dis dynamicRange, Tvp_En_Dis heavyCompression);
TVP_FERROR tvpAudVolume(TvpAudVolAtten rightAtten,
                        TvpAudVolAtten leftAtten, 
                        TvpAudVolAtten rsAtten,
                        TvpAudVolAtten lsAtten,
                        TvpAudVolAtten lfeAtten,
                        TvpAudVolAtten cAtten);
TVP_FERROR tvpAudConfigSpdif(TvpAudSpdifConfig *spdifInfo);
TVP_FERROR tvpAudCommand (TvpAudPlayCmd playCmd, TvpAudMuteCmd muteCmd);
TVP_FERROR tvpAudMicrophoneInit (unsigned char *micBuffer, unsigned long micBufSize);
TVP_FERROR tvpAudMicrophoneCtrl (Tvp_En_Dis enable, 
                                 Tvp_En_Dis lsbFirst,
                                 Tvp_En_Dis only_16_ticks,
                                 Tvp_En_Dis leftIsLow,
                                 Tvp_En_Dis bclkFallEdge,
                                 unsigned char startOnCycle,
                                 TvpAudToneSampFreq sampFreq,
                                 unsigned char delay,
                                 unsigned char mixWeight);
TVP_FERROR tvpAudToneFrequency (TvpAudToneFreq toneFreq, TvpAudToneSampFreq sampFreq);
void tvpAudInfoGet (TvpAudInfo_s *info);
TVP_FERROR tvpAudEnableStatInt(TvpAudIntEvent *pRetStatus, TvpIntNum intNum, 
                               TvpAudIntEvent intConfig);
void tvpAudSampFrequencySet (TvpAudToneSampFreq sFreq);
TVP_FERROR tvpAudDualMonoEnable (TvpAudLeftRight channel);
TVP_FERROR tvpAudDualMonoDisable (void);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -