diff --git a/doc/dox/pulse-modules.dox b/doc/dox/pulse-modules.dox new file mode 100644 index 000000000..56b0a8a38 --- /dev/null +++ b/doc/dox/pulse-modules.dox @@ -0,0 +1,52 @@ +/** \page page_pulse_modules Pulseaudio Modules + +PipeWire's Pulseaudio emulation implements several Pulseaudio modules. +It only supports its own built-in modules, and cannot load external +modules written for Pulseaudio. + +The built-in modules can be loaded using Pulseaudio client programs, +for example `pactl load-module `. They +can also added to `pipewire-pulse.conf`, typically by a drop-in file +in `~/.config/pipewire/pipewire-pulse.conf.d/` containing the module +name and its arguments +``` +pulse.cmd = [ + { cmd = "load-module" args = "module-null-sink sink_name=foo" flags = [ ] } +] +``` + +List of known built-in modules: + +- \subpage page_pulse_module_alsa_sink +- \subpage page_pulse_module_alsa_source +- \subpage page_pulse_module_always_sink +- \subpage page_pulse_module_combine_sink +- \subpage page_pulse_module_echo_cancel +- \subpage page_pulse_module_gsettings +- \subpage page_pulse_module_jackdbus_detect +- \subpage page_pulse_module_ladspa_sink +- \subpage page_pulse_module_ladspa_source +- \subpage page_pulse_module_loopback +- \subpage page_pulse_module_native_protocol_tcp +- \subpage page_pulse_module_null_sink +- \subpage page_pulse_module_pipe_sink +- \subpage page_pulse_module_pipe_source +- \subpage page_pulse_module_raop_discover +- \subpage page_pulse_module_remap_sink +- \subpage page_pulse_module_remap_source +- \subpage page_pulse_module_roc_sink +- \subpage page_pulse_module_roc_sink_input +- \subpage page_pulse_module_roc_source +- \subpage page_pulse_module_rtp_recv +- \subpage page_pulse_module_rtp_send +- \subpage page_pulse_module_simple_protocol_tcp +- \subpage page_pulse_module_switch_on_connect +- \subpage page_pulse_module_tunnel_sink +- \subpage page_pulse_module_tunnel_source +- \subpage page_pulse_module_virtual_sink +- \subpage page_pulse_module_virtual_source +- \subpage page_pulse_module_x11_bell +- \subpage page_pulse_module_zeroconf_discover +- \subpage page_pulse_module_zeroconf_publish + +*/ diff --git a/doc/input-filter.py b/doc/input-filter.py new file mode 100755 index 000000000..f4c223b9c --- /dev/null +++ b/doc/input-filter.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +# -*- mode: python; coding: utf-8; eval: (blacken-mode); -*- +r""" +Doxygen input filter that: + +- adds \privatesection to all files +- removes macros +- parses pulse_module_options and substitutes it into @pulse_module_options@ + +This is used for .c files, and causes Doxygen to not include +any symbols from them, unless they also appeared in a header file. + +The Pulse module option parsing is used in documentation of Pulseaudio modules. +""" +import sys +import re +import os + + +def main(): + with open(sys.argv[1], "r") as f: + text = f.read() + + text = re.sub("#define.*", "", text) + + m = re.search( + r"static const char[* ]*const pulse_module_options\s+=\s+(.*?\")\s*;\s*$", + text, + re.M | re.S, + ) + if m: + res = [] + for line in m.group(1).splitlines(): + m = re.match(r"\s*\"\s*([a-z0-9_]+)\s*=\s*(.*)\"\s*$", line) + if m: + name = m.group(1) + value = m.group(2).strip().strip("<>") + res.append(f"- `{name}`: {value}") + + res = "\n * ".join(res) + text = text.replace("@pulse_module_options@", res) + + print("/** \\privatesection */") + print(text) + + +if __name__ == "__main__": + main() diff --git a/doc/input-filter.sh b/doc/input-filter.sh deleted file mode 100755 index 8c71befa1..000000000 --- a/doc/input-filter.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# -# Doxygen input filter that adds \privatesection to all files, -# and removes macros. -# -# This is used for .c files, and causes Doxygen to not include -# any symbols from them, unless they also appeared in a header file. -# -echo -n "/** \privatesection */ " -sed -e 's/#define.*//' < "$1" diff --git a/doc/meson.build b/doc/meson.build index c3fe1eea3..46eb2fb82 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -20,6 +20,7 @@ extra_docs = [ 'dox/index.dox', 'dox/overview.dox', 'dox/modules.dox', + 'dox/pulse-modules.dox', 'dox/internals/index.dox', 'dox/internals/design.dox', 'dox/internals/access.dox', @@ -68,6 +69,9 @@ endforeach foreach h : module_sources inputs += meson.project_source_root() / 'src' / 'modules' / h endforeach +foreach h : pipewire_module_protocol_pulse_sources + inputs += meson.project_source_root() / 'src' / 'modules' / h +endforeach input_dirs = [ meson.project_source_root() / 'spa' / 'include' / 'spa' ] path_prefixes = [ @@ -141,7 +145,7 @@ pw_programs_dox = configure_file(input: 'programs.dox.in', input_dirs += [ 'doc/programs.dox' ] doxygen_layout = meson.project_source_root() / 'doc' / 'DoxygenLayout.xml' -doxygen_filter_c = meson.project_source_root() / 'doc' / 'input-filter.sh' +doxygen_filter_c = meson.project_source_root() / 'doc' / 'input-filter.py' doxygen_filter_h = meson.project_source_root() / 'doc' / 'input-filter-h.sh' doxyfile_conf.set('inputs', ' '.join(inputs + input_dirs)) @@ -177,9 +181,24 @@ if generate_module_manpages endif endforeach + module_manpage_names = [] foreach m : module_sources - name = m.split('.c').get(0) - file = 'libpipewire-' + name + '.7' + name = m.split('.c').get(0) + file = f'libpipewire-@name@.7' + module_manpage_names += [[name, file]] + endforeach + foreach m : pipewire_module_protocol_pulse_sources + name = m.split('/').get(-1).split('.c').get(0) + if m.contains('/modules/') and name.startswith('module-') + name = f'pulse-@name@' + file = f'pipewire-@name@.7' + module_manpage_names += [[name, file]] + endif + endforeach + + foreach item : module_manpage_names + name = item.get(0) + file = item.get(1) rst = custom_target(file + '.rst', command : [python, module_man_rst_py, pandoc, name, '@INPUT@' ] + module_man_defines, diff --git a/doc/module-man-rst.py b/doc/module-man-rst.py index 0aa68c731..c4a84594d 100644 --- a/doc/module-man-rst.py +++ b/doc/module-man-rst.py @@ -1,4 +1,5 @@ #!/usr/bin/python3 +# -*- mode: python; coding: utf-8; eval: (blacken-mode); -*- """ Convert Doxygen HTML documentation for a PipeWire module to RST. """ @@ -33,9 +34,7 @@ PipeWire is available from {PACKAGE_URL} SEE ALSO -------- -``pipewire(1)``, -``pipewire.conf(5)``, -``libpipewire-modules(7)`` +{seealso} """ @@ -68,11 +67,17 @@ def main(): [args.pandoc, "-f", "html", "-t", "rst"], input=data, encoding="utf-8" ) - if not content.strip(): - content = "Undocumented." + if not content.strip() or content.lower().startswith("module name\n-----"): + content = "Undocumented.\n\n" + content - name = f"libpipewire-{args.module}" - subtitle = "PipeWire module" + if args.module.startswith("pulse-"): + name = re.sub(r"^pulse-module-", "module-", args.module) + seealso = "``pipewire-pulse(1)``, ``pipewire-pulse-modules(7)``" + subtitle = "PipeWire Pulseaudio module" + else: + name = f"libpipewire-{args.module}" + seealso = "``pipewire(1)``, ``pipewire.conf(5)``, ``libpipewire-modules(7)``" + subtitle = "PipeWire module" env = dict( content=content, @@ -80,6 +85,7 @@ def main(): name_underline="#" * len(name), subtitle=subtitle, subtitle_underline="-" * len(subtitle), + seealso=seealso, ) for k, v in args.define: diff --git a/doc/tree.dox b/doc/tree.dox index 50e03403b..3e3588259 100644 --- a/doc/tree.dox +++ b/doc/tree.dox @@ -123,8 +123,9 @@ Support interfaces provided by host \} \page page_overview -\page page_modules \page page_programs +\page page_modules +\page page_pulse_modules \page page_internals \page page_api \page page_tutorial diff --git a/man/meson.build b/man/meson.build index 79df3dca0..dd94be158 100644 --- a/man/meson.build +++ b/man/meson.build @@ -9,11 +9,21 @@ manpage_conf.set('PIPEWIRE_CONFDATADIR', pipewire_confdatadir) module_manpage_list = [] foreach m : module_sources name = m.split('.c').get(0) - module_manpage_list += ['``libpipewire-' + name + '(7)``'] + module_manpage_list += f'``libpipewire-' + name + '(7)``' endforeach manpage_conf.set('LIBPIPEWIRE_MODULES', '\n- '.join(module_manpage_list)) +pulse_module_manpage_list = [] +foreach m : pipewire_module_protocol_pulse_sources + name = m.split('/').get(-1).split('.c').get(0) + if m.contains('/modules/') and name.startswith('module-') + pulse_module_manpage_list += f'``pipewire-pulse-@name@(7)``' + endif +endforeach + +manpage_conf.set('PIPEWIRE_PULSE_MODULES', '\n- '.join(pulse_module_manpage_list)) + manpages = [ 'pipewire.1.rst.in', 'pipewire-pulse.1.rst.in', @@ -31,6 +41,7 @@ manpages = [ 'pw-profiler.1.rst.in', 'pw-top.1.rst.in', 'libpipewire-modules.7.rst.in', + 'pipewire-pulse-modules.7.rst.in', ] if get_option('pipewire-jack').allowed() diff --git a/man/pipewire-pulse-modules.7.rst.in b/man/pipewire-pulse-modules.7.rst.in new file mode 100644 index 000000000..5093684b3 --- /dev/null +++ b/man/pipewire-pulse-modules.7.rst.in @@ -0,0 +1,43 @@ +pipewire-pulse-modules +###################### + +--------------------------- +PipeWire Pulseaudio modules +--------------------------- + +:Manual section: 7 +:Manual group: PipeWire + +DESCRIPTION +=========== + +PipeWire's Pulseaudio emulation implements several Pulseaudio modules. +It only supports its own built-in modules, and cannot load external +modules written for Pulseaudio. + +The built-in modules can be loaded using Pulseaudio client programs, +for example `pactl load-module `. They +can also added to `pipewire-pulse.conf`, typically by a drop-in file +in `~/.config/pipewire/pipewire-pulse.conf.d/` containing the module +name and its arguments + +:: + + pulse.cmd = [ + { cmd = "load-module" args = "module-null-sink sink_name=foo" flags = [ ] } + ] + +KNOWN MODULES +============= + +- @PIPEWIRE_PULSE_MODULES@ + +AUTHORS +======= + +The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@ + +SEE ALSO +======== + +``pipewire-pulse(1)``, diff --git a/meson.build b/meson.build index 8c6552402..f99383230 100644 --- a/meson.build +++ b/meson.build @@ -500,13 +500,13 @@ summary({'Manpage generation': generate_manpages}, bool_yn: true) subdir('man') doxygen = find_program('doxygen', required : get_option('docs')) -if doxygen.found() +pymod = import('python') +python = pymod.find_installation('python3', required: get_option('docs')) +if doxygen.found() and python.found() generate_module_manpages = get_option('docs').enabled() and get_option('man').enabled() if generate_manpages - pymod = import('python') - python = pymod.find_installation('python3', required: generate_module_manpages) pandoc = find_program('pandoc', required: generate_module_manpages) - generate_module_manpages = python.found() and pandoc.found() + generate_module_manpages = pandoc.found() endif summary({'Module manpage generation': generate_module_manpages}, bool_yn: true) diff --git a/src/modules/module-protocol-pulse/modules/module-alsa-sink.c b/src/modules/module-protocol-pulse/modules/module-alsa-sink.c index e07662ad7..49ca9404b 100644 --- a/src/modules/module-protocol-pulse/modules/module-alsa-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-alsa-sink.c @@ -7,6 +7,43 @@ #include "../manager.h" #include "../module.h" +/** \page page_pulse_module_alsa_sink ALSA Sink + * + * ## Module Name + * + * `module-alsa-sink` + * + * ## Module Options + * + * @pulse_module_options@ + */ + +static const char *const pulse_module_options = + "name= " + "sink_name= " + "sink_properties= " + "namereg_fail= " + "device= " + "device_id= " + "format= " + "rate= " + "alternate_rate= " + "channels= " + "channel_map= " + "fragments= " + "fragment_size= " + "mmap= " + "tsched= " + "tsched_buffer_size= " + "tsched_buffer_watermark= " + "ignore_dB= " + "control= " + "rewind_safeguard= " + "deferred_volume= " + "deferred_volume_safety_margin= " + "deferred_volume_extra_delay= " + "fixed_latency_range= "; + #define NAME "alsa-sink" #define DEFAULT_DEVICE "default" @@ -131,31 +168,7 @@ static int module_alsa_sink_unload(struct module *module) static const struct spa_dict_item module_alsa_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "An ALSA sink" }, - { PW_KEY_MODULE_USAGE, - "name= " - "sink_name= " - "sink_properties= " - "namereg_fail= " - "device= " - "device_id= " - "format= " - "rate= " - "alternate_rate= " - "channels= " - "channel_map= " - "fragments= " - "fragment_size= " - "mmap= " - "tsched= " - "tsched_buffer_size= " - "tsched_buffer_watermark= " - "ignore_dB= " - "control= " - "rewind_safeguard= " - "deferred_volume= " - "deferred_volume_safety_margin= " - "deferred_volume_extra_delay= " - "fixed_latency_range=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-alsa-source.c b/src/modules/module-protocol-pulse/modules/module-alsa-source.c index 4fe5f51e7..1ffce1750 100644 --- a/src/modules/module-protocol-pulse/modules/module-alsa-source.c +++ b/src/modules/module-protocol-pulse/modules/module-alsa-source.c @@ -7,6 +7,43 @@ #include "../manager.h" #include "../module.h" +/** \page page_pulse_module_alsa_source ALSA Source + * + * ## Module Name + * + * `module-alsa-source` + * + * ## Module Options + * + * @pulse_module_options@ + */ + +static const char *const pulse_module_options = + "name= " + "source_name= " + "source_properties= " + "namereg_fail= " + "device= " + "device_id= " + "format= " + "rate= " + "alternate_rate= " + "channels= " + "channel_map= " + "fragments= " + "fragment_size= " + "mmap= " + "tsched= " + "tsched_buffer_size= " + "tsched_buffer_watermark= " + "ignore_dB= " + "control= " + "rewind_safeguard= " + "deferred_volume= " + "deferred_volume_safety_margin= " + "deferred_volume_extra_delay= " + "fixed_latency_range="; + #define NAME "alsa-source" #define DEFAULT_DEVICE "default" @@ -131,31 +168,7 @@ static int module_alsa_source_unload(struct module *module) static const struct spa_dict_item module_alsa_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "An ALSA source" }, - { PW_KEY_MODULE_USAGE, - "name= " - "source_name= " - "source_properties= " - "namereg_fail= " - "device= " - "device_id= " - "format= " - "rate= " - "alternate_rate= " - "channels= " - "channel_map= " - "fragments= " - "fragment_size= " - "mmap= " - "tsched= " - "tsched_buffer_size= " - "tsched_buffer_watermark= " - "ignore_dB= " - "control= " - "rewind_safeguard= " - "deferred_volume= " - "deferred_volume_safety_margin= " - "deferred_volume_extra_delay= " - "fixed_latency_range=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-always-sink.c b/src/modules/module-protocol-pulse/modules/module-always-sink.c index 041f76728..e0ba258f6 100644 --- a/src/modules/module-protocol-pulse/modules/module-always-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-always-sink.c @@ -6,6 +6,19 @@ #include "../module.h" +/** \page page_pulse_module_always_sink Always Sink + * + * ## Module Name + * + * `module-always-sink` + * + * ## Module Options + * + * @pulse_module_options@ + */ + +static const char *const pulse_module_options = "sink_name="; + #define NAME "always-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -77,7 +90,7 @@ static int module_always_sink_unload(struct module *module) static const struct spa_dict_item module_always_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Pauli Virtanen " }, { PW_KEY_MODULE_DESCRIPTION, "Always keeps at least one sink loaded even if it's a null one" }, - { PW_KEY_MODULE_USAGE, "sink_name=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-combine-sink.c b/src/modules/module-protocol-pulse/modules/module-combine-sink.c index 62c544be4..15300fbb9 100644 --- a/src/modules/module-protocol-pulse/modules/module-combine-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-combine-sink.c @@ -12,6 +12,32 @@ #include "../manager.h" #include "../module.h" +/** \page page_pulse_module_combine_sink Combine Sink + * + * ## Module Name + * + * `module-combine-sink` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_combine_stream "libpipewire-module-combine-stream" + */ + +static const char *const pulse_module_options = + "sink_name= " + "sink_properties= " + /* not a great name, but for backwards compatibility... */ + "slaves= " + "rate= " + "channels= " + "channel_map= " + "remix= " + "latency_compensate= "; + #define NAME "combine-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -24,15 +50,7 @@ PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); static const struct spa_dict_item module_combine_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Arun Raghavan " }, { PW_KEY_MODULE_DESCRIPTION, "Combine multiple sinks into a single sink" }, - { PW_KEY_MODULE_USAGE, "sink_name= " - "sink_properties= " - /* not a great name, but for backwards compatibility... */ - "slaves= " - "rate= " - "channels= " - "channel_map= " - "remix= " - "latency_compensate= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-echo-cancel.c b/src/modules/module-protocol-pulse/modules/module-echo-cancel.c index cd089af22..9737266db 100644 --- a/src/modules/module-protocol-pulse/modules/module-echo-cancel.c +++ b/src/modules/module-protocol-pulse/modules/module-echo-cancel.c @@ -11,6 +11,45 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_echo_cancel Echo Cancel + * + * ## Module Name + * + * `module-echo-cancel` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_echo_cancel "libpipewire-module-echo-cancel" + */ + +static const char *const pulse_module_options = + "source_name= " + "source_properties= " + "source_master= " + "sink_name= " + "sink_properties= " + "sink_master= " + "rate= " + "channels= " + "channel_map= " + "aec_method= " + "aec_args= "; +#if 0 + /* These are not implemented because they don't + * really make sense in the PipeWire context */ + "format= " + "adjust_time= " + "adjust_threshold= " + "autoloaded= " + "save_aec= " + "use_volume_sharing= " + "use_master_format= " +#endif + #define NAME "echo-cancel" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -114,29 +153,7 @@ static int module_echo_cancel_unload(struct module *module) static const struct spa_dict_item module_echo_cancel_info[] = { { PW_KEY_MODULE_AUTHOR, "Arun Raghavan " }, { PW_KEY_MODULE_DESCRIPTION, "Acoustic echo canceller" }, - { PW_KEY_MODULE_USAGE, "source_name= " - "source_properties= " - "source_master= " - "sink_name= " - "sink_properties= " - "sink_master= " - "rate= " - "channels= " - "channel_map= " - "aec_method= " - "aec_args= " -#if 0 - /* These are not implemented because they don't - * really make sense in the PipeWire context */ - "format= " - "adjust_time= " - "adjust_threshold= " - "autoloaded= " - "save_aec= " - "use_volume_sharing= " - "use_master_format= " -#endif - }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-gsettings.c b/src/modules/module-protocol-pulse/modules/module-gsettings.c index f9f713a48..1968cc101 100644 --- a/src/modules/module-protocol-pulse/modules/module-gsettings.c +++ b/src/modules/module-protocol-pulse/modules/module-gsettings.c @@ -11,6 +11,17 @@ #include "../module.h" +/** \page page_pulse_module_gsettings GSettings + * + * ## Module Name + * + * `module-gsettings` + * + * ## Module Options + * + * No options. + */ + #define NAME "gsettings" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); diff --git a/src/modules/module-protocol-pulse/modules/module-jackdbus-detect.c b/src/modules/module-protocol-pulse/modules/module-jackdbus-detect.c index 33d7ba341..c015673f9 100644 --- a/src/modules/module-protocol-pulse/modules/module-jackdbus-detect.c +++ b/src/modules/module-protocol-pulse/modules/module-jackdbus-detect.c @@ -8,6 +8,35 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_jackdbus_detect JackDBus Detect + * + * ## Module Name + * + * `module-jackdbus-detect` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_jackdbus_detect "libpipewire-module-jackdbus-detect" + */ + +static const char *const pulse_module_options = + "channels= " + "sink_name= " + "sink_properties= " + "sink_client_name= " + "sink_channels= " + "sink_channel_map= " + "source_name= " + "source_properties= " + "source_client_name= " + "source_channels= " + "source_channel_map= " + "connect="; + #define NAME "jackdbus-detect" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -93,19 +122,7 @@ static int module_jackdbus_detect_unload(struct module *module) static const struct spa_dict_item module_jackdbus_detect_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Creates a JACK client when jackdbus is started" }, - { PW_KEY_MODULE_USAGE, - "channels= " - "sink_name= " - "sink_properties= " - "sink_client_name= " - "sink_channels= " - "sink_channel_map= " - "source_name= " - "source_properties= " - "source_client_name= " - "source_channels= " - "source_channel_map= " - "connect=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c b/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c index 5dd26567b..50c368398 100644 --- a/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c @@ -11,6 +11,37 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_ladspa_sink LADSPA Sink + * + * ## Module Name + * + * `module-ladspa-sink` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_filter_chain "libpipewire-module-filter-chain" + */ + +static const char *const pulse_module_options = + "sink_name= " + "sink_properties= " + "sink_input_properties= " + "master= " + "sink_master= " + "format= " + "rate= " + "channels= " + "channel_map= " + "plugin= " + "label= " + "control= " + "input_ladspaport_map= " + "output_ladspaport_map= "; + #define NAME "ladspa-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -126,21 +157,7 @@ static int module_ladspa_sink_unload(struct module *module) static const struct spa_dict_item module_ladspa_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Virtual LADSPA sink" }, - { PW_KEY_MODULE_USAGE, - "sink_name= " - "sink_properties= " - "sink_input_properties= " - "master= " - "sink_master= " - "format= " - "rate= " - "channels= " - "channel_map= " - "plugin= " - "label= " - "control= " - "input_ladspaport_map= " - "output_ladspaport_map= "}, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-ladspa-source.c b/src/modules/module-protocol-pulse/modules/module-ladspa-source.c index 2e876ae4c..09eb11ce4 100644 --- a/src/modules/module-protocol-pulse/modules/module-ladspa-source.c +++ b/src/modules/module-protocol-pulse/modules/module-ladspa-source.c @@ -11,6 +11,37 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_ladspa_source LADSPA Source + * + * ## Module Name + * + * `module-ladspa-source` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_filter_chain "libpipewire-module-filter-chain" + */ + +static const char *const pulse_module_options = + "source_name= " + "source_properties= " + "source_output_properties= " + "master= " + "source_master= " + "format= " + "rate= " + "channels= " + "channel_map= " + "plugin= " + "label= " + "control= " + "input_ladspaport_map= " + "output_ladspaport_map= "; + #define NAME "ladspa-source" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -126,21 +157,7 @@ static int module_ladspa_source_unload(struct module *module) static const struct spa_dict_item module_ladspa_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Virtual LADSPA source" }, - { PW_KEY_MODULE_USAGE, - "source_name= " - "source_properties= " - "source_output_properties= " - "master= " - "source_master= " - "format= " - "rate= " - "channels= " - "channel_map= " - "plugin= " - "label= " - "control= " - "input_ladspaport_map= " - "output_ladspaport_map= "}, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-loopback.c b/src/modules/module-protocol-pulse/modules/module-loopback.c index 49507f635..2ef85fa5e 100644 --- a/src/modules/module-protocol-pulse/modules/module-loopback.c +++ b/src/modules/module-protocol-pulse/modules/module-loopback.c @@ -11,6 +11,34 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_loopback Loopback + * + * ## Module Name + * + * `module-loopback` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_loopback "libpipewire-module-loopback" + */ + +static const char *const pulse_module_options = + "source= " + "sink= " + "latency_msec= " + "rate= " + "channels= " + "channel_map= " + "sink_input_properties= " + "source_output_properties= " + "source_dont_move= " + "sink_dont_move= " + "remix= "; + #define NAME "loopback" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -99,17 +127,7 @@ static int module_loopback_unload(struct module *module) static const struct spa_dict_item module_loopback_info[] = { { PW_KEY_MODULE_AUTHOR, "Arun Raghavan " }, { PW_KEY_MODULE_DESCRIPTION, "Loopback from source to sink" }, - { PW_KEY_MODULE_USAGE, "source= " - "sink= " - "latency_msec= " - "rate= " - "channels= " - "channel_map= " - "sink_input_properties= " - "source_output_properties= " - "source_dont_move= " - "sink_dont_move= " - "remix= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-native-protocol-tcp.c b/src/modules/module-protocol-pulse/modules/module-native-protocol-tcp.c index 9536945ea..6700ad458 100644 --- a/src/modules/module-protocol-pulse/modules/module-native-protocol-tcp.c +++ b/src/modules/module-protocol-pulse/modules/module-native-protocol-tcp.c @@ -8,6 +8,22 @@ #include "../pulse-server.h" #include "../server.h" +/** \page page_pulse_module_native_protocol_tcp Pulseaudio TCP Protocol + * + * ## Module Name + * + * `module-native-protocol-tcp` + * + * ## Module Options + * + * @pulse_module_options@ + */ + +static const char *const pulse_module_options = + "port= " + "listen=
" + "auth-anonymous="; + #define NAME "protocol-tcp" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -53,9 +69,7 @@ static int module_native_protocol_tcp_unload(struct module *module) static const struct spa_dict_item module_native_protocol_tcp_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Native protocol (TCP sockets)" }, - { PW_KEY_MODULE_USAGE, "port= " - "listen=
" - "auth-anonymous="}, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-null-sink.c b/src/modules/module-protocol-pulse/modules/module-null-sink.c index d132c6514..2d85cd484 100644 --- a/src/modules/module-protocol-pulse/modules/module-null-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-null-sink.c @@ -7,6 +7,25 @@ #include "../manager.h" #include "../module.h" +/** \page page_pulse_module_null_sink Null Sink + * + * ## Module Name + * + * `module-null-sink` + * + * ## Module Options + * + * @pulse_module_options@ + */ + +static const char *const pulse_module_options = + "sink_name= " + "sink_properties= " + "format= " + "rate= " + "channels= " + "channel_map="; + #define NAME "null-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -129,12 +148,7 @@ static int module_null_sink_unload(struct module *module) static const struct spa_dict_item module_null_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "A NULL sink" }, - { PW_KEY_MODULE_USAGE, "sink_name= " - "sink_properties= " - "format= " - "rate= " - "channels= " - "channel_map=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-pipe-sink.c b/src/modules/module-protocol-pulse/modules/module-pipe-sink.c index b3a60f750..0f910ac6b 100644 --- a/src/modules/module-protocol-pulse/modules/module-pipe-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-pipe-sink.c @@ -14,6 +14,31 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_pipe_sink Pipe Sink + * + * ## Module Name + * + * `module-pipe-sink` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_pipe_tunnel "libpipewire-module-pipe-tunnel" + */ + +static const char *const pulse_module_options = + "file= " + "sink_name= " + "sink_properties= " + "format= " + "rate= " + "channels= " + "channel_map= " + "use_system_clock_for_timing= "; + #define NAME "pipe-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -94,14 +119,7 @@ static int module_pipe_sink_unload(struct module *module) static const struct spa_dict_item module_pipe_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Sanchayan Maity " }, { PW_KEY_MODULE_DESCRIPTION, "Pipe sink" }, - { PW_KEY_MODULE_USAGE, "file= " - "sink_name= " - "sink_properties= " - "format= " - "rate= " - "channels= " - "channel_map= " - "use_system_clock_for_timing= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-pipe-source.c b/src/modules/module-protocol-pulse/modules/module-pipe-source.c index 1261c4ec5..c9c31f106 100644 --- a/src/modules/module-protocol-pulse/modules/module-pipe-source.c +++ b/src/modules/module-protocol-pulse/modules/module-pipe-source.c @@ -14,6 +14,30 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_pipe_source Pipe Source + * + * ## Module Name + * + * `module-pipe-source` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_pipe_tunnel "libpipewire-module-pipe-tunnel" + */ + +static const char *const pulse_module_options = + "file= " + "source_name= " + "source_properties= " + "format= " + "rate= " + "channels= " + "channel_map= "; + #define NAME "pipe-source" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -94,13 +118,7 @@ static int module_pipe_source_unload(struct module *module) static const struct spa_dict_item module_pipe_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Sanchayan Maity " }, { PW_KEY_MODULE_DESCRIPTION, "Pipe source" }, - { PW_KEY_MODULE_USAGE, "file= " - "source_name= " - "source_properties= " - "format= " - "rate= " - "channels= " - "channel_map= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-raop-discover.c b/src/modules/module-protocol-pulse/modules/module-raop-discover.c index c4391837f..4e1cf8adb 100644 --- a/src/modules/module-protocol-pulse/modules/module-raop-discover.c +++ b/src/modules/module-protocol-pulse/modules/module-raop-discover.c @@ -8,6 +8,21 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_raop_discover RAOP Discover + * + * ## Module Name + * + * `module-raop-discover` + * + * ## Module Options + * + * No options. + * + * ## See Also + * + * \ref page_module_raop_discover "libpipewire-module-raop-discover" + */ + #define NAME "raop-discover" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); diff --git a/src/modules/module-protocol-pulse/modules/module-remap-sink.c b/src/modules/module-protocol-pulse/modules/module-remap-sink.c index 1f40c6520..103579fe2 100644 --- a/src/modules/module-protocol-pulse/modules/module-remap-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-remap-sink.c @@ -10,6 +10,33 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_remap_sink Remap Sink + * + * ## Module Name + * + * `module-remap-sink` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_loopback "libpipewire-module-loopback" + */ + +static const char *const pulse_module_options = + "sink_name= " + "sink_properties= " + "master= " + "master_channel_map= " + "format= " + "rate= " + "channels= " + "channel_map= " + "resample_method= " + "remix="; + #define NAME "remap-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -96,16 +123,7 @@ static int module_remap_sink_unload(struct module *module) static const struct spa_dict_item module_remap_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Remap sink channels" }, - { PW_KEY_MODULE_USAGE, "sink_name= " - "sink_properties= " - "master= " - "master_channel_map= " - "format= " - "rate= " - "channels= " - "channel_map= " - "resample_method= " - "remix=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-remap-source.c b/src/modules/module-protocol-pulse/modules/module-remap-source.c index 6e806d1b6..eaff91b08 100644 --- a/src/modules/module-protocol-pulse/modules/module-remap-source.c +++ b/src/modules/module-protocol-pulse/modules/module-remap-source.c @@ -10,6 +10,33 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_remap_source Remap Source + * + * ## Module Name + * + * `module-remap-source` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_loopback "libpipewire-module-loopback" + */ + +static const char *const pulse_module_options = + "source_name= " + "source_properties= " + "master= " + "master_channel_map= " + "format= " + "rate= " + "channels= " + "channel_map= " + "resample_method= " + "remix="; + #define NAME "remap-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -96,16 +123,7 @@ static int module_remap_source_unload(struct module *module) static const struct spa_dict_item module_remap_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Remap source channels" }, - { PW_KEY_MODULE_USAGE, "source_name= " - "source_properties= " - "master= " - "master_channel_map= " - "format= " - "rate= " - "channels= " - "channel_map= " - "resample_method= " - "remix=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-roc-sink-input.c b/src/modules/module-protocol-pulse/modules/module-roc-sink-input.c index 09df1a5e2..7e6288042 100644 --- a/src/modules/module-protocol-pulse/modules/module-roc-sink-input.c +++ b/src/modules/module-protocol-pulse/modules/module-roc-sink-input.c @@ -9,7 +9,32 @@ #include "../defs.h" #include "../module.h" -#define NAME "roc-source" +/** \page page_pulse_module_roc_sink_input ROC Sink Input + * + * ## Module Name + * + * `module-roc-sink-input` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_roc_source "libpipewire-module-roc-source" + */ + +static const char *const pulse_module_options = + "sink= " + "sink_input_properties= " + "resampler_profile=|disable|high|medium|low " + "fec_code=|disable|rs8m|ldpc " + "sess_latency_msec= " + "local_ip= " + "local_source_port= " + "local_repair_port= "; + +#define NAME "roc-sink-input" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); #define PW_LOG_TOPIC_DEFAULT mod_topic @@ -92,14 +117,7 @@ static int module_roc_sink_input_unload(struct module *module) static const struct spa_dict_item module_roc_sink_input_info[] = { { PW_KEY_MODULE_AUTHOR, "Sanchayan Maity " }, { PW_KEY_MODULE_DESCRIPTION, "roc sink-input" }, - { PW_KEY_MODULE_USAGE, "sink= " - "sink_input_properties= " - "resampler_profile=|disable|high|medium|low " - "fec_code=|disable|rs8m|ldpc " - "sess_latency_msec= " - "local_ip= " - "local_source_port= " - "local_repair_port= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-roc-sink.c b/src/modules/module-protocol-pulse/modules/module-roc-sink.c index 0a4420d32..808fa4e3e 100644 --- a/src/modules/module-protocol-pulse/modules/module-roc-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-roc-sink.c @@ -9,6 +9,29 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_roc_sink ROC Sink + * + * ## Module Name + * + * `module-roc-sink` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_roc_sink "libpipewire-module-roc-sink" + */ + +static const char *const pulse_module_options = + "sink_name= " + "sink_properties= " + "fec_code=|disable|rs8m|ldpc " + "remote_ip= " + "remote_source_port= " + "remote_repair_port= "; + #define NAME "roc-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -101,12 +124,7 @@ static const char* const valid_args[] = { static const struct spa_dict_item module_roc_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Sanchayan Maity " }, { PW_KEY_MODULE_DESCRIPTION, "roc sink" }, - { PW_KEY_MODULE_USAGE, "sink_name= " - "sink_properties= " - "fec_code=|disable|rs8m|ldpc " - "remote_ip= " - "remote_source_port= " - "remote_repair_port= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-roc-source.c b/src/modules/module-protocol-pulse/modules/module-roc-source.c index 9f23c421d..904825350 100644 --- a/src/modules/module-protocol-pulse/modules/module-roc-source.c +++ b/src/modules/module-protocol-pulse/modules/module-roc-source.c @@ -9,6 +9,31 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_roc_source ROC Source + * + * ## Module Name + * + * `module-roc-source` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_roc_source "libpipewire-module-roc-source" + */ + +static const char *const pulse_module_options = + "source_name= " + "source_properties= " + "resampler_profile=|disable|high|medium|low " + "fec_code=|disable|rs8m|ldpc " + "sess_latency_msec= " + "local_ip= " + "local_source_port= " + "local_repair_port= "; + #define NAME "roc-source" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -104,14 +129,7 @@ static const char* const valid_args[] = { static const struct spa_dict_item module_roc_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Sanchayan Maity " }, { PW_KEY_MODULE_DESCRIPTION, "roc source" }, - { PW_KEY_MODULE_USAGE, "source_name= " - "source_properties= " - "resampler_profile=|disable|high|medium|low " - "fec_code=|disable|rs8m|ldpc " - "sess_latency_msec= " - "local_ip= " - "local_source_port= " - "local_repair_port= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-rtp-recv.c b/src/modules/module-protocol-pulse/modules/module-rtp-recv.c index 2581e78cb..1777caf61 100644 --- a/src/modules/module-protocol-pulse/modules/module-rtp-recv.c +++ b/src/modules/module-protocol-pulse/modules/module-rtp-recv.c @@ -8,6 +8,26 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_rtp_recv RTP Receiver + * + * ## Module Name + * + * `module-rtp-recv` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_rtp_sap "libpipewire-module-rtp-sap" + */ + +static const char *const pulse_module_options = + "sink= " + "sap_address= " + "latency_msec= "; + #define NAME "rtp-recv" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -94,9 +114,7 @@ static int module_rtp_recv_unload(struct module *module) static const struct spa_dict_item module_rtp_recv_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Receive data from a network via RTP/SAP/SDP" }, - { PW_KEY_MODULE_USAGE, "sink= " - "sap_address= " - "latency_msec= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-rtp-send.c b/src/modules/module-protocol-pulse/modules/module-rtp-send.c index 3afa8ae41..e84962956 100644 --- a/src/modules/module-protocol-pulse/modules/module-rtp-send.c +++ b/src/modules/module-protocol-pulse/modules/module-rtp-send.c @@ -8,6 +8,36 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_rtp_send RTP Sender + * + * ## Module Name + * + * `module-rtp-send` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_rtp_sink "libpipewire-module-rtp-sink" + */ + +static const char *const pulse_module_options = + "source= " + "format= " + "channels= " + "rate= " + "destination_ip= " + "source_ip= " + "port= " + "mtu= " + "loop= " + "ttl= " + "inhibit_auto_suspend= " + "stream_name= " + "enable_opus="; + #define NAME "rtp-send" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -136,19 +166,7 @@ static int module_rtp_send_unload(struct module *module) static const struct spa_dict_item module_rtp_send_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Read data from source and send it to the network via RTP/SAP/SDP" }, - { PW_KEY_MODULE_USAGE, "source= " - "format= " - "channels= " - "rate= " - "destination_ip= " - "source_ip= " - "port= " - "mtu= " - "loop= " - "ttl= " - "inhibit_auto_suspend= " - "stream_name= " - "enable_opus=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c b/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c index d0479a788..4ca4156c2 100644 --- a/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c +++ b/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c @@ -8,6 +8,33 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_simple_protocol_tcp Simple TCP Protocol + * + * ## Module Name + * + * `module-simple-protocol-tcp` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_protocol_simple "libpipewire-module-protocol-simple" + */ + +static const char *const pulse_module_options = + "rate= " + "format= " + "channels= " + "channel_map= " + "sink= " + "source= " + "playback= " + "record= " + "port= " + "listen=
"; + #define NAME "simple-protocol-tcp" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -84,16 +111,7 @@ static int module_simple_protocol_tcp_unload(struct module *module) static const struct spa_dict_item module_simple_protocol_tcp_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Simple protocol (TCP sockets)" }, - { PW_KEY_MODULE_USAGE, "rate= " - "format= " - "channels= " - "channel_map= " - "sink= " - "source= " - "playback= " - "record= " - "port= " - "listen=
" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-switch-on-connect.c b/src/modules/module-protocol-pulse/modules/module-switch-on-connect.c index 76c0100ca..e4dc2deac 100644 --- a/src/modules/module-protocol-pulse/modules/module-switch-on-connect.c +++ b/src/modules/module-protocol-pulse/modules/module-switch-on-connect.c @@ -15,6 +15,22 @@ #include "../manager.h" #include "../collect.h" +/** \page page_pulse_module_switch_on_connect Switch on Connect + * + * ## Module Name + * + * `module-switch-on-connect` + * + * ## Module Options + * + * @pulse_module_options@ + */ + +static const char *const pulse_module_options = + "only_from_unavailable= " + "ignore_virtual= " + "blocklist= "; + #define NAME "switch-on-connect" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -215,9 +231,7 @@ static const struct spa_dict_item module_switch_on_connect_info[] = { "This module exists for Pulseaudio compatibility, and is useful only when some applications " "try to manage the default sinks/sources themselves and interfere with PipeWire's builtin " "default device switching." }, - { PW_KEY_MODULE_USAGE, "only_from_unavailable= " - "ignore_virtual= " - "blocklist= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c b/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c index c2c144179..b779a3e56 100644 --- a/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c @@ -12,6 +12,33 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_tunnel_sink Tunnel Sink + * + * ## Module Name + * + * `module-tunnel-sink` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_pulse_tunnel "libpipewire-module-pulse-tunnel" + */ + +static const char *const pulse_module_options = + "server=
" + "sink= " + "sink_name= " + "sink_properties= " + "format= " + "channels= " + "rate= " + "channel_map= " + "latency_msec= " + "cookie="; + #define NAME "tunnel-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -92,17 +119,7 @@ static int module_tunnel_sink_unload(struct module *module) static const struct spa_dict_item module_tunnel_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Create a network sink which connects to a remote PulseAudio server" }, - { PW_KEY_MODULE_USAGE, - "server=
" - "sink= " - "sink_name= " - "sink_properties= " - "format= " - "channels= " - "rate= " - "channel_map= " - "latency_msec= " - "cookie=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-tunnel-source.c b/src/modules/module-protocol-pulse/modules/module-tunnel-source.c index 5e7eda3cc..b67efd5b7 100644 --- a/src/modules/module-protocol-pulse/modules/module-tunnel-source.c +++ b/src/modules/module-protocol-pulse/modules/module-tunnel-source.c @@ -12,6 +12,33 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_tunnel_source Tunnel Source + * + * ## Module Name + * + * `module-tunnel-source` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_pulse_tunnel "libpipewire-module-pulse-tunnel" + */ + +static const char *const pulse_module_options = + "server=
" + "source= " + "source_name= " + "source_properties= " + "format= " + "channels= " + "rate= " + "channel_map= " + "latency_msec= " + "cookie="; + #define NAME "tunnel-source" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -92,17 +119,7 @@ static int module_tunnel_source_unload(struct module *module) static const struct spa_dict_item module_tunnel_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Create a network source which connects to a remote PulseAudio server" }, - { PW_KEY_MODULE_USAGE, - "server=
" - "source= " - "source_name= " - "source_properties= " - "format= " - "channels= " - "rate= " - "channel_map= " - "latency_msec= " - "cookie=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-virtual-sink.c b/src/modules/module-protocol-pulse/modules/module-virtual-sink.c index a9ed6f354..e3193f2f6 100644 --- a/src/modules/module-protocol-pulse/modules/module-virtual-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-virtual-sink.c @@ -10,6 +10,30 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_virtual_sink Virtual Sink + * + * ## Module Name + * + * `module-virtual-sink` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_loopback "libpipewire-module-loopback" + */ + +static const char *const pulse_module_options = + "sink_name= " + "sink_properties= " + "master= " + "channels= " + "channel_map= " + "use_volume_sharing= " + "force_flat_volume= "; + #define NAME "virtual-sink" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -98,13 +122,7 @@ static int module_virtual_sink_unload(struct module *module) static const struct spa_dict_item module_virtual_sink_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "Virtual sink" }, - { PW_KEY_MODULE_USAGE, "sink_name= " - "sink_properties= " - "master= " - "channels= " - "channel_map= " - "use_volume_sharing= " - "force_flat_volume= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-virtual-source.c b/src/modules/module-protocol-pulse/modules/module-virtual-source.c index 731822b91..fe3f10648 100644 --- a/src/modules/module-protocol-pulse/modules/module-virtual-source.c +++ b/src/modules/module-protocol-pulse/modules/module-virtual-source.c @@ -11,6 +11,31 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_virtual_source Virtual Source + * + * ## Module Name + * + * `module-virtual-source` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_loopback "libpipewire-module-loopback" + */ + +static const char *const pulse_module_options = + "source_name= " + "source_properties= " + "master= " + "uplink_sink= (optional)" + "channels= " + "channel_map= " + "use_volume_sharing= " + "force_flat_volume= "; + #define NAME "virtual-source" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -99,14 +124,7 @@ static int module_virtual_source_unload(struct module *module) static const struct spa_dict_item module_virtual_source_info[] = { { PW_KEY_MODULE_AUTHOR, "Arun Raghavan " }, { PW_KEY_MODULE_DESCRIPTION, "Loopback from source to sink" }, - { PW_KEY_MODULE_USAGE, "source_name= " - "source_properties= " - "master= " - "uplink_sink= (optional)" - "channels= " - "channel_map= " - "use_volume_sharing= " - "force_flat_volume= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-x11-bell.c b/src/modules/module-protocol-pulse/modules/module-x11-bell.c index 6e6781c1d..a29e2e85d 100644 --- a/src/modules/module-protocol-pulse/modules/module-x11-bell.c +++ b/src/modules/module-protocol-pulse/modules/module-x11-bell.c @@ -6,6 +6,27 @@ #include "../module.h" +/** \page page_pulse_module_x11_bell X11 Bell + * + * ## Module Name + * + * `module-x11-bell` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_x11_bell "libpipewire-module-x11-bell" + */ + +static const char *const pulse_module_options = + "sink= " + "sample= " + "display= " + "xauthority="; + #define NAME "x11-bell" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -93,10 +114,7 @@ static int module_x11_bell_prepare(struct module * const module) static const struct spa_dict_item module_x11_bell_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "X11 bell interceptor" }, - { PW_KEY_MODULE_USAGE, "sink= " - "sample= " - "display= " - "xauthority=" }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c b/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c index c42e01fdd..5b1763eb8 100644 --- a/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c +++ b/src/modules/module-protocol-pulse/modules/module-zeroconf-discover.c @@ -8,6 +8,24 @@ #include "../defs.h" #include "../module.h" +/** \page page_pulse_module_zeroconf_discover Zeroconf Discover + * + * ## Module Name + * + * `module-zeroconf-discover` + * + * ## Module Options + * + * @pulse_module_options@ + * + * ## See Also + * + * \ref page_module_zeroconf_discover "libpipewire-module-zeroconf-discover" + */ + +static const char *const pulse_module_options = + "latency_msec= "; + #define NAME "zeroconf-discover" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME); @@ -84,8 +102,7 @@ static int module_zeroconf_discover_unload(struct module *module) static const struct spa_dict_item module_zeroconf_discover_info[] = { { PW_KEY_MODULE_AUTHOR, "Wim Taymans " }, { PW_KEY_MODULE_DESCRIPTION, "mDNS/DNS-SD Service Discovery" }, - { PW_KEY_MODULE_USAGE, - "latency_msec= " }, + { PW_KEY_MODULE_USAGE, pulse_module_options }, { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; diff --git a/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c b/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c index e83ccb90d..21c41233d 100644 --- a/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c +++ b/src/modules/module-protocol-pulse/modules/module-zeroconf-publish.c @@ -24,6 +24,17 @@ #include #include +/** \page page_pulse_module_zeroconf_publish Zeroconf Publish + * + * ## Module Name + * + * `module-zeroconf-publish` + * + * ## Module Options + * + * No options. + */ + #define NAME "zeroconf-publish" PW_LOG_TOPIC_STATIC(mod_topic, "mod." NAME);