[wdmaudiodev] Re: AVStream Mixer Problems

  • From: "John D. Farmer" <johndfarmer@xxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 24 Aug 2004 14:13:01 -0700

I've got the controls all set up, now when I go to the Sounds and Audio Devices 
I see a 'Volume Control'  mixer added to my Playback volume controls.  When I 
bring up the 'Volume Control' mixer all the sliders on the mixer are disabled.  
I have implemented the KSEVENT_CONTROL_CHANGE event for these nodes, and I have 
implemented the KSPROPSETID_Audio  properties (KSPROPERTY_AUDIO_VOLUME_LEVEL 
and KSPROPERTY_AUDIO_CPU_RESOURCES) for the volume nodes, as well as the 
Get/Set Property Handler for KSPROPERTY_AUDIO_VOLUME_LEVEL (I keep a value of 
the current volume, and give it back for the Get, and for the Set I check the 
requested volume level and if it is within range I save that value off as the 
current volume value and return success).  I have implemented the Get Property 
Handler on the KSPROPERTY_AUDIO_CPU_RESOURCES. 

I have also implemented the KSPROPERTY_AUDIO_MUTE Property and the Get/Set 
Property Handlers for the Volume Control mixer (again I save off the state of 
the mute and give it back for the Get and I change the current mute value and 
return success for the Set), but when I click on the check box in the Volume 
Control mixer it nothing seems to happen.  I can see the change happening in KS 
Studio after I've made the change, but I can still hear sound out of my device.

So what do I need to do to enable the sliders on the Volume Control mixer and 
get my mute to work?

Thanks,

John Farmer
----- Original Message ----- 
  From: DJ Sisolak 
  To: wdmaudiodev@xxxxxxxxxxxxx 
  Sent: Friday, August 20, 2004 1:27 PM
  Subject: [wdmaudiodev] Re: AVStream Mixer Problems


  OK, I misunderstood your original message to read that the volume and mute 
controls were all before the SUM node. So it would appear that for some reason 
the controls themselves are not currently functioning or at least not sending 
responses to requests, or perhaps there is a problem in the BASIC_SUPPORT 
responses. There could be quite a few reasons for this. You stated below that:

   

  I assume once I implement the Master Volume mixer that the controls on the 
'Device volume' and 'Speaker settings' sections will be enabled.   So how do I 
implement the Master Volume mixer? 

   

  Does this mean that you have not yet implemented the controls? 

   

  Unlike portcls drivers, avstream topologies are not separated from the 
streaming. They are part of the same "filter factory". Creation of a filter 
from the filter factory would instantiate the streaming and topology for that 
filter. 

   

  Thanks,

  DJ Sisolak

  Microsoft Corp.

   

  This posting is provided "AS IS" with no warranties, and confers no rights.

   


------------------------------------------------------------------------------

  From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of John D. Farmer
  Sent: Friday, August 20, 2004 11:27 AM
  To: wdmaudiodev@xxxxxxxxxxxxx
  Subject: [wdmaudiodev] Re: AVStream Mixer Problems

   

  I've tried a number of different topologies, as I mentioned before I looked 
at the topologies of other soundcards and this seems to be the most correct:

   

  static 
  KSTOPOLOGY_CONNECTION MiniportConnections[] =
  { //FromNode------------------FromPin-----ToNode----------------------ToPin
  { KSFILTER_NODE,   1,   KSNODE_SPEAKER_VOLUME,  1 }, 

  { KSNODE_SPEAKER_VOLUME, 0,   KSNODE_SPEAKER_MUTE,  1 }, 

  { KSNODE_SPEAKER_MUTE,  0,   KSNODE_ANALOG_OUT_SUM,  1 }, 


  { KSFILTER_NODE,   3,   KSNODE_MICROPHONE_VOLUME, 1 }, 

  { KSNODE_MICROPHONE_VOLUME, 0,   KSNODE_MICROPHONE_MUTE,  1 }, 

  { KSNODE_MICROPHONE_MUTE, 0,   KSNODE_ANALOG_OUT_SUM,  2 }, 
   
  { KSNODE_ANALOG_OUT_SUM,    0,   KSNODE_MASTER_VOLUME,  1 }, 

  { KSNODE_MASTER_VOLUME,     0,   KSNODE_MASTER_MUTE,   1 }, 
  { KSNODE_MASTER_MUTE,  0,   KSFILTER_NODE,    0 }
  };

   

  and looks something like this in KS Studio:

          

           ===================================

    1  0-||    Vol -> Mute \                                      / -  || - {} 0

    3 -{} ||    Vol -> Mute -- Sum -> Volume -> Mute/     || -o 2

           ===================================

    ----- Original Message ----- 

    From: DJ Sisolak 

    To: wdmaudiodev@xxxxxxxxxxxxx 

    Sent: Friday, August 20, 2004 11:12 AM

    Subject: [wdmaudiodev] Re: AVStream Mixer Problems

     

    Hello John,

     

    I am guessing the problem you are seeing is due to the placement of the SUM 
node in your topology. When the topology parser in wdmaud sees this node it 
assumes there is some sort of branching going on and looks downstream for 
master controls. Thus if your Volume and mute controls are upstream fro this 
node they would not be considered the master.

     

    What is the exact topology you are describing?

     

    Thanks,

    DJ Sisolak

    Microsoft Corp.

     

    This posting is provided "AS IS" with no warranties, and confers no rights.

     


----------------------------------------------------------------------------

    From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of John D. Farmer
    Sent: Friday, August 20, 2004 9:47 AM
    To: wdmaudiodev@xxxxxxxxxxxxx
    Subject: [wdmaudiodev] AVStream Mixer Problems

     

    Greetings,

     

    I'm creating a AVStream audio device that registers itself as a audio 
playback device.  When I select the device as my default playback device, I can 
hear the sound and everything is fine and good.  But now I am working on 
implementing the audio mixer for the device (e.g. Volume, Mute, Microphone 
Volume, ect).  

     

    When I open up the Sounds and Audio Devices control panel, 'Device volume' 
section is grayed out as well as the buttons in the 'Speaker settings' section 
on the Volume tab.  When I go to the Audio tab I can access the Volume and 
Advanced buttons for both my Sound playback and Sound recording.  If I choose 
the Volume button for Sound playback, I see my Wave, CD Audio, and SW Synth 
mixers, but I seem to lack the Master Volume mixer.  If I go to the properties 
in Sndvol32 for my device I see "Playback" and "Recording" radio buttons.  
Under playback I see the same mixers as I saw previously, and under Recording I 
see no volume controls.  

     

    I assume once I implement the Master Volume mixer that the controls on the 
'Device volume' and 'Speaker settings' sections will be enabled.   So how do I 
implement the Master Volume mixer?  

    I've created a simple wave topology that implements Volume, Mute, SUM,  ADC 
and DAC nodes for my speaker and microphone pins.  When I look in KS Studio I 
see my driver under the KSCATEGORY_AUDIO Filter Factories as a Audio device (or 
a \wave device).  I looked at other soundcards on different systems and they 
also seem to have a Mixer node (or a \topology device).  I assume that these 
soundcard drivers are portcls drivers.  When I instantiate both of these 
filters they automatically connect (I've seen this behavior before in the MSVAD 
sample and understand the theory of how these filters work together).  So is 
there a way to create a Topology Filter and a Wave Filter for my device, or 
does AVStream do it a different way.  I see that portcls drivers uses 
PcRegisterSubDevice to register these filters but I have been unable to find 
the AVStream equivalent.

     

    Any help would be greatly appreciated.

     

    Regards,

     

    John Farmer

Other related posts: