Yes, posted at CE also some time ago, but I suspect there’s not a lot they can do since there’s no source for these drivers, right?
Basically the situation is:
Old kernel: LPCM works without artifacts (except for high bit-depth/frequency, which does not work at all), but high bitrate bitstreaming does not work.
New kernel: Bitstreaming now works as expected, but LPCM even at normal rates that used to work fine (e.g. 44.1khz/48khz) produces frequent popping noises.
EDIT: I’m not certain if the issue of getting stuck in bitstream mode is still evident at this stage because I cannot use LPCM for any extended period of time, and have to force everything to be encoded as AC3 and upmixing stereo to multi-channel, which sounds terrible especially for music, but it’s the only way I can avoid sending all those pops to my speakers.
@numbqq after running a few more tests on 5.15.119, it looks like after playing either DTSHD-MA or TrueHD Atmos audio once successfully, any subsequent attempts to play these high bitrate codecs causes the audio interface to send garbage that my receiver can’t interpret.
I also note that TrueHD and DTSHD-MA bitstreaming are for some reason only advertised on the surround71 multi-channel PCM audio device, instead of on the HDMI device, where all other bitstream formats are advertised. On a typical audio interface, the mutli-channel device would only be used for multi-channel LPCM, and bitstreaming would only be advertised on the dedicated HDMI device. This might explain some of the weirdness when trying to use LPCM, like appearing to get stuck in bitstream mode.
There appears to be no difference between successful playback and unsuccessful playback, as reported in dmesg, or from the Kodi side - everything seems like it should be working, but the audio interface just doesn’t send correct data.
@numbqq some improvements here! Looks like I’m now able to play content with TrueHD/DTS-MA audio tracks more than once per boot on this image, however LPCM audio still exhibits consistent pops/clicks. Logs below are from a clean boot, then just playing some stereo audio as LPCM, not sure if it shows much useful info though.
@numbqq the logs show it was already using Multi Ch PCM as the output device:
2024-11-06 19:40:54.759 T:1203 info <general>: Device 3
2024-11-06 19:40:54.759 T:1203 info <general>: m_deviceName : surround71:CARD=AMLAUGESOUND,DEV=0
2024-11-06 19:40:54.759 T:1203 info <general>: m_displayName : AML-AUGESOUND
2024-11-06 19:40:54.759 T:1203 info <general>: m_displayNameExtra: HDMI Multi Ch PCM
2024-11-06 19:40:54.759 T:1203 info <general>: m_deviceType : AE_DEVTYPE_HDMI
2024-11-06 19:40:54.759 T:1203 info <general>: m_channels : FL, FR, BL, BR, FC, LFE, SL, SR
2024-11-06 19:40:54.759 T:1203 info <general>: m_sampleRates : 32000,44100,48000,88200,96000,176400,192000
2024-11-06 19:40:54.759 T:1203 info <general>: m_dataFormats : AE_FMT_S24NE4,AE_FMT_S32NE,AE_FMT_S16NE,AE_FMT_S16LE,AE_FMT_RAW
2024-11-06 19:40:54.759 T:1203 info <general>: m_streamTypes : STREAM_TYPE_DTSHD_MA,STREAM_TYPE_TRUEHD
...
2024-11-06 19:40:54.759 T:1204 info <general>: CActiveAESink::OpenSink - initialize sink
2024-11-06 19:40:54.759 T:1204 debug <general>: CActiveAESink::OpenSink - trying to open device ALSA:surround71:CARD=AMLAUGESOUND,DEV=0
2024-11-06 19:40:54.759 T:1204 info <general>: CAESinkALSA::Initialize - Configure simple control for "AUGESOUND"
2024-11-06 19:40:54.760 T:1204 info <general>: CAESinkALSA - Use card "hw:0" and set codec format "2 CH PCM"
2024-11-06 19:40:54.760 T:1204 info <general>: CAESinkALSA - Set Spdif to HDMITX to "Spdif_b"
2024-11-06 19:40:54.760 T:1204 info <general>: CAESinkALSA - Set codec for "Audio spdif_b format"
2024-11-06 19:40:54.760 T:1204 info <general>: CAESinkALSA - Set codec for "Audio I2S to HDMITX Format"
2024-11-06 19:40:54.760 T:1204 info <general>: CAESinkALSA - Set codec for "Audio spdif format"
2024-11-06 19:40:54.761 T:1204 info <general>: CAESinkALSA::Initialize - Attempting to open device "surround71:CARD=AMLAUGESOUND,DEV=0"
2024-11-06 19:40:54.763 T:1204 info <general>: CAESinkALSA - Unable to open device "surround71:CARD=AMLAUGESOUND,DEV=0,AES0=0x04,AES1=0x82,AES2=0x00,AES3=0x00" for playback
2024-11-06 19:40:54.763 T:1204 info <general>: CAESinkALSA::Initialize - Opened device "surround71:CARD=AMLAUGESOUND,DEV=0"
2024-11-06 19:40:54.764 T:1204 info <general>: CAESinkALSA::InitializeHW - Your hardware does not support AE_FMT_FLOAT, trying other formats
2024-11-06 19:40:54.764 T:1204 info <general>: CAESinkALSA::InitializeHW - Using data format AE_FMT_S24NE4
2024-11-06 19:40:54.764 T:1204 debug <general>: CAESinkALSA::InitializeHW - Request: periodSize 2205, bufferSize 8820
2024-11-06 19:40:54.765 T:1204 debug <general>: CAESinkALSA::InitializeHW - Got: periodSize 2205, bufferSize 8820
2024-11-06 19:40:54.765 T:1204 debug <general>: CAESinkALSA::InitializeHW - Setting timeout to 200 ms
2024-11-06 19:40:54.765 T:1204 debug <general>: CAESinkALSA::GetChannelLayout - Input Channel Count: 2 Output Channel Count: 2
2024-11-06 19:40:54.765 T:1204 debug <general>: CAESinkALSA::GetChannelLayout - Requested Layout: FL, FR
2024-11-06 19:40:54.765 T:1204 debug <general>: CAESinkALSA::GetChannelLayout - Got Layout: FL, FR (ALSA: FL FR)
2024-11-06 19:40:54.765 T:1204 debug <general>: CActiveAESink::OpenSink - ALSA Initialized:
2024-11-06 19:40:54.765 T:1204 debug <general>: Output Device : AML-AUGESOUND
2024-11-06 19:40:54.765 T:1204 debug <general>: Sample Rate : 44100
2024-11-06 19:40:54.765 T:1204 debug <general>: Sample Format : AE_FMT_S24NE4
2024-11-06 19:40:54.765 T:1204 debug <general>: Channel Count : 2
2024-11-06 19:40:54.765 T:1204 debug <general>: Channel Layout: FL, FR
2024-11-06 19:40:54.765 T:1204 debug <general>: Frames : 2205
2024-11-06 19:40:54.765 T:1204 debug <general>: Frame Size : 8
It doesn’t matter whether I select the HDMI or Multi Ch PCM device though, or whether the channel count is set to 2.0/5.1/7.1 - all LPCM audio produces these pops/clicks, and as I mentioned earlier - low-res LPCM worked fine on the old hi-res-broken kernel, but produces this behaviour on the current kernel.