46 DYNAMIC_SAMPLERATE = -1
50 std::string Init(
DSound& ds,
57 bool get_output_buf(
char** pBuffer,
unsigned* iBuffersize,
int iChunksize);
58 void release_output_buf(
char* pBuffer,
unsigned iBuffersize);
62 void SetVolume(
float fVolume);
63 void SetSampleRate(
int iRate);
64 int GetSampleRate()
const {
return m_iSampleRate; }
67 int64_t GetPosition()
const;
68 int64_t GetOutputPosition()
const {
return m_iWriteCursorPos; }
71 int buffersize_frames()
const {
return m_iBufferSize / bytes_per_frame(); }
72 int bytes_per_frame()
const {
return m_iChannels * m_iSampleBits / 8; }
74 void CheckWriteahead(
int iCursorStart,
int iCursorEnd);
75 void CheckUnderrun(
int iCursorStart,
int iCursorEnd);
77 IDirectSoundBuffer* m_pBuffer;
79 int m_iChannels, m_iSampleRate, m_iSampleBits, m_iWriteAhead;
84 int m_iWriteCursor, m_iBufferBytesFilled;
85 int m_iExtraWriteahead;
86 int64_t m_iWriteCursorPos;
87 mutable int64_t m_iLastPosition;
91 char *m_pLockedBuf1, *m_pLockedBuf2;
92 int m_iLockedSize1, m_iLockedSize2;
95 int m_iLastCursors[4][2];