[Intel-gfx] [RFC 2/3] drm/i915/display: Configure and initialize HDMI audio capabilities
Kai Vehmanen
kai.vehmanen at linux.intel.com
Wed Jun 21 17:05:37 UTC 2023
Hey,
On Tue, 20 Jun 2023, Borah, Chaitanya Kumar wrote:
> > -----Original Message-----
> > From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Kai
> > Vehmanen
> > On Fri, 9 Jun 2023, Mitul Golani wrote:
[...]
> > This will hit a problem if we have a case where bandwidth is not enough for 5.1
> > at 192kHz, but it is enough for 2ch 192kHz audio. This approach forces us to
> > give preference to either channel acount or sampling rate.
> >
> > What if we just store the 'max audio samples per second' into pipe config:
> >
> > - have "int max_audio_samples_per_second;" in pipe_config
> > - pipe_config->audio.max_audio_samples_per_second =
> > available_blank_bandwidth / 32;
> >
> > Then when filtering SADs, the invidial channels+rate combination of each SAD
> > is compared to the max_audio_samples_per_second and based on that, the
> > SAD is either filter or passed on. What do you think?
[...]>
> This has been one my concern as well and we have thought about a similar
> approach as you suggest. One disadvantage of this approach that I can
> see, would be that if there are hardware limitations on channels (as was
> in GLK) or frequencies independently. It will be become tricky with this
> approach. However, one can argue that these limitations arise from
> bandwidth itself.
[...]
> Regarding the bits per sample, Is using 32bit for all audio formats fair
> or should we take into account different audio formats and their bit
> depth?
hmm, I see the point. This is indeed trickier than it first seems. The
32bit is a good worst-case bound, but in practise actual bandwidth needed
will be less. And problem is, we don't really know which bit depth the
application will choose, so again we need to limit based on the
highest value in SAD.
And then you have the problem that this calculation assumes LPCM encoding.
If the audio is compressed, e.g. a 8ch DTS stream, the bandwidth
calculation needs to be done differently (see
linux/sound/pci/hda/hda_eld.c:hdmi_update_short_audio_desc()):
So I think there are (at least) two ways to go about this:
1) reduce the scope and make the channel/rate limit more
limited, and only cover cases (like) GLK where a specific limitation
is known -> max values not set for other platforms
2) go for more generic description and expose the raw
bandwidth (in bits per second) available for audio
-> then SAD filtering can be done based on raw bandwidth
-> can be done only to LPCM at first, extended to compressed
formats later
-> still the problem that code needs to prioritze
between channels/srate/bitdepth when filtering
Br, Kai
More information about the Intel-gfx
mailing list