1# 2# Low Latency playback pipeline with demux and volume. 3# 4# All attributes defined herein are namespaced by alsatplg to 5# "Object.Pipeline.volume-demux-playback.N.attribute_name" 6# 7# Usage: this component can be used by declaring in the top-level topology conf file as follows: 8# 9# Object.Pipeline.volume-demux-playback."N" { 10# format "s16le" 11# period 1000 12# time_domain "timer" 13# channels 2 14# rate 48000 15# } 16# 17# Where N is a unique integer for pipeline ID in the same alsaconf node. 18# 19 20# 21# (source) host.N.playback -> buffer.N.1 -> volume.N.1 -> buffer.N.2 -> muxdemux.N.1 -> buffer.N.3 (sink endpoint) 22# 23Class.Pipeline."volume-demux-playback" { 24 # Include common pipeline attribute definitions 25 <include/pipelines/pipeline-common.conf> 26 27 attributes { 28 !constructor [ 29 "index" 30 ] 31 !mandatory [ 32 "channels" 33 ] 34 !immutable [ 35 "direction" 36 ] 37 unique "index" 38 } 39 40 Object.Widget { 41 pipeline."1" {} 42 43 host."playback" { 44 type "aif_in" 45 } 46 47 buffer."1" { 48 periods 2 49 caps "host" 50 } 51 52 pga."1" { 53 # set TLV scale for volume control mixer 54 Object.Control.mixer."1" { 55 Object.Base.tlv."vtlv_m64s2" { 56 Object.Base.scale."m64s2" {} 57 } 58 } 59 } 60 61 buffer."2" { 62 periods 2 63 caps "comp" 64 } 65 66 muxdemux."1" { 67 # byte control for muxemux widget 68 Object.Control.bytes."0" { 69 max 304 70 } 71 } 72 73 buffer."3" { 74 periods 2 75 caps "comp" 76 } 77 } 78 79 # Pipeline connections 80 Object.Base { 81 route."1" { 82 sink buffer..1 83 source host..playback 84 } 85 86 route."2" { 87 sink pga..1 88 source buffer..1 89 } 90 91 route."3" { 92 sink buffer..2 93 source pga..1 94 } 95 96 route."4" { 97 sink muxdemux..1 98 source buffer..2 99 } 100 101 route."5" { 102 sink buffer..3 103 source muxdemux..1 104 } 105 } 106 107 # default attribute values for volume-demux-playback pipeline 108 direction "playback" 109 time_domain "timer" 110 period 1000 111 channels 2 112 rate 48000 113 priority 0 114 core 0 115 frames 0 116 mips 5000 117} 118