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

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.  *   sp_coef_cal.h
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Acoustic FIR coefficient calibration 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. #ifndef  _SP_COEF_CAL_H_
  66. #define  _SP_COEF_CAL_H_
  67. /*---------------------------------------------------------------------------*/
  68. #include "meta.h"
  69. #include "Audio_common.h"
  70. #include "sp_coef.h"
  71. #include "aftdll.h"
  72. #ifndef  _MAN_HANDLE_H_
  73. #include "man_handle.h"
  74. #endif
  75. #define  STATE_COEF_CAL_OK            0
  76. #define  STATE_COEF_CAL_FAIL          1
  77. #define  STATE_COEF_CAL_TIMEOUT       2
  78. #define  STATE_COEF_CAL_STOP          3
  79. #define  TRC_FREQ_POSITION            5
  80. #define  TOTAL_BOUND_FREQ_NUM         8
  81. #define  MAX_WEIGHT_LEN              78
  82. #define  TOTAL_SEL_FREQ_NUM          15
  83. #define  SCALING_FACTOR_POSITION     17
  84. #define  BUFFER_SIZE               4096
  85. #define  FIR_COEFF_SCALE          32767.0
  86. #define  MAX_FIR_RESPONSE_LEN      4096
  87. typedef struct
  88. {
  89.    unsigned int num;
  90.    double  Hz[TOTAL_TRC_FREQ_NUM+2];
  91.    double  Mag[TOTAL_TRC_FREQ_NUM+2];
  92.    double  MagdB[TOTAL_TRC_FREQ_NUM+2];
  93. }sSpCoefCalParameters;
  94. typedef struct
  95. {
  96.     double  Hz[TOTAL_SEL_FREQ_NUM];
  97.     int  index[TOTAL_SEL_FREQ_NUM];
  98.     double  MagdB[TOTAL_SEL_FREQ_NUM];
  99. } sSelectedParameters;
  100. typedef struct
  101. {
  102.     double  Hz[TOTAL_TRC_FREQ_NUM+2];
  103.     double  Pyy[TOTAL_TRC_FREQ_NUM+2];
  104.     double  Pyf[TOTAL_TRC_FREQ_NUM+2];
  105.     int  num;
  106. } sModifiedParameters;
  107. typedef struct
  108. {
  109.     int   Anum;
  110.     int   Bnum;
  111.     int   Cnum;
  112.     int   num;
  113.     double  Hz[3];
  114.    // int  index[TOTAL_SEL_FREQ_NUM];
  115.     double  MagdB[3];
  116.     int Start_data_idx;
  117.     int End_data_idx;
  118.     int distance;  
  119. } sInterpolateParameters;
  120. typedef struct
  121. {
  122.    unsigned int taps;
  123.    double  FirCoef[SPEECH_FIR_45_TAPS_NUM];
  124. }sFirCoefParameters;
  125. typedef struct
  126. {
  127.    unsigned int dimension;
  128.    double  FirResp[MAX_FIR_RESPONSE_LEN];
  129. }sFirRespParameters;
  130. typedef struct
  131. {
  132.    unsigned int num;
  133.    double  weight[MAX_WEIGHT_LEN];
  134. }sWeightParameters;
  135. /*---------------------------------------------------------------------------*/
  136. class  CSPCOEFCAL
  137. {
  138. private:
  139.     int   ConfirmState;
  140.     CMETAHANDLE m_META_HANDLE_Obj;
  141. protected:
  142.    void  Confirm( int confirm_state );
  143. public:
  144.    short         SPID_COEF_CAL;
  145.    char        *CoefCalBuf;
  146.    int          CoefCalBufSize;
  147. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  148.   // Public member
  149.     CSPCOEFCAL( void );
  150.    ~CSPCOEFCAL( );
  151.     void  (*ConfirmCallback)( void );
  152.   // Public interface
  153.     void  REQ_Finish( void );
  154.     void  REQ_TimeOut( void );
  155.     void  REQ_Stop( void );
  156.     // file
  157.     bool  REQ_Read_TRC_File( char *filename, double* p_TrcScale, sSpCoefCalParameters *p_SpCoefCal );
  158.     bool  REQ_Read_FIR_File( char *filename, bool b_45TapSupport, sFirCoefParameters *p_FirCoef );
  159.     bool  REQ_Write_FIR_File( char *filename, sFirCoefParameters *p_FirCoef );
  160.     bool  CheckLicenseDat( void );
  161.     void  ReorderFirCoef(  sFirCoefParameters *p_FirCoef );
  162.     void  getSelHzIndex(int *p_TplHz, int *p_SelHz, int* p_SelHzIndex);
  163.     void  getSeldB( double *p_TpldB, double *p_SeldB, int* p_SelHzIndex);
  164.     bool  CheckEngineExist( void );
  165.     const char* Get_ErrorString(AFT_RESULT code);
  166.     AFT_RESULT  freqz( bool b_45TapSupport, sFirCoefParameters  *p_old_FIR, sSpCoefCalParameters  *p_ProcessSpCoef, double Fs, sSpCoefCalParameters *p_OldFirSpCoef);
  167.     void  freqz2out( sFirCoefParameters  *p_new_fir_coeff_F_normalized_fixed_point, double N, double freqz_N, double Fs, sFirRespParameters *p_FirResp_freqz_H, sFirRespParameters *p_FirResp_freqz_F );
  168.     AFT_RESULT  firls( int wanted_ord, sSpCoefCalParameters  *p_ProcessOddSpCoef, sSpCoefCalParameters *p_NewFirOddSpCoef, double Fs, sFirCoefParameters *p_NewFirCoeffF1);
  169.     void  firls4input( int wanted_ord, sSpCoefCalParameters  *p_ProcessOddSpCoef, sSpCoefCalParameters *p_NewFirOddSpCoef, sWeightParameters *p_Weight, double Fs, sFirCoefParameters *p_NewFirCoeffF1);
  170.     // file format transform
  171.     bool AcquaFile_To_UplFile(char *i_filename, bool b_Rx, bool b_LinearFormat, char *o_filename);
  172.     bool MicrotronixFile_To_UplFile(char *i_filename, bool b_Rx, bool b_LinearFormat, char *o_filename);
  173.     bool UpvFile_To_UplFile(char *i_filename, char *o_filename);
  174.     bool VitaFile_To_UplFile(char *i_filename, bool b_Rx, bool b_LinearFormat, char *o_filename);
  175.     // Global information
  176.     int  Get_ConfirmState(void);
  177. };
  178. /*---------------------------------------------------------------------------*/
  179. #endif