Skip to content

Add pipewire sound driver #2166

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

bim9262
Copy link
Collaborator

@bim9262 bim9262 commented Jun 8, 2025

Resolves #2164

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 8, 2025

@akrram09 Feel free to check this out. The only thing that is a known difference is that of you don't have any media playing, and swap the active sink the pipewire block doesn't know about the change. It has to count the number of active links connected to the sink (at least I haven't found a way to get the default sink)

I did start working on this over a year ago, but had totally missed how to get the default metadata.

Still not sure which properties should be used though:

const DEFAULT_SINK_KEY: &str = "default.configured.audio.sink";
const DEFAULT_SOURCE_KEY: &str = "default.configured.audio.source";

or

const DEFAULT_SINK_KEY: &str = "default.audio.sink";
const DEFAULT_SOURCE_KEY: &str = "default.audio.source";

@bim9262 bim9262 force-pushed the pipewire_sound branch 2 times, most recently from 4ec751b to c71710f Compare June 9, 2025 03:14
@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 9, 2025

@MaxVerevkin, I'm curious if you have any thoughts on removing the idle loop. I thought about spawning an async runtime so that we can select from all of the UnbondedReceivers without having to create a hot loop or if there is some way to be able start/stop the IdleSource (there's an enable(enable: bool) function).

@MaxVerevkin

This comment was marked as resolved.

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 10, 2025

I'll look closer into it, but why do we need many UnbondedReceivers in the first place? This does not solve the loop issue, but still:

This is a good question, that I do not have a good answer to 😓

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 12, 2025

@MaxVerevkin, I found a solution to having the idle loop, there is a pw channel that you can attach to the mainloop: https://pipewire.pages.freedesktop.org/pipewire-rs/pipewire/channel/index.html

@MaxVerevkin
Copy link
Collaborator

This doesn't always work when I (un)plug my wired headphones. For example I click to toggle mute, but nothing happens. It usually starts working again after I open pavucontrol and manipulate the volume from there.

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 12, 2025

Can you capture the output of pw-mon | grep -EA 3 'added|removed' starting with the device being unplugged, plugging it in, and then unplugging it again?

When I do that I see something like:

--
added:
	id: 164
	permissions: rwxm-
	type: PipeWire:Interface:Device (version 3)
--
added:
	id: 52
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 100
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
removed:
	id: 164 # <- PipeWire:Interface:Device
removed:
	id: 196
removed:
	id: 59
removed:
	id: 108
removed:
	id: 202
removed:
	id: 52
changed:
	id: 134
--
removed:
	id: 134
removed:
	id: 81
removed:
	id: 99
removed:
	id: 194
removed:
	id: 100

@bim9262 bim9262 force-pushed the pipewire_sound branch 3 times, most recently from 23c0731 to e4db55f Compare June 13, 2025 00:34
@MaxVerevkin
Copy link
Collaborator

Sometimes it just doesn't work even without headphones, and restarting the bar does not help. But after manually toggling mute from pavucontrol it works again. But then I still haven't found a way to get back to the state in which it doesn't work. Anyway, below is the full log of plugging/unplugging.

Plug:

--
removed:
	id: 93
removed:
	id: 151
removed:
	id: 111
removed:
	id: 99
removed:
	id: 104
removed:
	id: 126
removed:
	id: 107
removed:
	id: 156
removed:
	id: 129
removed:
	id: 72
removed:
	id: 80
removed:
	id: 86
removed:
	id: 155
changed:
	id: 89
--
removed:
	id: 89
removed:
	id: 142
removed:
	id: 147
removed:
	id: 98
removed:
	id: 136
changed:
	id: 193
--
removed:
	id: 193
removed:
	id: 120
removed:
	id: 194
removed:
	id: 96
removed:
	id: 173
changed:
	id: 79
--
removed:
	id: 90
removed:
	id: 59
removed:
	id: 149
removed:
	id: 121
removed:
	id: 79
changed:
	id: 138
--
removed:
	id: 124
removed:
	id: 73
removed:
	id: 61
removed:
	id: 117
removed:
	id: 138
changed:
	id: 127
--
removed:
	id: 97
removed:
	id: 92
removed:
	id: 114
removed:
	id: 192
removed:
	id: 127
added:
	id: 173
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 96
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 194
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 127
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 192
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 114
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 92
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 97
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 138
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 117
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 61
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 73
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 124
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 79
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 121
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 149
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 59
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 90
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 120
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 193
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 136
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 98
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 147
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 142
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 89
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 155
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 86
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 80
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 72
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 129
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 156
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 107
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 126
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 104
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 99
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 151
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 214
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 215
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 216
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 111
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 93
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 217
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 218
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 219
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 220
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 221
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 222
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 223
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 224
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 225
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 226
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 227
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 228
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 229
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 230
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 231
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 232
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 233
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 234
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)

Unplug:

--
removed:
	id: 121
removed:
	id: 59
removed:
	id: 136
removed:
	id: 92
removed:
	id: 149
removed:
	id: 90
removed:
	id: 98
removed:
	id: 138
removed:
	id: 80
removed:
	id: 97
removed:
	id: 72
removed:
	id: 117
removed:
	id: 173
changed:
	id: 104
--
removed:
	id: 104
removed:
	id: 61
removed:
	id: 99
removed:
	id: 73
removed:
	id: 96
changed:
	id: 215
--
removed:
	id: 215
removed:
	id: 124
removed:
	id: 216
removed:
	id: 79
removed:
	id: 194
changed:
	id: 127
--
removed:
	id: 142
removed:
	id: 155
removed:
	id: 89
removed:
	id: 86
removed:
	id: 127
changed:
	id: 192
--
removed:
	id: 129
removed:
	id: 107
removed:
	id: 156
removed:
	id: 126
removed:
	id: 192
changed:
	id: 114
--
removed:
	id: 111
removed:
	id: 93
removed:
	id: 151
removed:
	id: 214
removed:
	id: 114
added:
	id: 194
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 79
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 216
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 114
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 214
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 151
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 93
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 111
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 192
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 126
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 156
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 107
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 129
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 127
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 86
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 89
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 155
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 142
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 124
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 215
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 96
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 73
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 99
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
--
added:
	id: 61
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 104
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 173
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 117
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 72
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 97
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 80
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 138
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 98
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 90
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 149
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 92
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 136
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 59
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 121
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 235
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 236
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 237
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 238
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 239
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 240
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 241
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 242
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 243
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 244
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 245
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 246
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 247
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 248
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 249
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 250
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 251
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 252
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 253
	permissions: r-xm-
	type: PipeWire:Interface:Port (version 3)
