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

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: HeadPhone.c $             
  6.  *
  7.  * Description: detect HeadPhone status
  8.  * 
  9.  ****************************************************************************************/
  10. #include "Config.h" // Global Configuration - do not remove!
  11. #ifdef D_ENABLE_HEADPHONE_DETECT
  12. #include "Includesysdefs.h"
  13. #include "Kernelker_api.h"
  14. #include "KernelEventDef.h"
  15. #include "Decoderdecoder.h"
  16. #include "PlaycoreCoremaincoregdef.h"
  17. #include "PlaycorePSps.h"
  18. #include "PlaycoreHeadPhoneHeadPhone.h"
  19. static BOOL gb_HeadPhone_Detected = FALSE;
  20. static HEADPHONE_STATE b_last_HeadPhone_Detected = HEADPHONE_PLUG_OUT;
  21. static int g_HeadPhoneInProcess = 0;
  22. #ifndef COUNTER_TO_DEACTIVATE_HEADPHONE
  23. #define COUNTER_TO_DEACTIVATE_HEADPHONE 80
  24. #endif
  25. #ifndef COUNTER_TO_ACTIVATE_HEADPHONE
  26. #define COUNTER_TO_ACTIVATE_HEADPHONE 80
  27. #endif
  28. void SetHeadPhone(void);
  29. int HeadPhoneDetection(void);
  30. void HeadPhoneDetectionInit(void);
  31. /**************************************************************************
  32. *
  33. * Function : SetHeadPhone
  34. *
  35. * In : void
  36. * Out : void
  37. *
  38. * Return : void 
  39. *
  40. * Desc : send message to decoder when HeadPhone is plug in/out
  41. *
  42. ***************************************************************************/
  43. void SetHeadPhone(void)
  44. {
  45. static UINT16 count = 0x0;
  46. DWORD dCmd;
  47. if (TRUE == gb_HeadPhone_Detected)
  48. {
  49. if(HEADPHONE_PLUG_OUT == b_last_HeadPhone_Detected)
  50. {
  51. count = 0x0;
  52. b_last_HeadPhone_Detected = HEADPHONE_PLUG_IN;
  53. }
  54. else
  55. if(count < COUNTER_TO_ACTIVATE_HEADPHONE)
  56. {
  57. count++;
  58. }
  59. else if(HEADPHONE_PLUG_IN != gtps.mHeadPhone)
  60. {
  61. dCmd = (((DWORD)PS_UPDATE_HEADPHONE_SETTING)<<16) + (DWORD)HEADPHONE_PLUG_IN;
  62. k_ie_send_ex(IE_CORE_UPDATE_PS, (void *)dCmd);
  63. count = 0x0;
  64. }
  65. }
  66. else
  67. {
  68. if(HEADPHONE_PLUG_IN == b_last_HeadPhone_Detected)
  69. {
  70. count = 0x0;
  71. b_last_HeadPhone_Detected = HEADPHONE_PLUG_OUT;
  72. }
  73. else
  74. if(count < COUNTER_TO_DEACTIVATE_HEADPHONE)
  75. {
  76. count++;
  77. }
  78. else if(HEADPHONE_PLUG_OUT != gtps.mHeadPhone)
  79. {
  80. dCmd = (((DWORD)PS_UPDATE_HEADPHONE_SETTING)<<16) + (DWORD)HEADPHONE_PLUG_OUT;
  81. k_ie_send_ex(IE_CORE_UPDATE_PS, (void *)dCmd);
  82. count = 0x0;
  83. }
  84. }
  85. g_HeadPhoneInProcess = 0x0;
  86. }
  87. /**************************************************************************
  88. *
  89. * Function : HeadPhoneDetection
  90. *
  91. * In : void
  92. * Out : void
  93. *
  94. * Return : TRUE if Headphone plug in, FALSE else
  95. *
  96. * Desc : 
  97. *
  98. ***************************************************************************/
  99. int HeadPhoneDetection(void)
  100. {
  101. gb_HeadPhone_Detected = ioHeadPhoneDetection();
  102. return TRUE;
  103. }
  104. /**************************************************************************
  105. *
  106. * Function : HeadPhoneDetectionInit
  107. *
  108. * In : void
  109. * Out : void
  110. *
  111. * Return : void
  112. *
  113. * Desc : 
  114. *
  115. ***************************************************************************/
  116. void HeadPhoneDetectionInit(void)
  117. {
  118. /* Install the callback function for Vocal Detection and Set */
  119. DEC_install_fast_callback(HeadPhoneDetection, SetHeadPhone, &g_HeadPhoneInProcess);
  120. }
  121. #endif