pipewire/debian/tests/manual-tests.md

148 lines
4.5 KiB
Markdown
Raw Normal View History

2024-07-25 19:20:18 +02:00
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).