Author: nyadav
Date: Fri Jun  3 21:41:26 2011
New Revision: 52076

URL: http://svn.reactos.org/svn/reactos?rev=52076&view=rev
Log:
[AUDSRV] finish upto actual mixing functions

Added:
    branches/nyadav-audio-branch/base/services/audsrv/mixer.c   (with props)
Modified:
    branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt
    branches/nyadav-audio-branch/base/services/audsrv/audsrv.c
    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/dll/win32/audsrvapi/audsrvapi.spec
    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/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt?rev=52076&r1=52075&r2=52076&view=diff
==============================================================================
--- branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt 
[iso-8859-1] (original)
+++ branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt 
[iso-8859-1] Fri Jun  3 21:41:26 2011
@@ -7,6 +7,7 @@
     audsrv.c
     audsrv.rc
     rpc.c
+       mixer.c
        stream.c)
 
 add_executable(audsrv ${SOURCE})

Modified: branches/nyadav-audio-branch/base/services/audsrv/audsrv.c
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/services/audsrv/audsrv.c?rev=52076&r1=52075&r2=52076&view=diff
==============================================================================
--- branches/nyadav-audio-branch/base/services/audsrv/audsrv.c [iso-8859-1] 
(original)
+++ branches/nyadav-audio-branch/base/services/audsrv/audsrv.c [iso-8859-1] Fri 
Jun  3 21:41:26 2011
@@ -41,6 +41,7 @@
 const GUID KSMEDIUMSETID_Standard               = {0x4747B320L, 0x62CE, 
0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
 const GUID KSDATAFORMAT_TYPE_AUDIO              = {0x73647561L, 0x0000, 
0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
 const GUID KSDATAFORMAT_SUBTYPE_PCM             = {0x00000001L, 0x0000, 
0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
+const GUID KSDATAFORMAT_SUBTYPE_IEEE_FLOAT      = {0x00000003L, 0x0000, 
0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
 const GUID KSDATAFORMAT_SPECIFIER_WAVEFORMATEX  = {0x05589f81L, 0xc356, 
0x11ce, {0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}};
 
 MixerEngine engine,*pengine;
@@ -152,24 +153,31 @@
 
 
 
-
-void fill(MixerEngine * mixer,int buffer)
-{
-       DWORD Length;
-       UINT i = 0;
-Sleep(100);
-       Length = mixer->masterfreq * mixer->masterchannels * 
mixer->masterbitspersample / 8;
-       mixer->masterbuf[buffer] = (PSHORT)HeapAlloc(GetProcessHeap(), 0, 
Length);
-    while (i < Length / 2)
-    {
-        mixer->masterbuf[buffer][i] = 0x7FFF * sin(0.5 * (i - 1) * 500 * _2pi 
/ 48000);
-        i++;
-        mixer->masterbuf[buffer][i] = 0x7FFF * sin(0.5 * (i - 2) * 500 * _2pi 
/ 48000);
-        i++;
-    }
-       mixer->bytes_to_play = Length;
-}
-
+void mixandfill(MixerEngine * mixer,int buffer)
+{
+       while(WaitForSingleObject(mixer->streampresent,100)!=0){if(mixer->dead) 
return;} /*Check if there is at least one stream present.*/
+       if(mixer->masterdatatype == 0)/*signed int*/
+       {
+               if(mixer->masterbitspersample == 8)mixs8(mixer,buffer);else 
if(mixer->masterbitspersample == 16) mixs16(mixer,buffer);else 
if(mixer->masterbitspersample == 32) mixs32(mixer,buffer);else 
if(mixer->masterbitspersample == 64) mixs64(mixer,buffer);
+       }
+       else if (mixer->masterdatatype == 1)/*unsigned int*/
+       {
+               if(mixer->masterbitspersample == 8)mixu8(mixer,buffer);else 
if(mixer->masterbitspersample == 16) mixu16(mixer,buffer);else 
if(mixer->masterbitspersample == 32) mixu32(mixer,buffer);else 
if(mixer->masterbitspersample == 64) mixu64(mixer,buffer);
+       }
+       else if(mixer->masterdatatype == 2)/*Float*/
+       {
+               if(mixer->masterbitspersample == 32)mixfl32(mixer,buffer);else 
if(mixer->masterbitspersample == 64) mixfl64(mixer,buffer);
+       }
+
+       mixer->masterbuf[buffer] = HeapAlloc(GetProcessHeap(), 0, 
mixer->serverstreamlist->length_filtered);
+       
CopyMemory(mixer->masterbuf[buffer],mixer->serverstreamlist->filteredbuf,mixer->serverstreamlist->length_filtered);
+       mixer->bytes_to_play = mixer->serverstreamlist->length_filtered;
+}
+void freebuffer()
+{
+       HeapFree(GetProcessHeap(), 0, pengine->masterbuf[pengine->playcurrent]);
+       pengine->masterbuf[pengine->playcurrent] = NULL;
+}
 void playbuffer(MixerEngine * mixer,int buffer)
 {
        SP_DEVICE_INTERFACE_DATA InterfaceData;
@@ -276,7 +284,10 @@
     DataFormat->Flags = 0;
     DataFormat->Reserved = 0;
     DataFormat->MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
-    DataFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
+       if(mixer->masterdatatype == 0 || mixer->masterdatatype == 1)
+               DataFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
+       else
+               DataFormat->SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT;
     DataFormat->Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
     DataFormat->SampleSize = mixer->masterchannels * 
mixer->masterbitspersample / 8;
     DataFormat->FormatSize = sizeof(KSDATAFORMAT) + 
sizeof(WAVEFORMATEXTENSIBLE);
@@ -290,9 +301,11 @@
     WaveFormat->Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - 
sizeof(WAVEFORMATEX);
        WaveFormat->dwChannelMask = mixer->masterchannelmask;
     WaveFormat->Samples.wValidBitsPerSample = mixer->masterbitspersample;
-    WaveFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
-
-    //printf("Creating pin\n");
+       if(mixer->masterdatatype == 0 || mixer->masterdatatype == 1)
+               WaveFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
+       else
+               WaveFormat->SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT;
+
 
        //
     // Create the pin
@@ -367,12 +380,9 @@
        SetEvent(mixer->played);
        while(1)
        {
-       
while(WaitForSingleObject(mixer->streampresent,100)!=0){if(mixer->dead)goto 
DEAD;} /*Check if there is at least one stream present.*/
-
        while(WaitForSingleObject(mixer->played,100)!=0){if(mixer->dead)goto 
DEAD;}
-       fill(mixer,1-mixer->playcurrent);
+       mixandfill(mixer,1-mixer->playcurrent);
        SetEvent(mixer->filled);
-
        }
 DEAD:
        printf("\nMixer Thread Ended\n");
@@ -386,7 +396,7 @@
                
while(WaitForSingleObject(mixer->filled,100)!=0){if(mixer->dead)goto DEAD;}
                SetEvent(mixer->played);
                playbuffer(mixer,mixer->playcurrent);
-
+               freebuffer();
                mixer->playcurrent=1-mixer->playcurrent;
        }
 
@@ -468,6 +478,7 @@
        pengine->mute=FALSE;
 
        pengine->dead=0;
+       pengine->streamidpool=0;
        pengine->playcurrent=1;
        pengine->masterbuf[0] = NULL;
        pengine->masterbuf[1] = NULL;
@@ -501,6 +512,7 @@
        pengine->mute=FALSE;
 
        pengine->dead=0;
+       pengine->streamidpool=0;
        pengine->playcurrent=1;
        pengine->masterbuf[0] = NULL;
        pengine->masterbuf[1] = NULL;

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=52076&r1=52075&r2=52076&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] Fri 
Jun  3 21:41:26 2011
@@ -29,15 +29,24 @@
 
 typedef struct ServerStream
 {
+       long streamid;
        int volume;
        LONG freq;
        int bitspersample;
+       int datatype;  /*0=signed int,1=unsigned int,2=float*/
        int channels;
        ULONG channelmask;
        HANDLE played;
-       HANDLE streamready;
+       HANDLE threadready;
        HANDLE thread;
        float balance;
+       BOOL ready;
+       PVOID genuinebuf;
+       int length_genuine;
+       PVOID filteredbuf;
+       int length_filtered;
+       PVOID minsamplevalue;
+       PVOID maxsamplevalue;
        struct ServerStream * next;
 } ServerStream;
 
@@ -45,6 +54,7 @@
 {
 /*Should be Initialized at Server Start*/
        char dead;
+       long streamidpool;
        HANDLE played;
        HANDLE filled;
        HANDLE streampresent;
@@ -60,7 +70,8 @@
        int masterchannels;
        unsigned long masterchannelmask;
        int masterbitspersample;
-       PSHORT masterbuf[2];
+       int masterdatatype;
+       PVOID masterbuf[2];
 /*Currently don't know the future of following variables*/
        long bytes_to_play;
        HANDLE FilterHandle;
@@ -75,10 +86,22 @@
 /* rpc.c */
 DWORD WINAPI RunRPCThread(LPVOID lpParameter);
 /* audsrv.c*/
-void fill(MixerEngine * mixer,int buffer);
+void mixandfill(MixerEngine * mixer,int buffer);
 void playbuffer(MixerEngine * mixer,int buffer);
 /*stream.c*/
-HANDLE addstream(LONG frequency,int channels,int bitspersample, ULONG 
channelmask,int volume,int mute,float balance);
+long getnewstreamid();
+long addstream(LONG frequency,int channels,int bitspersample,int datatype, 
ULONG channelmask,int volume,int mute,float balance);
+/*mixer.c*/
+void * mixs8(MixerEngine * mixer,int buffer);
+void * mixs16(MixerEngine * mixer,int buffer);
+void * mixs32(MixerEngine * mixer,int buffer);
+void * mixs64(MixerEngine * mixer,int buffer);
+void * mixu8(MixerEngine * mixer,int buffer);
+void * mixu16(MixerEngine * mixer,int buffer);
+void * mixu32(MixerEngine * mixer,int buffer);
+void * mixu64(MixerEngine * mixer,int buffer);
+void * mixfl32(MixerEngine * mixer,int buffer);
+void * mixfl64(MixerEngine * mixer,int buffer);
 /********************************/
 
 #endif  /* __AUDSRV_H__ */

Added: 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=52076&view=auto
==============================================================================
--- branches/nyadav-audio-branch/base/services/audsrv/mixer.c (added)
+++ branches/nyadav-audio-branch/base/services/audsrv/mixer.c [iso-8859-1] Fri 
Jun  3 21:41:26 2011
@@ -1,0 +1,35 @@
+
+#include "audsrv.h"
+void * mixs8(MixerEngine * mixer,int buffer)
+{
+}
+void * mixs16(MixerEngine * mixer,int buffer)
+{
+       mixer->masterbuf[buffer] = HeapAlloc(GetProcessHeap(), 0, 
mixer->serverstreamlist->length_filtered);
+       
CopyMemory(mixer->masterbuf[buffer],mixer->serverstreamlist->filteredbuf,mixer->serverstreamlist->length_filtered);
+       mixer->bytes_to_play = mixer->serverstreamlist->length_filtered;
+}
+void * mixs32(MixerEngine * mixer,int buffer)
+{
+}
+void * mixs64(MixerEngine * mixer,int buffer)
+{
+}
+void * mixu8(MixerEngine * mixer,int buffer)
+{
+}
+void * mixu16(MixerEngine * mixer,int buffer)
+{
+}
+void * mixu32(MixerEngine * mixer,int buffer)
+{
+}
+void * mixu64(MixerEngine * mixer,int buffer)
+{
+}
+void * mixfl32(MixerEngine * mixer,int buffer)
+{
+}
+void * mixfl64(MixerEngine * mixer,int buffer)
+{
+}

Propchange: branches/nyadav-audio-branch/base/services/audsrv/mixer.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: branches/nyadav-audio-branch/base/services/audsrv/mixer.c
------------------------------------------------------------------------------
    svn:mime-type = text/plain

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=52076&r1=52075&r2=52076&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] Fri 
Jun  3 21:41:26 2011
@@ -45,13 +45,13 @@
 
 /*************************RPC Functions**********************************/
 
-int AUDInitStream(     IN RPC_BINDING_HANDLE hBinding,LONG frequency,int 
channels,int bitspersample, ULONG channelmask,int volume,int mute,float balance)
+long AUDInitStream(    IN RPC_BINDING_HANDLE hBinding,LONG frequency,int 
channels,int bitspersample,int datatype, ULONG channelmask,int volume,int 
mute,float balance)
 {
-       HANDLE stream;
-       printf("Client Connected and Initiated Stream Freq: %ld,Channle: 
%d,Bitspersample: %d,Mask: %ld,Volume: %d,Mute: %d,Balance: 
%f\n",frequency,channels,bitspersample,channelmask,volume,mute,balance);
-       stream = 
addstream(frequency,channels,bitspersample,channelmask,volume,mute,balance);
-       if( stream == NULL ){return 0;}else{printf("Stream added\n");}
-    return (int)stream;
+       long stream;
+       printf("Client Connected and Initiated Stream Freq: %ld,Channle: 
%d,Bitspersample: %d,Datatype: %d,Mask: %ld,Volume: %d,Mute: %d,Balance: 
%f\n",frequency,channels,bitspersample,datatype,channelmask,volume,mute,balance);
+       stream = 
addstream(frequency,channels,bitspersample,datatype,channelmask,volume,mute,balance);
+       if( stream != 0 ){printf("Stream added\n");}
+    return stream;
 }
 /*************************************************************************/
 void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len)

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=52076&r1=52075&r2=52076&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] Fri 
Jun  3 21:41:26 2011
@@ -1,17 +1,40 @@
 #include "audsrv.h"
 
+long getnewstreamid()
+{
+       long streamid= pengine->streamidpool;
+       pengine->streamidpool+=1;
+       return streamid;
+}
 DWORD WINAPI RunStreamThread(LPVOID param)
 {
+       UINT i = 0;
        ServerStream * localstream = (ServerStream *) param;
 
-       SetEvent(localstream->streamready);
+
        printf("Signaling Mixer Thread For First Stream\n");
-       SetEvent(pengine->streampresent);
+/*HACK fill filtered buffer (1 second duration in the master stream format) 
directly until we are in a condition to get buffer directly from the client*/
+/******************************************************/
+PSHORT tempbuf;
+localstream->ready =TRUE;
+localstream->length_filtered = localstream->freq * localstream->channels * 
localstream->bitspersample / 8;
+tempbuf = (PSHORT)HeapAlloc(GetProcessHeap(), 0, localstream->length_filtered);
+    while (i < localstream->length_filtered / 2)
+    {
+        tempbuf[i] = 0x7FFF * sin(0.5 * (i - 1) * 500 * 6.28 / 48000);
+        i++;
+        tempbuf[i] = 0x7FFF * sin(0.5 * (i - 2) * 500 * 6.28 / 48000);
+        i++;
+    }
+localstream->filteredbuf = tempbuf;
+/******************************************************/
+       SetEvent(localstream->threadready);
+
        while (1){OutputDebugStringA("Stream Thread Running.");Sleep(100);};
        /*Clean Stream's data*/
 }
 
-HANDLE addstream(LONG frequency,int channels,int bitspersample, ULONG 
channelmask,int volume,int mute,float balance)
+long addstream(LONG frequency,int channels,int bitspersample,int datatype, 
ULONG channelmask,int volume,int mute,float balance)
 {
        ServerStream * newstream,*localstream;
        DWORD dwID;
@@ -23,37 +46,56 @@
        if(volume < 0) {newstream->volume = 0;}else if (volume > 1000) 
{newstream->volume = 1000;}else {newstream->volume = volume;}
        if(volume < -1.0) {newstream->volume = -1.0;}else if (volume > 1.0) 
{newstream->volume = 1.0;}else {newstream->volume = volume;}
        newstream->freq = frequency;  /*TODO frequency validation required*/
+       if(datatype==0 || datatype==1 || 
datatype==2){newstream->datatype=datatype;}else goto error;
+       if      ((datatype==0 && (bitspersample == 8 || bitspersample == 16 || 
bitspersample == 32 || bitspersample == 64 )) ||
+               (datatype==1 && (bitspersample == 8 || bitspersample == 16 || 
bitspersample == 32 || bitspersample == 64)) ||
+               (datatype==2 && (bitspersample == 32 || bitspersample == 64)) )
        newstream->bitspersample = bitspersample; /*TODO bitspersample 
validation*/
+       else goto error;
+
        newstream->channels = channels; /*TODO validation*/
        newstream->channelmask = channelmask; /*TODO validation*/
 
+       newstream->ready = FALSE;
+       newstream->length_genuine = 0;
+       newstream->genuinebuf = NULL;
+       newstream->length_filtered = 0;
+       newstream->filteredbuf = NULL;
+       newstream->minsamplevalue = NULL;
+       newstream->maxsamplevalue = NULL;
+       
        newstream->next = NULL;
        newstream->played = CreateEvent(NULL,FALSE,FALSE,NULL);
-       newstream->streamready = CreateEvent(NULL,FALSE,FALSE,NULL);
+       newstream->threadready = CreateEvent(NULL,FALSE,FALSE,NULL);
 
-       if(newstream->played == NULL || newstream->streamready == NULL) {goto 
error;}
+       if(newstream->played == NULL || newstream->threadready == NULL) {goto 
error;}
        
newstream->thread=CreateThread(NULL,0,RunStreamThread,newstream,0,&dwID);
        if(newstream->thread == NULL) {goto error;}
 
-       WaitForSingleObject(newstream->streamready,INFINITE);
 
+       WaitForSingleObject(newstream->threadready,INFINITE);
+
+       newstream->streamid=getnewstreamid();
        if(localstream == NULL)
        {
-       pengine->serverstreamlist = localstream;
+       pengine->serverstreamlist = newstream;
 
        pengine->masterfreq=frequency;
        pengine->masterchannels=channels;
        pengine->masterchannelmask=channelmask;
        pengine->masterbitspersample=bitspersample;
+       pengine->masterdatatype = datatype;
        }
        else
        {
                while(localstream->next != NULL){localstream = 
localstream->next;}
                localstream->next = newstream;
        }
-       return newstream->thread;
+       SetEvent(pengine->streampresent);
+       return newstream->streamid;
 
 error:
+       printf("Stream Rejected \n");
        HeapFree(GetProcessHeap(), 0, newstream);
-       return NULL;
+       return 0;
 }

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=52076&r1=52075&r2=52076&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] 
Fri Jun  3 21:41:26 2011
@@ -5,9 +5,9 @@
 /*Initialize an audio stream
  *Return -1 if callbacks are NULL pointers
  */
-WINAPI int initstream (ClientStream * clientstream,LONG frequency,int 
channels,int bitspersample, ULONG channelmask,int volume,int mute,float balance)
+WINAPI int initstream (ClientStream * clientstream,LONG frequency,int 
channels,int bitspersample,int datatype, ULONG channelmask,int volume,int 
mute,float balance)
 {
-       int streamid;
+       long streamid;
        if (clientstream == NULL ) return -1;
        if (clientstream->callbacks.OpenComplete == NULL || 
clientstream->callbacks.BufferCopied == NULL || 
clientstream->callbacks.PlayComplete == NULL) return -2;
        /*Validity of all other data will be checked at server*/
@@ -16,8 +16,9 @@
 
        RpcTryExcept  
     {
-               streamid = AUDInitStream 
(audsrv_v0_0_c_ifspec,frequency,channels,bitspersample,channelmask,volume,mute,balance);
-               printf("AUDInitStream Returned %d",streamid);
+               streamid = AUDInitStream 
(audsrv_v0_0_c_ifspec,frequency,channels,bitspersample,datatype,channelmask,volume,mute,balance);
+               printf("AUDInitStream Returned %ld",streamid);
+               if(streamid != 0) {clientstream->stream = streamid;}
     }
     RpcExcept(1)
     {
@@ -28,8 +29,6 @@
 
        /*Analyse the return by the function*/
        /*Currently Suppose the return is 0 and a valid streamid is returned*/
-       clientstream->stream = &status;
-
        clientstream->ClientEventPool[0]=CreateEvent(NULL,FALSE,FALSE,NULL);
        clientstream->dead = 0;
 

Modified: branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec
URL: 
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec?rev=52076&r1=52075&r2=52076&view=diff
==============================================================================
--- branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec 
[iso-8859-1] (original)
+++ branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec 
[iso-8859-1] Fri Jun  3 21:41:26 2011
@@ -1,4 +1,4 @@
-@ stdcall initstream (ptr long long long long long long long)
+@ stdcall initstream (ptr long long long long long long long long)
 @ stdcall playaudio ( ptr);
 @ stdcall stopaudio (ptr );
 @ stdcall Volume(ptr ptr );

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=52076&r1=52075&r2=52076&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] Fri Jun  3 21:41:26 2011
@@ -8,7 +8,7 @@
 void buffercopied (int error );
 void playcomplete (int error );
 
-ClientStream clientstream = 
{NULL,0,{NULL},{opencomplete,buffercopied,playcomplete}};/*This initialization 
should not be necessary for a typical client*/
+ClientStream clientstream = 
{0,0,{NULL},{opencomplete,buffercopied,playcomplete}};/*This initialization 
should not be necessary for a typical client*/
 
 DWORD WINAPI RunAudioThread(LPVOID param)
 {
@@ -39,12 +39,12 @@
        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("");
-       error = initstream ( &clientstream , 44100 , 2 , 16 , 
KSAUDIO_SPEAKER_STEREO , 1000 , 0, 0.0 ); /*[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 , 44100 , 2 , 16 ,0, 
KSAUDIO_SPEAKER_STEREO , 1000 , 0, 0.0 ); /*[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*/
        if ( error )
                printf("Failed to Initialize Stream.Error %d\n", error);
        else
        {
-               printf("StreamID : %d\n",*((int *)clientstream.stream));
+               printf("StreamID : %ld\n",clientstream.stream);
                audiothread = 
CreateThread(NULL,0,RunAudioThread,&clientstream,0,&dwID);
        }
        while ( input != 'a' )

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=52076&r1=52075&r2=52076&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] 
Fri Jun  3 21:41:26 2011
@@ -39,6 +39,6 @@
 interface audsrv
 {
 
-    int AUDInitStream([in] handle_t h1,[in]LONG frequency,[in]int 
channels,[in]int bitspersample,[in] ULONG channelmask,[in]int volume,[in]int 
mute,[in]float balance);
+    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);
 
 }

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=52076&r1=52075&r2=52076&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] Fri Jun  3 21:41:26 2011
@@ -17,14 +17,14 @@
 
 typedef struct ClientStream
 {
-HANDLE stream;
+long stream;
 int dead;
 HANDLE ClientEventPool[1];  //0]th event is for Activescheduler
 struct CallBacks callbacks;
 } ClientStream;
 
 /********************API Functions******************/
-WINAPI int initstream (ClientStream * clientstream,LONG frequency,int 
channels,int bitspersample, ULONG channelmask,int volume,int mute,float 
balance);
+WINAPI int initstream (ClientStream * clientstream,LONG frequency,int 
channels,int bitspersample,int datatype, ULONG channelmask,int volume,int 
mute,float balance);
 WINAPI int playaudio ( ClientStream * clientstream);
 WINAPI int stopaudio (ClientStream * clientstream );
 WINAPI int Volume(ClientStream * clientstream, int * volume );


Reply via email to