2021-11-19, 12:41
Hi All,
I'm trying to investigate the issue I raised here:
https://github.com/xbmc/xbmc/issues/17427
The issue seems to be that many HDMI receivers do continually relock the DD+ bitstream when presented with the current one IEC/DD+ Packet followed by 5 empty IEC packets when a 256SPF EAC3 source is used (Confirmed by AV manufacturer debug). The code that currently combines the EAC3 frames can be seen here:
https://github.com/xbmc/xbmc/blob/49a04c...r.cpp#L311
I'm a C++ amateur but was hoping someone could help me understand this. As far as I can tell the current implementation will passthrough blank audio frames whilst building up the needed 6 frames for 256SPF DD+ which does line up with the diagnosis seen by the the AVR manufacturer. I tried moving the EAC3 buffer to DVDAudioCodecPassthrough.cpp using the recent TrueHD changes as a guide but whilst this did not break it, it did not help either. I think the buffering of DD+ packets needs to happen nearer to the Videoplayer but am struggling to understand the full chain. Should I be looking to buffer these packets in VideoPlayerAudio.cpp?
I'm trying to investigate the issue I raised here:
https://github.com/xbmc/xbmc/issues/17427
The issue seems to be that many HDMI receivers do continually relock the DD+ bitstream when presented with the current one IEC/DD+ Packet followed by 5 empty IEC packets when a 256SPF EAC3 source is used (Confirmed by AV manufacturer debug). The code that currently combines the EAC3 frames can be seen here:
https://github.com/xbmc/xbmc/blob/49a04c...r.cpp#L311
I'm a C++ amateur but was hoping someone could help me understand this. As far as I can tell the current implementation will passthrough blank audio frames whilst building up the needed 6 frames for 256SPF DD+ which does line up with the diagnosis seen by the the AVR manufacturer. I tried moving the EAC3 buffer to DVDAudioCodecPassthrough.cpp using the recent TrueHD changes as a guide but whilst this did not break it, it did not help either. I think the buffering of DD+ packets needs to happen nearer to the Videoplayer but am struggling to understand the full chain. Should I be looking to buffer these packets in VideoPlayerAudio.cpp?