[wdmaudiodev] Does DRV_QUERYDEVICEINTERFACE work?

  • From: "Jeff Pages" <jeff@xxxxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 13 Nov 2003 16:29:20 +1100

I'm trying to use DRV_QUERYDEVICEINTERFACESIZE and DRV_QUERYDEVICEINTERFACE in 
a call to waveInMessage, as per the documentation in the current DDK under 
"Obtaining a Device Interface Name", but waveInMessage returns 
MMSYSERR_NOTSUPPORTED. This happens on both Windows 2000 (SP4) and Windows XP 
(SP1).

Has anyone managed to get these calls to work?

Jeff Pages
Innes Corporation Pty Ltd
  ----- Original Message ----- 
  From: wade 
  To: wdmaudiodev@xxxxxxxxxxxxx 
  Sent: Thursday, November 13, 2003 5:48 AM
  Subject: [wdmaudiodev] Blocky looking metering in SoundForge


  I have written an AVStreams capture driver.

  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 "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 12k*2channels*2bytes is 
about one AVSream queue's worth of data (6 * 8192k frames).  
  I am KsEditing the Allocator structure to allow selection of frame size, but 
in this instance, 6, 8k frames were alloc'd.

  I am completing the frames with the following code:

  .... transfer the data to the StreamPointerBuffer
   StreamPointer -> StreamHeader -> DataUsed += TransferSize;
   Pin->audioPosition.WriteOffset += TransferSize;

    // Now figure the duration 
     StreamPointer -> StreamHeader ->OptionsFlags = 
(KSSTREAM_HEADER_OPTIONSF_DURATIONVALID);
     StreamPointer -> StreamHeader->PresentationTime.Numerator = 
Pin->kstimeNumer;
     StreamPointer -> StreamHeader->PresentationTime.Denominator = 
Pin->kstimeDenom;
     StreamPointer -> StreamHeader->Duration = (TransferSize);

     if (STATUS_DEVICE_NOT_READY == (status=KsStreamPointerAdvanceOffsets 
(StreamPointer,0,StreamPointer->OffsetOut.Remaining,FALSE)))
     {
         status = STATUS_PENDING;
     }
     else
     {
      status = STATUS_SUCCESS;
   //   KsStreamPointerUnlock(StreamPointer,FALSE/*(!Pin->streamRunning)*/);
     }
  .
  .
  .
     break;
  return status;

  Any ideas?



------------------------------------------------------------------------------
  Do you Yahoo!?
  Protect your identity with Yahoo! Mail AddressGuard

Other related posts: