ALSA could use alisa (aplay -L) to distinguish different sound card and device (aplay -l). Then each application need to decide which alisa is used to output sound. mplayer, aplay and other application could use alisa as options. But flash plugins generally only use default, see link
For HDMI audio output, first application need to know which card/device is for HDMI output and then use related alisa as output. But flashplugins in Linux could only use default as output, then it is needed to assign default to HDMI device, see Wiki in Archlinux
PCM slave is used to forward ALSA plugins to related sound card and device.
Background: there is no audio through HDMI when I connect my laptop with TV and use TV as screen for tv.sohu.com. I have to follow workaround from wiki.archlinux.org to reset default in .asoundrc. It is caused by flash only use default for output.