[wdmaudiodev] Re: Max Number of Channels of a HDMI device

  • From: <JimiYeh@xxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 28 Dec 2012 10:06:43 +0800

I  have overrided the default data intersection handler. I can output 8
channel PCM actually.

But I don't know why "Max Number of Channels" is always 2.

 

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eerde
Sent: Friday, December 28, 2012 12:43 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Max Number of Channels of a HDMI device

 

Since you support more than two channels, you also need to override the
default data intersection handler.

 

http://msdn.microsoft.com/en-us/library/windows/hardware/ff536252(v=vs.8
5).aspx

The current implementation of the port driver's default handler is
limited in the types of data ranges that it can handle:

*         Only PCM data formats

*         Only mono and stereo audio streams

An adapter driver that supports non-PCM or multichannel formats should
implement a proprietary data-intersection handler instead of relying on
the port driver to handle data intersections for these formats.

 

 

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of
JimiYeh@xxxxxxxxxx
Sent: Wednesday, December 26, 2012 11:55 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Max Number of Channels of a HDMI device

 

Hi all,

 

        I am trying to write a WaveRT driver for HDMI on window7. I need
to report my data range according to the HDMI sink device

(Ex: monitor, amplifier, ...). When I attached the amplifier which can
support 8 channel, The control panel will show the information 

about the amplifier. I can see the correct sample size range, frequency
range except "Max number of Channels". "Max Number of Channels"

is 2. I have checked my data range in my code. I'm sure I set the
MaximumChannels is 8.

 

 

      if(myELD->GetFormatSupport(LPCM))

      {

              DataRangeAudio[LPCM].DataRange.FormatSize =
sizeof(KSDATARANGE_AUDIO);

              DataRangeAudio[LPCM].DataRange.Flags         = 0;

              DataRangeAudio[LPCM].DataRange.SampleSize    = 0;

              DataRangeAudio[LPCM].DataRange.Reserved      = 0;

              DataRangeAudio[LPCM].DataRange.MajorFormat   =
KSDATAFORMAT_TYPE_AUDIO;

              DataRangeAudio[LPCM].DataRange.SubFormat     =
KSDATAFORMAT_SUBTYPE_PCM;

              DataRangeAudio[LPCM].DataRange.Specifier     =
KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;

        

              DataRangeAudio[LPCM].MaximumChannels =
myELD->GetFormatMaxChannel(LPCM);

                DOUT(DBGJimi, ("Max Channel : %d",
DataRangeAudio[LPCM].MaximumChannels));       // the debug message is 8 

              DataRangeAudio[LPCM].MinimumBitsPerSample =
myELD->GetFormatMinBitDepth(LPCM);  

              DataRangeAudio[LPCM].MaximumBitsPerSample =
myELD->GetFormatMaxBitDepth(LPCM);

              DataRangeAudio[LPCM].MinimumSampleFrequency =
myELD->GetFormatMinFrequency(LPCM);

                DOUT(DBGJimi, ("Min rate : %d",
DataRangeAudio[LPCM].MinimumSampleFrequency));

              DataRangeAudio[LPCM].MaximumSampleFrequency =
myELD->GetFormatMaxFrequency(LPCM);

                DOUT(DBGJimi, ("Max rate : %d",
DataRangeAudio[LPCM].MaximumSampleFrequency));

                pKsDataRange[DataRangeIndex] =
reinterpret_cast<KSDATARANGE*>(&DataRangeAudio[LPCM]);

                DataRangeIndex++;

      }

 

Thank you.

 

Best Regards,

Jimi

Other related posts: