• A
    ALSA: hda - hdmi: Fix programmed active channel count · 1df5a06a
    Anssi Hannula 提交于
    Currently the converter channel count is set to the number of actual
    input channels. The audio infoframe channel count field is set
    similarly.
    
    However, sometimes the used channel map does not map all input channels
    to outputs. Notably, 3 channel modes (e.g. 2.1) require a dummy input
    channel so there are 4 input channels. According to the HDA
    specification, converter channel count should be programmed according to
    the number of _active_ channels.
    
    On Intel HDMI codecs (but not on NVIDIA), setting the converter channel
    to a higher value than there are actually mapped channels to HDMI slots
    will cause no audio to be output at all.
    
    Note that the effects of this issue are currently partially masked by
    other bugs that prevent the driver from actually unmapping channels in
    certain cases. For example, if a 4 channel stream is first created and
    prepared, it gets a FL,FR,RL,RR mapping (ALSA->HDMI slot mapping 0->0,
    1->1, 2->4, 3->5). If one thereafter assigns a FR,FL,FC mapping to it,
    the driver will remap 2->3 but fail to unmap 2->4 and 3->5, so there are
    still 4 active channels and the issue will not trigger in this case.
    These bugs will be fixed separately.
    
    Fix the channel counts in the converter channel count field and in the
    audio infoframe channel count field to match the actual number of active
    channels.
    Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
    Signed-off-by: NTakashi Iwai <tiwai@suse.de>
    1df5a06a
patch_hdmi.c 76.8 KB