Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/9] ALSA: emu10k1: pass frame instead of byte addresses
@ 2023-05-17 17:42 Oswald Buddenhagen
  2023-05-17 17:42 ` [PATCH 2/9] Revert "ALSA: emu10k1 - delay the PCM interrupts (add pcm_irq_delay parameter)" Oswald Buddenhagen
                   ` (8 more replies)
  0 siblings, 9 replies; 13+ messages in thread
From: Oswald Buddenhagen @ 2023-05-17 17:42 UTC (permalink / raw)
  To: alsa-devel; +Cc: Takashi Iwai, Jaroslav Kysela

... to snd_emu10k1_pcm_init_voice(). This makes the code arguably less
convoluted.

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
---
 sound/pci/emu10k1/emupcm.c | 31 +++++++++----------------------
 1 file changed, 9 insertions(+), 22 deletions(-)

diff --git a/sound/pci/emu10k1/emupcm.c b/sound/pci/emu10k1/emupcm.c
index d669f93d8930..9f151a0a7756 100644
--- a/sound/pci/emu10k1/emupcm.c
+++ b/sound/pci/emu10k1/emupcm.c
@@ -270,15 +270,6 @@ static void snd_emu10k1_pcm_init_voice(struct snd_emu10k1 *emu,
 	stereo = runtime->channels == 2;
 	w_16 = snd_pcm_format_width(runtime->format) == 16;
 
-	if (!extra && stereo) {
-		start_addr >>= 1;
-		end_addr >>= 1;
-	}
-	if (w_16) {
-		start_addr >>= 1;
-		end_addr >>= 1;
-	}
-
 	spin_lock_irqsave(&emu->reg_lock, flags);
 
 	/* volume parameters */
@@ -424,19 +415,16 @@ static int snd_emu10k1_playback_prepare(struct snd_pcm_substream *substream)
 	struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_emu10k1_pcm *epcm = runtime->private_data;
+	bool w_16 = snd_pcm_format_width(runtime->format) == 16;
+	bool stereo = runtime->channels == 2;
 	unsigned int start_addr, end_addr;
 
-	start_addr = epcm->start_addr;
-	end_addr = snd_pcm_lib_period_bytes(substream);
-	if (runtime->channels == 2) {
-		start_addr >>= 1;
-		end_addr >>= 1;
-	}
-	end_addr += start_addr;
+	start_addr = epcm->start_addr >> w_16;
+	end_addr = start_addr + runtime->period_size;
 	snd_emu10k1_pcm_init_voice(emu, 1, 1, epcm->extra,
 				   start_addr, end_addr, NULL);
-	start_addr = epcm->start_addr;
-	end_addr = epcm->start_addr + snd_pcm_lib_buffer_bytes(substream);
+	start_addr >>= stereo;
+	end_addr = start_addr + runtime->buffer_size;
 	snd_emu10k1_pcm_init_voice(emu, 1, 0, epcm->voices[0],
 				   start_addr, end_addr,
 				   &emu->pcm_mixer[substream->number]);
@@ -452,14 +440,13 @@ static int snd_emu10k1_efx_playback_prepare(struct snd_pcm_substream *substream)
 	struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_emu10k1_pcm *epcm = runtime->private_data;
-	unsigned int start_addr, end_addr;
+	unsigned int start_addr;
 	unsigned int channel_size;
 	int i;
 
-	start_addr = epcm->start_addr;
-	end_addr = epcm->start_addr + snd_pcm_lib_buffer_bytes(substream);
+	start_addr = epcm->start_addr >> 1;  // 16-bit voices
 
-	channel_size = ( end_addr - start_addr ) / NUM_EFX_PLAYBACK;
+	channel_size = runtime->buffer_size;
 
 	snd_emu10k1_pcm_init_voice(emu, 1, 1, epcm->extra,
 				   start_addr, start_addr + (channel_size / 2), NULL);
-- 
2.40.0.152.g15d061e6df


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-05-18  8:19 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-17 17:42 [PATCH 1/9] ALSA: emu10k1: pass frame instead of byte addresses Oswald Buddenhagen
2023-05-17 17:42 ` [PATCH 2/9] Revert "ALSA: emu10k1 - delay the PCM interrupts (add pcm_irq_delay parameter)" Oswald Buddenhagen
2023-05-17 17:42 ` [PATCH 3/9] ALSA: emu10k1: remove pointless displacement of the extra voices Oswald Buddenhagen
2023-05-17 17:42 ` [PATCH 4/9] ALSA: emu10k1: skip pointless cache setup for " Oswald Buddenhagen
2023-05-17 17:42 ` [PATCH 5/9] ALSA: emu10k1: fix PCM playback cache and interrupt handling Oswald Buddenhagen
2023-05-17 17:42 ` [PATCH 6/9] ALSA: emu10k1: fix PCM playback buffer size constraints Oswald Buddenhagen
2023-05-17 20:25   ` Takashi Iwai
2023-05-18  7:57     ` Oswald Buddenhagen
2023-05-18  8:17       ` Takashi Iwai
2023-05-17 17:42 ` [PATCH 7/9] ALSA: emu10k1: improve API of low-level voice manipulation functions Oswald Buddenhagen
2023-05-17 17:42 ` [PATCH 8/9] ALSA: emu10k1: refactor PCM playback cache filling Oswald Buddenhagen
2023-05-17 17:42 ` [PATCH 9/9] ALSA: emu10k1: refactor PCM playback address handling Oswald Buddenhagen
2023-05-18  5:32 ` [PATCH 1/9] ALSA: emu10k1: pass frame instead of byte addresses Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox