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

Reply via email to