[wdmaudiodev] Re: Does DRV_QUERYDEVICEINTERFACE work?

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

If I may answer my own question, I've just got it to work by using a DeviceID 
number instead of a handle for the hwi parameter in waveInMessage. This in 
spite of the SDK documentation for waveInMessage saying that hwi is a "handle 
to the waveform-audio input device" and the DDK documentation saying it should 
work with either. Agh!!

Jeff
  ----- Original Message ----- 
  From: Jeff Pages

   
  To: wdmaudiodev@xxxxxxxxxxxxx 
  Sent: Thursday, November 13, 2003 4:29 PM
  Subject: [wdmaudiodev] Does DRV_QUERYDEVICEINTERFACE work?


  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: