mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-04-21 06:46:38 -04:00
Add a standalone tool that creates virtual AVB talker/listener endpoints visible in the PipeWire graph (e.g. Helvum). Uses the loopback transport so no AVB hardware or network access is needed. The sink node consumes audio silently, the source produces silence. Supports --milan flag for Milan v1.2 mode and --name for custom node name prefix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
150 lines
4.4 KiB
Meson
150 lines
4.4 KiB
Meson
tools_sources = [
|
|
[ 'pw-mon', [ 'pw-mon.c' ] ],
|
|
[ 'pw-config', [ 'pw-config.c' ] ],
|
|
[ 'pw-container', [ 'pw-container.c' ] ],
|
|
[ 'pw-dot', [ 'pw-dot.c' ] ],
|
|
[ 'pw-dump', [ 'pw-dump.c' ] ],
|
|
[ 'pw-profiler', [ 'pw-profiler.c' ] ],
|
|
[ 'pw-mididump', [ 'pw-mididump.c', 'midifile.c', 'midievent.c', 'midiclip.c' ] ],
|
|
[ 'pw-metadata', [ 'pw-metadata.c' ] ],
|
|
[ 'pw-loopback', [ 'pw-loopback.c' ] ],
|
|
[ 'pw-link', [ 'pw-link.c' ] ],
|
|
]
|
|
|
|
foreach t : tools_sources
|
|
executable(t.get(0),
|
|
t.get(1),
|
|
install: true,
|
|
dependencies : [pipewire_dep, mathlib],
|
|
)
|
|
endforeach
|
|
|
|
executable('pw-cli',
|
|
'pw-cli.c',
|
|
install: true,
|
|
dependencies: [pipewire_dep, readline_dep]
|
|
)
|
|
|
|
if ncurses_dep.found()
|
|
executable('pw-top',
|
|
'pw-top.c',
|
|
install: true,
|
|
dependencies : [pipewire_dep, ncurses_dep],
|
|
)
|
|
endif
|
|
|
|
build_pw_cat = false
|
|
build_pw_cat_with_ffmpeg = false
|
|
pwcat_deps = [ sndfile_dep ]
|
|
|
|
if get_option('pw-cat').allowed() and sndfile_dep.found()
|
|
build_pw_cat = true
|
|
|
|
if pw_cat_ffmpeg.allowed() and avcodec_dep.found() and avformat_dep.found() and avutil_dep.found()
|
|
pwcat_deps += [avcodec_dep, avformat_dep, avutil_dep]
|
|
build_pw_cat_with_ffmpeg = true
|
|
endif
|
|
|
|
pwcat_sources = [
|
|
'pw-cat.c',
|
|
'midifile.c',
|
|
'midiclip.c',
|
|
'midievent.c',
|
|
'dfffile.c',
|
|
'dsffile.c',
|
|
]
|
|
|
|
pwcat_aliases = [
|
|
'pw-play',
|
|
'pw-record',
|
|
'pw-midiplay',
|
|
'pw-midirecord',
|
|
'pw-midi2play',
|
|
'pw-midi2record',
|
|
'pw-dsdplay',
|
|
'pw-encplay',
|
|
'pw-sysex',
|
|
]
|
|
|
|
pw_cat = executable('pw-cat',
|
|
pwcat_sources,
|
|
install: true,
|
|
dependencies : [pwcat_deps, pipewire_dep, mathlib],
|
|
)
|
|
|
|
foreach alias : pwcat_aliases
|
|
custom_target(
|
|
alias,
|
|
build_by_default: true,
|
|
install: false,
|
|
command: [ln, '-sf', meson.project_build_root() + '/@INPUT@', '@OUTPUT@'],
|
|
input: pw_cat,
|
|
output: alias,
|
|
)
|
|
install_symlink(
|
|
alias,
|
|
pointing_to: pw_cat.name(),
|
|
install_dir: pipewire_bindir,
|
|
)
|
|
endforeach
|
|
elif not sndfile_dep.found() and get_option('pw-cat').enabled()
|
|
error('pw-cat is enabled but required dependency `sndfile` was not found.')
|
|
endif
|
|
summary({'Build pw-cat tool': build_pw_cat}, bool_yn: true, section: 'pw-cat/pw-play/pw-dump tool')
|
|
if build_pw_cat
|
|
summary({'Build pw-cat with FFmpeg integration': build_pw_cat_with_ffmpeg}, bool_yn: true, section: 'pw-cat/pw-play/pw-dump tool')
|
|
endif
|
|
|
|
build_avb_virtual = get_option('avb').require(
|
|
host_machine.system() == 'linux',
|
|
error_message: 'AVB support is only available on Linux'
|
|
).allowed()
|
|
|
|
if build_avb_virtual
|
|
avb_tool_inc = include_directories('../modules')
|
|
avb_tool_sources = [
|
|
'pw-avb-virtual.c',
|
|
'../modules/module-avb/avb.c',
|
|
'../modules/module-avb/adp.c',
|
|
'../modules/module-avb/acmp.c',
|
|
'../modules/module-avb/aecp.c',
|
|
'../modules/module-avb/aecp-aem.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-available.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-control.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-name.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-clock-source.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-sampling-rate.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-deregister-unsolicited-notifications.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-register-unsolicited-notifications.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-stream-format.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-lock-entity.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-configuration.c',
|
|
'../modules/module-avb/aecp-aem-cmds-resps/reply-unsol-helpers.c',
|
|
'../modules/module-avb/es-builder.c',
|
|
'../modules/module-avb/avdecc.c',
|
|
'../modules/module-avb/descriptors.c',
|
|
'../modules/module-avb/maap.c',
|
|
'../modules/module-avb/mmrp.c',
|
|
'../modules/module-avb/mrp.c',
|
|
'../modules/module-avb/msrp.c',
|
|
'../modules/module-avb/mvrp.c',
|
|
'../modules/module-avb/srp.c',
|
|
'../modules/module-avb/stream.c',
|
|
]
|
|
executable('pw-avb-virtual',
|
|
avb_tool_sources,
|
|
install: true,
|
|
include_directories: [configinc, avb_tool_inc],
|
|
dependencies: [mathlib, dl_lib, rt_lib, pipewire_dep],
|
|
)
|
|
endif
|
|
|
|
if dbus_dep.found()
|
|
executable('pw-reserve',
|
|
'reserve.h',
|
|
'reserve.c',
|
|
'pw-reserve.c',
|
|
install: true,
|
|
dependencies : [dbus_dep, pipewire_dep],
|
|
)
|
|
endif
|