[wdmaudiodev] Re: AVStream Mixer Problems

  • From: "DJ Sisolak" <dsisolak@xxxxxxxxxxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 24 Aug 2004 14:54:15 -0700

Hello John,

 

It appears from what you have said below that a critical piece is
missing. Look at the KSPROPERTY_ITEM structure you have filled in for
the Volume node. You will notice a field in the structure for the
"PFNKSHANDLER SupportHandler". This is the function that is called by
the audio stack to determine the ranges and channels of volume controls,
mutes, etc. This function is described in the DDK in the "Basic Support
Queries for Audio Properties" section. 

 

DJ

 

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: Tuesday, August 24, 2004 2:13 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: AVStream Mixer Problems

 

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 <mailto:dsisolak@xxxxxxxxxxxxxxxxxxxxxx>  

        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----------------------ToPi
n
        { 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
<mailto:dsisolak@xxxxxxxxxxxxxxxxxxxxxx>  

                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: