generated from general-packages/pika-pkg-template
148 lines
4.5 KiB
Markdown
148 lines
4.5 KiB
Markdown
|
Manual tests for PipeWire
|
||
|
=========================
|
||
|
|
||
|
Introspection (pipewire)
|
||
|
------------------------
|
||
|
|
||
|
Install `pipewire`.
|
||
|
|
||
|
Run `pw-cli dump`.
|
||
|
|
||
|
Video streams
|
||
|
-------------
|
||
|
|
||
|
Install `pipewire` and `pipewire-tests`.
|
||
|
|
||
|
Run `/usr/libexec/installed-tests/pipewire-0.3/examples/video-src`
|
||
|
(or `video-src-alloc`). It will print a node ID, for example 42.
|
||
|
|
||
|
In another terminal, run
|
||
|
`/usr/libexec/installed-tests/pipewire-0.3/examples/video-play 42`
|
||
|
or `/usr/libexec/installed-tests/pipewire-0.3/examples/export-sink 42`,
|
||
|
replacing 42 by the node ID you saw. You should get a window with an
|
||
|
animation.
|
||
|
|
||
|
Similarly, if you uncomment the lines
|
||
|
|
||
|
```
|
||
|
add-spa-lib videotestsrc videotestsrc/libspa-videotestsrc
|
||
|
create-object spa-node-factory factory.name=videotestsrc node.name=videotestsrc Spa:Pod:Object:Param:Props:patternType=1
|
||
|
```
|
||
|
|
||
|
in `/etc/pipewire/pipewire.conf`, then you should see a node in the output
|
||
|
of `pw-cli ls Node` with `node.name = "videotestsrc"`. Pass its node ID
|
||
|
to `video-play` to see a different animation.
|
||
|
|
||
|
V4L2 cameras
|
||
|
------------
|
||
|
|
||
|
If you have a camera, run
|
||
|
`/usr/libexec/installed-tests/pipewire-0.3/examples/local-v4l2` or
|
||
|
`/usr/libexec/installed-tests/pipewire-0.3/examples/spa/local-v4l2`.
|
||
|
You should get a camera stream displayed in a window (but this might
|
||
|
fail if it cannot negotiate a suitable capture resolution).
|
||
|
|
||
|
Audio sink
|
||
|
----------
|
||
|
|
||
|
Use `pw-play` to play a WAV file.
|
||
|
|
||
|
Audio test source
|
||
|
-----------------
|
||
|
|
||
|
If you uncomment the lines
|
||
|
|
||
|
```
|
||
|
add-spa-lib audiotestsrc audiotestsrc/libspa-audiotestsrc
|
||
|
create-object adapter factory.name=audiotestsrc node.name=my-test
|
||
|
```
|
||
|
|
||
|
in `/etc/pipewire/pipewire.conf`, then you should see a node in the output
|
||
|
of `pw-cli ls Node` with `node.name = "my-test"`. You can record from it
|
||
|
with `pw-record --target ${node id here} test.wav` (press Ctrl+C to
|
||
|
stop recording).
|
||
|
|
||
|
ALSA client plugin (pipewire-audio-client-libraries)
|
||
|
----------------------------------------------------
|
||
|
|
||
|
Install `pipewire-audio-client-libraries` and `alsa-utils`.
|
||
|
Make sure PulseAudio is not currently playing audio and is configured
|
||
|
to release the audio device when not in use.
|
||
|
|
||
|
`aplay -L` should list `pipewire`.
|
||
|
|
||
|
`aplay -D pipewire /usr/share/sounds/alsa/Front_Center.wav` should
|
||
|
play a sound.
|
||
|
|
||
|
JACK client library replacement (pipewire-audio-client-libraries)
|
||
|
-----------------------------------------------------------------
|
||
|
|
||
|
Install `pipewire`, `pipewire-audio-client-libraries`, `alsa-utils` and
|
||
|
`sndfile-tools`. Do not have a real JACK server running.
|
||
|
Make sure PulseAudio is not currently playing audio and is configured
|
||
|
to release the audio device when not in use.
|
||
|
|
||
|
`aplay -D jack /usr/share/sounds/alsa/Front_Center.wav` and
|
||
|
`sndfile-jackplay /usr/share/sounds/alsa/Front_Center.wav` should fail
|
||
|
with:
|
||
|
|
||
|
```
|
||
|
jack server is not running or cannot be started
|
||
|
```
|
||
|
|
||
|
`pw-jack aplay -D jack /usr/share/sounds/alsa/Front_Center.wav`
|
||
|
should succeed.
|
||
|
|
||
|
* TODO: Currently it prints
|
||
|
|
||
|
aplay: set_params:1343: Sample format non available
|
||
|
Available formats:
|
||
|
- FLOAT_LE
|
||
|
|
||
|
and segfaults.
|
||
|
|
||
|
`pw-jack sndfile-jackplay /usr/share/sounds/alsa/Front_Center.wav`
|
||
|
should succeed.
|
||
|
|
||
|
* TODO: Currently it prints
|
||
|
`Cannot connect output port 0 (alsa_pcm:playback_1)` and plays
|
||
|
silence for the length of the test file.
|
||
|
|
||
|
PulseAudio client library replacement (pipewire-audio-client-libraries)
|
||
|
-----------------------------------------------------------------------
|
||
|
|
||
|
Install `pipewire`, `pipewire-audio-client-libraries`, `alsa-utils` and
|
||
|
`pulseaudio-utils`. Make sure PulseAudio is not currently playing audio
|
||
|
and is configured to release the audio device when not in use.
|
||
|
|
||
|
Setup: let your pulseaudio service become idle, then
|
||
|
`pkill -STOP pulseaudio`.
|
||
|
|
||
|
`paplay /usr/share/sounds/alsa/Front_Center.wav` should hang (because
|
||
|
PulseAudio has been stopped).
|
||
|
|
||
|
`pw-pulse paplay /usr/share/sounds/alsa/Front_Center.wav` should play
|
||
|
the audio.
|
||
|
|
||
|
Teardown: `pkill -CONT pulseaudio` to return it to normal.
|
||
|
|
||
|
GStreamer elements (gstreamer1.0-pipewire)
|
||
|
------------------------------------------
|
||
|
|
||
|
Install `gstreamer1.0-tools` and `gstreamer1.0-pipewire`.
|
||
|
Make sure PulseAudio is not currently playing audio and is configured
|
||
|
to release the audio device when not in use.
|
||
|
|
||
|
Run: `gst-inspect-1.0 pipewire`. It should list `pipewiresrc`,
|
||
|
`pipewiresink` and `pipewiredeviceprovider`.
|
||
|
|
||
|
Run: `gst-inspect-1.0 pipewiresrc`. It should list details.
|
||
|
|
||
|
Run: `gst-inspect-1.0 pipewiresink`. It should list details.
|
||
|
|
||
|
Run: `gst-launch-1.0 audiotestsrc '!' pipewiresink`. It should beep
|
||
|
until you press Ctrl+C.
|
||
|
|
||
|
Run: `gst-launch-1.0 pipewiresrc '!' videoconvert '!' autovideosink`.
|
||
|
You should get a webcam image (if you have a webcam).
|