--
added:
	id: 254
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)
--
added:
	id: 255
	permissions: r-x--
	type: PipeWire:Interface:Link (version 3)

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 13, 2025

Alright, so I hadn't tested it using a headphone jack on the computer before. I had been using a USB DAC which is a Device, whereas the headphone jack is a Port.

Also added in the equivalent of the active_port, which is actually the Route's name

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 15, 2025

@MaxVerevkin did that last push resolve the issue you were seeing?

@MaxVerevkin
Copy link
Collaborator

Still have the same issue. It sometimes doesn't work even without headphones, just the laptop speakers.

@MaxVerevkin
Copy link
Collaborator

I'll try to debug it in more depth when I gen some time.

src/pipewire.rs Outdated
} else if data.links.remove(&uid).is_some() {
update_copy2.replace_with(|v| *v | EventKind::LINK_REMOVED);
} else if data.ports.remove(&uid) {
update_copy2.replace_with(|v| *v | EventKind::PORT_ADDED);
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should have been PORT_REMOVED 🤦‍♂️

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 18, 2025

I found that when I use the headphone jack with the Pro Audio profile that setting the volume doesn't work, but updates to the volume (made in another tool) do show up in the status bar.

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 18, 2025

@MaxVerevkin

I found that some outputs update the Node+Device while others only require the Node to be updated.

Please let me know if you see any issue after this change 🙏

Node+Device
changed:
	id: 65
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
*	params:
 	  id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/raw
                     format : (Id) { S32LE, S16LE }
                       rate : (Int) [ 32000, 48000 ]
                   channels : (Int) 2
                   position : (Array) < FL, FR >
 	  id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/iec958
                iec958Codec : (Id) { PCM }
                       rate : (Int) [ 32000, 48000 ]
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 104, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65539    (Spa:Pod:Object:Param:Props:volume)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 104, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65540    (Spa:Pod:Object:Param:Props:mute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65544    (Spa:Pod:Object:Param:Props:channelVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Channel Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65547    (Spa:Pod:Object:Param:Props:channelMap)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Channel Map"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Id 0        (Spa:)
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65548    (Spa:Pod:Object:Param:Props:monitorMute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65549    (Spa:Pod:Object:Param:Props:monitorVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65551    (Spa:Pod:Object:Param:Props:softMute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Soft Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65552    (Spa:Pod:Object:Param:Props:softVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Soft Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "monitor.channel-volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor channel volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Channel mixing"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.min-volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Minimum volume level"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.max-volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Maximum volume level"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 10.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.normalize"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Normalize Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.mix-lfe"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Mix LFE into channels"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.upmix"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Enable upmixing"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.lfe-cutoff"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "LFE cutoff frequency"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 1000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.fc-cutoff"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "FC cutoff frequency (Hz)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 48000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.rear-delay"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Rear channels delay (ms)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 1000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.stereo-widen"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Stereo widen"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.hilbert-taps"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Taps for phase shift of rear"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 255
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 288, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.upmix-method"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Upmix method to use"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "none"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:labels (4), flags 00000000
              Struct: size 136
                String "none"
                String "Disabled"
                String "simple"
                String "Simple upmixing"
                String "psd"
                String "Passive Surround Decoding"
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 268      (Spa:Pod:Object:Param:Props:rate)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Rate scaler"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
                Double 1.000000
                Double 0.000000
                Double 10.000000
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 269      (Spa:Pod:Object:Param:Props:quality)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "resample.quality"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Resample Quality"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 4
                Int 0
                Int 14
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "resample.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Resampling"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 144, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "dither.noise"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Add noise bits"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 16
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 464, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "dither.method"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The dithering method"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "none"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:labels (4), flags 00000000
              Struct: size 320
                String "none"
                String "Disabled"
                String "rectangular"
                String "Rectangular dithering"
                String "triangular"
                String "Triangular dithering"
                String "triangular-hf"
                String "Sloped Triangular dithering"
                String "wannamaker3"
                String "Wannamaker 3 dithering"
                String "shaped5"
                String "Lipshitz 5 dithering"
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 128, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "debug.wav-path"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Path to WAV file"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.lock-volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable volume updates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audioconvert.filter-graph.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Filter graph updates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 144, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audioconvert.filter-graph"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "A filter graph to load"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 257      (Spa:Pod:Object:Param:Props:device)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.path"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The ALSA device"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "hdmi:1,2"
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 224, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 258      (Spa:Pod:Object:Param:Props:deviceName)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The ALSA device name"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 224, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 261      (Spa:Pod:Object:Param:Props:cardName)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The ALSA card name"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 128, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65550    (Spa:Pod:Object:Param:Props:latencyOffsetNsec)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Latency offset (ns)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
                Long 0
                Long 0
                Long 2000000000
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65553    (Spa:Pod:Object:Param:Props:iec958Codecs)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "iec958.codecs"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Enabled IEC958 (S/PDIF) codecs"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Id 0        (Spa:)
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.channels"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Channels"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Int 2
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.format"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Format"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "UNKNOWN"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 128, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.position"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Position"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "[ FL, FR ]"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.allowed-rates"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Allowed Rates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "[  ]"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.period-size"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Period Size"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 8192
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.period-num"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Number of Periods"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 1024
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.headroom"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Headroom"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 8192
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.start-delay"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Start Delay"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 8192
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.disable-mmap"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable MMAP"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.disable-batch"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Batch"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.disable-tsched"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable timer based scheduling"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.use-chmap"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Use the driver channelmap"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.multi-rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Support multiple rates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.htimestamp"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Use hires timestamps"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "latency.internal.rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Internal latency in samples"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 65536
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 176, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "latency.internal.ns"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Internal latency in nanoseconds"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
                Long 0
                Long 0
                Long 2000000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "clock.name"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The name of the clock"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "api.alsa.p-1"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.htimestamp.max-errors"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Max errors before disabling htimestamp"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 64
                Int 0
                Int 2147483647
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:4 (Spa:Enum:ParamId:Format)
           audio/raw
                     format : (Id) S32LE
                       rate : (Int) 48000
                   channels : (Int) 2
                   position : (Array) < FL, FR >
 	  id:10 (Spa:Enum:ParamId:EnumPortConfig)
          Object: size 192, type Spa:Pod:Object:Param:PortConfig (262152), id Spa:Enum:ParamId:EnumPortConfig (10)
            Prop: key Spa:Pod:Object:Param:PortConfig:direction (1), flags 00000000
              Choice: type Spa:Enum:Choice:None, flags 00000000 20 4
                Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:PortConfig:mode (2), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 32 4
                Id 0        (Spa:Enum:ParamPortConfigMode:none)
                Id 0        (Spa:Enum:ParamPortConfigMode:none)
                Id 3        (Spa:Enum:ParamPortConfigMode:dsp)
                Id 2        (Spa:Enum:ParamPortConfigMode:convert)
            Prop: key Spa:Pod:Object:Param:PortConfig:monitor (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PortConfig:control (4), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:11 (Spa:Enum:ParamId:PortConfig)
          Object: size 272, type Spa:Pod:Object:Param:PortConfig (262152), id Spa:Enum:ParamId:PortConfig (11)
            Prop: key Spa:Pod:Object:Param:PortConfig:direction (1), flags 00000000
              Choice: type Spa:Enum:Choice:None, flags 00000000 20 4
                Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:PortConfig:mode (2), flags 00000000
              Id 3        (Spa:Enum:ParamPortConfigMode:dsp)
            Prop: key Spa:Pod:Object:Param:PortConfig:monitor (3), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PortConfig:control (4), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:PortConfig:format (5), flags 00000000
              Object: size 136, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:Buffers (5)
                Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
                  Id 1        (Spa:Enum:MediaType:audio)
                Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
                  Id 1        (Spa:Enum:MediaSubtype:raw)
                Prop: key Spa:Pod:Object:Param:Format:Audio:format (65537), flags 00000000
                  Id 518      (Spa:Enum:AudioFormat:F32P)
                Prop: key Spa:Pod:Object:Param:Format:Audio:channels (65540), flags 00000000
                  Int 2
                Prop: key Spa:Pod:Object:Param:Format:Audio:position (65541), flags 00000000
                  Array: child.size 4, child.type Spa:Id
                    Id 3        (Spa:Enum:AudioChannel:FL)
                    Id 4        (Spa:Enum:AudioChannel:FR)
 	  id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
 	  id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
 	  id:16 (Spa:Enum:ParamId:ProcessLatency)
          Object: size 80, type Spa:Pod:Object:Param:ProcessLatency (262156), id Spa:Enum:ParamId:ProcessLatency (16)
            Prop: key Spa:Pod:Object:Param:ProcessLatency:quantum (1), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:ProcessLatency:rate (2), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:ProcessLatency:ns (3), flags 00000000
              Long 0
*	  id:2 (Spa:Enum:ParamId:Props)
          Object: size 1256, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Props (2)
            Prop: key Spa:Pod:Object:Param:Props:volume (65539), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:mute (65540), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:channelVolumes (65544), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 0.857449
                Float 0.857449
            Prop: key Spa:Pod:Object:Param:Props:channelMap (65547), flags 00000000
              Array: child.size 4, child.type Spa:Id
                Id 3        (Spa:Enum:AudioChannel:FL)
                Id 4        (Spa:Enum:AudioChannel:FR)
            Prop: key Spa:Pod:Object:Param:Props:softMute (65551), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:softVolumes (65552), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 0.857449
                Float 0.857449
            Prop: key Spa:Pod:Object:Param:Props:monitorMute (65548), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:monitorVolumes (65549), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 1.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:params (524289), flags 00000000
              Struct: size 1008
                String "monitor.channel-volumes"
                Bool false
                String "channelmix.disable"
                Bool false
                String "channelmix.min-volume"
                Float 0.000000
                String "channelmix.max-volume"
                Float 10.000000
                String "channelmix.normalize"
                Bool false
                String "channelmix.mix-lfe"
                Bool true
                String "channelmix.upmix"
                Bool true
                String "channelmix.lfe-cutoff"
                Float 0.000000
                String "channelmix.fc-cutoff"
                Float 0.000000
                String "channelmix.rear-delay"
                Float 0.000000
                String "channelmix.stereo-widen"
                Float 0.000000
                String "channelmix.hilbert-taps"
                Int 0
                String "channelmix.upmix-method"
                String "none"
                String "resample.quality"
                Int 4
                String "resample.disable"
                Bool false
                String "dither.noise"
                Int 0
                String "dither.method"
                String "none"
                String "debug.wav-path"
                String ""
                String "channelmix.lock-volumes"
                Bool false
                String "audioconvert.filter-graph.disable"
                Bool false
                String "audioconvert.filter-graph"
                String ""
*	  id:2 (Spa:Enum:ParamId:Props)
          Object: size 1368, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Props (2)
            Prop: key Spa:Pod:Object:Param:Props:device (257), flags 00000000
              String "hdmi:1,2"
            Prop: key Spa:Pod:Object:Param:Props:deviceName (258), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:Props:cardName (261), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:Props:latencyOffsetNsec (65550), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Props:iec958Codecs (65553), flags 00000000
              Array: child.size 4, child.type Spa:Id
                Id 1        (Spa:Enum:AudioIEC958Codec:PCM)
            Prop: key Spa:Pod:Object:Param:Props:params (524289), flags 00000000
              Struct: size 896
                String "audio.channels"
                Int 2
                String "audio.rate"
                Int 0
                String "audio.format"
                String "UNKNOWN"
                String "audio.position"
                String "[ FL, FR ]"
                String "audio.allowed-rates"
                String "[  ]"
                String "api.alsa.period-size"
                Int 0
                String "api.alsa.period-num"
                Int 0
                String "api.alsa.headroom"
                Int 0
                String "api.alsa.start-delay"
                Int 0
                String "api.alsa.disable-mmap"
                Bool false
                String "api.alsa.disable-batch"
                Bool false
                String "api.alsa.disable-tsched"
                Bool false
                String "api.alsa.use-chmap"
                Bool false
                String "api.alsa.multi-rate"
                Bool true
                String "api.alsa.htimestamp"
                Bool false
                String "api.alsa.htimestamp.max-errors"
                Int 64
                String "latency.internal.rate"
                Int 0
                String "latency.internal.ns"
                Long 0
                String "clock.name"
                String "api.alsa.p-1"
 	input ports: 2/65
 	output ports: 2/0
 	state: "running"
 	properties:
 		alsa.card = "1"
 		alsa.card_name = "HDA ATI HDMI"
 		alsa.class = "generic"
 		alsa.components = "HDA:1002aa01,00aa0100,00100700"
 		alsa.device = "8"
 		alsa.driver_name = "snd_hda_intel"
 		alsa.id = "HDMI 2"
 		alsa.long_card_name = "HDA ATI HDMI at 0x9f660000 irq 157"
 		alsa.mixer_name = "ATI R6xx HDMI"
 		alsa.name = "CB282K"
 		alsa.resolution_bits = "16"
 		alsa.subclass = "generic-mix"
 		alsa.subdevice = "0"
 		alsa.subdevice_name = "subdevice #0"
 		alsa.sync.id = "00000000:00000000:00000000:00000000"
 		api.alsa.card.longname = "HDA ATI HDMI at 0x9f660000 irq 157"
 		api.alsa.card.name = "HDA ATI HDMI"
 		api.alsa.path = "hdmi:1,2"
 		api.alsa.pcm.card = "1"
 		api.alsa.pcm.stream = "playback"
 		audio.channels = "2"
 		audio.position = "FL,FR"
 		card.profile.device = "12"
 		device.api = "alsa"
 		device.class = "sound"
 		device.icon-name = "audio-card-analog"
 		device.id = "45"
 		device.profile.description = "Digital Stereo (HDMI 3)"
 		device.profile.name = "hdmi-stereo-extra2"
 		device.routes = "1"
 		factory.name = "api.alsa.pcm.sink"
 		iec958.codecs = "["PCM"]"
 		media.class = "Audio/Sink"
 		node.description = "Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] Digital Stereo (HDMI 3)"
 		node.name = "alsa_output.pci-0000_41_00.1.hdmi-stereo-extra2"
 		node.nick = "CB282K"
 		node.pause-on-idle = "false"
 		object.path = "alsa:acp:HDMI:12:playback"
 		port.group = "playback"
 		priority.driver = "616"
 		priority.session = "616"
 		factory.id = "19"
 		clock.quantum-limit = "8192"
 		client.id = "40"
 		node.driver = "true"
 		node.loop.name = "data-loop.0"
 		library.name = "audioconvert/libspa-audioconvert"
 		object.id = "65"
 		object.serial = "1445"
 		node.max-latency = "16384/48000"
 		api.alsa.period-size = "1024"
 		api.alsa.period-num = "32"
 		api.alsa.headroom = "0"
changed:
	id: 45
	permissions: rwxm-
	type: PipeWire:Interface:Device (version 3)
*	params:
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 160, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "off"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Off"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 2        (Spa:Enum:ParamAvailability:yes)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 16
                Int 0
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 304, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 1
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-stereo"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Stereo (HDMI) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 5900
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 6
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 312, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 2
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-stereo-extra1"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Stereo (HDMI 2) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 9
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 312, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 3
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-stereo-extra2"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Stereo (HDMI 3) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 2        (Spa:Enum:ParamAvailability:yes)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 12
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 312, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 4
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-stereo-extra3"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Stereo (HDMI 4) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 2        (Spa:Enum:ParamAvailability:yes)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 13
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 312, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 5
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-stereo-extra4"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Stereo (HDMI 5) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 14
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 312, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 6
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-stereo-extra5"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Stereo (HDMI 6) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 17
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 312, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 7
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 5.1 (HDMI) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 800
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 7
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 312, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 8
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround71"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 7.1 (HDMI) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 800
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 8
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 320, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 9
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround-extra1"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 5.1 (HDMI 2) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 600
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 10
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 320, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 10
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround71-extra1"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 7.1 (HDMI 2) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 600
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 11
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 320, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 11
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround-extra4"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 5.1 (HDMI 5) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 600
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 15
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 320, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 12
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround71-extra4"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 7.1 (HDMI 5) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 600
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 16
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 320, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 13
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround-extra5"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 5.1 (HDMI 6) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 600
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 18
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 320, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 14
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-surround71-extra5"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Surround 7.1 (HDMI 6) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 600
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 19
 	  id:8 (Spa:Enum:ParamId:EnumProfile)
          Object: size 296, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:EnumProfile (8)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 15
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "pro-audio"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Pro Audio"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 1
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 0        (Spa:Enum:ParamAvailability:unknown)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 136
                Int 1
                Struct: size 112
                  String "Audio/Sink"
                  Int 6
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 0
                    Int 1
                    Int 2
                    Int 3
                    Int 4
                    Int 5
 	  id:9 (Spa:Enum:ParamId:Profile)
          Object: size 336, type Spa:Pod:Object:Param:Profile (262151), id Spa:Enum:ParamId:Profile (9)
            Prop: key Spa:Pod:Object:Param:Profile:index (1), flags 00000000
              Int 3
            Prop: key Spa:Pod:Object:Param:Profile:name (2), flags 00000000
              String "output:hdmi-stereo-extra2"
            Prop: key Spa:Pod:Object:Param:Profile:description (3), flags 00000000
              String "Digital Stereo (HDMI 3) Output"
            Prop: key Spa:Pod:Object:Param:Profile:priority (4), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Profile:available (5), flags 00000000
              Id 2        (Spa:Enum:ParamAvailability:yes)
            Prop: key Spa:Pod:Object:Param:Profile:classes (7), flags 00000000
              Struct: size 120
                Int 1
                Struct: size 96
                  String "Audio/Sink"
                  Int 1
                  String "card.profile.devices"
                  Array: child.size 4, child.type Spa:Int
                    Int 12
            Prop: key Spa:Pod:Object:Param:Profile:save (8), flags 00000000
              Bool false
 	  id:12 (Spa:Enum:ParamId:EnumRoute)
          Object: size 488, type Spa:Pod:Object:Param:Route (262153), id Spa:Enum:ParamId:EnumRoute (12)
            Prop: key Spa:Pod:Object:Param:Route:index (1), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Route:direction (2), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Route:name (4), flags 00000000
              String "hdmi-output-0"
            Prop: key Spa:Pod:Object:Param:Route:description (5), flags 00000000
              String "HDMI / DisplayPort"
            Prop: key Spa:Pod:Object:Param:Route:priority (6), flags 00000000
              Int 5900
            Prop: key Spa:Pod:Object:Param:Route:available (7), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Route:info (8), flags 00000004
              Struct: size 216
                Int 4
                String "port.type"
                String "hdmi"
                String "port.availability-group"
                String "Legacy 1"
                String "device.icon_name"
                String "video-display"
                String "card.profile.port"
                String "0"
            Prop: key Spa:Pod:Object:Param:Route:profiles (9), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 1
                Int 7
                Int 8
            Prop: key Spa:Pod:Object:Param:Route:devices (11), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 6
                Int 7
                Int 8
 	  id:12 (Spa:Enum:ParamId:EnumRoute)
          Object: size 488, type Spa:Pod:Object:Param:Route (262153), id Spa:Enum:ParamId:EnumRoute (12)
            Prop: key Spa:Pod:Object:Param:Route:index (1), flags 00000000
              Int 1
            Prop: key Spa:Pod:Object:Param:Route:direction (2), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Route:name (4), flags 00000000
              String "hdmi-output-1"
            Prop: key Spa:Pod:Object:Param:Route:description (5), flags 00000000
              String "HDMI / DisplayPort 2"
            Prop: key Spa:Pod:Object:Param:Route:priority (6), flags 00000000
              Int 5800
            Prop: key Spa:Pod:Object:Param:Route:available (7), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Route:info (8), flags 00000004
              Struct: size 216
                Int 4
                String "port.type"
                String "hdmi"
                String "port.availability-group"
                String "Legacy 2"
                String "device.icon_name"
                String "video-display"
                String "card.profile.port"
                String "1"
            Prop: key Spa:Pod:Object:Param:Route:profiles (9), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 2
                Int 9
                Int 10
            Prop: key Spa:Pod:Object:Param:Route:devices (11), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 9
                Int 10
                Int 11
 	  id:12 (Spa:Enum:ParamId:EnumRoute)
          Object: size 568, type Spa:Pod:Object:Param:Route (262153), id Spa:Enum:ParamId:EnumRoute (12)
            Prop: key Spa:Pod:Object:Param:Route:index (1), flags 00000000
              Int 2
            Prop: key Spa:Pod:Object:Param:Route:direction (2), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Route:name (4), flags 00000000
              String "hdmi-output-2"
            Prop: key Spa:Pod:Object:Param:Route:description (5), flags 00000000
              String "HDMI / DisplayPort 3"
            Prop: key Spa:Pod:Object:Param:Route:priority (6), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Route:available (7), flags 00000000
              Id 2        (Spa:Enum:ParamAvailability:yes)
            Prop: key Spa:Pod:Object:Param:Route:info (8), flags 00000004
              Struct: size 312
                Int 6
                String "port.type"
                String "hdmi"
                String "port.availability-group"
                String "Legacy 3"
                String "device.icon_name"
                String "video-display"
                String "card.profile.port"
                String "2"
                String "device.product.name"
                String "CB282K"
                String "iec958.codecs.detected"
                String "["PCM"]"
            Prop: key Spa:Pod:Object:Param:Route:profiles (9), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 3
            Prop: key Spa:Pod:Object:Param:Route:devices (11), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 12
 	  id:12 (Spa:Enum:ParamId:EnumRoute)
          Object: size 568, type Spa:Pod:Object:Param:Route (262153), id Spa:Enum:ParamId:EnumRoute (12)
            Prop: key Spa:Pod:Object:Param:Route:index (1), flags 00000000
              Int 3
            Prop: key Spa:Pod:Object:Param:Route:direction (2), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Route:name (4), flags 00000000
              String "hdmi-output-3"
            Prop: key Spa:Pod:Object:Param:Route:description (5), flags 00000000
              String "HDMI / DisplayPort 4"
            Prop: key Spa:Pod:Object:Param:Route:priority (6), flags 00000000
              Int 5600
            Prop: key Spa:Pod:Object:Param:Route:available (7), flags 00000000
              Id 2        (Spa:Enum:ParamAvailability:yes)
            Prop: key Spa:Pod:Object:Param:Route:info (8), flags 00000004
              Struct: size 312
                Int 6
                String "port.type"
                String "hdmi"
                String "port.availability-group"
                String "Legacy 4"
                String "device.icon_name"
                String "video-display"
                String "card.profile.port"
                String "3"
                String "device.product.name"
                String "CB282K"
                String "iec958.codecs.detected"
                String "["PCM"]"
            Prop: key Spa:Pod:Object:Param:Route:profiles (9), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 4
            Prop: key Spa:Pod:Object:Param:Route:devices (11), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 13
 	  id:12 (Spa:Enum:ParamId:EnumRoute)
          Object: size 488, type Spa:Pod:Object:Param:Route (262153), id Spa:Enum:ParamId:EnumRoute (12)
            Prop: key Spa:Pod:Object:Param:Route:index (1), flags 00000000
              Int 4
            Prop: key Spa:Pod:Object:Param:Route:direction (2), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Route:name (4), flags 00000000
              String "hdmi-output-4"
            Prop: key Spa:Pod:Object:Param:Route:description (5), flags 00000000
              String "HDMI / DisplayPort 5"
            Prop: key Spa:Pod:Object:Param:Route:priority (6), flags 00000000
              Int 5500
            Prop: key Spa:Pod:Object:Param:Route:available (7), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Route:info (8), flags 00000004
              Struct: size 216
                Int 4
                String "port.type"
                String "hdmi"
                String "port.availability-group"
                String "Legacy 5"
                String "device.icon_name"
                String "video-display"
                String "card.profile.port"
                String "4"
            Prop: key Spa:Pod:Object:Param:Route:profiles (9), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 5
                Int 11
                Int 12
            Prop: key Spa:Pod:Object:Param:Route:devices (11), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 14
                Int 15
                Int 16
 	  id:12 (Spa:Enum:ParamId:EnumRoute)
          Object: size 488, type Spa:Pod:Object:Param:Route (262153), id Spa:Enum:ParamId:EnumRoute (12)
            Prop: key Spa:Pod:Object:Param:Route:index (1), flags 00000000
              Int 5
            Prop: key Spa:Pod:Object:Param:Route:direction (2), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Route:name (4), flags 00000000
              String "hdmi-output-5"
            Prop: key Spa:Pod:Object:Param:Route:description (5), flags 00000000
              String "HDMI / DisplayPort 6"
            Prop: key Spa:Pod:Object:Param:Route:priority (6), flags 00000000
              Int 5400
            Prop: key Spa:Pod:Object:Param:Route:available (7), flags 00000000
              Id 1        (Spa:Enum:ParamAvailability:no)
            Prop: key Spa:Pod:Object:Param:Route:info (8), flags 00000004
              Struct: size 216
                Int 4
                String "port.type"
                String "hdmi"
                String "port.availability-group"
                String "Legacy 6"
                String "device.icon_name"
                String "video-display"
                String "card.profile.port"
                String "5"
            Prop: key Spa:Pod:Object:Param:Route:profiles (9), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 6
                Int 13
                Int 14
            Prop: key Spa:Pod:Object:Param:Route:devices (11), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 17
                Int 18
                Int 19
*	  id:13 (Spa:Enum:ParamId:Route)
          Object: size 960, type Spa:Pod:Object:Param:Route (262153), id Spa:Enum:ParamId:Route (13)
            Prop: key Spa:Pod:Object:Param:Route:index (1), flags 00000000
              Int 2
            Prop: key Spa:Pod:Object:Param:Route:direction (2), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Route:name (4), flags 00000000
              String "hdmi-output-2"
            Prop: key Spa:Pod:Object:Param:Route:description (5), flags 00000000
              String "HDMI / DisplayPort 3"
            Prop: key Spa:Pod:Object:Param:Route:priority (6), flags 00000000
              Int 5700
            Prop: key Spa:Pod:Object:Param:Route:available (7), flags 00000000
              Id 2        (Spa:Enum:ParamAvailability:yes)
            Prop: key Spa:Pod:Object:Param:Route:info (8), flags 00000004
              Struct: size 392
                Int 8
                String "port.type"
                String "hdmi"
                String "port.availability-group"
                String "Legacy 3"
                String "device.icon_name"
                String "video-display"
                String "card.profile.port"
                String "2"
                String "device.product.name"
                String "CB282K"
                String "iec958.codecs.detected"
                String "["PCM"]"
                String "route.hw-mute"
                String "false"
                String "route.hw-volume"
                String "false"
            Prop: key Spa:Pod:Object:Param:Route:profiles (9), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 3
            Prop: key Spa:Pod:Object:Param:Route:device (3), flags 00000000
              Int 12
            Prop: key Spa:Pod:Object:Param:Route:props (10), flags 00000000
              Object: size 224, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Route (13)
                Prop: key Spa:Pod:Object:Param:Props:mute (65540), flags 00000000
                  Bool false
                Prop: key Spa:Pod:Object:Param:Props:channelVolumes (65544), flags 00000000
                  Array: child.size 4, child.type Spa:Float
                    Float 0.857449
                    Float 0.857449
                Prop: key Spa:Pod:Object:Param:Props:volumeBase (65545), flags 00000001
                  Float 1.000000
                Prop: key Spa:Pod:Object:Param:Props:volumeStep (65546), flags 00000001
                  Float 0.000015
                Prop: key Spa:Pod:Object:Param:Props:channelMap (65547), flags 00000000
                  Array: child.size 4, child.type Spa:Id
                    Id 3        (Spa:Enum:AudioChannel:FL)
                    Id 4        (Spa:Enum:AudioChannel:FR)
                Prop: key Spa:Pod:Object:Param:Props:softVolumes (65552), flags 00000000
                  Array: child.size 4, child.type Spa:Float
                    Float 0.857449
                    Float 0.857449
                Prop: key Spa:Pod:Object:Param:Props:latencyOffsetNsec (65550), flags 00000000
                  Long 0
                Prop: key Spa:Pod:Object:Param:Props:iec958Codecs (65553), flags 00000000
                  Array: child.size 4, child.type Spa:Id
            Prop: key Spa:Pod:Object:Param:Route:devices (11), flags 00000000
              Array: child.size 4, child.type Spa:Int
                Int 12
            Prop: key Spa:Pod:Object:Param:Route:profile (12), flags 00000000
              Int 3
            Prop: key Spa:Pod:Object:Param:Route:save (13), flags 00000000
              Bool true
 	properties:
 		api.acp.auto-port = "false"
 		api.acp.auto-profile = "false"
 		api.alsa.card = "1"
 		api.alsa.card.longname = "HDA ATI HDMI at 0x9f660000 irq 157"
 		api.alsa.card.name = "HDA ATI HDMI"
 		api.alsa.path = "hw:1"
 		api.alsa.split-enable = "true"
 		api.alsa.use-acp = "true"
 		api.dbus.ReserveDevice1 = "Audio1"
 		api.dbus.ReserveDevice1.Priority = "-20"
 		device.api = "alsa"
 		device.bus = "pci"
 		device.bus-path = "pci-0000:41:00.1"
 		device.description = "Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]"
 		device.enum.api = "udev"
 		device.icon-name = "audio-card-analog-pci"
 		device.name = "alsa_card.pci-0000_41_00.1"
 		device.nick = "HDA ATI HDMI"
 		device.plugged.usec = "2813218"
 		device.product.id = "0xaaf0"
 		device.product.name = "Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]"
 		device.subsystem = "sound"
 		device.sysfs.path = "/devices/pci0000:40/0000:40:03.1/0000:41:00.1/sound/card1"
 		device.vendor.id = "0x1002"
 		device.vendor.name = "Advanced Micro Devices, Inc. [AMD/ATI]"
 		media.class = "Audio/Device"
 		spa.object.id = "4"
 		factory.id = "15"
 		client.id = "40"
 		object.id = "45"
 		object.serial = "45"
 		object.path = "alsa:acp:HDMI"
 		alsa.card = "1"
 		alsa.card_name = "HDA ATI HDMI"
 		alsa.long_card_name = "HDA ATI HDMI at 0x9f660000 irq 157"
 		alsa.driver_name = "snd_hda_intel"
 		alsa.mixer_name = "ATI R6xx HDMI"
 		alsa.components = "HDA:1002aa01,00aa0100,00100700"
 		alsa.id = "HDMI"
 		device.string = "1"
Node only.
changed:
	id: 124
	permissions: rwxm-
	type: PipeWire:Interface:Node (version 3)
*	params:
 	  id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/raw
                     format : (Id) { S32LE, S16LE }
                       rate : (Int) [ 32000, 192000 ]
                   channels : (Int) 2
                   position : (Array) < AUX0, AUX1 >
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 104, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65539    (Spa:Pod:Object:Param:Props:volume)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 104, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65540    (Spa:Pod:Object:Param:Props:mute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65544    (Spa:Pod:Object:Param:Props:channelVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Channel Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65547    (Spa:Pod:Object:Param:Props:channelMap)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Channel Map"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Id 0        (Spa:)
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65548    (Spa:Pod:Object:Param:Props:monitorMute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65549    (Spa:Pod:Object:Param:Props:monitorVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65551    (Spa:Pod:Object:Param:Props:softMute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Soft Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65552    (Spa:Pod:Object:Param:Props:softVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Soft Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "monitor.channel-volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor channel volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Channel mixing"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.min-volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Minimum volume level"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.max-volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Maximum volume level"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 10.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.normalize"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Normalize Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.mix-lfe"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Mix LFE into channels"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.upmix"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Enable upmixing"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.lfe-cutoff"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "LFE cutoff frequency"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 1000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.fc-cutoff"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "FC cutoff frequency (Hz)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 48000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.rear-delay"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Rear channels delay (ms)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 1000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.stereo-widen"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Stereo widen"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.hilbert-taps"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Taps for phase shift of rear"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 255
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 288, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.upmix-method"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Upmix method to use"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "none"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:labels (4), flags 00000000
              Struct: size 136
                String "none"
                String "Disabled"
                String "simple"
                String "Simple upmixing"
                String "psd"
                String "Passive Surround Decoding"
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 268      (Spa:Pod:Object:Param:Props:rate)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Rate scaler"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
                Double 1.000000
                Double 0.000000
                Double 10.000000
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 269      (Spa:Pod:Object:Param:Props:quality)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "resample.quality"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Resample Quality"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 4
                Int 0
                Int 14
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "resample.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Resampling"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 144, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "dither.noise"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Add noise bits"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 16
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 464, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "dither.method"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The dithering method"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "none"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:labels (4), flags 00000000
              Struct: size 320
                String "none"
                String "Disabled"
                String "rectangular"
                String "Rectangular dithering"
                String "triangular"
                String "Triangular dithering"
                String "triangular-hf"
                String "Sloped Triangular dithering"
                String "wannamaker3"
                String "Wannamaker 3 dithering"
                String "shaped5"
                String "Lipshitz 5 dithering"
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 128, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "debug.wav-path"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Path to WAV file"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.lock-volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable volume updates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audioconvert.filter-graph.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Filter graph updates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 144, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audioconvert.filter-graph"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "A filter graph to load"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 257      (Spa:Pod:Object:Param:Props:device)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.path"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The ALSA device"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "hw:0,1"
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 224, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 258      (Spa:Pod:Object:Param:Props:deviceName)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The ALSA device name"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 224, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 261      (Spa:Pod:Object:Param:Props:cardName)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The ALSA card name"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String ""
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 128, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65550    (Spa:Pod:Object:Param:Props:latencyOffsetNsec)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Latency offset (ns)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
                Long 0
                Long 0
                Long 2000000000
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.channels"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Channels"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Int 2
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.format"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Format"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "UNKNOWN"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 128, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.position"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Position"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "[ AUX0, AUX1 ]"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "audio.allowed-rates"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Audio Allowed Rates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "[  ]"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.period-size"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Period Size"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 8192
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.period-num"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Number of Periods"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 1024
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.headroom"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Headroom"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 8192
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.start-delay"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Start Delay"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 8192
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.disable-mmap"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable MMAP"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.disable-batch"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Batch"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.disable-tsched"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable timer based scheduling"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.use-chmap"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Use the driver channelmap"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.multi-rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Support multiple rates"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.htimestamp"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Use hires timestamps"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "latency.internal.rate"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Internal latency in samples"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 65536
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 176, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "latency.internal.ns"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Internal latency in nanoseconds"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
                Long 0
                Long 0
                Long 2000000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "clock.name"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The name of the clock"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "api.alsa.0"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "api.alsa.htimestamp.max-errors"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Max errors before disabling htimestamp"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 64
                Int 0
                Int 2147483647
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
 	  id:4 (Spa:Enum:ParamId:Format)
           audio/raw
                     format : (Id) S32LE
                       rate : (Int) 48000
                   channels : (Int) 2
                   position : (Array) < AUX0, AUX1 >
 	  id:10 (Spa:Enum:ParamId:EnumPortConfig)
          Object: size 192, type Spa:Pod:Object:Param:PortConfig (262152), id Spa:Enum:ParamId:EnumPortConfig (10)
            Prop: key Spa:Pod:Object:Param:PortConfig:direction (1), flags 00000000
              Choice: type Spa:Enum:Choice:None, flags 00000000 20 4
                Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:PortConfig:mode (2), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 32 4
                Id 0        (Spa:Enum:ParamPortConfigMode:none)
                Id 0        (Spa:Enum:ParamPortConfigMode:none)
                Id 3        (Spa:Enum:ParamPortConfigMode:dsp)
                Id 2        (Spa:Enum:ParamPortConfigMode:convert)
            Prop: key Spa:Pod:Object:Param:PortConfig:monitor (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PortConfig:control (4), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
 	  id:11 (Spa:Enum:ParamId:PortConfig)
          Object: size 272, type Spa:Pod:Object:Param:PortConfig (262152), id Spa:Enum:ParamId:PortConfig (11)
            Prop: key Spa:Pod:Object:Param:PortConfig:direction (1), flags 00000000
              Choice: type Spa:Enum:Choice:None, flags 00000000 20 4
                Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:PortConfig:mode (2), flags 00000000
              Id 3        (Spa:Enum:ParamPortConfigMode:dsp)
            Prop: key Spa:Pod:Object:Param:PortConfig:monitor (3), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PortConfig:control (4), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:PortConfig:format (5), flags 00000000
              Object: size 136, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:Buffers (5)
                Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
                  Id 1        (Spa:Enum:MediaType:audio)
                Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
                  Id 1        (Spa:Enum:MediaSubtype:raw)
                Prop: key Spa:Pod:Object:Param:Format:Audio:format (65537), flags 00000000
                  Id 518      (Spa:Enum:AudioFormat:F32P)
                Prop: key Spa:Pod:Object:Param:Format:Audio:channels (65540), flags 00000000
                  Int 2
                Prop: key Spa:Pod:Object:Param:Format:Audio:position (65541), flags 00000000
                  Array: child.size 4, child.type Spa:Id
                    Id 4096     (Spa:Enum:AudioChannel:AUX0)
                    Id 4097     (Spa:Enum:AudioChannel:AUX1)
 	  id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
 	  id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
 	  id:16 (Spa:Enum:ParamId:ProcessLatency)
          Object: size 80, type Spa:Pod:Object:Param:ProcessLatency (262156), id Spa:Enum:ParamId:ProcessLatency (16)
            Prop: key Spa:Pod:Object:Param:ProcessLatency:quantum (1), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:ProcessLatency:rate (2), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:ProcessLatency:ns (3), flags 00000000
              Long 0
*	  id:2 (Spa:Enum:ParamId:Props)
          Object: size 1256, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Props (2)
            Prop: key Spa:Pod:Object:Param:Props:volume (65539), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:mute (65540), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:channelVolumes (65544), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 0.166281
                Float 0.166281
            Prop: key Spa:Pod:Object:Param:Props:channelMap (65547), flags 00000000
              Array: child.size 4, child.type Spa:Id
                Id 4096     (Spa:Enum:AudioChannel:AUX0)
                Id 4097     (Spa:Enum:AudioChannel:AUX1)
            Prop: key Spa:Pod:Object:Param:Props:softMute (65551), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:softVolumes (65552), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 1.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:monitorMute (65548), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:monitorVolumes (65549), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 1.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:params (524289), flags 00000000
              Struct: size 1008
                String "monitor.channel-volumes"
                Bool false
                String "channelmix.disable"
                Bool false
                String "channelmix.min-volume"
                Float 0.000000
                String "channelmix.max-volume"
                Float 10.000000
                String "channelmix.normalize"
                Bool false
                String "channelmix.mix-lfe"
                Bool true
                String "channelmix.upmix"
                Bool true
                String "channelmix.lfe-cutoff"
                Float 0.000000
                String "channelmix.fc-cutoff"
                Float 0.000000
                String "channelmix.rear-delay"
                Float 0.000000
                String "channelmix.stereo-widen"
                Float 0.000000
                String "channelmix.hilbert-taps"
                Int 0
                String "channelmix.upmix-method"
                String "none"
                String "resample.quality"
                Int 4
                String "resample.disable"
                Bool false
                String "dither.noise"
                Int 0
                String "dither.method"
                String "none"
                String "debug.wav-path"
                String ""
                String "channelmix.lock-volumes"
                Bool false
                String "audioconvert.filter-graph.disable"
                Bool false
                String "audioconvert.filter-graph"
                String ""
*	  id:2 (Spa:Enum:ParamId:Props)
          Object: size 1336, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Props (2)
            Prop: key Spa:Pod:Object:Param:Props:device (257), flags 00000000
              String "hw:0,1"
            Prop: key Spa:Pod:Object:Param:Props:deviceName (258), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:Props:cardName (261), flags 00000000
              String ""
            Prop: key Spa:Pod:Object:Param:Props:latencyOffsetNsec (65550), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Props:params (524289), flags 00000000
              Struct: size 896
                String "audio.channels"
                Int 2
                String "audio.rate"
                Int 0
                String "audio.format"
                String "UNKNOWN"
                String "audio.position"
                String "[ AUX0, AUX1 ]"
                String "audio.allowed-rates"
                String "[  ]"
                String "api.alsa.period-size"
                Int 0
                String "api.alsa.period-num"
                Int 0
                String "api.alsa.headroom"
                Int 0
                String "api.alsa.start-delay"
                Int 0
                String "api.alsa.disable-mmap"
                Bool false
                String "api.alsa.disable-batch"
                Bool false
                String "api.alsa.disable-tsched"
                Bool false
                String "api.alsa.use-chmap"
                Bool false
                String "api.alsa.multi-rate"
                Bool true
                String "api.alsa.htimestamp"
                Bool false
                String "api.alsa.htimestamp.max-errors"
                Int 64
                String "latency.internal.rate"
                Int 0
                String "latency.internal.ns"
                Long 0
                String "clock.name"
                String "api.alsa.0"
 	input ports: 2/65
 	output ports: 2/0
 	state: "running"
 	properties:
 		alsa.card = "0"
 		alsa.card_name = "HD-Audio Generic"
 		alsa.class = "generic"
 		alsa.components = "HDA:10ec1220,18492220,00100101"
 		alsa.device = "1"
 		alsa.driver_name = "snd_hda_intel"
 		alsa.id = "ALC1220 Digital"
 		alsa.long_card_name = "HD-Audio Generic at 0xba600000 irq 158"
 		alsa.mixer_name = "Realtek ALC1220"
 		alsa.name = "ALC1220 Digital"
 		alsa.resolution_bits = "32"
 		alsa.subclass = "generic-mix"
 		alsa.subdevice = "0"
 		alsa.subdevice_name = "subdevice #0"
 		alsa.sync.id = "00000000:00000000:00000000:00000000"
 		api.alsa.card.longname = "HD-Audio Generic at 0xba600000 irq 158"
 		api.alsa.card.name = "HD-Audio Generic"
 		api.alsa.path = "hw:0,1"
 		api.alsa.pcm.card = "0"
 		api.alsa.pcm.stream = "playback"
 		audio.channels = "2"
 		audio.position = "AUX0,AUX1"
 		card.profile.device = "2"
 		clock.name = "api.alsa.0"
 		device.api = "alsa"
 		device.class = "sound"
 		device.icon-name = "audio-card-analog"
 		device.id = "44"
 		device.profile.description = "Pro 1"
 		device.profile.name = "pro-output-1"
 		device.profile.pro = "true"
 		device.routes = "0"
 		factory.name = "api.alsa.pcm.sink"
 		media.class = "Audio/Sink"
 		node.description = "Family 17h (Models 00h-0fh) HD Audio Controller Pro 1"
 		node.name = "alsa_output.pci-0000_0b_00.3.pro-output-1"
 		node.nick = "ALC1220 Digital"
 		node.pause-on-idle = "false"
 		object.path = "alsa:acp:Generic:2:playback"
 		port.group = "playback"
 		priority.driver = "1228"
 		priority.session = "1228"
 		factory.id = "19"
 		clock.quantum-limit = "8192"
 		client.id = "40"
 		node.driver = "true"
 		node.loop.name = "data-loop.0"
 		library.name = "audioconvert/libspa-audioconvert"
 		object.id = "124"
 		object.serial = "1148"
 		node.max-latency = "16384/48000"
 		api.alsa.period-size = "1024"
 		api.alsa.period-num = "32"
 		api.alsa.headroom = "0"

@MaxVerevkin
Copy link
Collaborator

Still the same 😢

@bim9262
Copy link
Collaborator Author

bim9262 commented Jun 24, 2025

@MaxVerevkin assuming that at the very least channelVolumes is present this script can be used on pw-mon's output to find just the parameters that are changed.

#!/bin/python

import sys
import re

section = None
id = None
type_ = None
param = ""

section_re = re.compile(r"^(added|removed|changed):$")
param_id = re.compile(r"^[\* ]\t  id:")

for line in sys.stdin:
    section_match = section_re.match(line)
    if section_match:
        section = section_match.group(1)
        id = None
        type_ = None
        param = ""
    elif line.startswith("\tid:"):
        id = line.rstrip()
    elif line.startswith("\ttype:"):
        type_ = line.rstrip()

    if section == "changed":
        if param_id.match(line):
            if "channelVolumes" in param:
                print(id)
                print(type_)
                print(param)
            param = ""
        param += line

If you could run pw-mon | python /some/script/path, change the volume, and share the output that should help figure out what's going on. If you could also include the output of pw-dump that would be good in case I need to figure out anything regarding the ids.

In the case that channelVolumes is not what we're looking for you can diff the output of pw-dumps to see what changed after setting the volume.

@bim9262
Copy link
Collaborator Author

bim9262 commented Jul 10, 2025

I just restarted my computer and noticed that the mute/setting the volume using the pipewire block didn't work (nor did changes made with the pulse block cause updates to the pipewire block).

I ran the script I previously shared while setting the volume with the pulse block and got nothing. Upon opening pavucontrol (end even after exiting) both blocks started working again...

I checked the relevant services and the all seem to be enabled and running 😕

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for native pipewire
2 participants