[ros-diffs] [nyadav] 52328: [AUDSRV] fix mixer routine, working now

nyadav at svn.reactos.org nyadav at svn.reactos.org
Sat Jun 18 10:37:54 UTC 2011


Author: nyadav
Date: Sat Jun 18 10:37:54 2011
New Revision: 52328

URL: http://svn.reactos.org/svn/reactos?rev=52328&view=rev
Log:
[AUDSRV] fix mixer routine, working now

Modified:
    branches/nyadav-audio-branch/base/services/audsrv/mixer.c
    branches/nyadav-audio-branch/base/services/audsrv/stream.c

Modified: branches/nyadav-audio-branch/base/services/audsrv/mixer.c
URL: http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/services/audsrv/mixer.c?rev=52328&r1=52327&r2=52328&view=diff
==============================================================================
--- branches/nyadav-audio-branch/base/services/audsrv/mixer.c [iso-8859-1] (original)
+++ branches/nyadav-audio-branch/base/services/audsrv/mixer.c [iso-8859-1] Sat Jun 18 10:37:54 2011
@@ -43,11 +43,14 @@
     stream = mixer->serverstreamlist;
     minsamplevalue = *(short *) stream->minsamplevalue;
     maxsamplevalue = *(short *) stream->maxsamplevalue;
-    while(stream->next != NULL)
+
+    while( stream != NULL)
     {
         localsrcbuf = stream->filteredbuf;
         if(stream->ready == TRUE )
         {
+		    coefficient = 1.0;
+
             if( *(short *)stream->maxsamplevalue != maxsamplevalue ||
                 *(short *)stream->minsamplevalue != minsamplevalue  )
             {
@@ -56,18 +59,16 @@
                     coefficient = (float) maxsamplevalue / (float)*(short *)stream->maxsamplevalue;
                 else
                     coefficient = (float) minsamplevalue / (float)*(short *)stream->minsamplevalue;
-                
-                for(i=0;i<stream->length_filtered;i++)
-                {
-                    localsinkbuf[i] = (short) (( (localsinkbuf[i] * streamcount) + ((short)((float)  localsrcbuf[i] ) * coefficient) ) / (streamcount +1));
-                }
             }
+			for(i=0;i<stream->length_filtered/sizeof(short);i++)
+            {
+                localsinkbuf[i] = (short) (( (localsinkbuf[i] * streamcount) + ((short)((float)  localsrcbuf[i] ) * coefficient) ) / (streamcount +1));
+			}
         }
-        stream->ready = 0;
+        //stream->ready = 0;  /*TODO Enable it when actual filter thread starts working*/
         streamcount++;
         stream = stream->next;
     }
-    CopyMemory(mixer->masterbuf[buffer],mixer->serverstreamlist->filteredbuf,mixer->serverstreamlist->length_filtered);
 
     return NULL;
 }

Modified: branches/nyadav-audio-branch/base/services/audsrv/stream.c
URL: http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/services/audsrv/stream.c?rev=52328&r1=52327&r2=52328&view=diff
==============================================================================
--- branches/nyadav-audio-branch/base/services/audsrv/stream.c [iso-8859-1] (original)
+++ branches/nyadav-audio-branch/base/services/audsrv/stream.c [iso-8859-1] Sat Jun 18 10:37:54 2011
@@ -36,7 +36,11 @@
     while (i < localstream->length_filtered / 2)
     {
         tempbuf[i] = 0x7FFF * sin(0.5 * (i - 1) * 500 * 6.28 / 48000);
-        if(initmin)
+
+        if((localstream->streamid %2) == 0)
+            tempbuf[i] = 0;
+
+			if(initmin)
         {
             if(tempbuf[i]<minimum)
                 minimum = tempbuf[i];
@@ -57,6 +61,11 @@
         i++;
 
         tempbuf[i] = 0x7FFF * sin(0.5 * (i - 2) * 500 * 6.28 / 48000);
+
+        if((localstream->streamid %2) != 0)
+            tempbuf[i] = 0;
+
+
         if(initmin)
         {
             if(tempbuf[i]<minimum)




More information about the Ros-diffs mailing list