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

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.  *   misc_audio.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Audio Misc. function source
  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. #include <vcl.h>
  66. #pragma hdrstop
  67. #include "man_error.h"
  68. #ifndef  _FT_UTILS_H_
  69. #include "ft_utils.h"
  70. #endif
  71. #ifndef  _META_UTILS_H_
  72. #include "meta_utils.h"
  73. #endif
  74. //---------------------------------------------------------------------------
  75. bool IsValidFirTaps(AnsiString ansi_str, short &taps)
  76. {
  77.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, taps, 1, 44) , RANGE_ERR_FIR_TAPS);
  78.     return true;
  79. }
  80. //---------------------------------------------------------------------------
  81. bool IsValidFirCoef(AnsiString ansi_str, short &coef)
  82. {
  83.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, coef, -32768, 32767), RANGE_ERR_FIR_COEF);
  84.     return true;
  85. }
  86. //---------------------------------------------------------------------------
  87. bool IsValidTimeConst(AnsiString ansi_str, unsigned short &time_const)
  88. {
  89.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedShort(ansi_str, time_const, 0, 65535), RANGE_ERR_TIME_CONST);
  90.     return true;
  91. }
  92. //---------------------------------------------------------------------------
  93. bool IsValidVolumeConst(AnsiString ansi_str, unsigned short &volume_const)
  94. {
  95.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedShort(ansi_str, volume_const, 0, 65535) , RANGE_ERR_VOLUME_CONST);
  96.     return true;
  97. }
  98. //---------------------------------------------------------------------------
  99. bool IsValidMediaPlaybackMaximumSwing(AnsiString ansi_str, unsigned short &media_playback_max_swing)
  100. {
  101.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedShort(ansi_str, media_playback_max_swing, 0, 65535), RANGE_ERR_MEDIA_PLAYBACK_MAXIMUM_SWING);
  102.     return true;
  103. }
  104. //---------------------------------------------------------------------------
  105. bool IsValidSpeechCommonParameter(AnsiString ansi_str, unsigned short &sc)
  106. {
  107.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedShort(ansi_str, sc, 0, 65535), RANGE_ERR_SPEECH_COMMON_PARAMETER);
  108.     return true;
  109. }
  110. //---------------------------------------------------------------------------
  111. bool IsValidSpeechModeDependentParameter(AnsiString ansi_str, unsigned short &smdp)
  112. {
  113.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedShort(ansi_str, smdp, 0, 65535), RANGE_ERR_SPEECH_MODE_DEPENDENT_PARAMETER);
  114.     return true;
  115. }
  116. //---------------------------------------------------------------------------
  117. bool IsValidAudioCompensation(AnsiString ansi_str, short &ac)
  118. {
  119.     RANGE_CHECK_ERROR(!AnsiString_To_Short(ansi_str, ac, -32768, 32767), RANGE_ERR_FIR_COEF);
  120.     return true;
  121. }
  122. //------------------------------------------------------------------------------
  123. bool IsValidFirScale(AnsiString ansi_str, float &FirScale)
  124. {
  125.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, FirScale, 0.5, 1.0), RANGE_ERR_FIR_SCALE);
  126.     return true;
  127. }
  128. //------------------------------------------------------------------------------
  129. bool IsValidDigitalScale(AnsiString ansi_str, float &DigitalScale)
  130. {
  131.     RANGE_CHECK_ERROR(!AnsiString_To_Float(ansi_str, DigitalScale, 0, 1.0), RANGE_ERR_DIGITAL_SCALE);
  132.     return true;
  133. }
  134. //==============================================================================
  135. bool IsValidRepeats(AnsiString ansi_str, int &repeats)
  136. {
  137.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, repeats, 0, 255), RANGE_ERR_REPEATS);
  138.     return true;
  139. }
  140. //==============================================================================
  141. bool IsValidSpeakerVolume(AnsiString ansi_str, int &SpeakerVolume)
  142. {
  143.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, SpeakerVolume, 0, 6), RANGE_ERR_SPEAKERVOLUME);
  144.     return true;
  145. }
  146. //==============================================================================
  147. bool IsValidBuzzerVolume(AnsiString ansi_str, int &BuzzerVolume)
  148. {
  149.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, BuzzerVolume, 0, 7), RANGE_ERR_BUZZERVOLUME);
  150.     return true;
  151. }
  152. //==============================================================================
  153. bool IsValidVolume(AnsiString ansi_str, int &Volume)
  154. {
  155.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, Volume, 0, 6), RANGE_ERR_VOLUME);
  156.     return true;
  157. }
  158. //==============================================================================
  159. bool IsValidInstrument(AnsiString ansi_str, int &Instrument)
  160. {
  161.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, Instrument, 1, 128), RANGE_ERR_INSTRUMENT);
  162.     return true;
  163. }
  164. //==============================================================================
  165. bool getYfromStr( AnsiString asStr, double* p_Y )
  166. {
  167.     AnsiString asY;
  168.     int iLD = asStr.LastDelimiter(" ");
  169.     if (iLD <= 0)
  170.       return false;
  171.     asY = asStr.SubString( iLD+1, asStr.Length() );
  172.     return true;
  173. }
  174. //==============================================================================
  175. int getMaxYBound( int max_y, int scale)
  176. {
  177.     int distance, min_distance = 100000, max_y_bound;
  178.     for(int i=-100; i<100; i++)
  179.     {
  180.         distance = abs(i*scale - max_y);
  181.         if(i*scale > max_y && distance < min_distance)
  182.         {
  183.             min_distance = distance;
  184.             max_y_bound = i*scale;
  185.         }
  186.     }
  187.     return  max_y_bound;
  188. }
  189. //------------------------------------------------------------------------------
  190. int  getMinYBound( int min_y, int scale)
  191. {
  192.     int distance, min_distance = 100000, min_y_bound;
  193.     for(int i=-100; i<100; i++)
  194.     {
  195.         distance = abs(i*scale - min_y);
  196.         if(i*scale < min_y && distance < min_distance)
  197.         {
  198.             min_distance = distance;
  199.             min_y_bound = i*scale;
  200.         }
  201.     }
  202.     return  min_y_bound;
  203. }
  204. //------------------------------------------------------------------------------
  205. AnsiString getFullPathFileName( AnsiString as_filename )
  206. {
  207.     AnsiString as_path, as_full_filename;
  208.     getPathFromStr( Application->ExeName, as_path);
  209.     as_full_filename = as_path + as_filename;
  210.     return  as_full_filename;
  211. }
  212. //---------------------------------------------------------------------------
  213. bool getHzFromStr( AnsiString as_str, double &Hz)
  214. {
  215.     AnsiString as_Hz;
  216.     int iLD = as_str.LastDelimiter(" ");
  217.     if (iLD <= 0)
  218.       return false;
  219.     as_Hz = as_str.SubString( 1, iLD-1 );
  220.     Hz = atof(as_Hz.c_str());
  221.     return true;
  222. }
  223. //==============================================================================
  224. // Audio
  225. //==============================================================================
  226. // customer volume setting
  227. bool IsValidVolumeGain(AnsiString ansi_str, unsigned char &coef)
  228. {
  229.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, coef, 0, 255 ), RANGE_ERR_VOLUME_GAIN);
  230.     return true;
  231. }
  232. // FIR tunning
  233. //---------------------------------------------------------------------------
  234. bool IsValidMagdB(AnsiString ansi_str, double &d_mag_db)
  235. {
  236.     RANGE_CHECK_ERROR(!AnsiString_To_Double(ansi_str, d_mag_db), RANGE_ERR_MAG_DB);
  237.     return true ;
  238. }
  239. // tone
  240. //----------------------------------------------------------------------------
  241. bool IsValidToneFreq(AnsiString ansi_str, unsigned short &freq)
  242. {
  243.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedShort(ansi_str, freq, 0, 65535), RANGE_ERR_TONE_FREQ);
  244.     return true;
  245. }
  246. //----------------------------------------------------------------------------
  247. bool IsValidLoudSpeakerVolume(AnsiString ansi_str, unsigned char &volume)
  248. {
  249.     RANGE_CHECK_ERROR(!AnsiString_To_UnsignedChar(ansi_str, volume, 0, 255), RANGE_ERR_LOUD_SPEAKER_VOLUME);
  250.     return true;
  251. }
  252. //============================================================================
  253. /////////////////////////////////  AEC   /////////////////////////////////////
  254. //============================================================================
  255. bool IsValidSpeakerGain(AnsiString ansi_str, int &gain)
  256. {
  257.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, gain, -128, 127), RANGE_ERR_SPEAKER_GAIN);
  258.     return true;
  259. }
  260. //----------------------------------------------------------------------------
  261. bool IsValidMicGain(AnsiString ansi_str, int &gain)
  262. {
  263.     RANGE_CHECK_ERROR(!AnsiString_To_Integer(ansi_str, gain, -128, 127), RANGE_ERR_MIC_GAIN);
  264.     return true;
  265. }