Author: janderwald
Date: Fri Nov  4 18:07:44 2016
New Revision: 73124

URL: http://svn.reactos.org/svn/reactos?rev=73124&view=rev
Log:
[USBAUDIO]
- fix buffer calculation for usb headsets
- usb headsets now partially work with usbaudio in win2k3

Modified:
    trunk/reactos/drivers/usb/usbaudio/pin.c
    trunk/reactos/drivers/usb/usbaudio/usbaudio.h

Modified: trunk/reactos/drivers/usb/usbaudio/pin.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/usbaudio/pin.c?rev=73124&r1=73123&r2=73124&view=diff
==============================================================================
--- trunk/reactos/drivers/usb/usbaudio/pin.c    [iso-8859-1] (original)
+++ trunk/reactos/drivers/usb/usbaudio/pin.c    [iso-8859-1] Fri Nov  4 
18:07:44 2016
@@ -874,6 +874,7 @@
     IoSetCompletionRoutine(Irp, UsbAudioRenderComplete, Pin, TRUE, TRUE, TRUE);
 
     /* calculate packet count */
+    /* FIXME support various sample rates */
     WaveFormatEx = (PKSDATAFORMAT_WAVEFORMATEX)Pin->ConnectionFormat;
     TotalPacketSize = WaveFormatEx->WaveFormatEx.nAvgBytesPerSec / 1000;
     ASSERT(TotalPacketSize <= 
PinContext->DeviceExtension->InterfaceInfo->Pipes[0].MaximumPacketSize);
@@ -882,8 +883,6 @@
     PacketCount = CloneStreamPointer->OffsetIn.Remaining / TotalPacketSize;
 
     ASSERT(PacketCount < 255);
-
-    //DPRINT1("PinRenderProcess Irp %p TotalPacketSize %lu MaximumPacketSize 
%lu PacketCount %lu Count %lu Data %p\n", Irp, TotalPacketSize, 
PinContext->DeviceExtension->InterfaceInfo->Pipes[0].MaximumPacketSize, 
PacketCount, CloneStreamPointer->OffsetIn.Count, 
CloneStreamPointer->OffsetIn.Data);
 
     Urb = (PURB)AllocFunction(GET_ISO_URB_SIZE(PacketCount));
     ASSERT(Urb);
@@ -893,8 +892,8 @@
     Urb->UrbIsochronousTransfer.Hdr.Length = GET_ISO_URB_SIZE(PacketCount);
     Urb->UrbIsochronousTransfer.PipeHandle = 
PinContext->DeviceExtension->InterfaceInfo->Pipes[0].PipeHandle;
     Urb->UrbIsochronousTransfer.TransferFlags = USBD_TRANSFER_DIRECTION_OUT | 
USBD_START_ISO_TRANSFER_ASAP;
-    Urb->UrbIsochronousTransfer.TransferBufferLength = 
CloneStreamPointer->OffsetIn.Remaining;
-    Urb->UrbIsochronousTransfer.TransferBuffer = 
CloneStreamPointer->OffsetIn.Data;
+    Urb->UrbIsochronousTransfer.TransferBufferLength = PacketCount * 
TotalPacketSize;
+    Urb->UrbIsochronousTransfer.TransferBuffer = 
CloneStreamPointer->StreamHeader->Data;
     Urb->UrbIsochronousTransfer.NumberOfPackets = PacketCount;
     Urb->UrbIsochronousTransfer.StartFrame = 0;
 

Modified: trunk/reactos/drivers/usb/usbaudio/usbaudio.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/usbaudio/usbaudio.h?rev=73124&r1=73123&r2=73124&view=diff
==============================================================================
--- trunk/reactos/drivers/usb/usbaudio/usbaudio.h       [iso-8859-1] (original)
+++ trunk/reactos/drivers/usb/usbaudio/usbaudio.h       [iso-8859-1] Fri Nov  4 
18:07:44 2016
@@ -205,6 +205,7 @@
     PKSWORKER        CaptureWorker;                              /* capture 
worker */
     WORK_QUEUE_ITEM  StarvationWorkItem;                            /* work 
item */
     PKSWORKER        StarvationWorker;                              /* capture 
worker */
+       ULONG BufferOffset;
 }PIN_CONTEXT, *PPIN_CONTEXT;
 
 /* filter.c */


Reply via email to