11 #include "cores/AudioEngine/Interfaces/AESink.h" 12 #include "cores/AudioEngine/Utils/AEDeviceInfo.h" 13 #include "threads/CriticalSection.h" 19 #include <wrl/client.h> 24 virtual const char *GetName() {
return "DIRECTSOUND"; }
29 static void Register();
30 static std::unique_ptr<IAESink> Create(std::string& device,
AEAudioFormat& desiredFormat);
33 virtual void Deinitialize();
39 virtual unsigned int AddPackets(uint8_t **data,
unsigned int frames,
unsigned int offset);
41 static std::string GetDefaultDevice();
42 static void EnumerateDevicesEx (AEDeviceInfoList &deviceInfoList,
bool force =
false);
44 void AEChannelsFromSpeakerMask(DWORD speakers);
46 void CheckPlayStatus();
47 bool UpdateCacheStatus();
48 unsigned int GetSpace();
49 const char *dserr2str(
int err);
51 Microsoft::WRL::ComPtr<IDirectSoundBuffer> m_pBuffer;
52 Microsoft::WRL::ComPtr<IDirectSound> m_pDSound;
55 enum AEDataFormat m_encodedFormat;
59 unsigned int m_AvgBytesPerSec;
61 unsigned int m_dwChunkSize;
62 unsigned int m_dwFrameSize;
63 unsigned int m_dwBufferLen;
65 unsigned int m_BufferOffset;
66 unsigned int m_CacheLen;
67 unsigned int m_BufferTimeouts;
72 CCriticalSection m_runLock;
virtual unsigned int AddPackets(uint8_t **data, unsigned int frames, unsigned int offset)
Adds packets to be sent out, this routine MUST block or sleep.
Definition: AESinkDirectSound.cpp:314
Definition: AESinkDirectSound.h:21
virtual double GetCacheTotal()
Definition: AESinkDirectSound.cpp:427
virtual void GetDelay(AEDelayStatus &status)
Return a timestamped status structure with delay and sink info.
Definition: AESinkDirectSound.cpp:411
Definition: AEChannelInfo.h:19
virtual bool Initialize(AEAudioFormat &format, std::string &device)
Definition: AESinkDirectSound.cpp:122