• Anssi Hannula's avatar
    ALSA: hda - hdmi: Fallback to ALSA allocation when selecting CA · 18e39186
    Anssi Hannula authored
    hdmi_channel_allocation() tries to find a HDMI channel allocation that
    matches the number channels in the playback stream and contains only
    speakers that the HDMI sink has reported as available via EDID. If no
    such allocation is found, 0 (stereo audio) is used.
    
    Using CA 0 causes the audio causes the sink to discard everything except
    the first two channels (front left and front right).
    
    However, the sink may be capable of receiving more channels than it has
    speakers (and then perform downmix or discard the extra channels), in
    which case it is preferable to use a CA that contains extra channels
    than to use CA 0 which discards all the non-stereo channels.
    
    Additionally, it seems that HBR (HD) passthrough output does not work on
    Intel HDMI codecs when CA is set to 0 (possibly the codec zeroes
    channels not present in CA). This happens with all receivers that report
    a 5.1 speaker mask since a HBR stream is carried on 8 channels to the
    codec.
    
    Add a fallback in the CA selection so that the CA channel count at least
    matches the stream channel count, even if the stream contains channels
    not present in the sink speaker descriptor.
    
    Thanks to GrimGriefer at OpenELEC forums for discovering that changing
    the sink speaker mask allowed HBR output.
    
    Reported-by: GrimGriefer
    Reported-by: Ashecrow
    Reported-by: default avatarFrank Zafka <kafkaesque1978@gmail.com>
    Reported-by: default avatarPeter Frühberger <fritsch@xbmc.org>
    Signed-off-by: default avatarAnssi Hannula <anssi.hannula@iki.fi>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    18e39186
patch_hdmi.c 75.9 KB