Nav_Amplifier.c
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:8k
源码类别:

DVD

开发平台:

Others

  1. /****************************************************************************************
  2.  *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
  3.  *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
  4.  *
  5.  *  File: $Workfile: Nav_Amplifier.c $             
  6.  *
  7.  * Description: 
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 5 $
  14.  * Last Modified by $Author: Kennyz $ at $Modtime: 03-06-24 18:04 $ 
  15.  ****************************************************************************************/
  16. #include "Config.h" // Global Configuration - do not remove!
  17. #ifdef _DEBUG
  18. #define IFTRACE if (gTraceNavigator) 
  19. #include "DebugDbgMain.h"
  20. #endif
  21. #include "IncludeSysDefs.h"
  22. #include "Includemath-macro.h"
  23. #include "Kernelker_api.h"
  24. #include "KernelEventDef.h"
  25. #include "PlaycoreCoremaincoregdef.h"
  26. #include "PlaycoreNav_amplifierNav_Amplifier.h"
  27. #include "PlaycoreTimingTiming.h"
  28. #ifdef DIGITAL_AMPLIFIER_ENABLE
  29. UINT8 HeadphoneActiveTime = 0;
  30. ////////////////////////////////////////////////////////////////////////////////////////////////
  31. // Constants
  32. ////////////////////////////////////////////////////////////////////////////////////////////////
  33. // Macros
  34. ////////////////////////////////////////////////////////////////////////////////////////////////
  35. // Globals
  36. /////////////////////////////////////////////////////////////////////////////////////////////////
  37. // Private Services
  38. /////////////////////////////////////////////////////////////////////////////////////////////////
  39. static void Constructor();
  40. static void Destructor();
  41. static void OnStatusReport();
  42. void OnVolumeSet(void* Param);
  43. void OnLimiterRateSet(void* Param);
  44. void OnLimiterThresholdSet(void* Param);
  45. /////////////////////////////////////////////////////////////////////////////////////////////////
  46. // Public Services
  47. /////////////////////////////////////////////////////////////////////////////////////////////////
  48. /////////////////////////////////////////////////////////////////////////////////////////////////
  49. // int Amplifier_Navigator(HDLR_OP Op, EVENT Event, void *Param) -
  50. // The main router for Receiver-Navigation Events.
  51. //
  52. // Input:
  53. // Op - The type of operation being invoked
  54. // Event - The event to route
  55. // Param - An optional Parameter for the event being routed
  56. //
  57. // Output:
  58. // Zero if the routing is successful.
  59. int Amplifier_Navigator(HDLR_OP Op, EVENT Event, void *Param)
  60. {
  61. switch (Op) 
  62. {
  63. case HDLR_ENTER: Constructor();
  64. break;
  65. case HDLR_EXIT: Destructor();
  66. break;
  67. case HDLR_EVENT:
  68. switch (Event) 
  69. {
  70.   case IE_CORE_AMPLIFIER_BASE_SCALE:
  71. base_set((UINT8)Param);
  72. break;
  73. case IE_CORE_AMPLIFIER_BASE_TONE:
  74. basetone_set((UINT8)Param);
  75. break;
  76. case IE_CORE_AMPLIFIER_TREBLE_TONE:
  77. trebletone_set((UINT8)Param);
  78. break;
  79.   case IE_CORE_AMPLIFIER_ADJACENT_CHANNEL_MIX:
  80. adjacent_channel_mix((BOOL)Param);
  81. break;
  82. case IE_CORE_AMPLIFIER_EQUALIZATION:
  83. equalization_set((UINT8)Param);
  84. break;
  85. case IE_CORE_AMPLIFIER_VOLUME:
  86. OnVolumeSet(Param);
  87. break;
  88.   case IE_CORE_AMPLIFIER_DYNAMICS_MODE:
  89. dynamics_mode((UINT8)Param);
  90. break;
  91. case IE_CORE_AMPLIFIER_LIMITER_RATE:
  92. OnLimiterRateSet(Param);
  93. break;
  94. case IE_CORE_AMPLIFIER_THRESHOLD:
  95. OnLimiterThresholdSet(Param);
  96. break;
  97. case IE_CORE_TICK_200:
  98. OnTick();
  99. break;
  100.                 case IE_CORE_AMPLIFIER_TRICK_CONTROL:
  101.     register_control(Param);
  102.                                 break; 
  103. case EVENT_CLASS_CORE:
  104. #ifdef _DEBUG
  105. OnStatusReport();
  106. #endif //_DEBUG
  107. break;
  108. default:
  109. dbg_printf(("Amp_Nav: Unexpected Event %xn",Event & 0xFF));
  110. break;
  111. }
  112. break;
  113. default:
  114. dbg_printf((" Amp_Nav: Unknown Operation requested %dn", Op));
  115. break;
  116. }
  117. return 0;
  118. }
  119. /////////////////////////////////////////////////////////////////////////////////////////////////
  120. // Private Services
  121. /////////////////////////////////////////////////////////////////////////////////////////////////
  122. /////////////////////////////////////////////////////////////////////////////////////////////////
  123. // void Constructor() -
  124. // A Constructor for a Receiver-Navigator instance.
  125. //
  126. // Input:
  127. // None
  128. //
  129. // Output:
  130. // None. The Navigator is constructed.
  131. //
  132. // Remarks:
  133. // This method constructs a new Receiver-Navigator, whose internal data and status
  134. // are kept in the Receiver_Nav structure passed to the method.
  135. static void Constructor()
  136. {
  137. dbg_printf(("Receiver Nav Constructor()n"));
  138. amplifier_init();
  139. #ifdef ENABLE_DAC_VOLUME_CONTROL
  140. AUDIODAC_VOL_CONTROL(gps->ChannelVolume[0]);
  141. #endif
  142. return;
  143. }
  144. /////////////////////////////////////////////////////////////////////////////////////////////////
  145. // void Destructor() -
  146. // A Destructor for a Receiver-Navigator instance.
  147. //
  148. // Input:
  149. // None.
  150. //
  151. // Output:
  152. // None. The Navigator's structures destroyed.
  153. //
  154. // Remarks:
  155. // This method destructs an existing instance of the Receiver-Navigator.
  156. static void Destructor()
  157. {
  158. dbg_printf(("Receiver_Destructor()n"));
  159. return;
  160. }
  161. /////////////////////////////////////////////////////////////////////////////////////////////////
  162. // Event Handlers
  163. /////////////////////////////////////////////////////////////////////////////////////////////////
  164. // void OnVolumeSet(void* Param) -
  165. // Handles an IE_CORE_AMPLIFIER_VOLUME Event.
  166. //
  167. // Input:
  168. // None
  169. //
  170. // Output:
  171. // None.
  172. //
  173. // Remarks:
  174. void OnVolumeSet(void* Param)
  175. {
  176. UINT16 channel, level;
  177. channel =((UINT32)Param &0xf000)>>12;
  178. level = (UINT32)Param & 0xffff;
  179. volume_set(channel, level);
  180. }
  181. /////////////////////////////////////////////////////////////////////////////////////////////////
  182. // void OnLimiterRateSet(void* Param) -
  183. // Handles an IE_CORE_AMPLIFIER_LIMITER_RATE Event.
  184. //
  185. // Input:
  186. // Param
  187. //
  188. // Output:
  189. // None.
  190. //
  191. // Remarks:
  192. void OnLimiterRateSet(void* Param)
  193. {
  194. UINT16 limiter, type, level;
  195. limiter = ((UINT32)Param >> 24) & 0xff;
  196. type = ((UINT32)Param >> 16) & 0xff;
  197. level = (UINT32)Param & 0xffff;
  198. limiter_rate_set(limiter, type, level);
  199. }
  200. /////////////////////////////////////////////////////////////////////////////////////////////////
  201. // void OnLimiterThresholdSet(void* Param) -
  202. // Handles an IE_CORE_AMPLIFIER_THRESHOLD Event.
  203. //
  204. // Input:
  205. // Param: 
  206. //
  207. // Output:
  208. // None.
  209. //
  210. // Remarks:
  211. void OnLimiterThresholdSet(void* Param)
  212. {
  213. UINT16 limiter, type, level;
  214. limiter = ((UINT32)Param >> 24) & 0xff;
  215. type = ((UINT32)Param >> 16) & 0xff;
  216. level = (UINT32)Param & 0xffff;
  217. limiter_threshold_set(limiter, type, level);
  218. }
  219. /////////////////////////////////////////////////////////////////////////////////////////////////
  220. // void OnTick() -
  221. // Handles an IE_CORE_TICK_200 Event.
  222. //
  223. // Input:
  224. // None
  225. //
  226. // Output:
  227. // None.
  228. //
  229. // Remarks:
  230. static void OnTick()
  231. {
  232. #ifdef HEADPHONE_ENABLE
  233. if (Is_Headphone_Active())
  234. HeadphoneActiveTime++;
  235. else
  236. if (0 < HeadphoneActiveTime)
  237. HeadphoneActiveTime--;
  238. if (HEADPHONE_ACTIVE_THRESHOLD <= HeadphoneActiveTime)
  239. {
  240. HeadphoneActiveTime = HEADPHONE_ACTIVE_THRESHOLD;
  241. DEC_Amplifier_Mute(TRUE);
  242. }
  243. else
  244. if (0 == HeadphoneActiveTime)
  245. DEC_Amplifier_Mute(FALSE);
  246. #endif
  247. return;
  248. }
  249. #ifdef _DEBUG
  250. static void OnStatusReport()
  251. {
  252. return;
  253. }
  254. #endif //_DEBUG
  255.  
  256. #endif
  257.