[ros-diffs] [janderwald] 41996: - Don't hardcode the sound kernel buffersize and maximum buffer count and make it possible to override it because kernel streaming pins have specific frame size requirements. - See KSALLOCATOR_FRAMING struct

janderwald at svn.reactos.org janderwald at svn.reactos.org
Fri Jul 17 11:24:11 CEST 2009


Author: janderwald
Date: Fri Jul 17 11:24:11 2009
New Revision: 41996

URL: http://svn.reactos.org/svn/reactos?rev=41996&view=rev
Log:
- Don't hardcode the sound kernel buffersize and maximum buffer count and make it possible to override it because kernel streaming pins have specific frame size requirements.
- See KSALLOCATOR_FRAMING struct

Modified:
    trunk/reactos/lib/drivers/sound/mmebuddy/deviceinstance.c
    trunk/reactos/lib/drivers/sound/mmebuddy/wave/streaming.c

Modified: trunk/reactos/lib/drivers/sound/mmebuddy/deviceinstance.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/sound/mmebuddy/deviceinstance.c?rev=41996&r1=41995&r2=41996&view=diff
==============================================================================
--- trunk/reactos/lib/drivers/sound/mmebuddy/deviceinstance.c [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/sound/mmebuddy/deviceinstance.c [iso-8859-1] Fri Jul 17 11:24:11 2009
@@ -13,6 +13,13 @@
 #include <mmddk.h>
 #include <mmebuddy.h>
 
+/*
+    Restrain ourselves from flooding the kernel device!
+*/
+
+#define SOUND_KERNEL_BUFFER_COUNT       10
+#define SOUND_KERNEL_BUFFER_SIZE        16384
+
 MMRESULT
 AllocateSoundDeviceInstance(
     OUT PSOUND_DEVICE_INSTANCE* SoundDeviceInstance)
@@ -26,6 +33,11 @@
 
     if ( ! NewInstance )
         return MMSYSERR_NOMEM;
+
+    /* Use default frame size */
+    NewInstance->FrameSize = SOUND_KERNEL_BUFFER_SIZE;
+    /* Use default buffer count */
+    NewInstance->BufferCount = SOUND_KERNEL_BUFFER_COUNT;
 
     /* Provide the caller with the new instance pointer */
     *SoundDeviceInstance = NewInstance;

Modified: trunk/reactos/lib/drivers/sound/mmebuddy/wave/streaming.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/sound/mmebuddy/wave/streaming.c?rev=41996&r1=41995&r2=41996&view=diff
==============================================================================
--- trunk/reactos/lib/drivers/sound/mmebuddy/wave/streaming.c [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/sound/mmebuddy/wave/streaming.c [iso-8859-1] Fri Jul 17 11:24:11 2009
@@ -17,14 +17,6 @@
 
 
 /*
-    Restrain ourselves from flooding the kernel device!
-*/
-
-#define SOUND_KERNEL_BUFFER_COUNT       10
-#define SOUND_KERNEL_BUFFER_SIZE        16384
-
-
-/*
     DoWaveStreaming
         Check if there is streaming to be done, and if so, do it.
 */
@@ -52,7 +44,7 @@
     SND_ASSERT( FunctionTable->CommitWaveBuffer );
 
     /* No point in doing anything if no resources available to use */
-    if ( SoundDeviceInstance->OutstandingBuffers >= SOUND_KERNEL_BUFFER_COUNT )
+    if ( SoundDeviceInstance->OutstandingBuffers >= SoundDeviceInstance->BufferCount )
     {
         SND_TRACE(L"DoWaveStreaming: No available buffers to stream with - doing nothing\n");
         return;
@@ -67,7 +59,7 @@
         return;
     }
 
-    while ( ( SoundDeviceInstance->OutstandingBuffers < SOUND_KERNEL_BUFFER_COUNT ) &&
+    while ( ( SoundDeviceInstance->OutstandingBuffers < SoundDeviceInstance->BufferCount ) &&
             ( Header ) )
     {
         HeaderExtension = (PWAVEHDR_EXTENSION) Header->reserved;
@@ -98,8 +90,8 @@
             BytesRemaining = Header->dwBufferLength - HeaderExtension->BytesCommitted;
 
             /* We can commit anything up to the buffer size limit */
-            BytesToCommit = BytesRemaining > SOUND_KERNEL_BUFFER_SIZE ?
-                            SOUND_KERNEL_BUFFER_SIZE :
+            BytesToCommit = BytesRemaining > SoundDeviceInstance->FrameSize ?
+                            SoundDeviceInstance->FrameSize :
                             BytesRemaining;
 
             /* Should always have something to commit by this point */



More information about the Ros-diffs mailing list