audio_ll_drv.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. void *pParam;
  22. llist_head DataHead;
  23. uint32_t SampleRate;
  24. uint8_t BitDepth;
  25. uint8_t ChannelCount; //声道,目前只有1
  26. auStreamFormat_t Format;
  27. auStreamBusType_t BusType; //音频总线类型,DAC, IIS之类的
  28. uint8_t BusID; //音频总线ID
  29. uint8_t IsDataSigned; //数据是否是有符号的
  30. uint8_t IsHardwareRun;
  31. uint8_t IsPause;
  32. }Audio_StreamStruct;
  33. void Audio_GlobalInit(void);
  34. /**
  35. * @brief 开始播放原始音频流
  36. *
  37. * @param pStream 原始音频流数据结构, 底层不保存这个结构,需要用户保存
  38. * @return =0 成功 < 0失败错误码
  39. */
  40. int32_t Audio_StartRaw(Audio_StreamStruct *pStream);
  41. int32_t Audio_WriteRaw(Audio_StreamStruct *pStream, uint8_t *pByteData, uint32_t ByteLen);
  42. void Audio_Stop(Audio_StreamStruct *pStream);
  43. void Audio_Pause(Audio_StreamStruct *pStream);
  44. void Audio_Resume(Audio_StreamStruct *pStream);
  45. #endif