pipewire/debian/tests/manual-tests.md
Ward from fusion-voyager-3 cf01112e68 port to pika os 4
2024-07-25 20:20:18 +03:00

4.5 KiB

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).