All of 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.