Update of /cvsroot/alsa/alsa-kernel/core/oss In directory sc8-pr-cvs1:/tmp/cvs-serv27929/core/oss
Modified Files: pcm_oss.c Log Message: - accept partial fragment contents by default - fill buffer ahead with silence to reduce clicks by default - both new features can be turned off using proc interface Index: pcm_oss.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/core/oss/pcm_oss.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- pcm_oss.c 24 Jul 2003 19:40:30 -0000 1.43 +++ pcm_oss.c 24 Jul 2003 20:50:22 -0000 1.44 @@ -454,8 +454,17 @@ sw_params->sleep_min = 0; sw_params->avail_min = runtime->period_size; sw_params->xfer_align = 1; - sw_params->silence_threshold = 0; - sw_params->silence_size = 0; + if (substream->oss.setup && substream->oss.setup->nosilence) { + sw_params->silence_threshold = 0; + sw_params->silence_size = 0; + } else { + snd_pcm_uframes_t frames; + frames = runtime->period_size + 16; + if (frames > runtime->buffer_size) + frames = runtime->buffer_size; + sw_params->silence_threshold = frames; + sw_params->silence_size = frames; + } if ((err = snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_SW_PARAMS, sw_params)) < 0) { snd_printd("SW_PARAMS failed: %i\n", err); @@ -802,8 +811,9 @@ buf += tmp; bytes -= tmp; xfer += tmp; - if (runtime->oss.buffer_used == runtime->oss.period_bytes) { - tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer, runtime->oss.period_bytes, 1); + if (substream->oss.setup == NULL || !substream->oss.setup->wholefrag || + runtime->oss.buffer_used == runtime->oss.period_bytes) { + tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer, runtime->oss.buffer_used, 1); if (tmp <= 0) return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; runtime->oss.bytes += tmp; @@ -2108,14 +2118,16 @@ snd_pcm_oss_setup_t *setup = pstr->oss.setup_list; down(&pstr->oss.setup_mutex); while (setup) { - snd_iprintf(buffer, "%s %u %u%s%s%s%s\n", + snd_iprintf(buffer, "%s %u %u%s%s%s%s%s%s\n", setup->task_name, setup->periods, setup->period_size, setup->disable ? " disable" : "", setup->direct ? " direct" : "", setup->block ? " block" : "", - setup->nonblock ? " non-block" : ""); + setup->nonblock ? " non-block" : "", + setup->wholefrag ? " whole-frag" : "", + setup->nosilence ? " no-silence" : ""); setup = setup->next; } up(&pstr->oss.setup_mutex); @@ -2181,6 +2193,10 @@ template.block = 1; } else if (!strcmp(str, "non-block")) { template.nonblock = 1; + } else if (!strcmp(str, "whole-frag")) { + template.wholefrag = 1; + } else if (!strcmp(str, "no-silence")) { + template.nosilence = 1; } } while (*str); if (setup == NULL) { ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog