gd_audio.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /*!
  2. *******************************************************************************
  3. **
  4. ** \file gd_audio.h
  5. **
  6. ** \brief audio.
  7. **
  8. ** Copyright: 2012 - 2013 (C) GoKe Microelectronics ShangHai Branch
  9. **
  10. ** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
  11. ** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
  12. ** OMMISSIONS.
  13. **
  14. ** \note Do not modify this file as it is generated automatically.
  15. **
  16. ******************************************************************************/
  17. #ifndef _GD_AUDIO_H_
  18. #define _GD_AUDIO_H_
  19. #include "gmodids.h"
  20. #define GD_AUDIO_ERR_BASE (GD_AUDIO_MODULE_ID << 16)
  21. /*!
  22. *******************************************************************************
  23. **
  24. ** \brief I2S driver error codes.
  25. **
  26. *******************************************************************************
  27. */
  28. enum
  29. {
  30. GD_ERR_AUDIO_NOT_SUPPORTED = GD_AUDIO_ERR_BASE, //!< Device not supported.
  31. GD_ERR_AUDIO_NOT_OPEN,
  32. GD_ERR_AUDIO_DEV_BUSY,
  33. GD_ERR_AUDIO_DEV_WAIT,
  34. };
  35. typedef enum /* 2dB per level */
  36. {
  37. GAIN_LEVEL_0,
  38. GAIN_LEVEL_1,
  39. GAIN_LEVEL_2,
  40. GAIN_LEVEL_3,
  41. GAIN_LEVEL_4,
  42. GAIN_LEVEL_5,
  43. GAIN_LEVEL_6,
  44. GAIN_LEVEL_7,
  45. GAIN_LEVEL_8,
  46. GAIN_LEVEL_9,
  47. GAIN_LEVEL_10,
  48. GAIN_LEVEL_11,
  49. GAIN_LEVEL_12,
  50. GAIN_LEVEL_13,
  51. GAIN_LEVEL_14,
  52. GAIN_LEVEL_15,
  53. GAIN_LEVEL_MAX,
  54. }GD_AUDIO_GAIN_E;
  55. typedef enum
  56. {
  57. VOL_LEVEL_0 = 0xaf,
  58. VOL_LEVEL_1 = 0xad,
  59. VOL_LEVEL_2 = 0xab,
  60. VOL_LEVEL_3 = 0xa9,
  61. VOL_LEVEL_4 = 0xa7,
  62. VOL_LEVEL_5 = 0xa5,
  63. VOL_LEVEL_6 = 0xa3,
  64. VOL_LEVEL_7 = 0xa1,
  65. VOL_LEVEL_8 = 0xa0,
  66. VOL_LEVEL_9 = 0xbe,
  67. VOL_LEVEL_10 = 0xb9,
  68. VOL_LEVEL_11 = 0xb4,
  69. VOL_LEVEL_12 = 0xb0,
  70. }GD_AUDIO_VOLUME_E;
  71. typedef enum
  72. {
  73. AUDIO_SOUND_MODE_LEFT = 0,
  74. AUDIO_SOUND_MODE_RIGHT = 1,
  75. AUDIO_SOUND_MODE_STEREO = 2,
  76. AUDIO_SOUND_MODE_MONO = 3,
  77. AUDIO_SOUND_MODE_SINGLE = 4,
  78. }GD_AUDIO_SOUND_MODE_E;
  79. typedef enum
  80. {
  81. AUDIO_SAMPLE_RATE_8000 = 8000,
  82. AUDIO_SAMPLE_RATE_11025 = 11025,
  83. AUDIO_SAMPLE_RATE_12000 = 12000,
  84. AUDIO_SAMPLE_RATE_16000 = 16000,
  85. AUDIO_SAMPLE_RATE_22050 = 22050,
  86. AUDIO_SAMPLE_RATE_24000 = 24000,
  87. AUDIO_SAMPLE_RATE_32000 = 32000,
  88. AUDIO_SAMPLE_RATE_44100 = 44100,
  89. AUDIO_SAMPLE_RATE_48000 = 48000,
  90. }GD_AUDIO_SAMPLE_RATE_E;
  91. typedef enum
  92. {
  93. AUDIO_BIT_WIDTH_16 = 16,
  94. }GD_AUDIO_BIT_WIDTH_E;
  95. enum
  96. {
  97. AUDIO_EVENT_FRAME = 1, /* received one audio frame or send finished one audio frame */
  98. AUDIO_EVENT_WILL_OVERFLOW = 2,
  99. AUDIO_EVENT_WILL_UNDERFLOW = 3,
  100. AUDIO_EVENT_ALREADY_OVERFLOW = 4,
  101. AUDIO_EVENT_ALREADY_UNDERFLOW = 5,
  102. AUDIO_EVENT_UNDEFINED = 6,
  103. };
  104. typedef void (*GD_AUDIO_Notifier)(U32 event);
  105. typedef struct
  106. {
  107. GD_AUDIO_SAMPLE_RATE_E sampleRate;
  108. GD_AUDIO_SOUND_MODE_E soundMode;
  109. }GD_AUDIO_ATTR_S;
  110. typedef struct
  111. {
  112. GD_AUDIO_SAMPLE_RATE_E sampleRate;
  113. GD_AUDIO_BIT_WIDTH_E bitWidth;
  114. GD_AUDIO_SOUND_MODE_E soundMode;
  115. U32 sampleNumber;
  116. GD_AUDIO_Notifier notifier;
  117. }GD_AUDIO_OPEN_PARAM_S;
  118. typedef struct
  119. {
  120. GD_AUDIO_BIT_WIDTH_E bitWidth;
  121. GD_AUDIO_SOUND_MODE_E soundMode;
  122. GD_AUDIO_SAMPLE_RATE_E sampleRate;
  123. U32 frameAddr;
  124. U32 frameSize;
  125. U32 timeStamp;
  126. U32 seqNumber;
  127. U32 aecSeq; /* audio echo cancellation seque number */
  128. }GD_AUDIO_FRAME_S;
  129. #ifdef __cplusplus
  130. extern "C" {
  131. #endif
  132. GERR GD_AUDIO_Init(void);
  133. GERR GD_AUDIO_Exit(void);
  134. GERR GD_AUDIO_Bind_Ai2Ao(void);
  135. GERR GD_AUDIO_Unbind_Ai2Ao(void);
  136. GERR GD_AUDIO_AI_Open(GD_AUDIO_OPEN_PARAM_S *openParamPtr);
  137. GERR GD_AUDIO_AI_Close(void);
  138. GERR GD_AUDIO_AI_Enable(void);
  139. GERR GD_AUDIO_AI_Disable(void);
  140. GERR GD_AUDIO_AI_Read_Frame(GD_AUDIO_FRAME_S *frame);
  141. GERR GD_AUDIO_AI_Set_Attr(GD_AUDIO_ATTR_S *pattr);
  142. GERR GD_AUDIO_AI_Get_Attr(GD_AUDIO_ATTR_S *pattr);
  143. GERR GD_AUDIO_AI_Set_Gain(GD_AUDIO_GAIN_E gain);
  144. GD_AUDIO_GAIN_E GD_AUDIO_AI_Get_Gain(void);
  145. GERR GD_AUDIO_AO_Open(GD_AUDIO_OPEN_PARAM_S *openParamPtr);
  146. GERR GD_AUDIO_AO_Close(void);
  147. GERR GD_AUDIO_AO_Enable(void);
  148. GERR GD_AUDIO_AO_Disable(void);
  149. GERR GD_AUDIO_AO_Write_Frame(GD_AUDIO_FRAME_S *frame);
  150. GERR GD_AUDIO_AO_Set_Attr(GD_AUDIO_ATTR_S *pattr);
  151. GERR GD_AUDIO_AO_Get_Attr(GD_AUDIO_ATTR_S *pattr);
  152. GERR GD_AUDIO_AO_Set_Volume(GD_AUDIO_VOLUME_E volume);
  153. GD_AUDIO_VOLUME_E GD_AUDIO_AO_Get_Volume(void);
  154. GERR GD_AUDIO_AO_Mute(void);
  155. GERR GD_AUDIO_AO_Unmute(void);
  156. U32 GD_AUDIO_AI_Get_RecFrameNum(void);
  157. U32 GD_AUDIO_AO_Get_RecFrameNum(void);
  158. #ifdef __cplusplus
  159. }
  160. #endif
  161. #endif /* _GD_AUDIO_H_ */
  162. /*----------------------------------------------------------------------------*/
  163. /* end of file */
  164. /*----------------------------------------------------------------------------*/