Thanks Matthew for your help. I got solution to my problem. It was related to the fact that I was exposing my device as a "Speaker". When a device is exposed as a speaker, speaker configuration allows user to use only 8 channels. Now I am exposing my device as a "Line connector". cheers, Neetu On Mon, Jan 9, 2012 at 9:47 PM, Matthew van Eerde < Matthew.van.Eerde@xxxxxxxxxxxxx> wrote: > pWaveFormatEx->wFormatTag = WAVE_FORMAT_EXTENSIBLE;**** > > pWaveFormatEx->cbSize = 0;**** > > ** ** > > You’re setting the wFormatTag to WAVE_FORMAT_EXTENSIBLE. This means you > need to fill out a WAVEFORMATEXTENSIBLE structure, not a WAVEFORMATEX. Set > cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX) and fill in > the additional data on the end.**** > > ** ** > > *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto: > wdmaudiodev-bounce@xxxxxxxxxxxxx] *On Behalf Of *Neetu Sand > *Sent:* Monday, January 09, 2012 6:04 AM > *To:* wdmaudiodev@xxxxxxxxxxxxx > *Subject:* [wdmaudiodev] Re: Exposing more than 8 channels on Windows 7*** > * > > ** ** > > Hi Matthew, > > Yes, I am seeing Get request. I am returning the default format expected > by my driver. Code is as follows: > > if (PropertyRequest->ValueSize == 0) > { > PropertyRequest->ValueSize = sizeof(KSDATAFORMAT_WAVEFORMATEX); > return STATUS_BUFFER_OVERFLOW; > } > else if (PropertyRequest->ValueSize < > sizeof(KSDATAFORMAT_WAVEFORMATEX)) > { > return STATUS_BUFFER_TOO_SMALL; > } > > PKSDATAFORMAT_WAVEFORMATEX pKsFormat = > (PKSDATAFORMAT_WAVEFORMATEX)PropertyRequest->Value; > PWAVEFORMATEX pWaveFormatEx; > > pKsFormat->DataFormat.FormatSize = sizeof > (KSDATAFORMAT_WAVEFORMATEX); > pKsFormat->DataFormat.Flags = 0; > pKsFormat->DataFormat.Reserved = 0; > > pKsFormat->DataFormat.MajorFormat = KSDATAFORMAT_TYPE_AUDIO; > pKsFormat->DataFormat.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; > pKsFormat->DataFormat.Specifier = > KSDATAFORMAT_SPECIFIER_WAVEFORMATEX; > pWaveFormatEx = > (PWAVEFORMATEX)((PKSDATAFORMAT)PropertyRequest->Value + 1); > pWaveFormatEx->wFormatTag = WAVE_FORMAT_EXTENSIBLE; > pWaveFormatEx->nChannels = MAX_CHANNELS; //16 > > pWaveFormatEx->nSamplesPerSec = m_SampleRate; //could be in range > of 32kHz-192 kHz > pWaveFormatEx->wBitsPerSample = 16; > pWaveFormatEx->cbSize = 0; > pWaveFormatEx->nBlockAlign = > pWaveFormatEx->nChannels * pWaveFormatEx->wBitsPerSample / 8; > pWaveFormatEx->nAvgBytesPerSec = > pWaveFormatEx->nSamplesPerSec * pWaveFormatEx->nBlockAlign; > > pKsFormat->DataFormat.SampleSize = pWaveFormatEx->nBlockAlign; > // must match nBlockAlign > > PropertyRequest->ValueSize = sizeof(KSDATAFORMAT_WAVEFORMATEX); > ntStatus = STATUS_SUCCESS; > return ntStatus; > > I receive get call twice. First time it gets the size of buffer and second > time it extracts the format. Then I get a set call but the set call is > never made with 16 channels which is returned in Get call. I return > STATUS_SUCCESS in set call for (channel <=16). Set is called with channel > count 2 and then called with channel count that is selected as speaker > configuration i.e. if I keep speaker configuration 7.1 then second set call > is made with channel count 8. > > So I don't know how can I show format for 16 channels on advance tab of my > speaker device. Because the speaker configuration only shows up to 7.1 that > is 8 channels. Do I need to disable configure button for speaker? If yes > then how can I do that? > > Please note that I do the same things for my recording device and it shows > format for channel 1-16 i.e. it works as expected on sample rates 32kHz -48 > kHz. For higher sample rates, this does not work and Advance tab is not > shown. > > cheers, > Neetu > > > > **** > > O n Fri, Jan 6, 2012 at 9:42 PM, Matthew van Eerde < > Matthew.van.Eerde@xxxxxxxxxxxxx> wrote:**** > > Are you seeing a KSPROPERTY_TYPE_GET request? What are you returning?**** > > **** > > *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto: > wdmaudiodev-bounce@xxxxxxxxxxxxx] *On Behalf Of *Neetu Sand > *Sent:* Friday, January 06, 2012 5:57 AM > *To:* wdmaudiodev@xxxxxxxxxxxxx > *Subject:* [wdmaudiodev] Exposing more than 8 channels on Windows 7**** > > **** > > Hi All, > > I have a query regarding publishing 16 channels on a speaker device. I > specify channel count as 16 while specifying the datarange in pin factory. > In handler for KSPROPERTY_PIN_PROPOSEDATAFORMAT, I handle condition for 16 > channels but the problem is that the handler for > KSPROPERTY_PIN_PROPOSEDATAFORMAT is never called with 16 channels. It is > called within the channel count range of 1-8. DataRangeIntersection is > never called. > > Also I notice that for some devices "Advance" tab on Sound and Audio > control panel shows "Channel, Bit Depth and Sample Rate" while for others, > it just shows "Bit Depth and Sample rate". However for later case speaker > configuration is enabled but for the earlier case "configure" button on > Sound And audio control panel is disabled. What change in driver code leads > to this behavior of Sound and Audio Control Panel? I tried removing > KSPROPERTY_AUDIO_CHANNEL_CONFIG from my code but I still see "Configure" > button enabled for my device. > > I am not sure what change in driver would let Sound and Audio CPL detect > 16 channels for my device. Any help is appreciated. > > Cheers, > Neetu**** > > ** ** >