mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 05:44:31 +08:00
[ALSA] Improve playback startup. Increase buffer size, and reduce xruns.
EMU10K1/EMU10K2 driver Signed-off-by: James Courtier-Dutton <James@superbug.co.uk>
This commit is contained in:
parent
001f758990
commit
310bacd292
@ -124,9 +124,9 @@ static snd_pcm_hardware_t snd_p16v_playback_hw = {
|
||||
.rate_max = 192000,
|
||||
.channels_min = 8,
|
||||
.channels_max = 8,
|
||||
.buffer_bytes_max = (32*1024),
|
||||
.buffer_bytes_max = ((65536 - 64) * 8),
|
||||
.period_bytes_min = 64,
|
||||
.period_bytes_max = (16*1024),
|
||||
.period_bytes_max = (65536 - 64),
|
||||
.periods_min = 2,
|
||||
.periods_max = 8,
|
||||
.fifo_size = 0,
|
||||
@ -347,7 +347,8 @@ static int snd_p16v_pcm_prepare_playback(snd_pcm_substream_t *substream)
|
||||
snd_emu10k1_ptr20_write(emu, PLAYBACK_LIST_SIZE, channel, (runtime->periods - 1) << 19);
|
||||
snd_emu10k1_ptr20_write(emu, PLAYBACK_LIST_PTR, channel, 0);
|
||||
snd_emu10k1_ptr20_write(emu, PLAYBACK_DMA_ADDR, channel, runtime->dma_addr);
|
||||
snd_emu10k1_ptr20_write(emu, PLAYBACK_PERIOD_SIZE, channel, frames_to_bytes(runtime, runtime->period_size)<<16); // buffer size in bytes
|
||||
//snd_emu10k1_ptr20_write(emu, PLAYBACK_PERIOD_SIZE, channel, frames_to_bytes(runtime, runtime->period_size)<<16); // buffer size in bytes
|
||||
snd_emu10k1_ptr20_write(emu, PLAYBACK_PERIOD_SIZE, channel, 0); // buffer size in bytes
|
||||
snd_emu10k1_ptr20_write(emu, PLAYBACK_POINTER, channel, 0);
|
||||
snd_emu10k1_ptr20_write(emu, 0x07, channel, 0x0);
|
||||
snd_emu10k1_ptr20_write(emu, 0x08, channel, 0);
|
||||
@ -602,7 +603,7 @@ int snd_p16v_pcm(emu10k1_t *emu, int device, snd_pcm_t **rpcm)
|
||||
if ((err = snd_pcm_lib_preallocate_pages(substream,
|
||||
SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_pci_data(emu->pci),
|
||||
64*1024, 64*1024)) < 0) /* FIXME: 32*1024 for sound buffer, between 32and64 for Periods table. */
|
||||
((65536 - 64) * 8), ((65536 - 64) * 8))) < 0)
|
||||
return err;
|
||||
//snd_printk("preallocate playback substream: err=%d\n", err);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user