audio_ll_drv.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef __AUDIO_LL_DRV_H__
  2. #define __AUDIO_LL_DRV_H__
  3. typedef enum
  4. {
  5. AUSTREAM_FORMAT_UNKNOWN, ///< placeholder for unknown format
  6. AUSTREAM_FORMAT_PCM, ///< raw PCM data
  7. AUSTREAM_FORMAT_WAVPCM, ///< WAV, PCM inside
  8. AUSTREAM_FORMAT_MP3, ///< MP3
  9. AUSTREAM_FORMAT_AMRNB, ///< AMR-NB
  10. AUSTREAM_FORMAT_AMRWB, ///< AMR_WB
  11. AUSTREAM_FORMAT_SBC, ///< bt SBC
  12. } auStreamFormat_t;
  13. typedef enum
  14. {
  15. AUSTREAM_BUS_DAC,
  16. AUSTREAM_BUS_I2S,
  17. } auStreamBusType_t;
  18. typedef struct
  19. {
  20. CBFuncEx_t CB; //pData是自身Audio_StreamStruct指针
  21. CBFuncEx_t Decoder;
  22. CBFuncEx_t Encoder;
  23. void *pParam;
  24. void *fd;
  25. void *CoderParam;
  26. void *UserParam;
  27. Timer_t *PADelayTimer;
  28. Buffer_Struct FileDataBuffer;
  29. Buffer_Struct AudioDataBuffer;
  30. llist_head DataHead;
  31. uint32_t SampleRate;
  32. uint32_t waitRequire;
  33. uint32_t DummyAudioTime;
  34. uint32_t PADelayTime;
  35. uint8_t BitDepth;
  36. uint8_t ChannelCount; //声道,目前只有1或者2
  37. auStreamFormat_t Format;
  38. auStreamBusType_t BusType; //音频总线类型,DAC, IIS之类的
  39. uint8_t BusID; //音频总线ID
  40. uint8_t IsDataSigned; //数据是否是有符号的
  41. uint8_t IsHardwareRun;
  42. uint8_t IsPause;
  43. uint8_t IsStop;
  44. uint8_t IsPlaying;
  45. uint8_t IsFileNotEnd;
  46. uint8_t DecodeStep;
  47. uint8_t UseOutPA;
  48. uint8_t PAPin;
  49. uint8_t PAOnLevel;
  50. }Audio_StreamStruct;
  51. void Audio_GlobalInit(void);
  52. /**
  53. * @brief 开始播放原始音频流
  54. *
  55. * @param pStream 原始音频流数据结构, 底层不保存这个结构,需要用户保存
  56. * @return =0 成功 < 0失败错误码
  57. */
  58. int32_t Audio_StartRaw(Audio_StreamStruct *pStream);
  59. int32_t Audio_WriteRaw(Audio_StreamStruct *pStream, uint8_t *pByteData, uint32_t ByteLen);
  60. void Audio_Stop(Audio_StreamStruct *pStream);
  61. void Audio_Pause(Audio_StreamStruct *pStream);
  62. void Audio_Resume(Audio_StreamStruct *pStream);
  63. #endif