Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions api_wasapi_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,17 @@ var (
)

const (
_AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM = 0x80000000
_AUDCLNT_STREAMFLAGS_EVENTCALLBACK = 0x00040000
_AUDCLNT_STREAMFLAGS_NOPERSIST = 0x00080000
_COINIT_APARTMENTTHREADED = 0x2
_COINIT_MULTITHREADED = 0
_REFTIMES_PER_SEC = 10000000
_SPEAKER_FRONT_CENTER = 0x4
_SPEAKER_FRONT_LEFT = 0x1
_SPEAKER_FRONT_RIGHT = 0x2
_WAVE_FORMAT_EXTENSIBLE = 0xfffe
_AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM = 0x80000000
_AUDCLNT_STREAMFLAGS_EVENTCALLBACK = 0x00040000
_AUDCLNT_STREAMFLAGS_NOPERSIST = 0x00080000
_AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY = 0x08000000
_COINIT_APARTMENTTHREADED = 0x2
_COINIT_MULTITHREADED = 0
_REFTIMES_PER_SEC = 10000000
_SPEAKER_FRONT_CENTER = 0x4
_SPEAKER_FRONT_LEFT = 0x1
_SPEAKER_FRONT_RIGHT = 0x2
_WAVE_FORMAT_EXTENSIBLE = 0xfffe
)

var (
Expand Down
5 changes: 4 additions & 1 deletion driver_wasapi_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,11 @@ func (c *wasapiContext) startOnCOMThread() (ferr error) {

// Even if the sample rate and/or the number of channels are not supported by the audio driver,
// AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM should convert the sample rate automatically (#215).
// AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY used together with
// AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM tells WASAPI to use a high-quality
// resampler. Without it, 44100 source played on a 48000 device sounds bad.
if err := c.client.Initialize(_AUDCLNT_SHAREMODE_SHARED,
_AUDCLNT_STREAMFLAGS_EVENTCALLBACK|_AUDCLNT_STREAMFLAGS_NOPERSIST|_AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM,
_AUDCLNT_STREAMFLAGS_EVENTCALLBACK|_AUDCLNT_STREAMFLAGS_NOPERSIST|_AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM|_AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY,
bufferSizeIn100ns, 0, f, nil); err != nil {
return err
}
Expand Down