PcmSink.h
6.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2010
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* pcmsink.h
*
* Project:
* --------
* Maui_sw
*
* Description:
* ------------
* The header file of DAF codec.
*
* Author:
* -------
* -------
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#ifndef PCM_SINK_DOT_H
#define PCM_SINK_DOT_H
#include "AudCom.h"
#include "SST_sla.h"
typedef enum {
PCMSINK_STATE_IDLE = 0,
PCMSINK_STATE_INIT,
PCMSINK_STATE_RUNNING,
PCMSINK_STATE_ENDING,
PCMSINK_STATE_FLUSHED,
} PCMSINK_STATE;
typedef enum {
SOUND_IDLE = 0,
SOUND_INIT,
SOUND_RUNING,
} SOUND_STATE;
#define PCM_SOUND_INTERRUPT_PERIOD (20) //ms
#define PCM_SOUND_DELAY_OFF_MS (3000) //ms
#define PCM_FUNC_AUDIO (1<<0)
#define PCM_FUNC_MIXER (1<<1)
#define PCM_FUNC_TONE (1<<2)
#define PCM_FUNC_KEYTONE (1<<3)
#define PCM_FUNC_VIB (1<<4)
#define PCMSINK_BT_SCO (1<<0)
#define PCMSINK_BT_SBC (1<<1)
#define PCM_SOUND_FUNCTIONS (PCM_FUNC_MIXER | PCM_FUNC_TONE | PCM_FUNC_KEYTONE | PCM_FUNC_VIB)
#define PCM_DTMF_FUNCTIONS (PCM_FUNC_TONE | PCM_FUNC_KEYTONE)
#define PCMSINK_DEFAULT_GAIN_STEP 200
#define PCM_SOUND_BUFFER_PERIOD 20 //msec
#define PCM_SOUND_FILLDATA_THRESHOLD 40 //msec
#define PCMSINK_MIN_HISR_SAMPLES 50 //sample
#define WAV_DSP_STATE_IDLE 0x0
#define WAV_DSP_STATE_INIT 0x1
#define WAV_DSP_STATE_READY 0x2
#define WAV_DSP_STATE_START 0x4
#define WAV_DSP_STATE_RUNING 0x8
#define WAV_DSP_STATE_STOP 0x10
#define WAV_DSP_STATE_ABORT 0x40
#define WAV_DSP_AUDIO_STATE_IDLE 0x0
#define WAV_DSP_AUDIO_STATE_RUNNING 0x2
#define PCMSINK_MUTE_MEDIA (1<<0)
#define PCMSINK_MUTE_PCMSINK (1<<1)
#define PCMSINK_MUTE_PCMRUT (1<<2)
#define PCMSINK_MUTE_I2S (1<<3)
#define PCMSINK_MUTE_DEPOP (1<<4)
#define PCMSINK_MUTE_TONE (1<<5)
#if defined(MT6256) || defined(MT6255) || defined(MT6250) || defined(MT6260) || defined(MT6261) || defined(MT2501) || defined(MT2502)
#define PCM_PLAYBACK_DSP_PAGE_NUM 5
#else
#error The new chip should define DM page number
#endif
extern kal_bool Is_PutPcmrutOn(void);
extern const kal_uint8 SampleRateTable[];
extern void mhdlCallbackTask( void *data );
typedef struct {
kal_uint16 uSampleRate;
kal_uint8 uChannelNumber;
kal_bool fIsVoicePath;
} PCM_SinkData;
extern kal_bool AFE_IsSpeakerMuted( kal_uint8 aud_func);
extern kal_uint8 AFE_GetOutputDevice( kal_uint8 aud_func );
extern void DTMF_MCU_GetReadBuffer(kal_int16 **pBuf_16b, kal_uint32 *uDataWord);
extern void DTMF_MCU_ReadDataDone(kal_uint32 uDataWord);
extern kal_uint32 DTMF_MCU_GetDataCount(void);
extern void DTMF_MCU_DataRequestCallback(void);
extern void DTMF_MCU_StopAndWait(void);
extern void PcmMixer_MixSample(kal_int32 *pMixBuffer, const kal_uint32 uSampleCount);
extern kal_uint32 PcmMixer_GetDataCount(void);
extern void PcmMixer_DataRequestCallback(void);
extern kal_uint32 PcmRut_DspGetFreeSpace(void);
extern kal_bool PcmRut_IsStereo2Mono(void);
extern void PcmRut_GetPcmFromDSP(kal_uint32 *pDst32, kal_uint32 uSpace);
extern void PcmRut_PutPcmToDSP(kal_int32 *pSrc32, kal_int16 *pSrc16, kal_uint32 uLength, const kal_bool fWriteZeroToDsp);
extern void PcmRut_TurnOnPcmRouteInterrupt(void);
extern void PcmRut_TurnOffPcmRouteInterrupt(void);
extern kal_uint32 AVB_WriteData(kal_uint16 *pSrc16, kal_uint32 uSrcWord, kal_bool fMono2Stereo);
extern kal_uint32 SBC_WriteData(kal_uint16 *pSrc16, kal_uint32 uSrcWord, kal_bool fMono2Stereo);
extern kal_bool SBC_IsOn(void);
#if defined(__AUDIO_DSP_LOWPOWER_V2__)
extern kal_bool AUDLP_Check_LowPower_Status(void);
#endif
#endif