aec_nm.h
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:6k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  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) 2005
  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.  * Filename:
  38.  * ---------
  39.  *   AEC.h
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Acoustic Echo Cancellation (AEC) calibration in normal mode header
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  *
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64.  ****************************************************************************/
  65. //---------------------------------------------------------------------------
  66. #ifndef _AEC_NM_H_
  67. #define _AEC_NM_H_
  68. #ifndef _AEC_COMMON_H_
  69. #include "aec_common.h"
  70. #endif
  71. #ifndef META_DLL_H
  72. #include "meta.h"
  73. #endif
  74. #ifndef  _METAAPP_COMMON_H_
  75. #include "metaapp_common.h"
  76. #endif
  77. #ifndef  _SP_COEF_H_
  78. #include "sp_coef.h"
  79. #endif
  80. #ifndef _VOLUME_SETTING_H_
  81. #include "volume_setting.h"
  82. #endif
  83. #ifndef  _MAN_HANDLE_H_
  84. #include "man_handle.h"
  85. #endif
  86. //---------------------------------------------------------------------------
  87. typedef struct
  88. {
  89.     E_AEC_TYPE_T e_aec_type;
  90.     E_AUDIO_FIR_VER_T e_audio_param_type;
  91.     S_AEC_NM_INI_T s_ini;
  92.     bool b_fir_runtime_support;
  93.     bool b_cust_vol_runtime_support;
  94.     bool b_drc_support;
  95.     bool b_debug;
  96.     bool b_cust_vol_16;
  97.     TNotifyEvent ne_onTermSuccess;
  98.     TNotifyEvent ne_onTermByUser;
  99.     E_AEC_RESULT_T e_result;
  100.     AnsiString as_audcoeff_default_h;
  101.     AnsiString as_volume_gain_file;
  102. }S_AEC_NM_T;
  103. //---------------------------------------------------------------------------
  104. class CAECNM : public TThread
  105. {
  106. private:
  107.     // common
  108.     CMETAHANDLE m_META_HANDLE_Obj;
  109.     E_METAAPP_RESULT_T m_eConfirmState;
  110.     HANDLE m_hEvent;
  111.     S_AEC_NM_T* m_psAEC;
  112.    // E_AEC_RESULT_T m_sAECRsult;
  113.     //E_AEC_STEP m_eStep;
  114.     //calresult m_sResultFir;
  115.     //speresult m_sResultSEFir;
  116.    // bool m_bDRCSupport;
  117.    // bool m_bAecNMSupport;
  118.     // FIR
  119.     CSPCOEF m_cSP_COEF_Obj;
  120.     S_FIR_COEFF_T m_sFirCoeff;
  121.     char* m_cpBuf;
  122.    // S_AEC_FIR m_sAECFir;
  123.     S_AEC_SE_FIR_T m_sAecNmFir;
  124.     // volume setting
  125.     CVOLSET m_cVOL_SET_Obj;
  126.     CustAcousticVol_T m_sCustVol;
  127.     CustAcousticVol16lvl_T m_sCustVolEx;
  128.     //int m_iMicGain;
  129.     //int m_iSpkGain;
  130.     //unsigned short m_usUpDigiGain;
  131.     //unsigned short m_usDnDigiGain;
  132.     //unsigned short m_usKTGain[3];
  133.     //spkgain m_sSpkGain;
  134.     //micgain m_sMicGain;
  135.     // INI
  136.     S_AEC_NM_INI_T m_sAecNmIni;
  137. protected:
  138.     void __fastcall Execute(void);
  139. public:
  140.     void (*ConfirmCallback)(void);
  141.     __fastcall CAECNM(bool CreateSuspended, S_AEC_NM_T *p_s_aec_nm);
  142.     
  143.     E_METAAPP_RESULT_T REQ_Audio_Tone_Loop_Back_Rec(Audio_Tone_LoopBackRec_Req req);
  144.     // NVRAM
  145.     E_METAAPP_RESULT_T REQ_Read_FIR_From_NVRAM(void);
  146.     void CNF_ReadFirFromNVRAM(void);
  147.     E_METAAPP_RESULT_T REQ_Write_FIR_To_NVRAM(void);
  148.     void CNF_WriteFirToNVRAM(void);
  149.     E_METAAPP_RESULT_T REQ_Read_Volume_Setting_From_NVRAM(void);
  150.     void CNF_ReadVolSettingFromNVRAM(void);
  151.     E_METAAPP_RESULT_T REQ_Write_Volume_Setting_To_NVRAM(void);
  152.     void CNF_WriteVolSettingToNVRAM(void);
  153.     // memory
  154.     void AllocateDynMemory(void);
  155.     void ReleaseDynMemory(void);
  156.     // file
  157.     bool REQ_Read_From_File(char *filename);
  158.     bool REQ_Write_To_Audcoeff_Default(char *filename, E_AUDIO_FIR_VER_T audio_param_type);
  159.     bool REQ_Write_Record_To_File(char *filename);
  160.     
  161.    // global information
  162.     //E_METAAPP_RESULT_T Get_ConfirmState(void);
  163.     //int Get_MicGain(void);
  164.     //int Get_SpkGain(void);
  165.     //E_AEC_RESULT_T Get_Result(void);
  166.     //bool Get_AecNMSupport(void);
  167. };
  168. /*---------------------------------------------------------------------------*/
  169. #endif