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

  • From: <JimiYeh@xxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 9 Jan 2013 17:25:06 +0800

Excuse me. I want to describe my problem clearly.

Below is our audio topology.


                           Wave filter
                    ________________________________________
      Wave data pin  |                                       |  wave analog pin 
(connect to topology filter)
   ------------------------  |  ---- KSNODETYPE_HDMI_INTERFACE -----    
|--------------------------
                    |_______________________________________|                   
                   
                    

                         Topology filter
                    ______________________________________ 
     Topo input pin   |                                      |  topo output pin
   ------------------------- | --------- KSNODETYPE_MUTE               |  
------------------------------
                   |______________________________________ |


I use KSStudio to check my setting.

Wave data pin support six data range (PCM, Dolby, Dolby plus, Dolby TrueHD, 
DTS, DTS-HD)..
Other pins(wave analog pin, topo input pin, and topo output pin) only support 
one data range (KSDATAFORMAT_SUBTYPE_ANALOG).


I have two problems now.

1. I set the max channel '8' in the data range of PCM and I have implemented my 
IMiniportWaveRT ::DataRangeIntersection.
  I have implemented the KSPROPERTY_AUDIO_CHANNEL_CONFIG on 
KSNODETYPE_HDMI_INTERFACE node, but I still see the
  "Max number of Channels" is 2. I google this issue and find some graphic card 
has the same issue on windows 7. But I didn't find how 
  they fix this issue.

2. I want so support Dolby TrueHD, DTS-HD format. I select the Dolby TrueHD 
format when port class driver call my IMiniportWaveRT ::DataRangeIntersection
  (the format fit the parameter DataRange and MatchingDataRange).But when port 
class driver call MatchingDataRange ::NewStream, the input format has been 
  Changed to AC3 (normal Dolby). I don't understand why port class driver 
doesn't use the format I give in IMiniportWaveRT ::DataRangeIntersection.
  PS: The test amplifier works correctly with other graphic card.

Finally, my English is very poor. If that make you uncomfortable, I am sorry.
        

  



-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of JimiYeh@xxxxxxxxxx
Sent: Wednesday, January 02, 2013 9:56 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Max Number of Channels of a HDMI device

Our codec can support 8-cahnnel 32~192 kHz (16, 20, 24 bit depth) format. 
The test device can support, too.

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

(After browsing some code...)

What are the min/max bit depths and min/max sample rates for this particular 
8-channel HDMI device?  In particular, does the device support 32 kHz 16-bit 
formats?

-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages
Sent: Thursday, December 27, 2012 7:42 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Max Number of Channels of a HDMI device

For a render device, I'm pretty sure you also need to support 
KSPROPERTY_AUDIO_CHANNEL_CONFIG and KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY
on your DAC node.

Jeff


From: JimiYeh@xxxxxxxxxx
Sent: Friday, December 28, 2012 1:06 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Max Number of Channels of a HDMI device


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.85).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

******************

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/

X3P2

EZu޲Ǭ>-,j j)m 
fjbׯ~+-Jrzf0vfv*zު笵zX+˛-˛m'rzf0vfv*zު笵zX+˛-칻&2^hf0vfv*zuڶ~+-Q`@81i0 
fjbׯr
XP
u>jjj~Jrzvvzzmrzvvzz2vvzu~Q8jr

Other related posts: