Thanks for considering my issue some more, and offering additional comment. It is with the greatest respect for your expertise and experience in these matters, that I offer these points in reply.
DISCLAIMER: While xbmc aims
to be everything to everyone on every platform, there may be quirks in behaviour from one OS to the next. My assertions apply to OpenELEC, a variant of Linux. Other flavours (Windows, OSX, etc.) may behave identically, but I've not tested them, and have no basis for comment.
Also FYI, my D2 is configured for a 5.1 speaker array, not 7.1.
Originally Posted by Bob Pariseau
The reason the Anthem is playing 2.0 is because the XBMC discovered that 4.0 didn't work and sent 2.0 instead, not because somehow the Anthem is receiving 4.0 and discarding 2 channels itself.
The D2 played only 2 channels because (sadly) the design team forgot - or chose to ignore - that other surround format:
QUAD. (maybe cause it's non-SMPTE ?) Perhaps they covered this off in models released after the D2.
As reported in my first post
, xbmc found 4 channel INPUT, opened 4 channel OUTPUT, and sent 4 channels of LPCM to the D2. An excerpt from the debug log details this...
DEBUG: CAESinkALSA::GetChannelLayout - Input Channel Count: 4 Output Channel Count: 4
DEBUG: CAESinkALSA::GetChannelLayout - Requested Layout: FL,FR,BL,BR
DEBUG: CAESinkALSA::GetChannelLayout - Got Layout: FL,FR,BL,BR
DEBUG: CActiveAESink::OpenSink - ALSA Initialized:
DEBUG: Output Device : HDA Intel PCH
DEBUG: Sample Rate : 48000
DEBUG: Sample Format : AE_FMT_S32NE
DEBUG: Channel Count : 4
DEBUG: Channel Layout: FL,FR,BL,BR
The other two (rear) channels were ignored. This is generally the case for LPCM streams whose channel count is less than 6. I say generally, because there are some odd combinations that cause "5.1" to display, but result in less than 6 speakers sounding.
I learned this when testing the full range of channel maps defined in the HDMI v1.1 spec
(0x00 thru 0x31). The ALSA guys had me run a script that generates noise bursts, cycling through each channel, for each defined mapping. This spreadsheet tabulates the results...
ALSAAudioSinkTesting.xls 33k .xls file
(notice our friend 0x08 in the list
...XBMC discovered that 4.0 didn't work...
Discussions with xbmc/ALSA devs suggest there is no mechanism for the program to evaluate this condition.
As I understand it, the initial HDMI handshake sends the EDID to the source component (in this case HTPC/xbmc), and the ELD is queried regarding audio capabilities. The SADx entries (Short Audio Descriptor) tell the source about audio format, channel number, and bitrate/resolution capabilities.
Short Audio Descriptor defined (Click to show)
Any Audio Data Block contains one or more 3-byte Short Audio Descriptors (SADs). Each SAD
details audio format, channel number, and bitrate/resolution capabilities of the display as
SAD Byte 1 (format and number of channels):
bit 7: Reserved (0)
bit 6..3: Audio format code
1 = Linear Pulse Code Modulation (LPCM)
2 = AC-3
3 = MPEG1 (Layers 1 and 2)
4 = MP3
5 = MPEG2
6 = AAC
7 = DTS
8 = ATRAC
0, 15: Reserved
9 = One-bit audio aka SACD
10 = DD+
11 = DTS-HD
12 = MLP/Dolby TrueHD
13 = DST Audio
14 = Microsoft WMA Pro
bit 2..0: number of channels minus 1 (i.e. 000 = 1 channel; 001 = 2 channels; 111 =
SAD Byte 2 (sampling frequencies supported):
bit 7: Reserved (0)
bit 6: 192kHz
bit 5: 176kHz
bit 4: 96kHz
bit 3: 88kHz
bit 2: 48kHz
bit 1: 44kHz
bit 0: 32kHz
SAD Byte 3 (bitrate):
For LPCM, bits 7:3 are reserved and the remaining bits define bit depth
bit 2: 24 bit
bit 1: 20 bit
bit 0: 16 bit
For all other sound formats, bits 7..0 designate the maximum supported bitrate divided by
The ELD report for my D2 looks like this:
OpenELEC (official) Version: 3.95.2
OpenELEC:~ # cat /proc/asound/card0/eld#*.*
monitor_name Statement D2
eld_version [0x2] CEA-861D or below
edid_version [0x3] CEA-861-B, C or D
speakers [0xf] FL/FR LFE FC RL/RR
sad0_coding_type [0x1] LPCM
sad0_rates [0x6e0] 32000 44100 48000 88200 96000
sad0_bits [0xe0000] 16 20 24
sad1_coding_type [0x2] AC-3
sad1_rates [0x6e0] 32000 44100 48000 88200 96000
sad2_coding_type [0x7] DTS
sad2_rates [0x6e0] 32000 44100 48000 88200 96000
...where sad0_channels = 6. That is the maximum count permissible for LPCM. No information is available for channel counts less than six. If channel_count
< 6 and > 2, the source must decide what mapping to send without knowledge of how "intermediate" channel counts will be handled.
What XBMC should be doing is raising the channel count to 5.1...
As Anthem is unable to accommodate the traditional 4 channels, I agree completely - this is the only way to get a quad result - and that solution is what I've been working toward.
... It's the job of the Source to only send audio the receiving device can handle.
Absolutely agree, but in the absence of full information, what's a manufacturer to do ? Assumptions and trade offs will be made that don't suit every installation (says He, as he looks around the room
I'm just happy to find a fix to a major negative, in a component I otherwise Love, Love, Love - the Most Excellent D2
Thanks again Bob, for all you do to keep the denizens of this thread on the straight-and-narrow. I mean you no offense by rattling back all this data to your observations. Having lived through the hard acquisition of the info, I thought it right to set the facts out on the pertinent points. I hope you don't mind