#
#  Hardware output from 4.1 speakers.
#  Samples must be positioned:
#    chn0 - front left
#    chn1 - front right
#    chn2 - rear left
#    chn3 - rear right
#    chn4 - LFE
#

pcm.!surround41 {
	@args [ CARD DEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_SURROUND41_CARD
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.surround41.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_SURROUND41_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.surround41.device
			}
		}
	}
	type route
	slave.pcm {
		@func refer
		name {
			@func concat
			strings [
				"cards."
				{
					@func card_driver
					card $CARD
				}
				".pcm.surround51." $DEV ":CARD=" $CARD
			]
		}
	}
	ttable.0.FL 1
	ttable.1.FR 1
	ttable.2.RL 1
	ttable.3.RR 1
	ttable.4.LFE 1
	hint {
		description "4.1 Surround output to Front, Rear and Subwoofer speakers"
		device_output $DEV
	}
}
