aboutsummaryrefslogtreecommitdiff
path: root/audio/dsound_template.h
diff options
context:
space:
mode:
authorKővágó, Zoltán <dirty.ice.hu@gmail.com>2019-10-13 21:58:02 +0200
committerGerd Hoffmann <kraxel@redhat.com>2019-10-18 08:14:05 +0200
commit2b9cce8c8c37b95290c48c037e51e001985124d1 (patch)
tree82fbbf3fff30c561215cada4c3f2a97f8cda1dbb /audio/dsound_template.h
parentcecc1e79bf9ad9a0e2d3ce513d4f71792a0985f6 (diff)
downloadqemu-2b9cce8c8c37b95290c48c037e51e001985124d1.zip
qemu-2b9cce8c8c37b95290c48c037e51e001985124d1.tar.gz
qemu-2b9cce8c8c37b95290c48c037e51e001985124d1.tar.bz2
audio: replace shift in audio_pcm_info with bytes_per_frame
The bit shifting trick worked because the number of bytes per frame was always a power-of-two (since QEMU only supports mono, stereo and 8, 16 and 32 bit samples). But if we want to add support for surround sound, this no longer holds true. Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com> Message-id: 1351fd9bcce0ff20d81850c5292722194329de02.1570996490.git.DirtY.iCE.hu@gmail.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'audio/dsound_template.h')
-rw-r--r--audio/dsound_template.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/audio/dsound_template.h b/audio/dsound_template.h
index 9f10b68..7a15f91 100644
--- a/audio/dsound_template.h
+++ b/audio/dsound_template.h
@@ -98,8 +98,8 @@ static int glue (dsound_lock_, TYPE) (
goto fail;
}
- if ((p1p && *p1p && (*blen1p & info->align)) ||
- (p2p && *p2p && (*blen2p & info->align))) {
+ if ((p1p && *p1p && (*blen1p % info->bytes_per_frame)) ||
+ (p2p && *p2p && (*blen2p % info->bytes_per_frame))) {
dolog("DirectSound returned misaligned buffer %ld %ld\n",
*blen1p, *blen2p);
glue(dsound_unlock_, TYPE)(buf, *p1p, p2p ? *p2p : NULL, *blen1p,
@@ -247,14 +247,14 @@ static int dsound_init_out(HWVoiceOut *hw, struct audsettings *as,
obt_as.endianness = 0;
audio_pcm_init_info (&hw->info, &obt_as);
- if (bc.dwBufferBytes & hw->info.align) {
+ if (bc.dwBufferBytes % hw->info.bytes_per_frame) {
dolog (
"GetCaps returned misaligned buffer size %ld, alignment %d\n",
- bc.dwBufferBytes, hw->info.align + 1
+ bc.dwBufferBytes, hw->info.bytes_per_frame
);
}
hw->size_emul = bc.dwBufferBytes;
- hw->samples = bc.dwBufferBytes >> hw->info.shift;
+ hw->samples = bc.dwBufferBytes / hw->info.bytes_per_frame;
ds->s = s;
#ifdef DEBUG_DSOUND