audio_ll_drv.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. Buffer_Struct FileDataBuffer;
  27. Buffer_Struct AudioDataBuffer;
  28. llist_head DataHead;
  29. uint32_t SampleRate;
  30. uint32_t waitRequire;
  31. uint8_t BitDepth;
  32. uint8_t ChannelCount; //声道,目前只有1或者2
  33. auStreamFormat_t Format;
  34. auStreamBusType_t BusType; //音频总线类型,DAC, IIS之类的
  35. uint8_t BusID; //音频总线ID
  36. uint8_t IsDataSigned; //数据是否是有符号的
  37. uint8_t IsHardwareRun;
  38. uint8_t IsPause;
  39. uint8_t IsStop;
  40. uint8_t IsPlaying;
  41. uint8_t IsFileNotEnd;
  42. uint8_t DecodeStep;
  43. uint8_t UseOutPA;
  44. uint8_t PAPin;
  45. uint8_t PAOnLevel;
  46. }Audio_StreamStruct;
  47. void Audio_GlobalInit(void);
  48. /**
  49. * @brief 开始播放原始音频流
  50. *
  51. * @param pStream 原始音频流数据结构, 底层不保存这个结构,需要用户保存
  52. * @return =0 成功 < 0失败错误码
  53. */
  54. int32_t Audio_StartRaw(Audio_StreamStruct *pStream);
  55. int32_t Audio_WriteRaw(Audio_StreamStruct *pStream, uint8_t *pByteData, uint32_t ByteLen);
  56. void Audio_Stop(Audio_StreamStruct *pStream);
  57. void Audio_Pause(Audio_StreamStruct *pStream);
  58. void Audio_Resume(Audio_StreamStruct *pStream);
  59. #endif