CSDLAudioDriver.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include <vector>
  3. #include <map>
  4. #include "WallpaperEngine/Audio/CAudioStream.h"
  5. #include "WallpaperEngine/Audio/Drivers/CAudioDriver.h"
  6. #include <SDL.h>
  7. #define MAX_AUDIO_FRAME_SIZE 192000
  8. namespace WallpaperEngine::Audio::Drivers
  9. {
  10. struct CSDLAudioBuffer
  11. {
  12. CAudioStream* stream;
  13. uint8_t audio_buf[(MAX_AUDIO_FRAME_SIZE * 3) / 2];
  14. unsigned int audio_buf_size = 0;
  15. unsigned int audio_buf_index = 0;
  16. };
  17. class CSDLAudioDriver : public CAudioDriver
  18. {
  19. public:
  20. CSDLAudioDriver ();
  21. ~CSDLAudioDriver ();
  22. void addStream (CAudioStream* stream) override;
  23. const std::vector <CSDLAudioBuffer*>& getStreams ();
  24. AVSampleFormat getFormat () const override;
  25. int getSampleRate () const override;
  26. int getChannels () const override;
  27. const SDL_AudioSpec& getSpec () const;
  28. private:
  29. SDL_AudioDeviceID m_deviceID;
  30. bool m_initialized;
  31. SDL_AudioSpec m_audioSpec;
  32. std::vector <CSDLAudioBuffer*> m_streams;
  33. };
  34. }