blob: beac009157656c9400d4f939a5357d202e1c595d [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2012
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 *
38 * Filename:
39 * ---------
40 * media.h
41 *
42 * Project:
43 * --------
44 * MAUI
45 *
46 * Description:
47 * ------------
48 * Media file recording/playback
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *==============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *------------------------------------------------------------------------------
58 * removed!
59 * removed!
60 * removed!
61 *
62 * removed!
63 * removed!
64 * removed!
65 * removed!
66 *
67 * removed!
68 * removed!
69 * removed!
70 *
71 * removed!
72 * removed!
73 * removed!
74 *
75 * removed!
76 * removed!
77 * removed!
78 *
79 * removed!
80 * removed!
81 * removed!
82 *
83 * removed!
84 * removed!
85 * removed!
86 *
87 * removed!
88 * removed!
89 * removed!
90 *
91 * removed!
92 * removed!
93 * removed!
94 *
95 * removed!
96 * removed!
97 * removed!
98 *
99 * removed!
100 * removed!
101 * removed!
102 *
103 * removed!
104 * removed!
105 * removed!
106 * removed!
107 *
108 * removed!
109 * removed!
110 * removed!
111 *
112 * removed!
113 * removed!
114 * removed!
115 *
116 * removed!
117 * removed!
118 * removed!
119 * removed!
120 *
121 * removed!
122 * removed!
123 * removed!
124 *
125 *------------------------------------------------------------------------------
126 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
127 *==============================================================================
128 *******************************************************************************/
129
130#ifndef __MEDIA_H
131#define __MEDIA_H
132
133#include "fs_type.h"
134#include "fsal.h"
135
136#include "l1audio.h"
137#include "l1aud_common_def.h"
138
139
140/*****************************************************************************
141* Function Declaration
142*****************************************************************************/
143// void mediaHisr( uint16 flag );
144
145
146/* L1Audio_IDMA*/
147//void IDMA_WriteToDSP(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
148//void IDMA_FillToDSP(volatile kal_uint16 *dst, kal_uint16 value, kal_uint32 length);
149//void IDMA_ReadFromDSP(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
150//void IDMA_ReadFromDSP_Skip_1(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
151//void IDMA_WriteToDSP_Duplicate(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
152void EMI_ReadFromDSP(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
153void EMI_WriteToDSP(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
154
155/* For Ring Buffer Access */
156// void rb_ClearRB( void );
157// int32 rb_GetByteCount( void );
158// int32 rb_GetFreeSpace( void );
159// bool rb_GetByte( uint8* data_8 );
160// bool rb_GetWord( uint16* data_16 );
161// bool rb_GetDWord( uint32* data_32 );
162// bool rb_PeekByte( uint8* data_8 );
163// bool rb_PeekWord( uint16* data_16 );
164// bool rb_PeekDWord( uint32* data_32 );
165// bool rb_PutByte( uint8 data_8 );
166// bool rb_PutWord( uint16 data_16 );
167// bool rb_PutDWord( uint32 data_32 );
168// uint32 rb_SkipNByte( uint32 skip_count );
169// uint32 rb_SkipNWord( uint32 skip_count );
170// uint32 rb_GetWriteIndex( void );
171// uint32 rb_GetReadIndex( void );
172// uint32 rb_GetSize( void );
173// uint16 rb_GetOBFlag( void );
174// uint16 rb_GetOddByte( void );
175//int rb_PutNByte( const uint8 *buffer, int len );
176// nint rb_GetNByte( uint8 *buffer, int len );
177/* For Ring Buffer Access */
178
179
180void ktInit( uint16 aud_id, uint16 id_num );
181void ktLock( void );
182void ktUnlock( void );
183void toneInit( uint16 aud_id, uint16 id_num );
184
185#define VERIFY_DATA_TO_DSP 0
186
187/* L1CTM interface */
188void l1ctm_init( void );
189
190int32 rbGetDataCount( AUD_RB_INFO *rb );
191//kal_uint8 rbGetByte(AUD_RB_INFO *srcRB);
192void rbGetWriteBuffer( AUD_RB_INFO *rb, kal_uint8 **buffer, kal_uint32 *buf_len );// in bytes
193void rbGetReadBuffer( AUD_RB_INFO *rb, kal_uint8 **buffer, kal_uint32 *buf_len );// in bytes
194void rbWriteDataDone( AUD_RB_INFO *rb, kal_uint32 len ); // in bytes
195void rbReadDataDone( AUD_RB_INFO *rb, kal_uint32 len ); // in bytes
196int32 rbGetFreeSpace( AUD_RB_INFO *rb );
197
198
199// speech enhancement control functions
200// #define SPE_ES_FLAG (1 << 0)
201//#define SPE_AEC_FLAG (1 << 1)
202// #define SPE_EES_FLAG (1 << 2)
203//#define SPE_UL_NR_FLAG (1 << 3)
204//#define SPE_DL_NR_FLAG (1 << 4)
205//#define SPE_TDDNC_FLAG (1 << 5)
206//#define SPE_DMNR_FLAG (1 << 6)
207//#define SPE_AGC_FLAG (1 << 7)
208#define NUM_OF_SPH_FLAG 8 // if you add new SPE, please remind to revind the table define from uint8 to uint 16
209
210//speech enhancement mask for l1sp.spe_mask usage
211// #define SPH_ENH_MASK_ES SPE_ES_FLAG
212//#define SPH_ENH_MASK_AEC SPE_AEC_FLAG
213// #define SPH_ENH_MASK_EES SPE_EES_FLAG
214//#define SPH_ENH_MASK_ULNR SPE_UL_NR_FLAG
215//#define SPH_ENH_MASK_DLNR SPE_DL_NR_FLAG
216//#define SPH_ENH_MASK_TDDNC SPE_TDDNC_FLAG
217//#define SPH_ENH_MASK_DMNR SPE_DMNR_FLAG
218//#define SPH_ENH_MASK_AGC SPE_AGC_FLAG
219// #define SPH_ENH_MASK_SIDETONE (1 << NUM_OF_SPH_FLAG) removed
220//#define SPH_ENH_MASK_NOTCH_FILTER (1 << (NUM_OF_SPH_FLAG+1))
221//#define SPH_ENH_MASK_ECHO_REF (1 << (NUM_OF_SPH_FLAG+2))
222
223#define SPE_DMNR_SUPPORT (1 << 0)
224#define SPE_TDNC_SUPPORT (1 << 1)
225#define SPE_MAGI_CON_SUPPORT (2 << 1)
226
227
228
229void SPE_Init( void );
230void SPE_ENHCtrlSwitch(uint16 state);
231
232
233void SPE_Clear_DLL_Entry();
234//void SPE_SetULNR( bool ec );
235void SPE_LoadLimiterPara(uint16 para);
236#if defined(_SPE_ENH_MD_PARSE_)
237void SPE_LoadDmnrCoeffs(kal_int16 dmnr_para[NUM_DMNR_PARAM]);
238void SPE_LoadWbDmnrCoeffs(kal_int16 wb_dmnr_para[NUM_WB_DMNR_PARAM]);
239void SPE_LoadDmnrLspCoeffs(kal_int16 dmnr_para[NUM_DMNR_PARAM]);
240void SPE_LoadWbDmnrLspCoeffs(kal_int16 wb_dmnr_para[NUM_WB_DMNR_PARAM]);
241void SPE_LoadSWbLspDmnrCoeffs(kal_int16 swb_dmnr_para[NUM_SWB_DMNR_PARAM]);
242void SPE_LoadSWbDmnrCoeffs(kal_int16 swb_dmnr_para[NUM_SWB_DMNR_PARAM]);
243#endif
244
245
246
247/* L1SP interface */
248void L1SP_Init( void );
249void SPE_Enable_DLL_Entry(void);
250bool isSPEEnable(void);
251
252#if defined(_SPE_ENH_MD_PARSE_)
253void SetDynamicParToDSP(uint32 IDnumber);
254void L1SP_LoadSpeechPara( void );
255void Set2GDynPar(void);
256void Set3GDynPar(void);
257void Set4GDynPar(void);
258void SetC2KDynPar(void) ;
259void SPE_SetDynamicStatemachine(void);
260#else // for 95,97
261void SPE_SetDynamicStatemachine(kal_uint32 Offset, kal_uint32 Len);
262#endif
263
264
265
266
267void L1SP_SetState(kal_uint8 state);
268kal_uint8 L1SP_GetState( void );
269void L1SP_Set_isStandByMode(bool RAB_status);
270bool L1SP_Get_isStandByMode( void );
271void L1SP_Reload_SPE_Para( void );
272void L1SP_Register_Pcm4WayService(void (*onHandler)(void *), void (*offHandler)(void *));
273void L1SP_UnRegister_Pcm4Way_Service( void );
274bool L1SP_isC2KSO_Connected();
275
276kal_bool L1SP_TCH_State( void );
277
278enum{ // RIMIND: please keep following same as em_speech_info_SpeechNetworkType in audio_enum.h
279 L1SP_STATE_IDLE = 0,
280 L1SP_STATE_2G_SPEECH_ON,
281 L1SP_STATE_3G_SPEECH_ON,
282 L1SP_STATE_3G324M_SPEECH_ON,
283 L1SP_STATE_3G_SPEECH_CLOSING,
284 L1SP_STATE_4G_SPEECH_ON,
285 L1SP_STATE_4G_SPEECH_CLOSING,
286 L1SP_STATE_C2K_SPEECH_ON,
287 L1SP_STATE_C2K_SPEECH_CLOSING,
288 //L1SP_STATE_3G_SPEECH_CLOSED
289};
290
291void sp3g_speech_init( uint8 RAT_Mode );
292void sp3g_speech_close( bool IsInterRAT );
293void sp3g_init( void );//boot up init
294kal_bool SP3G_Rab_State( void );
295kal_uint32 SP3G_Rab_Id( void );
296void SP3G_Reset( void );
297void SP3G_SetRxTypeToNoData( void );
298kal_bool SP3G_IsDTXOn( void );
299void SP3G_GetSyncDelayRW( kal_uint16 *u16DelayR, kal_uint16 *u16DelayW, kal_uint16 *u16DelayM, kal_uint32 *u32CurTime64us);
300void SP3G_UpdateL1AInFo_P( kal_uint8 bitmap, kal_uint8 value );
301kal_uint32 SP3G_GetCodecMode(void);
302
303void sp4g_speech_init( uint8 RAT_Mode );
304void sp4g_speech_close( void );
305void sp4g_init( void );//boot up init
306kal_bool SP4G_Rab_State( void );
307kal_uint32 SP4G_Rab_Id( void );
308void SP4G_Reset( void );
309void SP4G_SetRxTypeToNoData( void );
310kal_bool SP4G_IsDTXOn( void );
311void SP4G_GetSyncDelayRW( kal_uint16 *u16DelayR, kal_uint16 *u16DelayW, kal_uint16 *u16DelayM, kal_uint32 *u32CurTime64us);
312
313void SPC2K_GetSyncDelayRW( uint16 *u2DelR, uint16 *u2DelW, uint16 *u2DelM);
314void SPC2K_ConSSO_Done( void );
315void SPC2K_DisconSSO_Done( void );
316
317void L1SP_C2K_Est(int codec);
318void L1SP_C2K_DeEst( void );
319void L1SP_C2K_IntraRAT(int codec);
320
321void L1SP_SetOpenDSPFlag(kal_uint8 flag);
322kal_uint8 L1SP_GetOpenDSPFlag(void);
323
324kal_uint32 L1Audio_GetEventGroup( void );
325void L1Audio_ExeEventHandler( kal_uint32 event );
326void L1Audio_ActivateHisrHandler(kal_uint16 magic_no, void *userData);
327
328
329// For In Process Call
330void L1Audio_InProcCall(in_proc_call_type func, kal_uint32 func_arg1, void* func_arg2);
331void L1Audio_InProcCall2(in_proc_call_type func, kal_uint32 func_arg1, void* func_arg2);
332
333
334
335// uint32 PCM2Way_GetBandInfo(void);
336
337// Speech related
338void SP_Strm_Init(void);
339
340#endif /* __MEDIA_H */
341
342