Author: nyadav
Date: Tue Jul 12 16:45:52 2011
New Revision: 52657

URL: http://svn.reactos.org/svn/reactos?rev=52657&view=rev
Log:
[AUDSRV] Finally a working audio mixer :)

Modified:
    branches/nyadav-audio-branch/base/services/audsrv/audsrv.h
    branches/nyadav-audio-branch/base/services/audsrv/rpc.c
    branches/nyadav-audio-branch/base/services/audsrv/stream.c
    branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c
    branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c
    branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl
    branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h

Modified: branches/nyadav-audio-branch/base/services/audsrv/audsrv.h
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/services/audsrv/audsrv.h?rev=52657&r1=52656&r2=52657&view=diff
==============================================================================
--- branches/nyadav-audio-branch/base/services/audsrv/audsrv.h [iso-8859-1] 
(original)
+++ branches/nyadav-audio-branch/base/services/audsrv/audsrv.h [iso-8859-1] Tue 
Jul 12 16:45:52 2011
@@ -120,7 +120,7 @@
 
 long WriteBuffer(LONG streamid,
                  LONG length,
-                 LPVOID buffer);
+                 char * buffer);
 /*mixer.c*/
 void * MixS8(MixerEngine * mixer,
              int buffer);

Modified: branches/nyadav-audio-branch/base/services/audsrv/rpc.c
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/services/audsrv/rpc.c?rev=52657&r1=52656&r2=52657&view=diff
==============================================================================
--- branches/nyadav-audio-branch/base/services/audsrv/rpc.c [iso-8859-1] 
(original)
+++ branches/nyadav-audio-branch/base/services/audsrv/rpc.c [iso-8859-1] Tue 
Jul 12 16:45:52 2011
@@ -82,9 +82,9 @@
 long AUDPlayBuffer(    IN RPC_BINDING_HANDLE hBinding,
                        LONG streamid,
                                           LONG length,
-                                          LPVOID buffer)
+                                          char* buffer)
 {
-    WriteBuffer(streamid,length,NULL);
+    WriteBuffer(streamid,length,buffer);
     return 0;
 }
 /*************************************************************************/

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=52657&r1=52656&r2=52657&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] Tue 
Jul 12 16:45:52 2011
@@ -198,10 +198,8 @@
 
 long WriteBuffer(LONG streamid,
                  LONG length,
-                 LPVOID buffer)
-{
-       int i =0;
-    PSHORT tempbuf;
+                 char * buffer)
+{
     ServerStream * localstream = pengine->serverstreamlist;
     while(localstream!=NULL)
     {
@@ -216,16 +214,12 @@
 
     if(localstream->state == 0)
        {
-        localstream->length_genuine = localstream->freq * 
localstream->channels * localstream->bitspersample / 8;
-        localstream->genuinebuf = tempbuf = (PSHORT) 
HeapAlloc(GetProcessHeap(),
+        localstream->length_genuine = length;
+        localstream->genuinebuf = (PSHORT) HeapAlloc(GetProcessHeap(),
                                                                0,
-                                                               
localstream->length_genuine);
-
-        while (i < localstream->length_genuine / 2)
-        {
-            tempbuf[i+1] = tempbuf[i] = 0x7FFF * sin(0.5 * i * 500 * 6.28 / 
48000);
-            i+=2;
-        }
+                                                               length);
+
+        memcpy(localstream->genuinebuf,buffer,length);
 
         localstream->state = 1;
     }

Modified: branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c?rev=52657&r1=52656&r2=52657&view=diff
==============================================================================
--- branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c [iso-8859-1] 
(original)
+++ branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c [iso-8859-1] 
Tue Jul 12 16:45:52 2011
@@ -8,6 +8,7 @@
  */
 
 #include "audsrvapi.h"
+#include <math.h>
 
 /*All the wrappers for Remote Function should be here*/
 int status = 0;
@@ -75,6 +76,10 @@
 WINAPI
 PlayAudio ( ClientStream * clientstream )
 {
+    /******************************************/
+       int i =0;
+    PSHORT tempbuf;
+       /******************************************/
     /*This is an ActiveScheduler*/
     clientstream->callbacks.OpenComplete(0);
 
@@ -90,26 +95,39 @@
         if(clientstream->dead)
             break;
 
-            /*Check Connection Status If not connected call Connect()*/
-            /*If connected Properly call the remote audsrv_play() 
function,This will be a blocking call, placing a dummy wait function here is a 
good idea.*/
-            RpcTryExcept  
-            {
-                AUDPlayBuffer (audsrv_v0_0_c_ifspec,
-                               clientstream->stream,
-                                                          0,
-                                                          NULL);
-            }
-            RpcExcept(1)
-            {
-                status = RpcExceptionCode();
-            }
-            RpcEndExcept
-
-            clientstream->callbacks.BufferCopied(0);
+        /*Check Connection Status If not connected call Connect()*/
+        /*If connected Properly call the remote audsrv_play() function,This 
will be a blocking call, placing a dummy wait function here is a good idea.*/
+               tempbuf = (PSHORT) HeapAlloc(GetProcessHeap(),
+                                     0,
+                                     44100);
+
+               for(i = 0;i<22050;i+=2)
+        {
+            tempbuf[i+1] = tempbuf[i] = 0x7FFF * sin( i * 500 * 3.14 / 
clientstream->wavefreq);
+        }
+
+        RpcTryExcept
+        {
+            AUDPlayBuffer (audsrv_v0_0_c_ifspec,
+                           clientstream->stream,
+                           44100,
+                           (char *)tempbuf);
+        }
+        RpcExcept(1)
+        {
+            status = RpcExceptionCode();
+        }
+        RpcEndExcept
+
+        HeapFree(GetProcessHeap(),
+                        0,
+                                tempbuf);
+
+        clientstream->callbacks.BufferCopied(0);
     }
     clientstream->callbacks.PlayComplete(0);
 
-/*Audio Thread Ended*/
+    /*Audio Thread Ended*/
     return 0;
 }
 

Modified: 
branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c?rev=52657&r1=52656&r2=52657&view=diff
==============================================================================
--- 
branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c 
[iso-8859-1] (original)
+++ 
branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c 
[iso-8859-1] Tue Jul 12 16:45:52 2011
@@ -58,8 +58,8 @@
     DWORD dwID;
     HANDLE audiothread = NULL;
     char input='\0';
-    printf("ReactOS Audio Mixer Sample Client.Enter 'a' to Stop.\n");
-    //if (clientstream->callbacks.OpenComplete == NULL || 
clientstream->callbacks.BufferCopied == NULL || 
clientstream->callbacks.PlayComplete == NULL) printf("");
+    printf("ReactOS Audio Mixer Sample Client.Enter 'a' to Stop.\nPlease Enter 
the frequency of the sinusoidal wave [Hz] : ");
+       scanf("%ld",&(clientstream.wavefreq));
 
     /*[out]HANDLE * streamhandle,[in] long frequency,[in] int number of 
channels,[in] int bitspersample,[in]ULONG channelmask,[in] int volume,[in] int 
mute,[in] float balance*/
     error = InitStream ( &clientstream ,

Modified: branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl?rev=52657&r1=52656&r2=52657&view=diff
==============================================================================
--- branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl [iso-8859-1] 
(original)
+++ branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl [iso-8859-1] 
Tue Jul 12 16:45:52 2011
@@ -2,7 +2,7 @@
  * Event Log RPC interface definition
  */
 
-#include <ms-dtyp.idl>
+#include <wtypes.idl>
 
 
 cpp_quote("#if !defined(__AUDSRV_H__) ")
@@ -40,5 +40,5 @@
 {
 
     long AUDInitStream([in] handle_t h1,[in]LONG frequency,[in]int 
channels,[in]int bitspersample,[in]int datatype,[in] ULONG channelmask,[in]int 
volume,[in]int mute,[in]float balance);
-    long AUDPlayBuffer([in] handle_t h1,[in]LONG streamid,[in]LONG 
length,[in]LPVOID buffer);
+    long AUDPlayBuffer([in] handle_t h1,[in]LONG streamid,[in]LONG length,[in, 
size_is(length)]char* buffer);
 }

Modified: branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h?rev=52657&r1=52656&r2=52657&view=diff
==============================================================================
--- branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h 
[iso-8859-1] (original)
+++ branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h 
[iso-8859-1] Tue Jul 12 16:45:52 2011
@@ -21,6 +21,9 @@
     int dead;
     HANDLE ClientEventPool[1];
     struct CallBacks callbacks;
+
+    /*Just for the time being when we dont have any audio source*/
+       long wavefreq;
 } ClientStream;
 
 /********************API Functions******************/


Reply via email to