[wdmaudiodev] Re: How to make Recording icons not appear for a device in the Sound panel

  • From: "Paul Titchener" <pt@xxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Sun, 29 Jul 2012 18:50:46 -0700

Robert, thanks for the suggestion on modifying my wavetable.h file.

I know its been a while, I had to table this issue to complete some other work, but what I trying to do is modify the "pcmex" example I started with from the MS msvad examples so that it can only offer playback, not recording.

Currently the recording icons still show up in the Sound panel so I'm trying to figure out how to make them not appear there.

Following your suggestions in your last email, I'm trying to modify the wavetable.h file. What I've tried so far is shown below but I'll have to admit I'm flying blind, I don't have any experience with modifications of this file and the only documentation I can find from MS on this is very vague.

After making the mods below now nothing shows up in the Sound panel, although the driver does appear in the Device Manager.

Any suggestions on what I'm doing wrong (which was just commenting some sections out), or does some other file also need modifications?

Thanks,

Paul T.

#ifndef _MSVAD_WAVTABLE_H_
#define _MSVAD_WAVTABLE_H_

//=============================================================================
static
KSDATARANGE_AUDIO PinDataRangesStream[] =
{
   {
       {
           sizeof(KSDATARANGE_AUDIO),
           0,
           0,
           0,
           STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
           STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM),
           STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
       },
       MAX_CHANNELS_PCM,
       MIN_BITS_PER_SAMPLE_PCM,
       MAX_BITS_PER_SAMPLE_PCM,
       MIN_SAMPLE_RATE,
       MAX_SAMPLE_RATE
   },
};

static
PKSDATARANGE PinDataRangePointersStream[] =
{
   PKSDATARANGE(&PinDataRangesStream[0])
};

//=============================================================================
static
KSDATARANGE PinDataRangesBridge[] =
{
   {
       sizeof(KSDATARANGE),
       0,
       0,
       0,
       STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
       STATICGUIDOF(KSDATAFORMAT_SUBTYPE_ANALOG),
       STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE)
   }
};

static
PKSDATARANGE PinDataRangePointersBridge[] =
{
   &PinDataRangesBridge[0]
};

//=============================================================================
static
PCPIN_DESCRIPTOR MiniportPins[] =
{
   // Wave In Streaming Pin (Capture) KSPIN_WAVE_CAPTURE_SINK
   /* Commented out unwanted ADC pins
   {
       MAX_OUTPUT_STREAMS,
       MAX_OUTPUT_STREAMS,
       0,
       NULL,
       {
           0,
           NULL,
           0,
           NULL,
           SIZEOF_ARRAY(PinDataRangePointersStream),
           PinDataRangePointersStream,
           KSPIN_DATAFLOW_OUT,
           KSPIN_COMMUNICATION_SINK,
           &KSCATEGORY_AUDIO,
           &KSAUDFNAME_RECORDING_CONTROL,
           0
       }
   },

// Wave In Bridge Pin (Capture - From Topology) KSPIN_WAVE_CAPTURE_SOURCE
   {
       0,
       0,
       0,
       NULL,
       {
           0,
           NULL,
           0,
           NULL,
           SIZEOF_ARRAY(PinDataRangePointersBridge),
           PinDataRangePointersBridge,
           KSPIN_DATAFLOW_IN,
           KSPIN_COMMUNICATION_NONE,
           &KSCATEGORY_AUDIO,
           NULL,
           0
       }
   }, End of commented out ADC pins */

   // Wave Out Streaming Pin (Renderer) KSPIN_WAVE_RENDER_SINK
   {
       MAX_INPUT_STREAMS,
       MAX_INPUT_STREAMS,
       0,
       NULL,
       {
           0,
           NULL,
           0,
           NULL,
           SIZEOF_ARRAY(PinDataRangePointersStream),
           PinDataRangePointersStream,
           KSPIN_DATAFLOW_IN,
           KSPIN_COMMUNICATION_SINK,
           &KSCATEGORY_AUDIO,
           NULL,
           0
       }
   },

   // Wave Out Bridge Pin (Renderer) KSPIN_WAVE_RENDER_SOURCE
   {
       0,
       0,
       0,
       NULL,
       {
           0,
           NULL,
           0,
           NULL,
           SIZEOF_ARRAY(PinDataRangePointersBridge),
           PinDataRangePointersBridge,
           KSPIN_DATAFLOW_OUT,
           KSPIN_COMMUNICATION_NONE,
           &KSCATEGORY_AUDIO,
           NULL,
           0
       }
   },
};

//=============================================================================
static PCPROPERTY_ITEM PropertiesDAC[] =
{
   // KSPROPERTY_AUDIO_CHANNEL_CONFIG
   {
&KSPROPSETID_Audio, // Property Set KSPROPERTY_AUDIO_CHANNEL_CONFIG, // Property ID
       PCPROPERTY_ITEM_FLAG_GET | PCPROPERTY_ITEM_FLAG_SET,    // Flags
       PropertyHandler_Wave                                    // Handler
   }
};

//=============================================================================
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationDAC, PropertiesDAC);

//=============================================================================
static
PCNODE_DESCRIPTOR MiniportNodes[] =
/* Commented out ADC nodes
{
   // KSNODE_WAVE_ADC
   {
       0,                      // Flags
       NULL,                   // AutomationTable
       &KSNODETYPE_ADC,        // Type
       NULL                    // Name
   },
   // KSNODE_WAVE_DAC
   {
       0,                      // Flags
       &AutomationDAC,         // AutomationTable
       &KSNODETYPE_DAC,        // Type
       NULL                    // Name
   }
}; End of commented out ADC nodes */

{
   // KSNODE_WAVE_DAC
   {
       0,                      // Flags
       &AutomationDAC,         // AutomationTable
       &KSNODETYPE_DAC,        // Type
       NULL                    // Name
   }
};

//=============================================================================
static
PCCONNECTION_DESCRIPTOR MiniportConnections[] =
{
   /* Commented out ADC nodes
{ PCFILTER_NODE, KSPIN_WAVE_CAPTURE_SOURCE, KSNODE_WAVE_ADC, 1 }, { KSNODE_WAVE_ADC, 0, PCFILTER_NODE, KSPIN_WAVE_CAPTURE_SINK },
  End of commented out ADC nodes */

{ PCFILTER_NODE, KSPIN_WAVE_RENDER_SINK, KSNODE_WAVE_DAC, 1 }, { KSNODE_WAVE_DAC, 0, PCFILTER_NODE, KSPIN_WAVE_RENDER_SOURCE },
};

//=============================================================================
static
PCFILTER_DESCRIPTOR MiniportFilterDescriptor =
{
   0,                                  // Version
   NULL,                               // AutomationTable
   sizeof(PCPIN_DESCRIPTOR),           // PinSize
   SIZEOF_ARRAY(MiniportPins),         // PinCount
   MiniportPins,                       // Pins
   sizeof(PCNODE_DESCRIPTOR),          // NodeSize
   SIZEOF_ARRAY(MiniportNodes),        // NodeCount
   MiniportNodes,                      // Nodes
   SIZEOF_ARRAY(MiniportConnections),  // ConnectionCount
   MiniportConnections,                // Connections
   0,                                  // CategoryCount
NULL // Categories - NULL->use defaults (AUDIO RENDER CAPTURE)
};

#endif
******************

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.com/

Other related posts: