You can transfer smaller chunks and everything will still work. In our driver we copy the driver buffer size chunk (chunk size: 64 samples, 128, 256,...) and advance the stream pointer everything else is done by the ks driver. //Advance buffer. if ( pChannelInfo->type == CHANNEL_TYPE_OUT ) { KsStreamPointerAdvanceOffsetsAndUnlock( streamPointer, advanceOffset_bytes, 0, FALSE ); } else { KsStreamPointerAdvanceOffsetsAndUnlock( streamPointer, 0, advanceOffset_bytes, FALSE ); } All your increase stuff is useless it's done by the KsStreamPointerAdvanceOffsetsAndUnlock procedure and more it's probably even faulty( StreamPointer -> StreamHeader -> DataUsed += TransferSize;). Waldemar w> I have written an AVStreams capture driver. w> I am experiencing a clunky, blocky display in audio applications that provide visual metering of the audio signal. Upon closer inspection, in Soundforge, If I set the "Status Format" to w> "samples", and record, the "time recorded" field on the record window increments by ~12k samples (48kBytes). Other audio cards increment by MUCH smaller amounts. I notice that w> 12k*2channels*2bytes is about one AVSream queue's worth of data (6 * 8192k frames). w> I am KsEditing the Allocator structure to allow selection of frame size, but in this instance, 6, 8k frames were alloc'd. w> I am completing the frames with the following code: w> .... transfer the data to the StreamPointerBuffer w> StreamPointer -> StreamHeader -> DataUsed += TransferSize; w> Pin->audioPosition.WriteOffset += TransferSize; w> // Now figure the duration w> StreamPointer -> StreamHeader ->OptionsFlags = (KSSTREAM_HEADER_OPTIONSF_DURATIONVALID); w> StreamPointer -> StreamHeader->PresentationTime.Numerator = Pin->kstimeNumer; w> StreamPointer -> StreamHeader->PresentationTime.Denominator = Pin->kstimeDenom; w> StreamPointer -> StreamHeader->Duration = (TransferSize); w> if (STATUS_DEVICE_NOT_READY == (status=KsStreamPointerAdvanceOffsets (StreamPointer,0,StreamPointer->OffsetOut.Remaining,FALSE))) w> { w> status = STATUS_PENDING; w> } w> else w> { w> status = STATUS_SUCCESS; w> // KsStreamPointerUnlock(StreamPointer,FALSE/*(!Pin->streamRunning)*/); w> } w> . w> . w> . w> break; w> return status; w> Any ideas? w> --------------------------------- w> Do you Yahoo!? w> Protect your identity with Yahoo! Mail AddressGuard ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.de/