Testing with vc4-hdmi / Raspberry Pi 4 showed that the iec958 plugin was missing two features required for HDMI compatibility:
HD audio bitstreams like DTS HD MA or Dolby True HD are usually packed into 8-channel 192kHz 16-bit frames but are in fact a single IEC 61937 stream at 768kHz frame rate. So the data in the 8-channel frame has to be formatted as 4 contiguous IEC 60958 frames.
If channel status bits weren't set, iec958 indicated a sample rate of 48kHz in the channel status bits which the HDMI analyzer complained about and caused issues with some HDMI devices if it didn't match the real rate. That was a long outstanding FIXME since the iec958 plugin was added.
With this series HD audio passthrough and PCM audio works fine with the downstream 5.4 RPi kernel.
Matthias Reichl (2): pcm: iec958: implement HDMI HBR audio formatting pcm: iec958: set channel status bits according to rate and format
src/pcm/pcm_iec958.c | 117 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 109 insertions(+), 8 deletions(-)