Compare commits

..

No commits in common. "master" and "v0.98-dev" have entirely different histories.

929 changed files with 95744 additions and 264564 deletions

21
.gitignore vendored
View file

@ -1,15 +1,14 @@
.tarball-version
.version
.*.swp
ABOUT-NLS
build*
intltool-extract.in
intltool-merge.in
intltool-update.in
*~
*.tar.gz
*.pc
PulseAudioConfig.cmake
PulseAudioConfigVersion.cmake
/Makefile
/Makefile.in
Makefile
Makefile.in
aclocal.m4
autom4te.cache
compile
@ -21,20 +20,10 @@ config.rpath
config.status
config.sub
configure
cscope.out
cscope.in.out
cscope.po.out
pulse-daemon.log
depcomp
install/
install-sh
libltdl
libtool
ltmain.sh
missing
mkinstalldirs
stamp-*
.dirstamp
*.orig
*.rej
subprojects/*/

View file

@ -1,121 +0,0 @@
# The build has two stages. The 'container' stage is used to build a Docker
# container and push it to the project's container registry on fd.o GitLab.
# This step is only run when the tag for the container changes, else it is
# effectively a no-op. All of this infrastructure is inherited from the
# freedesktop/ci-templates repository which is the recommended way to set up CI
# infrastructure on fd.o GitLab.
#
# Once the container stage is done, we move on to the 'build' stage where we
# run meson build. Currently, tests are also run as part of the build stage as
# there doesn't seem to be significant value to splitting the stages at the
# moment.
# Create merge request pipelines for open merge requests, branch pipelines
# otherwise. This allows MRs for new users to run CI.
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH
stages:
- container
- build
variables:
# Update this tag when you want to trigger a rebuild the container in which
# CI runs, for example when adding new packages to FDO_DISTRIBUTION_PACKAGES.
# The tag is an arbitrary string that identifies the exact container
# contents.
FDO_DISTRIBUTION_TAG: '2023-08-13-00'
FDO_DISTRIBUTION_VERSION: '20.04'
FDO_UPSTREAM_REPO: 'pulseaudio/pulseaudio'
include:
# We pull templates from master to avoid the overhead of periodically
# scanning for changes upstream. This does means builds might occasionally
# break due to upstream changing things, so if you see unexpected build
# failures, this might be one cause.
- project: 'freedesktop/ci-templates'
ref: 'master'
file: '/templates/ubuntu.yml'
build-container:
extends: .fdo.container-build@ubuntu
stage: container
variables:
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
# Remember to update FDO_DISTRIBUTION_TAG when modifying this package list!
# Otherwise the changes won't have effect since an old container image will
# be used.
FDO_DISTRIBUTION_PACKAGES: >-
autopoint
bash-completion
check
curl
dbus-x11
doxygen
g++
gcc
gettext
git-core
libasound2-dev
libasyncns-dev
libavahi-client-dev
libbluetooth-dev
libcap-dev
libfftw3-dev
libglib2.0-dev
libgtk-3-dev
libice-dev
libjack-dev
liblircclient-dev
libltdl-dev
liborc-0.4-dev
libsbc-dev
libsndfile1-dev
libsoxr-dev
libspeexdsp-dev
libssl-dev
libsystemd-dev
libtdb-dev
libudev-dev
libwebrtc-audio-processing-dev
libwrap0-dev
libx11-xcb-dev
libxcb1-dev
libxml-parser-perl
libxml2-utils
libxtst-dev
m4
ninja-build
pkg-config
python3-setuptools
systemd
wget
build-meson:
extends: .fdo.distribution-image@ubuntu
stage: build
script:
# Install meson (higher than our min version to support our wrap file)
- wget -q https://github.com/mesonbuild/meson/releases/download/0.63.2/meson-0.63.2.tar.gz
- tar -xf meson-0.63.2.tar.gz
- cd meson-0.63.2
- python3 setup.py install
- cd ..
# needed to generate a version
- git fetch https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git --tags
# Do the actual build
- meson build -Dwebrtc-aec=enabled
- cd build
- ninja
- ulimit -c 0 # don't dump core files on tests that are supposed to assert
- ninja test
- ninja test-daemon
- ninja dist
artifacts:
paths:
- build/

View file

@ -1,21 +0,0 @@
### Warning
Missing data may cause bugs to languish.
### Summary
(Summarize the bug encountered concisely)
### environment
Check to see if you have pa-info installed by running `which pa-info`
If yes please run it
If no please download and run https://gitlab.freedesktop.org/pulseaudio/pulseaudio/blob/master/src/utils/pa-info
Attach the output to this bug report as pa-info.txt
### Steps to reproduce
(How one can reproduce the issue - this is very important)
### What is the current *bug* behavior?
(What actually happens)
### What is the expected *correct* behavior?
(What you should see instead)

View file

@ -1,67 +0,0 @@
# Contribution Guidelines
## A note for contributors
Thank you for your contribution!
Please make sure you tick the box labelled `Allow commits from members who can
merge to the target branch`. This allows us to make minor edits ourselves, and
then automatically rebase and merge your changes.
PulseAudio is currently maintained by three volunteer developers in their free
time (probably amounting to less than one full time developer), which is not
really enough, given the project size and scope. For this reason bug reports
and patch submissions are sometimes handled very slowly.
For non-trivial patches, we meet biweekly on IRC to discuss and prioritise
outstanding MRs. If you haven't heard from us a few days after you create the
MR, please take a look at [the patch status
page](https://www.freedesktop.org/wiki/Software/PulseAudio/PatchStatus/).
If you don't see your MR in that list either, please don't hesitate to drop a
comment pinging us, and we'll try to at least respond and make sure your
request is tracked on that list.
## Coding Style
Please take a look at the [coding style
documentation](https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/CodingStyle/)
on our wiki.
## Commit messagse
We follow the standard git commit message format of a summary on the first line
(<=50 characterss for preference, <=72 characters otherwise), followed by a new
line, followed by a detailed commit message. An additional line at the end may
link to an issue being fixed by this MR.
The first line is usually a short description of "what" your commit does, and
the rest of the message describes the "why", along with any additional
information that readers might need to understand the rationale for the change.
If in doubt, more verbose is better than less.
If you need to describe the "how" of the commit, that is usually best
documented along with the code itself.
Commit messages are prefixed with the subsystem being affected. Your best bet
to figure out what is appropriate is to look at previous commit messages. An
example:
```
sink: Reduce chat sink priority
Some gaming sound cards have custom profiles with analog-game and
analog-chat mappings that exist simultaneously. The game sink should
have higher priority than the chat sink, but currently there's no way to
affect the sink priorities from the profile-set configuration (the
mapping priority is not propagated to the sink priority).
I first thought about adding the mapping priority to the sink priority,
but that could mess up the prioritization system in
pa_device_init_priority(). I ended up checking for the intended roles
property to reduce the chat sink priority. I also reduced the iec958
priority so that the chat and iec958 sinks don't end up with the same
priority.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/818
```

View file

@ -1,73 +0,0 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at pulseaudio-maintainers@lists.freedesktop.org. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org

View file

@ -1,67 +0,0 @@
# Contribution Guidelines
## A note for contributors
Thank you for your contribution!
Please make sure you tick the box labelled `Allow commits from members who can
merge to the target branch`. This allows us to make minor edits ourselves, and
then automatically rebase and merge your changes.
PulseAudio is currently maintained by three volunteer developers in their free
time (probably amounting to less than one full time developer), which is not
really enough, given the project size and scope. For this reason bug reports
and patch submissions are sometimes handled very slowly.
For non-trivial patches, we meet biweekly on IRC to discuss and prioritise
outstanding MRs. If you haven't heard from us a few days after you create the
MR, please take a look at [the patch status
page](https://www.freedesktop.org/wiki/Software/PulseAudio/PatchStatus/).
If you don't see your MR in that list either, please don't hesitate to drop a
comment pinging us, and we'll try to at least respond and make sure your
request is tracked on that list.
## Coding Style
Please take a look at the [coding style
documentation](https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/CodingStyle/)
on our wiki.
## Commit messages
We follow the standard git commit message format of a summary on the first line
(<=50 characters for preference, <=72 characters otherwise), followed by a new
line, followed by a detailed commit message. An additional line at the end may
link to an issue being fixed by this MR.
The first line is usually a short description of "what" your commit does, and
the rest of the message describes the "why", along with any additional
information that readers might need to understand the rationale for the change.
If in doubt, more verbose is better than less.
If you need to describe the "how" of the commit, that is usually best
documented along with the code itself.
Commit messages are prefixed with the subsystem being affected. Your best bet
to figure out what is appropriate is to look at previous commit messages. An
example:
```
sink: Reduce chat sink priority
Some gaming sound cards have custom profiles with analog-game and
analog-chat mappings that exist simultaneously. The game sink should
have higher priority than the chat sink, but currently there's no way to
affect the sink priorities from the profile-set configuration (the
mapping priority is not propagated to the sink priority).
I first thought about adding the mapping priority to the sink priority,
but that could mess up the prioritization system in
pa_device_init_priority(). I ended up checking for the intended roles
property to reduce the chat sink priority. I also reduced the iec958
priority so that the chat and iec958 sinks don't end up with the same
priority.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/818
```

43
LICENSE
View file

@ -1,40 +1,17 @@
All PulseAudio source files, except as noted below, are licensed under the GNU
Lesser General Public License. (see file LGPL for details)
All PulseAudio source files are licensed under the GNU Lesser General Public
License. (see file LGPL for details)
However, the server side has optional GPL dependencies. These include the
libsamplerate and gdbm (core libraries), LIRC (lirc module) and FFTW (equalizer
module), although others may also be included in the future. If PulseAudio is
compiled with these optional components, this effectively downgrades the
license of the server part to GPL (see the file GPL for details), exercising
section 3 of the LGPL. In such circumstances, you should treat the client
library (libpulse) of PulseAudio as being LGPL licensed and the server part
(libpulsecore) as being GPL licensed. Since the PulseAudio daemon, tests,
various utilities/helpers and the modules link to libpulsecore and/or the afore
mentioned optional GPL dependencies they are of course also GPL licensed also
in this scenario.
However, the server side links to the GPL-only library 'libsamplerate' which
practically downgrades the license of the server part to GPL (see file GPL for
details), exercising section 3 of the LGPL.
In addition to this, if D-Bus support is enabled, the PulseAudio client library
(libpulse) MAY need to be licensed under the GPL, depending on the license
adopted for libdbus. libdbus is licensed under either of the Academic Free
License 2.1 or GPL 2.0 or above. Which of these applies is your choice, and the
result affects the licensing of libpulse and thus, potentially, all programs
that link to libpulse.
Hence you should treat the client library ('libpulse') of PulseAudio as being
LGPL licensed and the server part ('libpulsecore') as being GPL licensed. Since
the PulseAudio daemon and the modules link to 'libpulsecore' they are of course
also GPL licensed.
Andre Adrian's echo cancellation implementation is licensed under a less
restrictive license - see src/modules/echo-cancel/adrian-license.txt for
details.
Some other files pulled into PA source (i.e. reference implementations that are
considered too small and stable to be considered as an external library) use the
more permissive MIT license. These include the device reservation DBus protocol
and realtime kit implementations.
A more permissive BSD-style license is used for LFE filters, see
src/pulsecore/filter/LICENSE.WEBKIT for details.
Additionally, a more permissive Sun license is used for code that performs
u-law, A-law and linear PCM conversions.
While we attempt to provide a summary here, it is the ultimate responsibility of
the packager to ensure the components they use in their build of PulseAudio
meets their license requirements.
-- Lennart Poettering, April 20th, 2006.

88
Makefile.am Normal file
View file

@ -0,0 +1,88 @@
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = \
bootstrap.sh \
git-version-gen \
LICENSE \
GPL \
LGPL \
doxygen/Makefile.am \
doxygen/Makefile.in \
doxygen/doxygen.conf.in \
README \
todo \
vala/libpulse.vapi
SUBDIRS = src doxygen man po
MAINTAINERCLEANFILES =
noinst_DATA =
vapidir = $(datadir)/vala/vapi
vapi_DATA = vala/libpulse.vapi
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libpulse.pc libpulse-simple.pc
if HAVE_AVAHI
pkgconfig_DATA += \
libpulse-browse.pc
endif
if HAVE_GLIB20
pkgconfig_DATA += \
libpulse-mainloop-glib.pc
endif
homepage: all dist doxygen
test -d $$HOME/homepage/private
mkdir -p $$HOME/homepage/private/projects/pulseaudio $$HOME/homepage/private/projects/pulseaudio/doxygen
cp pulseaudio-@PACKAGE_VERSION@.tar.gz $$HOME/homepage/private/projects/pulseaudio
cp -a doxygen/html/* $$HOME/homepage/private/projects/pulseaudio/doxygen
doxygen:
$(MAKE) -C doxygen doxygen
eolspace:
find \( -name '*.c' -o -name '*.h' -o -name 'Makefile.am' \) -exec perl -i -pe 's/\s+\n$$/\1\n/;' \{\} \;
untabify:
find \( -name '*.c' -o -name '*.h' \) -exec perl -i -pe 's/\t/ /g;' \{\} \;
fedora-snapshot: dist
cp $(distdir).tar.gz $$HOME/cvs.fedora/pulseaudio/devel/$(distdir).tar.gz
dist-hook:
if test -d .git ; then \
test -z $$SKIP_GIT && git pull ; \
chmod u+w ${distdir}/ChangeLog || true ; \
( git-changelog.perl || echo "git-changelog.perl failed." ) > ${distdir}/ChangeLog 2>&1 ; \
fi
echo $(VERSION) > $(distdir)/.tarball-version
.PHONY: homepage distcleancheck doxygen
# see git-version-gen
BUILT_SOURCES = $(top_srcdir)/.version
$(top_srcdir)/.version:
echo $(VERSION) > $@-t && mv $@-t $@
DISTCLEANFILES = \
po/.intltool-merge-cache

1154
NEWS

File diff suppressed because it is too large Load diff

254
PROTOCOL
View file

@ -30,7 +30,7 @@ SHM data transfer support
### v11, implemented by >= 0.9.7
Reply to PA_COMMAND_GET_SINK_INPUT_INFO, PA_COMMAND_GET_SINK_INPUT_INFO_LIST gets new field at the end:
Reply to to PA_COMMAND_GET_SINK_INPUT_INFO, PA_COMMAND_GET_SINK_INPUT_INFO_LIST gets new field at the end:
mute
@ -203,257 +203,7 @@ new flag at end of CREATE_PLAYBACK_STREAM:
## v19, implemented by >= 0.9.22
New flag at the end of sink input and source output introspection data:
New proplist field for sink input, source output introspection opcodes and at the end:
bool corked
## v20, implemented by >= 1.0
Two new flags at the end of sink input introspection data:
bool has_volume
bool volume_writable
## v21, implemented by >= 1.0
Changes for format negotiation in the extended API.
New fields PA_COMMAND_CREATE_PLAYBACK_STREAM:
uint8_t n_formats
format_info format1
...
format_info formatn
One new field in reply from PA_COMMAND_CREATE_PLAYBACK_STREAM:
format_info format
New fields in reply from PA_COMMAND_GET_SINK_INFO (and thus
PA_COMMAND_GET_SINK_INFO_LIST)
uint8_t n_formats
format_info format1
...
format_info formatn
One new field in reply from PA_COMMAND_GET_SINK_INPUT_INFO (and thus
PA_COMMAND_GET_SINK_INPUT_INFO_LIST)
format_info format
## v22, implemented by >= 1.0
New fields PA_COMMAND_CREATE_RECORD_STREAM:
uint8_t n_formats
format_info format1
...
format_info formatn
volume
bool muted
bool volume_set
bool muted_set
bool relative_volume
bool passthrough
One new field in reply from PA_COMMAND_CREATE_RECORD_STREAM:
format_info format
New fields in reply from PA_COMMAND_GET_SOURCE_INFO (and thus
PA_COMMAND_GET_SOURCE_INFO_LIST)
uint8_t n_formats
format_info format1
...
format_info formatn
Five new fields in reply from PA_COMMAND_GET_SOURCE_OUTPUT_INFO (and thus
PA_COMMAND_GET_SOURCE_OUTPUT_INFO_LIST)
volume
bool mute
bool has_volume
bool volume_writable
format_info format
## v23, implemented by >= 1.0
New field in PA_COMMAND_UNDERFLOW:
int64_t index
## v24, implemented by >= 2.0
New field in all commands that send/receive port introspection data
(PA_COMMAND_GET_(SOURCE|SINK)_INFO,
PA_COMMAND_GET_(SOURCE|SINK)_INFO_LIST):
uint32_t available
The field is added once for every port.
## v25, implemented by >= 2.0
When port availability changes, send a subscription event for the
owning card.
## v26, implemented by >= 2.0
In reply from PA_COMMAND_GET_CARD_INFO (and thus
PA_COMMAND_GET_CARD_INFO_LIST), the following is added:
uint32_t n_ports
...followed by n_ports extended port entries, which look like this:
string name
string description
uint32_t priority
uint32_t available
uint8_t direction
proplist
uint32_t n_profiles
string profile_name_1
...
string profile_name_n
Profile names must match earlier sent profile names for the same card.
## v27, implemented by >= 3.0
New opcodes:
PA_COMMAND_SET_PORT_LATENCY_OFFSET
New field in the card commands that send/receive port introspection data
PA_COMMAND_GET_CARD_INFO(_LIST)):
int64_t latency_offset
The field is added once for every port.
## v28, implemented by >= 4.0
New value for encoding format type in format_info
PA_COMMAND_CREATE_(PLAYBACK|RECORDING)_STREAM and its reply,
In reply from PA_COMMAND_GET_(SOURCE|SOURCE_OUTPUT|SINK|SINK_INPUT)_INFO[_LIST],
SUBCOMMAND_SAVE_FORMATS, in reply from SUBCOMMAND_READ_FORMATS[_ALL]
(uint8_t ) PA_ENCODING_MPEG2_AAC_IEC61937 := 6
## v29, implemented by >= 5.0
#
New field in all commands that send/receive profile introspection data
(PA_COMMAND_GET_CARD_INFO)
uint32 available
The field is added once for every profile.
## v30, implemented by >= 6.0
#
A new protocol mechanism supported: Two ringbuffers in shared memory.
Pulseaudio fdsem (wrappers around event file descriptors) are used for
signalling new data.
The protocol has a new SHM flag telling whether a SHM memblock is writable
by both sides.
PA_COMMAND_ENABLE_SRBCHANNEL
First sent from server to client, tells the client to start listening on
the additional SHM ringbuffer channel.
This command also has ancillary data (two eventfds attached to it).
Must be directly followed by a memblock which is the ringbuffer memory.
When memblock is received by the client, it acks by sending
PA_COMMAND_ENABLE_SRBCHANNEL back (without ancillary or memblock data).
PA_COMMAND_DISABLE_SRBCHANNEL
Tells the client to stop listening on the additional SHM ringbuffer channel.
Acked by client by sending PA_COMMAND_DISABLE_SRBCHANNEL back.
## v31, implemented by >= 9.0
Memfd shared-memory support is now added to PulseAudio as an opt-in feature.
Add 'enable-memfd=yes' to daemon's configuration to use memfds, instead of
POSIX shm, by default.
Memfd is a simple memory sharing mechanism, added by the systemd/kdbus
developers, to share pages between processes in an anonymous, no global
registry needed, no mount-point required, relatively secure, manner.
PulseAudio memfd support builds the necessary (but not yet sufficient)
groundwork for a better integration with per-app containers (e.g. xdg-app)
For further details on memfds in general, please check:
https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/
Archived at: http://www.webcitation.org/6gnHTy9Kr
Moreover, for both client and server, the second most-significant bit of
the version tag is now used to flag memfd SHM support. On the way forward,
the two most-significant _bytes_ of the version tag are now also reserved
for flags.
PA_COMMAND_REGISTER_MEMFD_SHMID
New command that can be sent both ways, from client to server and vice versa.
This is needed to transfer a memfd pool's blocks without passing its fd every
time, thus minimizing overhead and avoiding fd leaks.
The registration command above sends a packet with the pool's memfd fd as
ancillary data. Such packet has an ID that uniquely identifies the pool's
memfd memory area. Upon arrival, the other end (client or server) creates a
permanent ID<->memfd mapping.
By doing so, there's need to reference the pool's memfd file descriptor any
further -- just its ID. Thus both endpoints can then quickly and safely
close their memfd file descriptors.
## v32, implemented by >= 10.0
Enable memfd transport by default.
This protocol bump was only created to mark 9.0 clients. Although they
support memfd transport, such older clients has an iochannel bug that would
break memfd audio if they're run in 32-bit mode over a 64-bit kernel. Thus
influence these buggy libraries to use POSIX shared memory, by signalling
memfd support only to 10.0+ clients.
Check commit 451d1d676237c81 for further details.
## v33, implemented by >= 13.0
Added two values to the pa_encoding_t enum:
PA_ENCODING_TRUEHD_IEC61937 := 7
PA_ENCODING_DTSHD_IEC61937 := 8
## v34, implemented by >= 14.0
New fields in the port introspection data (duplicated for all port types:
sink, source and card ports):
string availability_group
uint32 type
## v35, implemented by >= 15.0
Added new command for communication with objects.
PA_COMMAND_SEND_OBJECT_MESSAGE:
sends a message to an object identified by an object path
parameters:
string object_path - unique path identifying the object
string message - message name
string message_parameters - additional parameters if required (may be
NULL, which should be treated the same as an
empty string)
The command returns a string, which may be empty or NULL (NULL should be
treated the same as an empty string).
#### If you just changed the protocol, read this
## module-tunnel depends on the sink/source/sink-input/source-input protocol
## internals, so if you changed these, you might have broken module-tunnel.
## Don't forget to test module-tunnel-{source,sink} when pushing protocol
## changes.

View file

@ -1,12 +0,0 @@
set(PULSEAUDIO_FOUND TRUE)
set(PULSEAUDIO_VERSION_MAJOR @PA_MAJOR@)
set(PULSEAUDIO_VERSION_MINOR @PA_MINOR@)
set(PULSEAUDIO_VERSION @PA_MAJOR@.@PA_MINOR@)
set(PULSEAUDIO_VERSION_STRING "@PA_MAJOR@.@PA_MINOR@")
find_path(PULSEAUDIO_INCLUDE_DIR pulse/pulseaudio.h HINTS "@PA_INCDIR@")
find_library(PULSEAUDIO_LIBRARY NAMES pulse libpulse HINTS "@PA_LIBDIR@")
ifelse(@HAVE_GLIB20@, 1, dnl
find_library(PULSEAUDIO_MAINLOOP_LIBRARY NAMES pulse-mainloop-glib libpulse-mainloop-glib HINTS "@PA_LIBDIR@")
)dnl

View file

@ -1,11 +0,0 @@
set(PACKAGE_VERSION @PA_MAJOR@.@PA_MINOR@)
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
endif("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )

28
README
View file

@ -4,22 +4,25 @@ WEB SITE:
http://pulseaudio.org/
GIT:
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
git://git.0pointer.de/pulseaudio.git
GitLab:
https://gitlab.freedesktop.org/pulseaudio/pulseaudio
GITWEB:
http://git.0pointer.de/?p=pulseaudio.git;a=summary
MAILING LIST:
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
GIT COMMITS MAILING LIST:
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-commits
https://tango.0pointer.de/mailman/listinfo/pulseaudio-commits
TRAC/BUGZILLA TICKET CHANGES MAILING LIST:
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-bugs
TRAC TICKET CHANGES MAILING LIST:
https://tango.0pointer.de/mailman/listinfo/pulseaudio-tickets
IRC:
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Community/#ircandmatrix
#pulseaudio on irc.freenode.org
CIA:
http://cia.navi.cx/stats/project/polypaudio
FRESHMEAT:
http://freshmeat.net/projects/pulseaudio/
@ -29,12 +32,3 @@ OHLOH:
AUTHORS:
Several
HACKING:
In order to run pulseaudio from the build dir:
meson build
meson compile -C build
build/src/daemon/pulseaudio -n -F build/src/daemon/default.pa -p $(pwd)/build/src/modules/
SPELLING:
PulseAudio

23
autogen.sh Executable file
View file

@ -0,0 +1,23 @@
#!/bin/sh
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
# Only there to make jhbuild happy
NOCONFIGURE=1 ./bootstrap.sh
exec ./configure "$@"

100
bootstrap.sh Executable file
View file

@ -0,0 +1,100 @@
#!/bin/bash
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
VERSION=1.11
run_versioned() {
local P
local V
V=$(echo "$2" | sed -e 's,\.,,g')
if [ -e "`which $1$V 2> /dev/null`" ] ; then
P="$1$V"
else
if [ -e "`which $1-$2 2> /dev/null`" ] ; then
P="$1-$2"
else
P="$1"
fi
fi
shift 2
"$P" "$@"
}
set -ex
case $(uname) in
*Darwin*)
LIBTOOLIZE="glibtoolize"
;;
esac
if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \
chmod +x .git/hooks/pre-commit && \
echo "Activated pre-commit hook."
fi
if [ -f .tarball-version ]; then
echo "Marking tarball version as modified."
echo -n `cat .tarball-version | sed 's/-rebootstrapped$//'`-rebootstrapped >.tarball-version
fi
# We check for this here, because if pkg-config is not found in the
# system, it's likely that the pkg.m4 macro file is also not present,
# which will make PKG_PROG_PKG_CONFIG be undefined and the generated
# configure file faulty.
if ! pkg-config --version &>/dev/null; then
echo "pkg-config is required to bootstrap this program" &>/dev/null
exit 1
fi
if type -p colorgcc > /dev/null ; then
export CC=colorgcc
fi
if [ "x$1" = "xam" ] ; then
run_versioned automake "$VERSION" -a -c --foreign
./config.status
else
rm -rf autom4te.cache
rm -f config.cache
rm -f Makefile.am~ configure.ac~
# Evil, evil, evil, evil hack
sed 's/read dummy/\#/' `which gettextize` | bash -s -- --copy --force
test -f Makefile.am~ && mv Makefile.am~ Makefile.am
test -f configure.ac~ && mv configure.ac~ configure.ac
touch config.rpath
test "x$LIBTOOLIZE" = "x" && LIBTOOLIZE=libtoolize
intltoolize --copy --force --automake
"$LIBTOOLIZE" -c --force
run_versioned aclocal "$VERSION" -I m4
run_versioned autoconf 2.63 -Wall
run_versioned autoheader 2.63
run_versioned automake "$VERSION" --copy --foreign --add-missing
if test "x$NOCONFIGURE" = "x"; then
CFLAGS="$CFLAGS -g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen "$@"
make clean
fi
fi

72
build/orc.mak Normal file
View file

@ -0,0 +1,72 @@
#
# This is a makefile.am fragment to build Orc code.
#
# Define ORC_SOURCE and then include this file, such as:
#
# ORC_SOURCE=gstadderorc
# include $(top_srcdir)/common/orc.mak
#
# This fragment will create tmp-orc.c and gstadderorc.h from
# gstadderorc.orc.
#
# When 'make dist' is run at the top level, or 'make orc-update'
# in a directory including this fragment, the generated source
# files will be copied to $(ORC_SOURCE)-dist.[ch]. These files
# should be checked in to git, since they are used if Orc is
# disabled.
#
# Note that this file defines BUILT_SOURCES, so any later usage
# of BUILT_SOURCES in the Makefile.am that includes this file
# must use '+='.
#
EXTRA_DIST += $(ORC_SOURCE).orc
ORC_NODIST_SOURCES = tmp-orc.c $(ORC_SOURCE).h
BUILT_SOURCES += tmp-orc.c $(ORC_SOURCE).h
orc-update: tmp-orc.c $(ORC_SOURCE).h
cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c
cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h
orcc_v_gen = $(orcc_v_gen_$(V))
orcc_v_gen_ = $(orcc_v_gen_$(AM_DEFAULT_VERBOSITY))
orcc_v_gen_0 = @echo " ORCC $@";
cp_v_gen = $(cp_v_gen_$(V))
cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY))
cp_v_gen_0 = @echo " CP $@";
if HAVE_ORC
tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc
$(orcc_v_gen)$(ORCC) --implementation -o $(builddir)/tmp-orc.c $(srcdir)/$(ORC_SOURCE).orc
$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc
mkdir -p $$(dirname $(builddir)/$(ORC_SOURCE).h)
$(orcc_v_gen)$(ORCC) --header -o $(builddir)/$(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE).orc
else
tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc
$(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.c tmp-orc.c
$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc
$(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.h $(ORC_SOURCE).h
endif
clean-local: clean-orc
.PHONY: clean-orc
clean-orc:
rm -f tmp-orc.c $(ORC_SOURCE).h
dist-hook: dist-hook-orc
.PHONY: dist-hook-orc
dist-hook-orc: tmp-orc.c $(ORC_SOURCE).h
rm -f tmp-orc.c~
cmp -s tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c || \
cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c
cmp -s $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h || \
cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h
mkdir -p $$(dirname $(ORC_SOURCE))
cp -p $(srcdir)/$(ORC_SOURCE)-dist.c $(distdir)/$$(dirname $(ORC_SOURCE))
cp -p $(srcdir)/$(ORC_SOURCE)-dist.h $(distdir)/$$(dirname $(ORC_SOURCE))

1673
configure.ac Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,18 +0,0 @@
/* Coverity Scan model
* Copyright (C) 2017 Peter Meerwald-Stadler <pmeerw@pmeerw.net>
*
* This is a modeling file for Coverity Scan which helps to avoid false
* positives and increase scanning accuracy by explaining code Coverity
* can't see (out of tree libraries); the model file must be uploaded by
* an admin to:
* https://scan.coverity.com/projects/pulseaudio?tab=analysis_settings
*/
void fail(void) {
__coverity_panic__();
}
void fail_unless(int x) {
if (!x)
__coverity_panic__();
}

View file

@ -1,49 +0,0 @@
Message API reference
The message API allows any object within pulseaudio to register a message
handler. A message handler is a function that can be called by clients using
PA_COMMAND_SEND_OBJECT_MESSAGE. A message consists at least of an object path
and a message command, both specified as strings. Additional parameters can
be specified using a single string in JSON format, but are not mandatory.
The message handler returns an error number as defined in def.h and also returns
a string in the "response" variable. Non-empty response will be in JSON format.
The reference further down lists available messages, their parameters
and return values.
Reference:
Object path: /core
Message: list-handlers
Parameters: None
Return value: JSON array of handler description objects
[{"name":"Handler name","description":"Description"} ...]
Object path: /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez
Message: list-codecs
Parameters: None
Return value: JSON array of codec description objects
[{"name":"codec1","description":"Codec 1"} ...]
Object path: /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez
Message: get-codec
Parameters: None
Return value: "codec name"
Object path: /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez
Message: switch-codec
Parameters: "codec name"
Return value: none
Description: Set if card profile selection should be sticky instead of being automated
Object path: /card/<card_name>
Message: set-profile-sticky
Parameters: JSON "true" or "false"
Return value: none
Description: Get if card profile selection should be sticky instead of being automated
Object path: /card/<card_name>
Message: get-profile-sticky
Parameters: None
Return value: JSON "true" or "false"

View file

@ -1,13 +0,0 @@
# This is an example fallback table file for module-stream-restore.
# Lines starting with '#' or ';' are regarded as comments and ignored.
# Empty lines are allowed.
#
# Each non-comment and non-empty line defines the default volume
# for one stream-restore database key. For example:
sink-input-by-media-role:phone -4.2
# That line sets the volume of sink inputs with media role "phone"
# to -4.2 dB (relative to the sink volume), if the
# "sink-input-by-media-role:phone" key doesn't already exist in the
# stream-restore database. Positive dB values are not allowed.

6
doxygen/.gitignore vendored
View file

@ -1,4 +1,2 @@
/doxygen.conf
/html/
/Makefile
/Makefile.in
doxygen.conf
html

24
doxygen/Makefile.am Normal file
View file

@ -0,0 +1,24 @@
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
doxygen: doxygen.conf
doxygen $<
clean-local:
-rm -rf html
.PHONY: all doxygen

File diff suppressed because it is too large Load diff

View file

@ -1,15 +0,0 @@
doxygen = find_program('doxygen', required: get_option('doxygen'))
if not doxygen.found()
subdir_done()
endif
cdata.set('DOXYGEN_OUTPUT_DIRECTORY', meson.current_build_dir())
doxygen_conf = configure_file(
input : 'doxygen.conf.in',
output : 'doxygen.conf',
configuration : cdata,
)
run_target('doxygen',
command : [doxygen, doxygen_conf])

View file

@ -1,6 +1,6 @@
#!/bin/sh
# Print a version string.
scriptversion=2012-09-25.20
scriptversion=2008-04-08.07
# Copyright (C) 2007-2008 Free Software Foundation
#
@ -15,7 +15,9 @@ scriptversion=2012-09-25.20
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
# It may be run two ways:
@ -65,7 +67,6 @@ scriptversion=2012-09-25.20
# echo $(VERSION) > $@-t && mv $@-t $@
# dist-hook:
# echo $(VERSION) > $(distdir)/.tarball-version
# echo $(VERSION) > $(distdir)/.version
case $# in
1) ;;
@ -75,7 +76,6 @@ esac
tarball_version_file=$1
nl='
'
v=
# First see if there is a tarball-only version file.
# then try "git describe", then default.
@ -84,43 +84,24 @@ then
v=`cat $tarball_version_file` || exit 1
case $v in
*$nl*) v= ;; # reject multi-line output
[0-9]*)
echo "$v" | tr -d '\012'
exit 0
;;
[0-9]*) ;;
*) v= ;;
esac
test -z "$v" \
&& echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
fi
# This is presently used by the GNOME-OSTree build system; it
# helps support the case where the meta-build system has already
# determined the git revision, but we may not be able to run "git describe"
# because we're inside a chroot.
if test -n "$GIT_DESCRIBE_FOR_BUILD";
then
v=$GIT_DESCRIBE_FOR_BUILD
fi
if test -n "$v"
then
: # use $v
elif test -e .git \
&& v=`git describe --abbrev=4 --match='v[0-9]*' HEAD 2>/dev/null` \
&& [ -n "$v" ]
elif test -d .git \
&& v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
&& case $v in
v[0-9]*) ;;
*) (exit 1) ;;
esac
then
# If we are on a "dev" tag, we need to check that it is not the same
# reference as the a previous version tag (this only happens when we are
# working with a release tag).
# NB The below trick relies on the $v being an exact tag to work which
# will only work when HEAD == tag. When further commits have been made on top
# of the tag, the $v will be supplimented with the number of commits since
# that tag and the commit ref of the most recent commit and thus will
# fail the test below (as intended)
v2=`git describe --abbrev=4 --match='v[0-9]\.[0-9]' --contains $v 2>/dev/null | cut -d'^' -f1`
[ -n "$v2" ] && v=$v2
# Is this a new git that lists number of commits since the last
# tag or the previous older version that did not?
# Newer: v6.10-77-g0f8faeb
@ -143,8 +124,7 @@ then
# v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
:
else
echo 1>&2 "$0: Failed to determine git revision"
exit 1
v=UNKNOWN
fi
v=`echo "$v" |sed 's/^v//'`

12
libpulse-browse.pc.in Normal file
View file

@ -0,0 +1,12 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: libpulse-browse
Description: PulseAudio Network Browsing Interface
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lpulse-browse @PTHREAD_LIBS@
Libs.private: -lpulsecommon-@PA_MAJORMINOR@
Cflags: -I${includedir} -D_REENTRANT
Requires: libpulse

View file

@ -7,6 +7,6 @@ Name: libpulse-mainloop-glib
Description: PulseAudio GLib 2.0 Main Loop Wrapper
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lpulse-mainloop-glib @PTHREAD_LIBS@
Libs.private: -L${libdir}/pulseaudio -lpulsecommon-@PA_MAJORMINOR@
Libs.private: -lpulsecommon-@PA_MAJORMINOR@
Cflags: -I${includedir} -D_REENTRANT
Requires: libpulse glib-2.0

View file

@ -7,6 +7,6 @@ Name: libpulse-simple
Description: PulseAudio Simplified Synchronous Client Interface
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lpulse-simple @PTHREAD_LIBS@
Libs.private: -L${libdir}/pulseaudio -lpulsecommon-@PA_MAJORMINOR@
Libs.private: -lpulsecommon-@PA_MAJORMINOR@
Cflags: -I${includedir} -D_REENTRANT
Requires: libpulse

View file

@ -8,5 +8,5 @@ Name: libpulse
Description: PulseAudio Client Interface
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lpulse @PTHREAD_LIBS@
Libs.private: -L${libdir}/pulseaudio -lpulsecommon-@PA_MAJORMINOR@
Libs.private: -lpulsecommon-@PA_MAJORMINOR@
Cflags: -I${includedir} -D_REENTRANT

17
m4/.gitignore vendored Normal file
View file

@ -0,0 +1,17 @@
ChangeLog
gettext.m4
iconv.m4
lib-ld.m4
lib-link.m4
lib-prefix.m4
nls.m4
po.m4
progtest.m4
argz.m4
intltool.m4
libtool.m4
ltdl.m4
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4

19
m4/acx_libwrap.m4 Normal file
View file

@ -0,0 +1,19 @@
AC_DEFUN([ACX_LIBWRAP], [
LIBWRAP_LIBS=
saved_LIBS="$LIBS"
LIBS="$LIBS -lwrap"
AC_MSG_CHECKING([for tcpwrap library and headers])
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[#include <tcpd.h>
#include <syslog.h>
int allow_severity = LOG_INFO;
int deny_severity = LOG_WARNING;],
[struct request_info *req;
return hosts_access (req);]),
[AC_DEFINE(HAVE_LIBWRAP, [], [Have tcpwrap?])
LIBWRAP_LIBS="-lwrap"
AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])
LIBS="$saved_LIBS"
])

6
m4/acx_lirc.m4 Normal file
View file

@ -0,0 +1,6 @@
AC_DEFUN([ACX_LIRC], [
LIRC_CFLAGS=
LIRC_LIBS=
AC_CHECK_HEADER(lirc/lirc_client.h,[AC_CHECK_LIB(lirc_client,lirc_init,[HAVE_LIRC=1
LIRC_LIBS=-llirc_client],HAVE_LIRC=0)],HAVE_LIRC=0)
])

348
m4/acx_pthread.m4 Normal file
View file

@ -0,0 +1,348 @@
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
dnl
dnl @summary figure out how to build C programs using POSIX threads
dnl
dnl This macro figures out how to build C programs using POSIX threads.
dnl It sets the PTHREAD_LIBS output variable to the threads library and
dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
dnl C compiler flags that are needed. (The user can also force certain
dnl compiler flags/libs to be tested by setting these environment
dnl variables.)
dnl
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
dnl multi-threaded programs (defaults to the value of CC otherwise).
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
dnl
dnl NOTE: You are assumed to not only compile your program with these
dnl flags, but also link it with them as well. e.g. you should link
dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
dnl $LIBS
dnl
dnl If you are only building threads programs, you may wish to use
dnl these variables in your default LIBS, CFLAGS, and CC:
dnl
dnl LIBS="$PTHREAD_LIBS $LIBS"
dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
dnl CC="$PTHREAD_CC"
dnl
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
dnl
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
dnl default action will define HAVE_PTHREAD.
dnl
dnl Please let the authors know if this macro fails on any platform, or
dnl if you have any other suggestions or comments. This macro was based
dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
dnl We are also grateful for the helpful feedback of numerous users.
dnl
dnl @category InstalledPackages
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
dnl @version 2006-05-29
dnl @license GPLWithACException
dnl
dnl Checks for GCC shared/pthread inconsistency based on work by
dnl Marcin Owsiany <marcin@owsiany.pl>
AC_DEFUN([ACX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_LANG_SAVE
AC_LANG_C
acx_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
# requires special compiler flags (e.g. on True64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
AC_MSG_RESULT($acx_pthread_ok)
if test x"$acx_pthread_ok" = xno; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
fi
# We must check for the threads library under a number of different
# names; the ordering is very important because some systems
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are
# C compiler flags, and other items are library names, except for "none"
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
# pthreads: AIX (must check this before -lpthread)
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
# -pthreads: Solaris/gcc
# -mthreads: Mingw32/gcc, Lynx/gcc
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads too;
# also defines -D_REENTRANT)
# ... -mt is also the pthreads flag for HP/aCC
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
case "${host_cpu}-${host_os}" in
*solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
# a function called by this macro, so we could check for that, but
# who knows whether they'll stub that too in a future libc.) So,
# we'll just look for -pthreads and -lpthread first:
acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
;;
esac
if test x"$acx_pthread_ok" = xno; then
for flag in $acx_pthread_flags; do
case $flag in
none)
AC_MSG_CHECKING([whether pthreads work without any flags])
;;
-*)
AC_MSG_CHECKING([whether pthreads work with $flag])
PTHREAD_CFLAGS="$flag"
;;
pthread-config)
AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
if test x"$acx_pthread_config" = xno; then continue; fi
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;;
*)
AC_MSG_CHECKING([for the pthreads library -l$flag])
PTHREAD_LIBS="-l$flag"
;;
esac
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
# need a special flag -Kthread to make this header compile.)
# We check for pthread_join because it is in -lpthread on IRIX
# while pthread_create is in libc. We check for pthread_attr_init
# due to DEC craziness with -lpthreads. We check for
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
AC_TRY_LINK([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[acx_pthread_ok=yes])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
AC_MSG_RESULT($acx_pthread_ok)
if test "x$acx_pthread_ok" = xyes; then
break;
fi
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
done
fi
# Various other checks:
if test "x$acx_pthread_ok" = xyes; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
AC_MSG_CHECKING([for joinable pthread attribute])
attr_name=unknown
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
[attr_name=$attr; break])
done
AC_MSG_RESULT($attr_name)
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
[Define to necessary symbol if this constant
uses a non-standard name on your system.])
fi
AC_MSG_CHECKING([if more special flags are required for pthreads])
flag=no
case "${host_cpu}-${host_os}" in
*-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
*solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
esac
AC_MSG_RESULT(${flag})
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
# More AIX lossage: must compile with xlc_r or cc_r
if test x"$GCC" != xyes; then
AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
else
PTHREAD_CC=$CC
fi
# The next part tries to detect GCC inconsistency with -shared on some
# architectures and systems. The problem is that in certain
# configurations, when -shared is specified, GCC "forgets" to
# internally use various flags which are still necessary.
AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies])
check_inconsistencies=yes
case "${host_cpu}-${host_os}" in
*-darwin*) check_inconsistencies=no ;;
esac
if test x"$GCC" != xyes -o "x$check_inconsistencies" != xyes ; then
AC_MSG_RESULT([no])
else
AC_MSG_RESULT([yes])
# In order not to create several levels of indentation, we test
# the value of "$ok" until we find out the cure or run out of
# ideas.
ok="no"
#
# Prepare the flags
#
save_CFLAGS="$CFLAGS"
save_LIBS="$LIBS"
save_CC="$CC"
# Try with the flags determined by the earlier checks.
#
# -Wl,-z,defs forces link-time symbol resolution, so that the
# linking checks with -shared actually have any value
#
# FIXME: -fPIC is required for -shared on many architectures,
# so we specify it here, but the right way would probably be to
# properly detect whether it is actually required.
CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
CC="$PTHREAD_CC"
AC_MSG_CHECKING([whether -pthread is sufficient with -shared])
AC_TRY_LINK([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[ok=yes])
if test "x$ok" = xyes; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
#
# Linux gcc on some architectures such as mips/mipsel forgets
# about -lpthread
#
if test x"$ok" = xno; then
AC_MSG_CHECKING([whether -lpthread fixes that])
LIBS="-lpthread $PTHREAD_LIBS $save_LIBS"
AC_TRY_LINK([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[ok=yes])
if test "x$ok" = xyes; then
AC_MSG_RESULT([yes])
PTHREAD_LIBS="-lpthread $PTHREAD_LIBS"
else
AC_MSG_RESULT([no])
fi
fi
#
# FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc
#
if test x"$ok" = xno; then
AC_MSG_CHECKING([whether -lc_r fixes that])
LIBS="-lc_r $PTHREAD_LIBS $save_LIBS"
AC_TRY_LINK([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[ok=yes])
if test "x$ok" = xyes; then
AC_MSG_RESULT([yes])
PTHREAD_LIBS="-lc_r $PTHREAD_LIBS"
else
AC_MSG_RESULT([no])
fi
fi
if test x"$ok" = xno; then
# OK, we have run out of ideas
AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries])
# so it's not safe to assume that we may use pthreads
acx_pthread_ok=no
fi
CFLAGS="$save_CFLAGS"
LIBS="$save_LIBS"
CC="$save_CC"
fi
else
PTHREAD_CC="$CC"
fi
AC_SUBST(PTHREAD_LIBS)
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_CC)
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$acx_pthread_ok" = xyes; then
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
:
else
acx_pthread_ok=no
$2
fi
AC_LANG_RESTORE
])dnl ACX_PTHREAD

311
m4/attributes.m4 Normal file
View file

@ -0,0 +1,311 @@
dnl Macros to check the presence of generic (non-typed) symbols.
dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
dnl Copyright (c) 2006-2008 xine project
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2, or (at your option)
dnl any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
dnl 02110-1301, USA.
dnl
dnl As a special exception, the copyright owners of the
dnl macro gives unlimited permission to copy, distribute and modify the
dnl configure scripts that are the output of Autoconf when processing the
dnl Macro. You need not follow the terms of the GNU General Public
dnl License when using or distributing such scripts, even though portions
dnl of the text of the Macro appear in them. The GNU General Public
dnl License (GPL) does govern all other use of the material that
dnl constitutes the Autoconf Macro.
dnl
dnl This special exception to the GPL applies to versions of the
dnl Autoconf Macro released by this project. When you make and
dnl distribute a modified version of the Autoconf Macro, you may extend
dnl this special exception to the GPL to apply to your modified version as
dnl well.
dnl Check if the flag is supported by compiler
dnl CC_CHECK_CFLAGS_SILENT([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $1"
AC_COMPILE_IFELSE([int a;],
[eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
[$2], [$3])
])
dnl Check if the flag is supported by compiler (cacheable)
dnl CC_CHECK_CFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
AC_DEFUN([CC_CHECK_CFLAGS], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_cflags_$1]),
CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
)
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
[$2], [$3])
])
dnl CC_CHECK_CFLAG_APPEND(FLAG, [action-if-found], [action-if-not-found])
dnl Check for CFLAG and appends them to CFLAGS if supported
AC_DEFUN([CC_CHECK_CFLAG_APPEND], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_cflags_$1]),
CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
)
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
[CFLAGS="$CFLAGS $1"; DEBUG_CFLAGS="$DEBUG_CFLAGS $1"; $2], [$3])
])
dnl CC_CHECK_CFLAGS_APPEND([FLAG1 FLAG2], [action-if-found], [action-if-not])
AC_DEFUN([CC_CHECK_CFLAGS_APPEND], [
for flag in $1; do
CC_CHECK_CFLAG_APPEND($flag, [$2], [$3])
done
])
dnl Check if the flag is supported by linker (cacheable)
dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
AC_DEFUN([CC_CHECK_LDFLAGS], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_ldflags_$1]),
[ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $1"
AC_LINK_IFELSE([int main() { return 1; }],
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
LDFLAGS="$ac_save_LDFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
[$2], [$3])
])
dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
dnl the current linker to avoid undefined references in a shared object.
AC_DEFUN([CC_NOUNDEFINED], [
dnl We check $host for which systems to enable this for.
AC_REQUIRE([AC_CANONICAL_HOST])
case $host in
dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
dnl are requested, as different implementations are present; to avoid problems
dnl use -Wl,-z,defs only for those platform not behaving this way.
*-freebsd* | *-openbsd*) ;;
*)
dnl First of all check for the --no-undefined variant of GNU ld. This allows
dnl for a much more readable commandline, so that people can understand what
dnl it does without going to look for what the heck -z defs does.
for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
break
done
;;
esac
AC_SUBST([LDFLAGS_NOUNDEFINED])
])
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
dnl and ICC flag that tells the compiler to treat all the warnings
dnl as fatal. We usually need this option to make sure that some
dnl constructs (like attributes) are not simply ignored.
dnl
dnl Other compilers don't support -Werror per se, but they support
dnl an equivalent flag:
dnl - Sun Studio compiler supports -errwarn=%all
AC_DEFUN([CC_CHECK_WERROR], [
AC_CACHE_CHECK(
[for $CC way to treat warnings as errors],
[cc_cv_werror],
[CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
[CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
])
])
AC_DEFUN([CC_CHECK_ATTRIBUTE], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
AS_TR_SH([cc_cv_attribute_$1]),
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE([$3],
[eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
[AC_DEFINE(
AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
[Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
)
$4],
[$5])
])
AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
CC_CHECK_ATTRIBUTE(
[constructor],,
[void __attribute__((constructor)) ctor() { int a; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
CC_CHECK_ATTRIBUTE(
[format], [format(printf, n, n)],
[void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
CC_CHECK_ATTRIBUTE(
[format_arg], [format_arg(printf)],
[char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
CC_CHECK_ATTRIBUTE(
[visibility_$1], [visibility("$1")],
[void __attribute__((visibility("$1"))) $1_function() { }],
[$2], [$3])
])
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
CC_CHECK_ATTRIBUTE(
[nonnull], [nonnull()],
[void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
CC_CHECK_ATTRIBUTE(
[unused], ,
[void some_function(void *foo, __attribute__((unused)) void *bar);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
CC_CHECK_ATTRIBUTE(
[sentinel], ,
[void some_function(void *foo, ...) __attribute__((sentinel));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
CC_CHECK_ATTRIBUTE(
[deprecated], ,
[void some_function(void *foo, ...) __attribute__((deprecated));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
CC_CHECK_ATTRIBUTE(
[alias], [weak, alias],
[void other_function(void *foo) { }
void some_function(void *foo) __attribute__((weak, alias("other_function")));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
CC_CHECK_ATTRIBUTE(
[malloc], ,
[void * __attribute__((malloc)) my_alloc(int n);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_PACKED], [
CC_CHECK_ATTRIBUTE(
[packed], ,
[struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_CONST], [
CC_CHECK_ATTRIBUTE(
[const], ,
[int __attribute__((const)) twopow(int n) { return 1 << n; } ],
[$1], [$2])
])
AC_DEFUN([CC_FLAG_VISIBILITY], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
[cc_cv_flag_visibility],
[cc_flag_visibility_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
cc_cv_flag_visibility='yes',
cc_cv_flag_visibility='no')
CFLAGS="$cc_flag_visibility_save_CFLAGS"])
AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
[AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
[Define this if the compiler supports the -fvisibility flag])
$1],
[$2])
])
AC_DEFUN([CC_FUNC_EXPECT], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if compiler has __builtin_expect function],
[cc_cv_func_expect],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE(
[int some_function() {
int a = 3;
return (int)__builtin_expect(a, 3);
}],
[cc_cv_func_expect=yes],
[cc_cv_func_expect=no])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([test "x$cc_cv_func_expect" = "xyes"],
[AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
[Define this if the compiler supports __builtin_expect() function])
$1],
[$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
[cc_cv_attribute_aligned],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
for cc_attribute_align_try in 64 32 16 8 4 2; do
AC_COMPILE_IFELSE([
int main() {
static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
return c;
}], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
done
CFLAGS="$ac_save_CFLAGS"
])
if test "x$cc_cv_attribute_aligned" != "x"; then
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
[Define the highest alignment supported])
fi
])

13
m4/check_define.m4 Normal file
View file

@ -0,0 +1,13 @@
AC_DEFUN([AC_CHECK_DEFINE],[
AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$1_$2])dnl
AC_CACHE_CHECK([for $1 in $2], ac_var,
AC_TRY_COMPILE([#include <$2>],[
#ifdef $1
int ok;
#else
choke me
#endif
],AS_VAR_SET(ac_var, yes),AS_VAR_SET(ac_var, no)))
AS_IF([test AS_VAR_GET(ac_var) != "no"], [$3], [$4])dnl
AS_VAR_POPDEF([ac_var])dnl
])

56
m4/orc.m4 Normal file
View file

@ -0,0 +1,56 @@
dnl pkg-config-based checks for Orc
dnl specific:
dnl ORC_CHECK([REQUIRED_VERSION])
AC_DEFUN([ORC_CHECK],
[
ORC_REQ=ifelse([$1], , "0.4.5", [$1])
AC_ARG_ENABLE(orc,
AC_HELP_STRING([--enable-orc],[use Orc if installed]),
[case "${enableval}" in
auto) enable_orc=auto ;;
yes) enable_orc=yes ;;
no) enable_orc=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-orc) ;;
esac
],
[enable_orc=auto]) dnl Default value
if test "x$enable_orc" != "xno" ; then
PKG_CHECK_MODULES(ORC, orc-0.4 >= $ORC_REQ, [
AC_DEFINE(HAVE_ORC, 1, [Use Orc])
ORCC=`$PKG_CONFIG --variable=orcc orc-0.4`
AC_SUBST(ORCC)
HAVE_ORC=yes
], [
if test "x$enable_orc" = "xyes" ; then
AC_MSG_ERROR([--enable-orc specified, but Orc >= $ORC_REQ not found])
fi
AC_DEFINE(DISABLE_ORC, 1, [Disable Orc])
HAVE_ORC=no
])
else
AC_DEFINE(DISABLE_ORC, 1, [Disable Orc])
HAVE_ORC=no
fi
AM_CONDITIONAL(HAVE_ORC, test "x$HAVE_ORC" = "xyes")
]))
AC_DEFUN([ORC_OUTPUT],
[
if test "$HAVE_ORC" = yes ; then
printf "configure: *** Orc acceleration enabled.\n"
else
if test "x$enable_orc" = "xno" ; then
printf "configure: *** Orc acceleration disabled by --disable-orc. Slower code paths\n"
printf " will be used.\n"
else
printf "configure: *** Orc acceleration disabled. Requires Orc >= $ORC_REQ, which was\n"
printf " not found. Slower code paths will be used.\n"
fi
fi
printf "\n"
])

17
m4/tls.m4 Normal file
View file

@ -0,0 +1,17 @@
AC_DEFUN([CC_CHECK_TLS], [
AC_CACHE_CHECK([whether $CC knows __thread for Thread-Local Storage],
cc_cv_tls___thread,
[AC_COMPILE_IFELSE(
AC_LANG_PROGRAM(
[[static __thread int a = 6;]],
[[a = 5;]]),
[cc_cv_tls___thread=yes],
[cc_cv_tls___thread=no])
])
AS_IF([test "x$cc_cv_tls___thread" = "xyes"],
[AC_DEFINE([SUPPORT_TLS___THREAD], 1,
[Define this if the compiler supports __thread for Thread-Local Storage])
$1],
[$2])
])

10
man/.gitignore vendored
View file

@ -1,6 +1,4 @@
/*.1
/*.1.xml
/*.5
/*.5.xml
/Makefile
/Makefile.in
*.1
*.1.xml
*.5
*.5.xml

90
man/Makefile.am Normal file
View file

@ -0,0 +1,90 @@
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
pulseconfdir=$(sysconfdir)/pulse
CLEANFILES = \
$(noinst_DATA)
noinst_DATA = \
pulseaudio.1.xml \
esdcompat.1.xml \
pax11publish.1.xml \
paplay.1.xml \
pacat.1.xml \
pacmd.1.xml \
pactl.1.xml \
pasuspender.1.xml \
padsp.1.xml \
pabrowse.1.xml \
pulse-daemon.conf.5.xml \
pulse-client.conf.5.xml \
default.pa.5.xml
%.xml: %.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
xmllint: $(noinst_DATA)
for f in $(noinst_DATA) ; do \
xmllint --noout --valid "$$f" || exit 1 ; \
done
if BUILD_MANPAGES
dist_man_MANS = \
pulseaudio.1 \
esdcompat.1 \
pax11publish.1 \
paplay.1 \
pacat.1 \
pacmd.1 \
pactl.1 \
pasuspender.1 \
padsp.1 \
pabrowse.1 \
pulse-daemon.conf.5 \
pulse-client.conf.5 \
default.pa.5
CLEANFILES += \
$(dist_man_MANS)
%: %.xml Makefile
perl $(srcdir)/xmltoman $< > $@ || rm -f $@
endif
EXTRA_DIST = \
pulseaudio.1.xml.in \
esdcompat.1.xml.in \
pax11publish.1.xml.in \
paplay.1.xml.in \
pacat.1.xml.in \
pacmd.1.xml.in \
pactl.1.xml.in \
pasuspender.1.xml.in \
padsp.1.xml.in \
pabrowse.1.xml.in \
pulse-daemon.conf.5.xml.in \
pulse-client.conf.5.xml.in \
default.pa.5.xml.in \
xmltoman \
xmltoman.css \
xmltoman.xsl \
xmltoman.dtd

View file

@ -16,29 +16,28 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="default.pa" section="5" desc="PulseAudio Sound Server Startup Script">
<synopsis>
<p><file>~/.config/pulse/default.pa</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/default.pa</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/system.pa</file></p>
<p><file>~/.pulse/default.pa</file></p>
<p><file>@pulseconfdir@/default.pa</file></p>
</synopsis>
<description>
<p>The PulseAudio sound server interprets a configuration script on
startup, which is mainly used to define the set of modules to load. When
PulseAudio runs in the per-user mode and
<file>~/.config/pulse/default.pa</file> exists, that file is used. When
PulseAudio runs in the per-user mode and that file doesn't exist,
<file>@PA_DEFAULT_CONFIG_DIR@/default.pa</file> is used. When PulseAudio
runs as a system service, <file>@PA_DEFAULT_CONFIG_DIR@/system.pa</file> is
used.</p>
<p>The PulseAudio sound server interprets the file
<file>~/.pulse/default.pa</file> on startup, and when that file
doesn't exist <file>@pulseconfdir@/default.pa</file>. It
should contain directives in the PulseAudio CLI languages, as
documented on <url href="http://pulseaudio.org/wiki/CLI"/>.</p>
<p>The script should contain directives in the PulseAudio CLI language, as
documented in <manref name="pulse-cli-syntax" section="5"/>.</p>
<p>The same commands can also be entered during runtime in the <manref name="pacmd"
section="1"/> tool, allowing flexible runtime reconfiguration.</p>
</description>
<section name="Authors">
@ -48,10 +47,9 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<section name="See also">
<p>
<manref name="pulse-cli-syntax" section="5"/>,
<manref name="pulse-daemon.conf" section="5"/>,
<manref name="pulseaudio" section="1"/>,
<manref name="pacmd" section="1"/>
<manref name="pulse-daemon.conf" section="5"/>, <manref
name="pulseaudio" section="1"/>, <manref name="pacmd"
section="1"/>
</p>
</section>

View file

@ -16,7 +16,9 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="esdcompat" section="1" desc="PulseAudio ESD wrapper script">
@ -28,7 +30,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</synopsis>
<description>
<p><file>esdcompat</file> is a compatibility script that takes the
<p><file>esdcompat</file> is a compatiblity script that takes the
same arguments as the ESD sound daemon <manref name="esd"
section="1"/>, but uses them to start a the PulseAudio sound server with the appropriate parameters. It is
required to make PulseAudio a drop-in replacement for esd, i.e. it

View file

@ -1,93 +0,0 @@
# man page name, section, [aliases]
manpages = []
if get_option('daemon')
manpages += [
['default.pa', '5'],
['pacmd', '1'],
['pasuspender', '1'],
['pulse-cli-syntax', '5'],
['pulse-daemon.conf', '5'],
['pulseaudio', '1'],
['start-pulseaudio-x11', '1'],
]
endif
if get_option('client')
manpages += [
['pacat', '1', ['paplay', 'parec', 'parecord', 'pamon']],
['pactl', '1'],
['pulse-client.conf', '5'],
]
if cdata.has('HAVE_OSS_WRAPPER')
manpages += [
['padsp', '1'],
]
endif
if x11_dep.found()
manpages += [
['pax11publish', '1'],
]
endif
endif
# FIXME: Add esdcompat if HAVE_ESOUND
#manpages += ['esdcompat', '1'],
man_data = configuration_data()
man_data.set('PACKAGE_URL', 'http://pulseaudio.org/')
man_data.set('PACKAGE_BUGREPORT', 'pulseaudio-discuss (at) lists (dot) freedesktop (dot) org')
man_data.set('PA_DEFAULT_CONFIG_DIR', cdata.get_unquoted('PA_DEFAULT_CONFIG_DIR'))
perl = find_program('perl', required: true)
xmltoman_cmd = [perl, join_paths(meson.current_source_dir(), 'xmltoman')]
xmllint = find_program('xmllint', required: false)
foreach tuple : manpages
stem = tuple[0]
section = tuple[1]
aliases = tuple.get(2, [])
man = stem + '.' + section
xmlin = man + '.xml.in'
xml = man + '.xml'
xml_file = configure_file(
input : xmlin,
output : xml,
configuration : man_data,
)
mandirn = join_paths(mandir, 'man' + section)
custom_target(
man + '-target',
input : xml_file,
output : man,
capture : true,
command : xmltoman_cmd + ['@INPUT@'],
install : true,
install_dir : mandirn,
)
foreach alias_stem : aliases
alias = alias_stem + '.' + section
dst = join_paths(mandirn, alias)
cmd = 'ln -fs @0@ $DESTDIR@1@'.format(man, dst)
meson.add_install_script('sh', '-c', cmd)
endforeach
if xmllint.found()
test(
'Validate xml file ' + xml,
xmllint,
args : [
'--noout', '--valid',
'--path', meson.current_source_dir(),
join_paths(meson.current_build_dir(), xml)]
)
endif
endforeach

View file

@ -16,32 +16,31 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="start-pulseaudio-x11" section="1" desc="PulseAudio Sound Server X11 Startup Script">
<manpage name="pabrowse" section="1" desc="List PulseAudio sound servers on the network">
<synopsis>
<cmd>start-pulseaudio-x11 [<arg>pulseaudio options</arg>]</cmd>
<cmd>pabrowse</cmd>
</synopsis>
<description>
<p>This script starts pulseaudio (if not already running) and loads modules to
publish access credentials to the PulseAudio server in the X11 root window and to synthesize
X11 media key events on cork/uncork requests. Additionally it registers
PulseAudio to the X11 Session Manager.</p>
<p><file>pabrowse</file> lists all PulseAudio sound servers on the
local network that are being announced with Zeroconf/Avahi.</p>
<p>All arguments are directly passed to pulseaudio.</p>
<p>This program takes no command line arguments.</p>
</description>
<section name="Authors">
<p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;;
PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
<p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;; PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
</section>
<section name="See also">
<p>
<manref name="pulseaudio" section="1"/>
<manref name="pulseaudio" section="1"/>, <manref name="avahi-daemon" section="8"/>
</p>
</section>

View file

@ -16,7 +16,9 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pacat" section="1" desc="Play back or record raw or encoded audio streams on a PulseAudio sound server">
@ -34,8 +36,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<description>
<p><file>pacat</file> is a simple tool for playing back or
capturing raw or encoded audio files on a PulseAudio sound
server. It understands all audio file formats supported by
<file>libsndfile</file>.</p>
server.</p>
</description>
<options>
@ -79,13 +80,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>-d | --device</opt><arg>=SINKORSOURCE</arg></p>
<optdesc><p>Specify the symbolic name of the sink/source to play/record this stream on/from. The special names @DEFAULT_SINK@, @DEFAULT_SOURCE@ and @DEFAULT_MONITOR@ can be used to specify the default sink, source and monitor respectively.</p></optdesc>
</option>
<option>
<p><opt>--monitor-stream</opt><arg>=INDEX</arg></p>
<optdesc><p>Record from the sink input with index INDEX.</p></optdesc>
<optdesc><p>Specify the symbolic name of the sink/source to play/record this stream on/from.</p></optdesc>
</option>
<option>
@ -116,9 +111,18 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p><opt>--format</opt><arg>=FORMAT</arg></p>
<optdesc><p>Capture or play back audio with the specified sample
format. See
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SupportedAudioFormats/
for supported values. Defaults to s16ne.</p></optdesc>
format. Specify one of <opt>u8</opt>, <opt>s16le</opt>,
<opt>s16be</opt>, <opt>s32le</opt>, <opt>s32be</opt>,
<opt>float32le</opt>, <opt>float32be</opt>, <opt>ulaw</opt>,
<opt>alaw</opt>, <opt>s32le</opt>, <opt>s32be</opt>,
<opt>s24le</opt>, <opt>s24be</opt>, <opt>s24-32le</opt>,
<opt>s24-32be</opt>. Depending on the endianess of the CPU the
formats <opt>s16ne</opt>, <opt>s16re</opt>, <opt>s32ne</opt>,
<opt>s32re</opt>, <opt>float32ne</opt>, <opt>float32re</opt>,
<opt>s32ne</opt>, <opt>s32re</opt>, <opt>s24ne</opt>,
<opt>s24re</opt>, <opt>s24-32ne</opt>, <opt>s24-32re</opt> (for
native, resp. reverse endian) are available as aliases. Defaults
to s16ne.</p></optdesc>
</option>
<option>
@ -185,7 +189,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>--latency-msec</opt><arg>=MSEC</arg></p>
<optdesc><p>Explicitly configure the latency, with a time
specified in milliseconds. If left out the server will pick the
specified in miliseconds. If left out the server will pick the
latency, usually relatively high for power saving reasons. Use
either this option or <opt>--latency</opt>, but not
both.</p></optdesc>
@ -202,7 +206,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>--process-time-msec</opt><arg>=MSEC</arg></p>
<optdesc><p>Explicitly configure the process time, with a time
specified in milliseconds. If left out the server will pick the
specified in miliseconds. If left out the server will pick the
process time. Use either this option or <opt>--process-time</opt>,
but not both.</p></optdesc>
</option>
@ -216,15 +220,15 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>--raw</opt></p>
<optdesc><p>Play/record raw audio data. This is the default if
this program is invoked as <file>pacat</file>, <file>parec</file> or
<file>pamon</file>.</p></optdesc>
this program is invoked as <cmd>pacat</cmd>, <cmd>parec</cmd> or
<cmd>pamon</cmd>.</p></optdesc>
</option>
<option>
<p><opt>--file-format</opt><arg>[=FFORMAT]</arg></p>
<optdesc><p>Play/record encoded audio data in the file format
specified. This is the default if this program is invoked as
<file>paplay</file> and <file>parecord</file>.</p></optdesc>
<cmd>paplay</cmd> and <cmd>parecord</cmd>.</p></optdesc>
</option>
<option>
@ -234,13 +238,6 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</options>
<section name="Limitations">
<p>Due to a limitation in <file>libsndfile</file>
<file>paplay</file> currently does not always set the correct channel
mapping for playback of multichannel (i.e. surround) audio files, even
if the channel mapping information is available in the audio file.</p>
</section>
<section name="Authors">
<p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;; PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
</section>

View file

@ -16,15 +16,15 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pacmd" section="1" desc="Reconfigure a PulseAudio sound server during runtime">
<synopsis>
<cmd>pacmd</cmd>
<cmd>pacmd <opt>--help</opt></cmd>
<cmd>pacmd <opt>--version</opt></cmd>
</synopsis>
<description>
@ -34,39 +34,16 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
the commands also understood in the <file>default.pa</file>
configuration scripts.</p>
<p>To exit the live shell, use ctrl+d. Note that the 'exit' command
inside the shell will tell the PulseAudio daemon itself to shutdown!</p>
<p>If any arguments are passed on the command line, they will be
passed into the live shell which will process the command and exit.</p>
<p>This program takes no command line options.</p>
</description>
<options>
<option>
<p><opt>-h | --help</opt></p>
<optdesc><p>Show help.</p></optdesc>
</option>
<option>
<p><opt>--version</opt></p>
<optdesc><p>Show version information.</p></optdesc>
</option>
</options>
<section name="Authors">
<p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;; PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
</section>
<section name="See also">
<p>
<manref name="pulse-cli-syntax" section="5"/>,
<manref name="pulseaudio" section="1"/>,
<manref name="pactl" section="1"/>,
<manref name="default.pa" section="5"/>
<manref name="pulseaudio" section="1"/>, <manref name="pactl" section="1"/>, <manref name="default.pa" section="5"/>
</p>
</section>

View file

@ -16,13 +16,26 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pactl" section="1" desc="Control a running PulseAudio sound server">
<synopsis>
<cmd>pactl [<arg>options</arg>] <arg>COMMAND</arg> [<arg>ARGS ...</arg>]</cmd>
<cmd>pactl [<arg>options</arg>] stat</cmd>
<cmd>pactl [<arg>options</arg>] list</cmd>
<cmd>pactl [<arg>options</arg>] exit</cmd>
<cmd>pactl [<arg>options</arg>] upload-sample <arg>FILENAME</arg> [<arg>NAME</arg>]</cmd>
<cmd>pactl [<arg>options</arg>] play-sample <arg>NAME</arg> [<arg>SINK</arg>]</cmd>
<cmd>pactl [<arg>options</arg>] remove-sample <arg>NAME</arg></cmd>
<cmd>pactl [<arg>options</arg>] move-sink-input <arg>ID</arg> <arg>SINK</arg></cmd>
<cmd>pactl [<arg>options</arg>] move-source-input <arg>ID</arg> <arg>SOURCE</arg></cmd>
<cmd>pactl [<arg>options</arg>] load-module <arg>NAME</arg> [<arg>ARGUMENTS ...</arg>]</cmd>
<cmd>pactl [<arg>options</arg>] unload-module <arg>ID</arg></cmd>
<cmd>pactl [<arg>options</arg>] suspend-sink [<arg>SINK</arg>] <arg>1|0</arg></cmd>
<cmd>pactl [<arg>options</arg>] suspend-source [<arg>SOURCE</arg>] <arg>1|0</arg></cmd>
<cmd>pactl <opt>--help</opt></cmd>
<cmd>pactl <opt>--version</opt></cmd>
</synopsis>
@ -53,270 +66,118 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<optdesc><p>Choose the server to connect to.</p></optdesc>
</option>
<option>
<p><opt>-f | --format</opt><arg>=FORMAT</arg></p>
<optdesc><p>Choose output format, available options are "text" or "json".</p></optdesc>
</option>
<option>
<p><opt>-n | --client-name</opt><arg>=NAME</arg></p>
<optdesc><p>Specify the client name <file>pactl</file> shall pass to the server when connecting.</p></optdesc>
</option>
</options>
<section name="Commands">
<p>
When supplied as arguments to the commands below, the special names \@DEFAULT_SINK@, \@DEFAULT_SOURCE@ and \@DEFAULT_MONITOR@
can be used to specify the default sink, source and monitor respectively.
</p>
<option>
<p><opt>stat</opt></p>
<optdesc><p>Dump a few statistics about the memory usage of the PulseAudio daemon.</p></optdesc>
<optdesc><p>Dump a few statistics about the PulseAudio daemon.</p></optdesc>
</option>
<option>
<p><opt>info</opt></p>
<optdesc><p>Dump some info about the PulseAudio daemon.</p></optdesc>
</option>
<p><opt>list</opt></p>
<option>
<p><opt>list</opt> [<arg>short</arg>] [<arg>TYPE</arg>]</p>
<optdesc><p>Dump all currently loaded modules, available sinks, sources, streams, etc. <arg>TYPE</arg> must be one of:
modules, sinks, sources, sink-inputs, source-outputs, clients, samples, cards, message-handlers. If not specified, all info is listed
with the exception of the message-handlers. If short is given, output is in a tabular format, for easy parsing by scripts.</p></optdesc>
<optdesc><p>Dump all currently loaded modules, available sinks, sources, streams and clients.</p></optdesc>
</option>
<option>
<p><opt>exit</opt></p>
<optdesc><p>Asks the PulseAudio server to terminate.</p></optdesc>
</option>
<option>
<p><opt>upload-sample</opt> <arg>FILENAME</arg> [<arg>NAME</arg>]</p>
<optdesc><p>Upload a sound from the specified audio file into
the sample cache. The file types supported are those understood
by <file>libsndfile</file>. The sample in the cache is named
after the audio file, unless the name is explicitly
specified.</p></optdesc>
</option>
<option>
<p><opt>play-sample</opt> <arg>NAME</arg> [<arg>SINK</arg>]</p>
<optdesc><p>Play the specified sample from the sample cache. It
is played on the default sink, unless the symbolic name or the
numerical index of the sink to play it on is
specified.</p></optdesc>
</option>
<option>
<p><opt>remove-sample</opt> <arg>NAME</arg></p>
<optdesc><p>Remove the specified sample from the sample cache.</p></optdesc>
</option>
<option>
<p><opt>load-module</opt> <arg>NAME</arg> [<arg>ARGUMENTS ...</arg>]</p>
<optdesc><p>Load the specified module with the specified arguments into the running sound server.
Prints the numeric index of the module just loaded to STDOUT. You can use it to unload the module later.</p></optdesc>
</option>
<option>
<p><opt>unload-module</opt> <arg>ID|NAME</arg></p>
<optdesc><p>Unload the module instance identified by the specified numeric index or unload all modules by the specified name.</p></optdesc>
</option>
<option>
<p><opt>move-sink-input</opt> <arg>ID</arg> <arg>SINK</arg></p>
<optdesc><p>Move the specified playback stream (identified by its numerical index) to the specified sink (identified by its symbolic name or numerical index).</p></optdesc>
</option>
<option>
<p><opt>move-source-output</opt> <arg>ID</arg> <arg>SOURCE</arg></p>
<optdesc><p>Move the specified recording stream (identified by its numerical index) to the specified source (identified by its symbolic name or numerical index).</p></optdesc>
</option>
<option>
<p><opt>suspend-sink</opt> <arg>SINK</arg> <arg>true|false</arg></p>
<optdesc><p>Suspend or resume the specified sink (which may be
specified either by its symbolic name or numerical index), depending whether true
(suspend) or false (resume) is passed as last argument. Suspending
a sink will pause all playback. Depending on the module implementing
the sink this might have the effect that the underlying device is
closed, making it available for other applications to use. The exact
behaviour depends on the module.
</p></optdesc>
<p><opt>load-module</opt> <arg>NAME</arg> [<arg>ARGUMENTS ...</arg>]</p>
<optdesc><p>Load the specified module with the specified arguments into the running sound server. Prints the numeric index of the module just loaded to STDOUT. You can use it to unload the module later.</p></optdesc>
</option>
<option>
<p><opt>suspend-source</opt> <arg>SOURCE</arg> <arg>true|false</arg></p>
<optdesc><p>Suspend or resume the specified source (which may be
specified either by its symbolic name or numerical index), depending whether true
(suspend) or false (resume) is passed as last argument. Suspending
a source will pause all capturing. Depending on the module implementing
the source this might have the effect that the underlying device is
closed, making it available for other applications to use. The exact
behaviour depends on the module.
</p></optdesc>
<p><opt>unload-module</opt> <arg>ID</arg></p>
<optdesc><p>Unload the module instance identified by the specified numeric index.</p></optdesc>
</option>
<option>
<p><opt>set-card-profile</opt> <arg>CARD</arg> <arg>PROFILE</arg></p>
<optdesc><p>Set the specified card (identified by its symbolic name or numerical index) to the specified profile (identified by its symbolic name).</p></optdesc>
<p><opt>suspend-sink</opt> <arg>SINK</arg> <arg>1|0</arg></p>
<optdesc><p>Suspend or resume the specified sink (which my be
specified either by its symbolic name, or by its numeric index),
depending whether 1 (suspend) or 0 (resume) is passed as last
argument. Suspending a sink will pause all playback. Depending
on the module implementing the sink this might have the effect
that the underlying device is closed, making it available for
other applications to use. The exact behaviour depends on the
module.</p></optdesc>
</option>
<option>
<p><opt>get-default-sink</opt></p>
<optdesc><p>Returns the symbolic name of the default sink.</p></optdesc>
<p><opt>suspend-source</opt> <arg>SOURCE</arg> <arg>1|0</arg></p>
<optdesc><p>Suspend or resume the specified source (which my be
specified either by its symbolic name, or by its numeric index),
depending whether 1 (suspend) or 0 (resume) is passed as last
argument. Suspending a source will pause all
capturing. Depending on the module implementing the source this
might have the effect that the underlying device is closed,
making it available for other applications to use. The exact
behaviour depends on the module.</p></optdesc>
</option>
<option>
<p><opt>set-default-sink</opt> <arg>SINK</arg></p>
<optdesc><p>Make the specified sink (identified by its symbolic name or numerical index) the default sink.
Use the special name \@NONE@ to unset the user defined default sink. This will make pulseaudio return to the default
sink selection based on sink priority.</p></optdesc>
</option>
<option>
<p><opt>set-sink-port</opt> <arg>SINK</arg> <arg>PORT</arg></p>
<optdesc><p>Set the specified sink (identified by its symbolic name or numerical index) to the specified port (identified by its symbolic name).</p></optdesc>
</option>
<option>
<p><opt>get-default-source</opt></p>
<optdesc><p>Returns the symbolic name of the default source.</p></optdesc>
</option>
<option>
<p><opt>set-default-source</opt> <arg>SOURCE</arg></p>
<optdesc><p>Make the specified source (identified by its symbolic name or numerical index) the default source.
Use the special name \@NONE@ to unset the user defined default source. This will make pulseaudio return to the default
source selection based on source priority.</p></optdesc>
</option>
<option>
<p><opt>set-source-port</opt> <arg>SOURCE</arg> <arg>PORT</arg></p>
<optdesc><p>Set the specified source (identified by its symbolic name or numerical index) to the specified port (identified by its symbolic name).</p></optdesc>
</option>
<option>
<p><opt>set-port-latency-offset</opt> <arg>CARD</arg> <arg>PORT</arg> <arg>OFFSET</arg></p>
<optdesc><p>Set a latency offset to a specified port (identified by its symbolic name) that belongs to a card (identified by its symbolic name or numerical index).
<arg>OFFSET</arg> is a number which represents the latency offset in microseconds</p></optdesc>
</option>
<option>
<p><opt>get-sink-volume</opt> <arg>SINK</arg></p>
<optdesc><p>Get the volume of the specified sink (identified by its symbolic name or numerical index) displayed in the same format as the `info` command.</p></optdesc>
</option>
<option>
<p><opt>set-sink-volume</opt> <arg>SINK</arg> <arg>VOLUME [VOLUME ...]</arg></p>
<optdesc><p>Set the volume of the specified sink (identified by its symbolic name or numerical index).
<arg>VOLUME</arg> can be specified as an integer (e.g. 2000, 16384), a linear factor (e.g. 0.4, 1.100), a percentage
(e.g. 10%, 100%) or a decibel value (e.g. 0dB, 20dB). If the volume specification start with a + or - the volume
adjustment will be relative to the current sink volume. A single volume value affects all channels; if multiple
volume values are given their number has to match the sink's number of channels.</p></optdesc>
</option>
<option>
<p><opt>get-source-volume</opt> <arg>SOURCE</arg></p>
```
<optdesc><p>Get the volume of the specified source (identified by its symbolic name or numerical index) displayed in the same format as the `info` command.</p></optdesc>
</option>
<option>
<p><opt>set-source-volume</opt> <arg>SOURCE</arg> <arg>VOLUME [VOLUME ...]</arg></p>
<optdesc><p>Set the volume of the specified source (identified by its symbolic name or numerical index).
<arg>VOLUME</arg> can be specified as an integer (e.g. 2000, 16384), a linear factor (e.g. 0.4, 1.100), a percentage
(e.g. 10%, 100%) or a decibel value (e.g. 0dB, 20dB). If the volume specification start with a + or - the volume
adjustment will be relative to the current source volume. A single volume value affects all channels; if multiple
volume values are given their number has to match the source's number of channels.</p></optdesc> </option>
<option>
<p><opt>set-sink-input-volume</opt> <arg>INPUT</arg> <arg>VOLUME [VOLUME ...]</arg></p>
<optdesc><p>Set the volume of the specified sink input (identified by its numerical index).
<arg>VOLUME</arg> can be specified as an integer (e.g. 2000, 16384), a linear factor (e.g. 0.4, 1.100), a percentage
(e.g. 10%, 100%) or a decibel value (e.g. 0dB, 20dB). If the volume specification start with a + or - the volume
adjustment will be relative to the current sink input volume. A single volume value affects all channels; if multiple
volume values are given their number has to match the sink input's number of channels.</p></optdesc> </option>
<option>
<p><opt>set-source-output-volume</opt> <arg>OUTPUT</arg> <arg>VOLUME [VOLUME ...]</arg></p>
<optdesc><p>Set the volume of the specified source output (identified by its numerical index).
<arg>VOLUME</arg> can be specified as an integer (e.g. 2000, 16384), a linear factor (e.g. 0.4, 1.100), a percentage
(e.g. 10%, 100%) or a decibel value (e.g. 0dB, 20dB). If the volume specification start with a + or - the volume
adjustment will be relative to the current source output volume. A single volume value affects all channels; if multiple
volume values are given their number has to match the source output's number of channels.</p></optdesc>
</option>
<option>
<p><opt>get-sink-mute</opt> <arg>SINK</arg></p>
<optdesc><p>Get the mute status of the specified sink (identified by its symbolic name or numerical index).</p></optdesc>
</option>
<option>
<p><opt>set-sink-mute</opt> <arg>SINK</arg> <arg>1|0|toggle</arg></p>
<optdesc><p>Set the mute status of the specified sink (identified by its symbolic name or numerical index).</p></optdesc>
</option>
<option>
<p><opt>get-source-mute</opt> <arg>SOURCE</arg></p>
<optdesc><p>Get the mute status of the specified source (identified by its symbolic name or numerical index).</p></optdesc>
</option>
<option>
<p><opt>set-source-mute</opt> <arg>SOURCE</arg> <arg>1|0|toggle</arg></p>
<optdesc><p>Set the mute status of the specified source (identified by its symbolic name or numerical index).</p></optdesc>
</option>
<option>
<p><opt>set-sink-input-mute</opt> <arg>INPUT</arg> <arg>1|0|toggle</arg></p>
<optdesc><p>Set the mute status of the specified sink input (identified by its numerical index).</p></optdesc>
</option>
<option>
<p><opt>set-source-output-mute</opt> <arg>OUTPUT</arg> <arg>1|0|toggle</arg></p>
<optdesc><p>Set the mute status of the specified source output (identified by its numerical index).</p></optdesc>
</option>
<option>
<p><opt>set-sink-formats</opt> <arg>SINK</arg> <arg>FORMATS</arg></p>
<optdesc><p>Set the supported formats of the specified sink (identified
by its numerical index) if supported by the sink. <arg>FORMATS</arg> is
specified as a semi-colon (;) separated list of formats in the form
'encoding[, key1=value1, key2=value2, ...]' (for example, AC3 at 32000,
44100 and 48000 Hz would be specified as
'ac3-iec61937, format.rate = "[ 32000, 44100, 48000 ]"'). See
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SupportedAudioFormats/
for possible encodings. </p></optdesc>
</option>
<option>
<p><opt>send-message</opt> <arg>RECIPIENT</arg> <arg>MESSAGE</arg> <arg>MESSAGE_PARAMETERS</arg></p>
<optdesc><p>Send a message to the specified recipient object. If applicable an additional string containing
message parameters can be specified. A string is returned as a response to the message. For available messages
see https://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/doc/messaging_api.txt.</p></optdesc>
</option>
<option>
<p><opt>subscribe</opt></p>
<optdesc><p>Subscribe to events, pactl does not exit by itself, but keeps waiting for new events.</p></optdesc>
</option>
</section>
</options>
<section name="Authors">
<p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;; PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
</section>
<seealso>
<section name="See also">
<p>
<manref name="pulseaudio" section="1"/>,
<manref name="pacmd" section="1"/>
<manref name="pulseaudio" section="1"/>, <manref name="pacmd" section="1"/>
</p>
</seealso>
</section>
</manpage>

View file

@ -16,7 +16,9 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="padsp" section="1" desc="PulseAudio OSS Wrapper">

127
man/paplay.1.xml.in Normal file
View file

@ -0,0 +1,127 @@
<?xml version="1.0"?><!--*-nxml-*-->
<!DOCTYPE manpage SYSTEM "xmltoman.dtd">
<?xml-stylesheet type="text/xsl" href="xmltoman.xsl" ?>
<!--
This file is part of PulseAudio.
PulseAudio is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="paplay" section="1" desc="Play back audio files on a PulseAudio sound server">
<synopsis>
<cmd>paplay [<arg>options</arg>] <arg>FILE</arg></cmd>
<cmd>paplay <opt>--help</opt></cmd>
<cmd>paplay <opt>--version</opt></cmd>
</synopsis>
<description>
<p><file>paplay</file> is a simple tool for playing back audio
files on a PulseAudio sound server. It understands all audio file
formats supported by <file>libsndfile</file>.</p>
</description>
<options>
<option>
<p><opt>-h | --help</opt></p>
<optdesc><p>Show help.</p></optdesc>
</option>
<option>
<p><opt>--version</opt></p>
<optdesc><p>Show version information.</p></optdesc>
</option>
<option>
<p><opt>-v | --verbose</opt></p>
<optdesc><p>Enable verbose operation. Dumps the current playback time to STDERR during playback.</p></optdesc>
</option>
<option>
<p><opt>-s | --server</opt><arg>=SERVER</arg></p>
<optdesc><p>Choose the server to connect to.</p></optdesc>
</option>
<option>
<p><opt>-d | --device</opt><arg>=SINK</arg></p>
<optdesc><p>Specify the symbolic name of the sink to play this file on.</p></optdesc>
</option>
<option>
<p><opt>-n | --client-name</opt><arg>=NAME</arg></p>
<optdesc><p>Specify the client name <file>paplay</file> shall pass to the server when connecting.</p></optdesc>
</option>
<option>
<p><opt>--stream-name</opt><arg>=NAME</arg></p>
<optdesc><p>Specify the stream name <file>paplay</file> shall pass to the server when creating the stream.</p></optdesc>
</option>
<option>
<p><opt>--volume</opt><arg>=VOLUME</arg></p>
<optdesc><p>Specify the initial playback volume to use. Choose a value between 0 (silent) and 65536 (100% volume).</p></optdesc>
</option>
<option>
<p><opt>--channel-map</opt><arg>=CHANNELMAP</arg></p>
<optdesc><p>Explicitly choose a channel map when playing back
this stream. The argument should be a comma separated list of
channel names: <arg>front-left</arg>, <arg>front-right</arg>,
<arg>mono</arg>, <arg>front-center</arg>, <arg>rear-left</arg>,
<arg>rear-right</arg>, <arg>rear-center</arg>, <arg>lfe</arg>,
<arg>front-left-of-center</arg>,
<arg>front-right-of-center</arg>, <arg>side-left</arg>,
<arg>side-right</arg>, <arg>top-center</arg>,
<arg>top-front-center</arg>, <arg>top-front-left</arg>,
<arg>top-front-right</arg>, <arg>top-rear-left</arg>,
<arg>top-rear-right</arg>, <arg>top-rear-center</arg>, or any of
the 32 auxiliary channel names <arg>aux0</arg> to
<arg>aux31</arg>.</p></optdesc>
</option>
</options>
<section name="Limitations">
<p>Due to a limitation in <file>libsndfile</file>
<file>paplay</file> currently does not always set the correct channel
mapping for playback of multichannel (i.e. surround) audio files, even if the channel mapping information is
available in the audio file.</p>
</section>
<section name="Authors">
<p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;; PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
</section>
<section name="See also">
<p>
<manref name="pulseaudio" section="1"/>, <manref name="pacat" section="1"/>
</p>
</section>
</manpage>

View file

@ -16,7 +16,9 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pasuspender" section="1" desc="Temporarily suspend PulseAudio">

View file

@ -16,7 +16,9 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pax11publish" section="1" desc="PulseAudio X11 Credential Utility">
@ -71,7 +73,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
the <file>eval</file> shell command to set the $PULSE_SERVER,
$PULSE_SINK, $PULSE_SOURCE environment variables. Also reads the
authentication cookie from the root window and stores it in
<file>~/.config/pulse/cookie</file>. </p></optdesc>
<file>~/.pulse-cookie</file>. </p></optdesc>
</option>
<option>
@ -81,12 +83,12 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
sink, source configuration to the X11 root window. This takes
the data from the $PULSE_SERVER, $PULSE_SINK, $PULSE_SOURCE
environment variables and combines them with the data from
<file>~/.config/pulse/client.conf</file> (or
<file>@PA_DEFAULT_CONFIG_DIR@/client.conf</file> if that file does not
<file>~/.pulse/client.conf</file> (or
<file>@pulseconfdir@/client.conf</file> if that file does not
exist). If specific options are passed on the command line
(<opt>-S</opt>, <opt>-O</opt>, <opt>-I</opt>, <opt>-c</opt>, see
below), they take precedence. Also uploads the local
authentication cookie <file>~/.config/pulse/cookie</file> to the X11
authentication cookie <file>~/.pulse-cookie</file> to the X11
server.</p></optdesc>
</option>
@ -131,7 +133,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<optdesc><p>Only valid for <opt>-e</opt>: export the PulseAudio
authentication cookie stored in the specified file to the X11
display instead of the one stored in <file>~/.config/pulse/cookie</file>.</p></optdesc>
display instead of the one stored in <file>~/.pulse-cookie</file>.</p></optdesc>
</option>
</options>

View file

@ -1,369 +0,0 @@
<?xml version="1.0"?><!--*-nxml-*-->
<!DOCTYPE manpage SYSTEM "xmltoman.dtd">
<?xml-stylesheet type="text/xsl" href="xmltoman.xsl" ?>
<!--
This file is part of PulseAudio.
PulseAudio is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
-->
<manpage name="pulse-cli-syntax" section="5" desc="PulseAudio Command Line Interface Syntax">
<synopsis>
<p><file>~/.config/pulse/default.pa</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/default.pa</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/system.pa</file></p>
</synopsis>
<description>
<p>
PulseAudio provides a simple command line language used by configuration
scripts, the pacmd interactive shell, and the modules module-cli and
module-cli-protocol-{unix,tcp}. Empty lines and lines beginning with a
hashmark (#) are silently ignored. Several commands are supported.
</p>
<p>
Note that any boolean arguments can be given positively as '1', 't', 'y',
'true', 'yes' or 'on'. Likewise, negative values can be given as '0',
'f', 'n', 'false', 'no' or 'off'. Case is ignored.
</p>
</description>
<section name="General Commands">
<option>
<p><opt>help</opt></p>
<optdesc><p>Show a quick help on the commands available.</p></optdesc>
</option>
</section>
<section name="Status Commands">
<option>
<p><opt>list-modules</opt></p>
<optdesc><p>Show all currently loaded modules with their arguments.</p></optdesc>
</option>
<option>
<p><opt>list-cards</opt></p>
<optdesc><p>Show all currently registered cards</p></optdesc>
</option>
<option>
<p><opt>list-sinks</opt> or <opt>list-sources</opt></p>
<optdesc><p>Show all currently registered sinks (resp. sources).</p></optdesc>
</option>
<option>
<p><opt>list-clients</opt></p>
<optdesc><p>Show all currently active clients.</p></optdesc>
</option>
<option>
<p><opt>list-sink-inputs</opt> or <opt>list-source-outputs</opt></p>
<optdesc><p>Show all currently active inputs to sinks a.k.a. playback
streams (resp. outputs of sources a.k.a. recording streams).</p></optdesc>
</option>
<option>
<p><opt>stat</opt></p>
<optdesc><p>Show some simple statistics about the allocated memory blocks and the space used by them.</p></optdesc>
</option>
<option>
<p><opt>info</opt> or <opt>ls</opt> or <opt>list</opt></p>
<optdesc><p>A combination of all status commands described above (all
three commands are synonyms).</p></optdesc>
</option>
</section>
<section name="Module Management">
<option>
<p><opt>load-module</opt> <arg>name</arg> [<arg>arguments...</arg>]</p>
<optdesc><p>Load a module specified by its name and arguments. For most
modules it is OK to be loaded more than once.</p></optdesc>
</option>
<option>
<p><opt>unload-module</opt> <arg>index|name</arg></p>
<optdesc><p>Unload a module, specified either by its index in the module
list or its name.</p></optdesc>
</option>
<option>
<p><opt>describe-module</opt> <arg>name</arg></p>
<optdesc><p>Give information about a module specified by its name.</p></optdesc>
</option>
</section>
<section name="Volume Commands">
<option>
<p><opt>set-sink-volume|set-source-volume</opt> <arg>index|name</arg> <arg>volume</arg></p>
<optdesc><p>Set the volume of the specified sink (resp. source). You may
specify the sink (resp. source) either by its index in the sink/source list
or by its name. The volume should be an integer value greater or equal than
0 (muted). Volume 65536 (0x10000) is 'normal' volume a.k.a. 100%. Values
greater than this amplify the audio signal (with clipping).</p></optdesc>
</option>
<option>
<p><opt>set-sink-mute|set-source-mute</opt> <arg>index|name</arg> <arg>boolean</arg></p>
<optdesc><p>Mute or unmute the specified sink (resp. source). You may
specify the sink (resp. source) either by its index or by its name.
The mute value is either 0 (not muted) or 1 (muted).</p></optdesc>
</option>
<option>
<p><opt>set-sink-input-volume|set-source-output-volume</opt> <arg>index</arg> <arg>volume</arg></p>
<optdesc><p>Set the volume of a sink input (resp. source output) specified
by its index. The same volume rules apply as with set-sink-volume.</p></optdesc>
</option>
<option>
<p><opt>set-sink-input-mute|set-source-output-mute</opt> <arg>index</arg> <arg>boolean</arg></p>
<optdesc><p>Mute or unmute a sink input (resp. source output) specified
by its index. The same mute rules apply as with set-sink-mute.</p></optdesc>
</option>
</section>
<section name="Configuration Commands">
<option>
<p><opt>set-default-sink|set-default-source</opt> <arg>index|name</arg></p>
<optdesc><p>Make a sink (resp. source) the default. You may specify the
sink (resp. source) by its index in the sink (resp. source) list or by its
name. Use the special name \@NONE@ to unset the user defined default sink or
source. In this case, pulseaudio will return to the default sink or source
selection based on priority.</p><p>Note that defaults may be overridden by
various policy modules or by specific stream configurations.</p></optdesc>
</option>
<option>
<p><opt>set-card-profile</opt> <arg>index|name</arg> <arg>profile-name</arg></p>
<optdesc><p>Change the profile of a card.</p></optdesc>
</option>
<option>
<p><opt>set-sink-port|set-source-port</opt> <arg>index|name</arg> <arg>port-name</arg></p>
<optdesc><p>Change the profile of a sink (resp. source).</p></optdesc>
</option>
<option>
<p><opt>set-port-latency-offset</opt> <arg>card-index|card-name</arg> <arg>port-name</arg> <arg>offset</arg> </p>
<optdesc><p>Change the latency offset of a port belonging to the specified card</p></optdesc>
</option>
<option>
<p><opt>suspend-sink|suspend-source</opt> <arg>name|index</arg>
<arg>true|false</arg>
</p>
<optdesc><p>Suspend or resume the specified sink or source (which may be
specified either by its name or index), depending whether true
(suspend) or false (resume) is passed as last argument. Suspending
a sink will pause all playback and suspending a source will pause all
capturing. Depending on the module implementing the sink or source this
might have the effect that the underlying device is closed, making it
available for other applications to use. The exact behaviour depends on
the module.
</p></optdesc>
</option>
<option>
<p><opt>suspend</opt> <arg>boolean</arg></p>
<optdesc><p>Suspend all sinks and sources.</p></optdesc>
</option>
</section>
<section name="Moving streams">
<option>
<p><opt>move-sink-input|move-source-output</opt> <arg>index</arg> <arg>sink-index|sink-name</arg></p>
<optdesc><p>Move sink input (resp. source output) to another sink
(resp. source).</p></optdesc>
</option>
</section>
<section name="Property lists">
<option>
<p><opt>update-sink-proplist|update-source-proplist</opt> <arg>index|name</arg> <arg>properties</arg></p>
<optdesc><p>Update the properties of a sink (resp. source) specified by
name or index. The property is specified as e.g. device.description="My
Preferred Name"</p></optdesc>
</option>
<option>
<p><opt>update-sink-input-proplist|update-source-output-proplist</opt> <arg>index</arg> <arg>properties</arg></p>
<optdesc><p>Update the properties of a sink input (resp. source output)
specified by index. The properties are specified as above.</p></optdesc>
</option>
</section>
<section name="Sample Cache">
<option>
<p><opt>list-samples</opt></p>
<optdesc><p>Lists the contents of the sample cache.</p></optdesc>
</option>
<option>
<p><opt>play-sample</opt> <arg>name</arg> <arg>sink-index|sink-name</arg></p>
<optdesc><p>Play a sample cache entry to a sink.</p></optdesc>
</option>
<option>
<p><opt>remove-sample</opt> <arg>name</arg></p>
<optdesc><p>Remove an entry from the sample cache.</p></optdesc>
</option>
<option>
<p><opt>load-sample</opt> <arg>name</arg> <arg>filename</arg></p>
<optdesc><p>Load an audio file to the sample cache.</p></optdesc>
</option>
<option>
<p><opt>load-sample-lazy</opt> <arg>name</arg> <arg>filename</arg></p>
<optdesc><p>Create a new entry in the sample cache, but don't load the
sample immediately. The sample is loaded only when it is first used.
After a certain idle time it is freed again.</p></optdesc>
</option>
<option>
<p><opt>load-sample-dir-lazy</opt> <arg>path</arg></p>
<optdesc><p>Load all entries in the specified directory into the sample
cache as lazy entries. A shell globbing expression (e.g. *.wav) may be
appended to the path of the directory to add.</p></optdesc>
</option>
</section>
<section name="Killing Clients/Streams">
<option>
<p><opt>kill-client</opt> <arg>index</arg></p>
<optdesc><p>Remove a client forcibly from the server. There is no protection
against the client reconnecting immediately.</p></optdesc>
</option>
<option>
<p><opt>kill-sink-input|kill-source-output</opt> <arg>index</arg></p>
<optdesc><p>Remove a sink input (resp. source output) forcibly from the
server. This will not remove the owning client or any other streams opened
by the same client from the server.</p></optdesc>
</option>
</section>
<section name="Log Commands">
<option>
<p><opt>set-log-level</opt> <arg>numeric-level</arg></p>
<optdesc><p>Change the log level.</p></optdesc>
</option>
<option>
<p><opt>set-log-meta</opt> <arg>boolean</arg></p>
<optdesc><p>Show source code location in log messages.</p></optdesc>
</option>
<option>
<p><opt>set-log-target</opt> <arg>target</arg></p>
<optdesc><p>Change the log target (null, auto, journal, syslog, stderr,
file:PATH, newfile:PATH).</p></optdesc>
</option>
<option>
<p><opt>set-log-time</opt> <arg>boolean</arg></p>
<optdesc><p>Show timestamps in log messages.</p></optdesc>
</option>
<option>
<p><opt>set-log-backtrace</opt> <arg>num-frames</arg></p>
<optdesc><p>Show backtrace in log messages.</p></optdesc>
</option>
</section>
<section name="Miscellaneous Commands">
<option>
<p><opt>play-file</opt> <arg>filename</arg> <arg>sink-index|sink-name</arg></p>
<optdesc><p>Play an audio file to a sink.</p></optdesc>
</option>
<option>
<p><opt>dump</opt></p>
<optdesc><p>Dump the daemon's current configuration in CLI commands.</p></optdesc>
</option>
<option>
<p><opt>dump-volumes</opt></p>
<optdesc><p>Debug: Shows the current state of all volumes.</p></optdesc>
</option>
<option>
<p><opt>shared</opt></p>
<optdesc><p>Debug: Show shared properties.</p></optdesc>
</option>
<option>
<p><opt>send-message</opt> <arg>recipient</arg> <arg>message</arg> <arg>message_parameters</arg></p>
<optdesc><p>Send a message to the specified recipient object. If applicable an additional string containing
message parameters can be specified. A string is returned as a response to the message. For available messages
see https://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/doc/messaging_api.txt.</p></optdesc>
</option>
<option>
<p><opt>exit</opt></p>
<optdesc><p>Terminate the daemon. If you want to terminate a CLI
connection ("log out") you might want to use ctrl+d</p></optdesc>
</option>
</section>
<section name="Meta Commands">
<p>
In addition to the commands described above there are a few meta directives
supported by the command line interpreter.
</p>
<option>
<p><opt>.include</opt> <arg>filename|folder</arg></p>
<optdesc><p>Executes the commands from the specified script file or in all
of the *.pa files within the folder.</p></optdesc>
</option>
<option>
<p><opt>.fail</opt> and <opt>.nofail</opt></p>
<optdesc><p>Enable (resp. disable) that following failing commands will
cancel the execution of the current script file. This is ignored when
used on the interactive command line.</p></optdesc>
</option>
<option>
<p><opt>.ifexists</opt> <arg>filename</arg></p>
<optdesc><p>Execute the subsequent block of commands only if the specified
file exists. Typically <arg>filename</arg> indicates a module. Relative
paths are resolved using the module directory as the base. By using an
absolute path, the existence of other files can be checked as well.</p></optdesc>
</option>
<option>
<p><opt>.else</opt> and <opt>.endif</opt></p>
<optdesc><p>A block of commands is delimited by an <opt>.else</opt> or
<opt>.endif</opt> meta command. Nesting conditional commands is not
supported.</p></optdesc>
</option>
</section>
<section name="Authors">
<p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;;
PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
</section>
<section name="See also">
<p>
<manref name="default.pa" section="5"/>,
<manref name="pacmd" section="1"/>,
<manref name="pulseaudio" section="1"/>
</p>
</section>
</manpage>

View file

@ -16,33 +16,24 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pulse-client.conf" section="5" desc="PulseAudio client configuration file">
<synopsis>
<p><file>~/.config/pulse/client.conf</file></p>
<p><file>~/.config/pulse/client.conf.d/*.conf</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/client.conf</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/client.conf.d/*.conf</file></p>
<p><file>~/.pulse/client.conf</file></p>
<p><file>@pulseconfdir@/client.conf</file></p>
</synopsis>
<description>
<p>The PulseAudio client library reads configuration directives from
a configuration file on startup. If the per-user file
<file>~/.config/pulse/client.conf</file> exists, it is used, otherwise the
system configuration file <file>@PA_DEFAULT_CONFIG_DIR@/client.conf</file>
is used. In addition to those main files, configuration directives can also
be put in files under directories
<file>~/.config/pulse/client.conf.d/</file> and
<file>@PA_DEFAULT_CONFIG_DIR@/client.conf.d/</file>. Those files have to
have the .conf file name extension, but otherwise the file names can be
chosen freely. The files under client.conf.d are processed in alphabetical
order. In case the same option is set in multiple files, the last file to
set an option overrides earlier files. The main client.conf file is
processed first, so options set in files under client.conf.d override the
main file.</p>
a file <file>~/.pulse/client.conf</file> on startup and when that
file doesn't exist from
<file>@pulseconfdir@/client.conf</file>.</p>
<p>The configuration file is a simple collection of variable
declarations. If the configuration file parser encounters either ;
@ -71,23 +62,14 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</option>
<option>
<p><opt>default-server=</opt> The default server to connect
<p><opt>default-server=</opt> The default sever to connect
to. The environment variable <opt>$PULSE_SERVER</opt> takes
precedence.</p>
</option>
<option>
<p><opt>autospawn=</opt> Autospawn a PulseAudio daemon when needed. Takes
a boolean value, defaults to <opt>yes</opt>. Note that setting this to
"no" doesn't disable the systemd service. The autospawn option is only
meant to be used on systems without systemd. If you use systemd to start
PulseAudio, use "systemctl --user stop pulseaudio.service
pulseaudio.socket" to stop the daemon temporarily, or "systemctl --user
mask pulseaudio.service pulseaudio.socket" to permanently disable the
units (the "disable" command of systemctl probably won't work, because
the pulseaudio.socket unit is often installed to
/usr/lib/systemd/user/sockets.target.wants/, which makes it impossible to
disable the unit with the "disable" command).</p>
<p><opt>autospawn=</opt> Autospawn a PulseAudio daemon when
needed. Takes a boolean value, defaults to <opt>yes</opt>.</p>
</option>
<option>
@ -106,19 +88,11 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>cookie-file=</opt> Specify the path to the PulseAudio
authentication cookie. Defaults to
<file>~/.config/pulse/cookie</file>.</p>
<file>~/.pulse-cookie</file>.</p>
</option>
<option>
<p><opt>enable-shm=</opt> Enable data transfer via POSIX
or memfd shared memory. Takes a boolean argument, defaults to
<opt>yes</opt>. If set to <opt>no</opt>, communication with
the server will be exclusively done through data-copy over
sockets.</p>
</option>
<option>
<p><opt>enable-memfd=</opt>. Enable data transfer via memfd
shared memory. Takes a boolean argument, defaults to
<opt>yes</opt>.</p>
</option>

View file

@ -16,36 +16,27 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pulse-daemon.conf" section="5" desc="PulseAudio daemon configuration file">
<synopsis>
<p><file>~/.config/pulse/daemon.conf</file></p>
<p><file>~/.config/pulse/daemon.conf.d/*.conf</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/daemon.conf</file></p>
<p><file>@PA_DEFAULT_CONFIG_DIR@/daemon.conf.d/*.conf</file></p>
<p><file>~/.pulse/daemon.conf</file></p>
<p><file>@pulseconfdir@/daemon.conf</file></p>
</synopsis>
<description>
<p>The PulseAudio sound server reads configuration directives from
a configuration file on startup. If the per-user file
<file>~/.config/pulse/daemon.conf</file> exists, it is used, otherwise the
system configuration file <file>@PA_DEFAULT_CONFIG_DIR@/daemon.conf</file>
is used. In addition to those main files, configuration directives can also
be put in files under directories
<file>~/.config/pulse/daemon.conf.d/</file> and
<file>@PA_DEFAULT_CONFIG_DIR@/daemon.conf.d/</file>. Those files have to
have the .conf file name extension, but otherwise the file names can be
chosen freely. The files under daemon.conf.d are processed in alphabetical
order. In case the same option is set in multiple files, the last file to
set an option overrides earlier files. The main daemon.conf file is
processed first, so options set in files under daemon.conf.d override the
main file.</p>
<p>Please note that the server also reads a configuration script on
startup. See <manref name="default.pa" section="5"/>.</p>
a file <file>~/.pulse/daemon.conf</file> on startup and when that
file doesn't exist from
<file>@pulseconfdir@/daemon.conf</file>. Please note that the
server also reads a configuration script on startup
<file>default.pa</file> which also contains runtime configuration
directives.</p>
<p>The configuration file is a simple collection of variable
declarations. If the configuration file parser encounters either ;
@ -61,7 +52,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<section name="General Directives">
<option>
<p><opt>daemonize=</opt> Daemonize after startup. Takes a
<p><opt>daemonize= </opt> Daemonize after startup. Takes a
boolean value, defaults to <opt>no</opt>. The <opt>--daemonize</opt>
command line option takes precedence.</p>
</option>
@ -76,7 +67,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>allow-module-loading=</opt> Allow/disallow module
loading after startup. This is a security feature that if
disabled makes sure that no further modules may be loaded into
dsabled makes sure that no further modules may be loaded into
the PulseAudio server after startup completed. It is recommended
to disable this when <opt>system-instance</opt> is
enabled. Please note that certain features like automatic
@ -97,96 +88,47 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<opt>src-sinc-medium-quality</opt>, <opt>src-sinc-fastest</opt>,
<opt>src-zero-order-hold</opt>, <opt>src-linear</opt>,
<opt>trivial</opt>, <opt>speex-float-N</opt>,
<opt>speex-fixed-N</opt>, <opt>ffmpeg</opt>, <opt>soxr-mq</opt>,
<opt>soxr-hq</opt>, <opt>soxr-vhq</opt>. See the
documentation of libsamplerate and speex for explanations of the
different src- and speex- methods, respectively. The method
<opt>trivial</opt> is the most basic algorithm implemented. If
you're tight on CPU consider using this. On the other hand it has
the worst quality of them all. The Speex resamplers take an
integer quality setting in the range 0..10 (bad...good). They
exist in two flavours: <opt>fixed</opt> and <opt>float</opt>. The former uses fixed point
numbers, the latter relies on floating point numbers. On most
desktop CPUs the float point resampler is a lot faster, and it
also offers slightly better quality. The soxr-family methods
are based on libsoxr, a resampler library from the SoX sound processing utility.
The mq variant has the best performance of the three. The hq is more expensive
and, according to SoX developers, is considered the best choice for audio of up to 16 bits per sample.
The vhq variant has more precision than hq and is more suitable for larger samples. The Soxr resamplers
generally offer better quality at less CPU compared to other resamplers, such as speex.
The downside is that they can add a significant delay to the output
(usually up to around 20 ms, in rare cases more).
See the output of <opt>dump-resample-methods</opt> for a complete list of all
available resamplers. Defaults to <opt>speex-float-1</opt>. The
<opt>--resample-method</opt> command line option takes precedence.
Note that some modules overwrite or allow overwriting of the
resampler to use.</p>
</option>
<option>
<p><opt>avoid-resampling=</opt> If set, try to configure the
device to avoid resampling. This only works on devices which
support reconfiguring their rate, and when no other streams are
already playing or capturing audio. The device will also not be
configured to a rate less than the default and alternate sample
rates.</p>
<opt>speex-fixed-N</opt>, <opt>ffmpeg</opt>. See the
documentation of libsamplerate for an explanation for the
different src- methods. The method <opt>trivial</opt> is the most basic
algorithm implemented. If you're tight on CPU consider using
this. On the other hand it has the worst quality of them
all. The Speex resamplers take an integer quality setting in the
range 0..9 (bad...good). They exist in two flavours: <opt>fixed</opt> and
<opt>float</opt>. The former uses fixed point numbers, the latter relies on
floating point numbers. On most desktop CPUs the float point
resmampler is a lot faster, and it also offers slightly better
quality. See the output of <opt>dump-resample-methods</opt> for
a complete list of all available resamplers. Defaults to
<opt>speex-float-3</opt>. The <opt>--resample-method</opt>
command line option takes precedence. Note that some modules
overwrite or allow overwriting of the resampler to use.</p>
</option>
<option>
<p><opt>enable-remixing=</opt> If disabled never upmix or
downmix channels to different channel maps. Instead, do a simple
name-based matching only. Defaults to <opt>yes</opt>.
There is no known valid use case for setting this option to
<opt>no</opt>, therefore, this option is deprecated and may be
removed in a future version of PulseAudio.</p>
name-based matching only. Defaults to <opt>yes.</opt></p>
</option>
<option>
<p><opt>remixing-use-all-sink-channels=</opt> If enabled, use
all sink channels when remixing. Otherwise, remix to the minimal
set of sink channels needed to reproduce all of the source
channels. (This has no effect on LFE remixing.) Defaults to
<opt>yes</opt>.</p>
<p><opt>enable-lfe-remixing=</opt> if disabeld when upmixing or
downmixing ignore LFE channels. When this option is dsabled the
output LFE channel will only get a signal when an input LFE
channel is available as well. If no input LFE channel is
available the output LFE channel will always be 0. If no output
LFE channel is available the signal on the input LFE channel
will be ignored. Defaults to <opt>no</opt>.</p>
</option>
<option>
<p><opt>enable-lfe-remixing=</opt> This is a way to set
<opt>remixing-produce-lfe</opt> and <opt>remixing-consume-lfe</opt>
to the same value at once. This option only exists for backward
compatibility and may be removed in a future version of PulseAudio.</p>
</option>
<option>
<p><opt>remixing-produce-lfe=</opt> If enabled, and the sink input
does not have the LFE channel, synthesize the output LFE channel
as a (lowpass-filtered, if <opt>lfe-crossover-freq</opt> is not 0)
average of all input channels. Also, when <opt>lfe-crossover-freq</opt>
is not 0, filter out low frequencies from other channels while
producing a synthetic LFE output. If disabled, the output LFE channel
will only get a signal when an input LFE channel is available as well.
Defaults to <opt>no</opt>.</p>
</option>
<option>
<p><opt>remixing-consume-lfe=</opt> If enabled, and the sink does not
have an LFE channel, redirect the input LFE channel (if any) to other
channels. If disabled, the input LFE channel will remain unused unless
the sink has the LFE channel as well. Defaults to <opt>no</opt>.</p>
</option>
<option>
<p><opt>lfe-crossover-freq=</opt> The crossover frequency (in Hz) for the
LFE filter. Set it to 0 to disable the LFE filter. Defaults to 0.</p>
</option>
<option>
<p><opt>use-pid-file=</opt> Create a PID file in the runtime directory
(<file>$XDG_RUNTIME_DIR/pulse/pid</file>). If this is enabled you may
<p><opt>use-pid-file=</opt> Create a PID file in
<file>/tmp/pulse-$USER/pid</file>. Of this is enabled you may
use commands like <opt>--kill</opt> or <opt>--check</opt>. If
you are planning to start more than one PulseAudio process per
user, you better disable this option since it effectively
disables multiple instances. Takes a boolean argument, defaults
to <opt>yes</opt>. The <opt>--use-pid-file</opt> command line
to <opt>yes</opt>. The <opt>--no-cpu-limit</opt> command line
option takes precedence.</p>
</option>
@ -201,39 +143,18 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>system-instance=</opt> Run the daemon as system-wide
instance, requires root privileges. Takes a boolean argument,
instance, requires root priviliges. Takes a boolean argument,
defaults to <opt>no</opt>. The <opt>--system</opt> command line
argument takes precedence.</p>
</option>
<option>
<p><opt>local-server-type=</opt> Please don't use this option if
you don't have to! This option is currently only useful when you
want D-Bus clients to use a remote server. This option may be
removed in future versions. If you only want to run PulseAudio
in the system mode, use the <opt>system-instance</opt> option.
This option takes one of <opt>user</opt>, <opt>system</opt> or
<opt>none</opt> as the argument. This is essentially a duplicate
for the <opt>system-instance</opt> option. The difference is the
<opt>none</opt> option, which is useful when you want to use a
remote server with D-Bus clients. If both this and
<opt>system-instance</opt> are defined, this option takes
precedence. Defaults to whatever the <opt>system-instance</opt>
is set.</p>
</option>
<option>
<p><opt>enable-shm=</opt> Enable data transfer via POSIX
or memfd shared memory. Takes a boolean argument, defaults to
shared memory. Takes a boolean argument, defaults to
<opt>yes</opt>. The <opt>--disable-shm</opt> command line
argument takes precedence.</p>
</option>
<option>
<p><opt>enable-memfd=</opt>. Enable memfd shared memory. Takes
a boolean argument, defaults to <opt>yes</opt>.</p>
</option>
<option>
<p><opt>shm-size-bytes=</opt> Sets the shared memory segment
size for the daemon, in bytes. If left unspecified or is set to 0
@ -255,16 +176,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p><opt>flat-volumes=</opt> Enable 'flat' volumes, i.e. where
possible let the sink volume equal the maximum of the volumes of
the inputs connected to it. Takes a boolean argument, defaults
to <opt>no</opt>.</p>
</option>
<option>
<p><opt>rescue-streams=</opt> Enable rescuing of streams if the
used sink or source becomes unavailable. Takes a boolean argument.
If set to <opt>yes</opt>, pulseaudio will try to move the streams
from a sink or source that becomes unavailable to the default sink
or source. If set to <opt>no</opt>, streams will be killed if the
corresponding sink or source disappears. Defaults to <opt>yes</opt>.</p>
to <opt>yes</opt>.</p>
</option>
</section>
@ -289,7 +201,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
mentioned above apply. However, if PA enters an endless loop,
realtime scheduling causes a system lockup. Thus, realtime
scheduling should only be enabled on trusted machines for
now. Please note that only the IO threads of PulseAudio are made
now. Please not that only the IO threads of PulseAudio are made
real-time. The controlling thread is left a normally scheduled
thread. Thus enabling the high-priority option is orthogonal.
See <manref section="1" name="pulseaudio"/> for more
@ -319,19 +231,9 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>exit-idle-time=</opt> Terminate the daemon after the
last client quit and this time in seconds passed. Use a negative value to
disable this feature. Defaults to 20. The <opt>--exit-idle-time</opt>
command line option takes precedence.</p>
<p>When PulseAudio runs in the per-user mode and detects a login
session, then any positive value will be reset to 0 so that PulseAudio
will terminate immediately on logout. A positive value therefore has
effect only in environments where there's no support for login session
tracking (or if the user is logged in without a session spawned, a.k.a.
lingering). A negative value can still be used to disable any automatic
exit.</p>
<p>When PulseAudio runs in the system mode, automatic exit is always
disabled, so this option does nothing.</p>
disable this feature. Defaults to 20. The
<opt>--exit-idle-time</opt> command line option takes
precedence.</p>
</option>
<option>
@ -346,9 +248,9 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<section name="Paths">
<option>
<p><opt>dl-search-path=</opt> The path where to look for dynamic
<p><opt>dl-search-path=</opt> The path were to look for dynamic
shared objects (DSOs/plugins). You may specify more than one
path separated by colons. The default path depends on compile
path seperated by colons. The default path depends on compile
time settings. The <opt>--dl-search-path</opt> command line
option takes precedence. </p>
</option>
@ -357,10 +259,10 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p><opt>default-script-file=</opt> The default configuration
script file to load. Specify an empty string for not loading a
default script file. The default behaviour is to load
<file>~/.config/pulse/default.pa</file>, and if that file does not
<file>~/.pulse/default.pa</file>, and if that file does not
exist fall back to the system wide installed version
<file>@PA_DEFAULT_CONFIG_DIR@/default.pa</file>. If run in system-wide
mode the file <file>@PA_DEFAULT_CONFIG_DIR@/system.pa</file> is used
<file>@pulseconfdir@/default.pa</file>. If run in system-wide
mode the file <file>@pulseconfdir@/system.pa</file> is used
instead. If <opt>-n</opt> is passed on the command line
or <opt>default-script-file=</opt> is disabled the default
configuration script is ignored.</p>
@ -378,16 +280,12 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>log-target=</opt> The default log target. Use either
<opt>stderr</opt>, <opt>syslog</opt>, <opt>journal</opt> (optional),
<opt>auto</opt>, <opt>file:PATH</opt> or <opt>newfile:PATH</opt>. On traditional
systems <opt>auto</opt> is equivalent to <opt>syslog</opt>. On systemd-enabled
systems, auto is equivalent to <opt>journal</opt>, in case <opt>daemonize</opt>
is enabled, and to <opt>stderr</opt> otherwise. If set to <opt>file:PATH</opt>,
logging is directed to the file indicated by PATH. <opt>newfile:PATH</opt> is
otherwise the same as <opt>file:PATH</opt>, but existing files are never
overwritten. If the specified file already exists, a suffix is added to
the file name to avoid overwriting. Defaults to <opt>auto</opt>. The
<opt>--log-target</opt> command line option takes precedence.</p>
<opt>stderr</opt>, <opt>syslog</opt> or <opt>auto</opt>. The
latter is equivalent to <opt>sylog</opt> in case
<opt>daemonize</opt> is enabled, otherwise to
<opt>stderr</opt>. Defaults to <opt>auto</opt>. The
<opt>--log-target</opt> command line option takes
precedence.</p>
</option>
<option>
@ -407,13 +305,13 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</option>
<option>
<p><opt>log-time=</opt> With each logged message log the
<p><opt>log-time=</opt> With each logged messages log the
relative time since startup. Defaults to <opt>no</opt>.</p>
</option>
<option>
<p><opt>log-backtrace=</opt> When greater than 0, with each
logged message log a code stack trace up the specified
logged message log a code stack trace up the the specified
number of stack frames. Defaults to <opt>0</opt>.</p>
</option>
@ -475,7 +373,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
the default real-time priority level as configured with
<opt>realtime-priority=</opt> fits in this resource limit, if
<opt>realtime-scheduling</opt> is enabled. The JACK client
libraries require a real-time priority of 9 by default.</p>
libraries require a real-time prority of 9 by default. </p>
</option>
<option>
<p><opt>rlimit-rttime</opt> Defaults to 1000000.</p>
@ -491,9 +389,16 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>default-sample-format=</opt> The default sampling
format. See
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SupportedAudioFormats/
for possible values.</p>
format. Specify one of <opt>u8</opt>, <opt>s16le</opt>,
<opt>s16be</opt>, <opt>s24le</opt>, <opt>s24be</opt>,
<opt>s24-32le</opt>, <opt>s24-32be</opt>, <opt>s32le</opt>,
<opt>s32be</opt> <opt>float32le</opt>, <opt>float32be</opt>,
<opt>ulaw</opt>, <opt>alaw</opt>. Depending on the endianess of
the CPU the formats <opt>s16ne</opt>, <opt>s16re</opt>,
<opt>s24ne</opt>, <opt>s24re</opt>, <opt>s24-32ne</opt>,
<opt>s24-32re</opt>, <opt>s32ne</opt>, <opt>s32re</opt>,
<opt>float32ne</opt>, <opt>float32re</opt> (for native,
resp. reverse endian) are available as aliases.</p>
</option>
<option>
@ -508,17 +413,6 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p><opt>default-channel-map</opt> The default channel map.</p>
</option>
<option>
<p><opt>alternate-sample-rate</opt> The alternate sample
frequency. Sinks and sources will use either the
default-sample-rate value or this alternate value, typically 44.1
or 48kHz. Switching between default and alternate values is
enabled only when the sinks/sources are suspended. This option
is ignored in passthrough mode where the stream rate will be used.
If set to the same value as the default sample rate, this feature is
disabled.</p>
</option>
</section>
<section name="Default Fragment Settings">
@ -527,7 +421,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
be subdivided into several fragments. It is possible to change
these buffer metrics for machines with high scheduling
latencies. Not all possible values that may be configured here are
available in all hardware. The driver will find the nearest
available in all hardware. The driver will to find the nearest
setting supported. Modern drivers that support timer-based
scheduling ignore these options.</p>
@ -543,30 +437,30 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</section>
<section name="Default Deferred Volume Settings">
<section name="Default Sync Volume Settings">
<p>With the flat volume feature enabled, the sink HW volume is set
to the same level as the highest volume input stream. Any other streams
(with lower volumes) have the appropriate adjustment applied in SW to
bring them to the correct overall level. Sadly hardware mixer changes
cannot be timed accurately and thus this change of volumes can sometimes
bring them to the correct overall level. Sadly hadware mixer changes
cannot be timed accurately and thus this change of volumes can somtimes
cause the resulting output sound to be momentarily too loud or too soft.
So to ensure SW and HW volumes are applied concurrently without any
glitches, their application needs to be synchronized. The sink
implementation needs to support deferred volumes. The following
implementation needs to support synchronized volumes. The following
parameters can be used to refine the process.</p>
<option>
<p><opt>enable-deferred-volume=</opt> Enable deferred volume for the sinks that
<p><opt>enable-sync-volume=</opt> Enable sync volume for the sinks that
support it. This feature is enabled by default.</p>
</option>
<option>
<p><opt>deferred-volume-safety-margin-usec=</opt> The amount of time (in
<p><opt>sync-volume-safety-margin-usec=</opt> The amount of time (in
usec) by which the HW volume increases are delayed and HW volume
decreases are advanced. Defaults to 8000 usec.</p>
</option>
<option>
<p><opt>deferred-volume-extra-delay-usec=</opt> The amount of time (in usec)
<p><opt>sync-volume-extra-delay-usec=</opt> The amount of time (in usec)
by which HW volume changes are delayed. Negative values are also allowed.
Defaults to 0.</p>
</option>

View file

@ -16,7 +16,9 @@ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
-->
<manpage name="pulseaudio" section="1" desc="The PulseAudio Sound System">
@ -94,7 +96,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
different from starting PulseAudio without <opt>--start</opt>
which would fail if PA is already running. PulseAudio is
guaranteed to be fully initialized when this call
returns. Implies <opt>--daemonize</opt>.</p></optdesc>
returns. Implies <opt>--daemon</opt>.</p></optdesc>
</option>
<option>
@ -110,23 +112,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<optdesc><p>Return 0 as return code when the PulseAudio daemon
is already running for the calling user, or non-zero
otherwise. Produces no output on the console except for errors
to stderr.</p>
<p>Note that a non-zero return value doesn't necessarily mean that
PulseAudio is not usable. Even if the server is not running, it
may get automatically started via PulseAudio's autospawning
mechanism or systemd's socket activation, or the environment might
be such that checking for processes doesn't work (for example, the
running server might not show up in a container, even if the
server is accessible via a socket). Also disabling PID files with
<opt>--use-pid-file=no</opt> prevents <opt>--check</opt> from
detecting running servers.</p>
<p>A more robust check in most situations would be to try
establishing a client connection to the server. Unfortunately
there's currently no <opt>--check-connection</opt> option to
replace <opt>--check</opt>, but running "pactl info" could be a
pretty good substitute.</p></optdesc>
to stderr.</p></optdesc>
</option>
@ -146,9 +132,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p><opt>-D | --daemonize</opt><arg>[=BOOL]</arg></p>
<optdesc><p>Daemonize after startup, i.e. detach from the
terminal. Note that when running as a systemd service you should
use <opt>--daemonize=no</opt> for systemd notification to work.
</p></optdesc>
terminal.</p></optdesc>
</option>
<option>
@ -165,7 +149,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<optdesc><p>Try to acquire a high Unix nice level. This will
only succeed if the calling user has a non-zero RLIMIT_NICE
resource limit set (on systems that support this), or we're
configured to be run as
called SUID root (see below), or we are configure to be run as
system daemon (see <arg>--system</arg> above). It is recommended
to enable this, since it is only a negligible security risk (see
below).</p></optdesc>
@ -177,9 +161,11 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<optdesc><p>Try to acquire a real-time scheduling for
PulseAudio's I/O threads. This will only succeed if the calling
user has a non-zero RLIMIT_RTPRIO resource limit set (on systems
that support this), or rtkit is available and allows PulseAudio
to enable real-time scheduling, or we are configured to be run as
system daemon (see <arg>--system</arg> above).</p></optdesc>
that support this), or we're called SUID root (see below), or we
are configure to be run as system daemon (see
<arg>--system</arg> above). It is recommended to enable this
only for trusted users, since it is a major security risk (see
below).</p></optdesc>
</option>
<option>
@ -195,36 +181,23 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</option>
<option>
<p><opt>--disallow-exit</opt><arg>[=BOOL]</arg></p>
<p><opt>--exit-idle-time</opt><arg>=SECS</arg></p>
<optdesc><p>Disallow user requested exit</p></optdesc>
<optdesc><p>Terminate the daemon when idle and the specified
number of seconds passed.</p></optdesc>
</option>
<option>
<p><opt>--exit-idle-time</opt><arg>=SECS</arg></p>
<p><opt>--module-idle-time</opt><arg>=SECS</arg></p>
<optdesc>
<p>Terminate the daemon after the last client quit and this time in
seconds passed. Use a negative value to disable this feature. Defaults
to 20.</p>
<p>When PulseAudio runs in the per-user mode and detects a login
session, then any positive value will be reset to 0 so that PulseAudio
will terminate immediately on logout. A positive value therefore has
effect only in environments where there's no support for login session
tracking (or if the user is logged in without a session spawned,
a.k.a. lingering). A negative value can still be used to disable any
automatic exit.</p>
<p>When PulseAudio runs in the system mode, automatic exit is always
disabled, so this option does nothing.</p>
</optdesc>
<optdesc><p>Unload autoloaded modules when idle and the
specified number of seconds passed.</p></optdesc>
</option>
<option>
<p><opt>--scache-idle-time</opt><arg>=SECS</arg></p>
<optdesc><p>Unload autoloaded samples from the cache when they
<optdesc><p>Unload autoloaded samples from the cache when the
haven't been used for the specified number of
seconds.</p></optdesc>
</option>
@ -243,7 +216,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</option>
<option>
<p><opt>-v | --verbose</opt></p>
<p><opt>-v</opt></p>
<optdesc><p>Increase the configured verbosity level by one (see
<opt>--log-level</opt> above). Specify multiple times to
@ -251,40 +224,16 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</option>
<option>
<p><opt>--log-target</opt><arg>={auto,syslog,journal,stderr,file:PATH,newfile:PATH}</arg></p>
<p><opt>--log-target</opt><arg>={auto,syslog,stderr}</arg></p>
<optdesc><p>Specify the log target. If set to <arg>auto</arg>
(which is the default), then logging is directed to syslog when
<opt>--daemonize</opt> is passed, otherwise to
STDERR. If set to <arg>journal</arg> logging is directed to the systemd
journal. If set to <arg>file:PATH</arg>, logging is directed to
the file indicated by PATH. <arg>newfile:PATH</arg> is otherwise
the same as file:PATH, but existing files are never overwritten.
If the specified file already exists, a suffix is added to the
file name to avoid overwriting.</p></optdesc>
STDERR.</p></optdesc>
</option>
<option>
<p><opt>--log-meta</opt><arg>[=BOOL]</arg></p>
<optdesc><p>Show source code location in log messages.</p></optdesc>
</option>
<option>
<p><opt>--log-time</opt><arg>[=BOOL]</arg></p>
<optdesc><p>Show timestamps in log messages.</p></optdesc>
</option>
<option>
<p><opt>--log-backtrace</opt><arg>=FRAMES</arg></p>
<optdesc><p>When FRAMES is greater than 0, log for each message a
stack trace up to the number of specified stack frames.</p></optdesc>
</option>
<option>
<p><opt>-p | --dl-search-path</opt><arg>=PATH</arg></p>
<p><opt>--p | --dl-search-path</opt><arg>=PATH</arg></p>
<optdesc><p>Set the search path for dynamic shared objects
(plugins).</p></optdesc>
@ -311,7 +260,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
support it. By default, PulseAudio will terminate itself when it
notices that it takes up too much CPU time. This is useful as a
protection against system lockups when real-time scheduling is
used (see below). Disabling this mechanism is useful when
used (see below). Disabling this meachnism is useful when
debugging PulseAudio with tools like <manref name="valgrind"
section="1"/> which slow down execution.</p></optdesc>
</option>
@ -320,22 +269,13 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p><opt>--disable-shm</opt><arg>[=BOOL]</arg></p>
<optdesc><p>PulseAudio clients and the server can exchange audio
data via POSIX or memfd shared memory segments (on systems that
support this). If disabled PulseAudio will communicate exclusively
over sockets. Please note that data transfer via shared memory
data via POSIX shared memory segments (on systems that support
this). If disabled PulseAudio will communicate exclusively over
sockets. Please note that data transfer via shared memory
segments is always disabled when PulseAudio is running with
<opt>--system</opt> enabled (see above).</p></optdesc>
</option>
<option>
<p><opt>--enable-memfd</opt><arg>[=BOOL]</arg></p>
<optdesc><p>PulseAudio clients and the server can exchange audio
data via memfds - the anonymous Linux Kernel shared memory mechanism
(on kernels that support this). If disabled PulseAudio will
communicate via POSIX shared memory.</p></optdesc>
</option>
<option>
<p><opt>-L | --load</opt><arg>="MODULE ARGUMENTS"</arg></p>
@ -373,22 +313,22 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<section name="Files">
<p><file>~/.config/pulse/daemon.conf</file>,
<file>@PA_DEFAULT_CONFIG_DIR@/daemon.conf</file>: configuration settings
<p><file>~/.pulse/daemon.conf</file>,
<file>@pulseconfdir@/daemon.conf</file>: configuration settings
for the PulseAudio daemon. If the version in the user's home
directory does not exist the global configuration file is
loaded. See <manref name="pulse-daemon.conf" section="5"/> for
more information.</p>
<p><file>~/.config/pulse/default.pa</file>,
<file>@PA_DEFAULT_CONFIG_DIR@/default.pa</file>: the default configuration
<p><file>~/.pulse/default.pa</file>,
<file>@pulseconfdir@/default.pa</file>: the default configuration
script to execute when the PulseAudio daemon is started. If the
version in the user's home directory does not exist the global
configuration script is loaded. See <manref name="default.pa"
section="5"/> for more information.</p>
<p><file>~/.config/pulse/client.conf</file>,
<file>@PA_DEFAULT_CONFIG_DIR@/client.conf</file>: configuration settings
<p><file>~/.pulse/client.conf</file>,
<file>@pulseconfdir@/client.conf</file>: configuration settings
for PulseAudio client applications. If the version in the user's
home directory does not exist the global configuration file is
loaded. See <manref name="pulse-client.conf" section="5"/> for
@ -415,6 +355,12 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<section name="UNIX Groups and users">
<p>Group <arg>pulse-rt</arg>: if the PulseAudio binary is marked
SUID root, then membership of the calling user in this group
decides whether real-time and/or high-priority scheduling is
enabled. Please note that enabling real-time scheduling is a
security risk (see below).</p>
<p>Group <arg>pulse-access</arg>: if PulseAudio is running as a system
daemon (see <opt>--system</opt> above) access is granted to
members of this group when they connect via AF_UNIX sockets. If
@ -423,7 +369,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p>User <arg>pulse</arg>, group <arg>pulse</arg>: if PulseAudio is running as a system
daemon (see <opt>--system</opt> above) and is started as root the
daemon will drop privileges and become a normal user process using
daemon will drop priviliges and become a normal user process using
this user and group. If PulseAudio is running as a user daemon
this user and group has no meaning.</p>
</section>
@ -435,20 +381,43 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
latency of the PulseAudio daemon from the system load and is thus
the best way to make sure that PulseAudio always gets CPU time
when it needs it to refill the hardware playback
buffers. Unfortunately this can be a security risk on some systems,
buffers. Unfortunately this is a security risk on most systems,
since PulseAudio runs as user process, and giving realtime
scheduling privileges to a user always comes with the risk
scheduling priviliges to a user process always comes with the risk
that the user misuses it to lock up the system -- which is
possible since making a process real-time effectively disables
preemption. To solve this problem, PulseAudio uses rtkit to safely
acquire real-time scheduling when available.</p>
preemption.</p>
<p>If the risk of locking up the machine is
<p>To minimize the risk PulseAudio by default does not enable
real-time scheduling. It is however recommended to enable it
on trusted systems. To do that start PulseAudio with
<opt>--realtime</opt> (see above) or enabled the appropriate option in
<file>daemon.conf</file>. Since acquiring realtime scheduling is a
priviliged operation on most systems, some special changes to the
system configuration need to be made to allow them to the calling
user. Two options are available:</p>
<p>On newer Linux systems the system resource limit RLIMIT_RTPRIO
(see <manref name="setrlimit" section="2"/> for more information)
can be used to allow specific users to acquire real-time
scheduling. This can be configured in
<file>/etc/security/limits.conf</file>, a resource limit of 9 is recommended.</p>
<p>Alternatively, the SUID root bit can be set for the PulseAudio
binary. Then, the daemon will drop root priviliges immediately on
startup, however retain the CAP_NICE capability (on systems that
support it), but only if the calling user is a member of the
<arg>pulse-rt</arg> group (see above). For all other users all
capababilities are dropped immediately. The advantage of this
solution is that the real-time priviliges are only granted to the
PulseAudio daemon -- not to all the user's processes.</p>
<p>Alternatively, if the risk of locking up the machine is
considered too big to enable real-time scheduling, high-priority
scheduling can be enabled instead (i.e. negative nice level). This
can be enabled by passing <opt>--high-priority</opt> (see above)
when starting PulseAudio and may also be enabled with the
appropriate option in <file>daemon.conf</file>. Negative nice
approriate option in <file>daemon.conf</file>. Negative nice
levels can only be enabled when the appropriate resource limit
RLIMIT_NICE is set (see <manref name="setrlimit" section="2"/> for
more information), possibly configured in
@ -458,18 +427,10 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<section name="Environment variables">
<p>The PulseAudio client libraries check for the existence of the
<p>The PulseAudio client libraries check for the existance of the
following environment variables and change their local configuration accordingly:</p>
<p><arg>$PULSE_SERVER</arg>: the server string specifying the server
to connect to when a client asks for a sound server connection and doesn't
explicitly ask for a specific server. The server string is a list of
server addresses separated by whitespace which are tried in turn. A server
address consists of an optional address type specifier (unix:, tcp:, tcp4:,
tcp6:), followed by a path or host address. A host address may include an
optional port number. A server address may be prefixed by a string enclosed
in {}. In this case the following server address is ignored unless the prefix
string equals the local hostname or the machine id (/etc/machine-id).</p>
<p><arg>$PULSE_SERVER</arg>: the server string specifying the server to connect to when a client asks for a sound server connection and doesn't explicitly ask for a specific server.</p>
<p><arg>$PULSE_SINK</arg>: the symbolic name of the sink to connect to when a client creates a playback stream and doesn't explicitly ask for a specific sink.</p>
@ -479,9 +440,6 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<p><arg>$PULSE_CLIENTCONFIG</arg>: path of file that shall be read instead of <file>client.conf</file> (see above) for client configuration.</p>
<p><arg>$PULSE_COOKIE</arg>: path of file that contains the PulseAudio
authentication cookie. Defaults to <file>~/.config/pulse/cookie</file>.</p>
<p>These environment settings take precedence -- if set -- over the configuration settings from <file>client.conf</file> (see above).</p>
</section>

View file

@ -15,7 +15,8 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
use XML::Parser;

View file

@ -12,7 +12,8 @@
for more details.
You should have received a copy of the GNU General Public License
along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
along with PulseAudio; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
***/
body { color: black; background-color: white; }

View file

@ -12,7 +12,8 @@
for more details.
You should have received a copy of the GNU General Public License
along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
along with PulseAudio; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-->
<!ELEMENT manpage (synopsis | description | section | options | seealso)*>

View file

@ -15,7 +15,8 @@
for more details.
You should have received a copy of the GNU General Public License
along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
along with PulseAudio; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-->
<xsl:output method="xml" version="1.0" encoding="iso-8859-15" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes"/>

File diff suppressed because it is too large Load diff

View file

@ -1,182 +0,0 @@
option('daemon',
type : 'boolean', value : true,
description : 'Enable building and installation of pulseaudio daemon and supporting configuration files')
option('client',
type : 'boolean', value : true,
description : 'Build and install pulseaudio client libraries and utilities')
option('doxygen',
type : 'feature',
description : 'Enable building and installation of documentation generated with doxygen')
option('gcov',
type : 'boolean', value : false,
description : 'Enable optional gcov coverage analysis')
option('man',
type : 'boolean',
description : 'Enable building and installation of man pages')
option('tests',
type : 'feature',
description : 'Enable unit tests')
option('system_user',
type : 'string', value : 'pulse',
description : 'User for running the PulseAudio daemon as a system-wide instance (pulse)')
option('system_group',
type : 'string', value : 'pulse',
description : 'Group for running the PulseAudio daemon as a system-wide instance (pulse)')
option('access_group',
type : 'string', value : 'pulse-access',
description : 'Group which is allowed access to a system-wide PulseAudio daemon (pulse-access)')
option('database',
type : 'combo', value : 'tdb',
choices : [ 'gdbm', 'tdb', 'simple' ],
description : 'Database backend')
option('legacy-database-entry-format',
type : 'boolean',
description : 'Try to load legacy (< 1.0) database files (card, device and volume restore)')
option('stream-restore-clear-old-devices',
type : 'boolean', value : false,
description : 'Forget per-stream routing settings that have been set before version 14.0. Recommended when using GNOME. See https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/832')
option('running-from-build-tree',
type : 'boolean',
description : 'Enable running from build tree')
option('atomic-arm-linux-helpers',
type : 'boolean', value : true,
description : 'Use inline asm or libatomic_ops instead')
option('atomic-arm-memory-barrier',
type : 'boolean', value : false,
description : 'Enable memory barriers (only really needed in SMP arm systems)')
# Paths
option('padsplibdir',
type : 'string',
description : 'Specify location where OSS wrapper library will be installed')
# This one gets inserted into a shell double-quoted string, so needs to be escaped (\$LIB). Meson
# removes a layer of escapes when parsing the description string, so we need to double the
# backslashes for "meson configure" to display the right text.
option('pulsedsp-location',
type : 'string',
description : 'Specify location where OSS wrapper library will be loaded from; can use \\$LIB')
option('modlibexecdir',
type : 'string',
description : 'Specify location where modules will be installed')
option('alsadatadir',
type : 'string',
description : 'Directory for ALSA card profiles (defaults to ${datadir}/pulseaudio/alsa-mixer)')
option('systemduserunitdir',
type : 'string',
description : 'Directory for systemd user service files')
option('udevrulesdir',
type : 'string',
description : 'Directory for udev rules (defaults to /lib/udev/rules.d)')
option('bashcompletiondir',
type : 'string',
description : 'Directory for bash completion scripts ["no" disables]')
option('zshcompletiondir',
type : 'string',
description : 'Directory for zsh completion scripts ["no" disables]')
# Optional features
option('alsa',
type : 'feature', value : 'auto',
description : 'Optional ALSA support')
option('asyncns',
type : 'feature', value : 'auto',
description : 'Optional Async DNS support')
option('avahi',
type : 'feature', value : 'auto',
description : 'Optional Avahi support')
option('bluez5',
type : 'feature', value : 'auto',
description : 'Optional BlueZ 5 support')
option('bluez5-gstreamer',
type : 'feature', value: 'auto',
description : 'Optional BlueZ 5 GStreamer support')
option('bluez5-native-headset',
type : 'boolean',
description : 'Optional native headset backend support (BlueZ 5)')
option('bluez5-ofono-headset',
type : 'boolean',
description : 'Optional oFono headset backend support (BlueZ 5)')
option('consolekit',
type : 'feature', value : 'auto',
description : 'Optional ConsoleKit support')
option('dbus',
type : 'feature', value : 'auto',
description : 'Optional D-Bus support')
option('elogind',
type : 'feature', value : 'auto',
description : 'Optional elogind support')
option('fftw',
type : 'feature', value : 'auto',
description : 'Optional FFTW support')
option('glib',
type : 'feature', value : 'auto',
description : 'Optional GLib 2 support')
option('gsettings',
type : 'feature', value : 'auto',
description : 'Optional GSettings support')
option('gstreamer',
type : 'feature', value : 'auto',
description : 'Optional GStreamer dependency for media-related functionality')
option('gtk',
type : 'feature', value : 'auto',
description : 'Optional Gtk+ 3 support')
option('hal-compat',
type : 'boolean',
description : 'Optional HAL->udev transition compatibility support (needs udev)')
option('ipv6',
type : 'boolean',
description : 'Optional IPv6 support')
option('jack',
type : 'feature', value : 'auto',
description : 'Optional JACK support')
option('lirc',
type : 'feature', value : 'auto',
description : 'Optional LIRC support')
option('openssl',
type : 'feature', value : 'auto',
description : 'Optional OpenSSL support (used for Airtunes/RAOP)')
option('orc',
type : 'feature', value : 'auto',
description : 'Optimized Inner Loop Runtime Compiler')
option('oss-output',
type : 'feature', value : 'auto',
description : 'Optional OSS output support')
option('samplerate',
type : 'feature', value : 'disabled',
description : 'Optional libsamplerate support (DEPRECATED)')
option('soxr',
type : 'feature', value : 'auto',
description : 'Optional SoXR support (resampling)')
option('speex',
type : 'feature', value : 'auto',
description : 'Optional Speex support (resampling, AEC)')
option('systemd',
type : 'feature', value : 'auto',
description : 'Optional systemd support')
option('tcpwrap',
type : 'feature', value : 'auto',
description : 'Optional TCP wrappers support')
option('udev',
type : 'feature', value : 'auto',
description : 'Optional udev support')
option('valgrind',
type : 'feature', value : 'auto',
description : 'Optional Valgrind support')
option('x11',
type : 'feature', value : 'auto',
description : 'Optional X11 support')
option('enable-smoother-2',
type : 'boolean', value : true,
description : 'Use alternative time smoother implementation')
# Echo cancellation
option('adrian-aec',
type : 'boolean',
description : 'Optional Adrian\'s echo canceller')
option('webrtc-aec',
type : 'feature', value : 'auto',
description : 'Optional WebRTC-based echo canceller')

29
po/.gitignore vendored
View file

@ -1,14 +1,15 @@
/Makefile.in.in
/Makevars.template
/POTFILES
/Rules-quot
/boldquot.sed
/en@boldquot.header
/en@quot.header
/insert-header.sin
/quot.sed
/remove-potcdate.*
/*.mo
/*.gmo
/Makefile
/Makefile.in
.intltool-merge-cache
Makefile.in.in
Makevars.template
POTFILES
Rules-quot
boldquot.sed
en@boldquot.header
en@quot.header
insert-header.sin
pulseaudio.pot
quot.sed
remove-potcdate.sin
ChangeLog
*.mo
*.gmo

View file

@ -1,55 +1,34 @@
af
as
be
bg
bn_IN
ca
cs
da
de_CH
de
el
es
fi
fr
gl
gu
he
hi
hr
hu
id
it
ja
kk
kn
ko
lt
ml
mr
nl
nn
oc
or
pa
pl
pt_BR
pt
ru
sk
sr@latin
sr
sv
ta
te
tr
uk
zh_CN
zh_TW
eo
si
ka
eu
ar
sl
ro

View file

@ -1,78 +0,0 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=UTF-8
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = PulseAudio contributors
# This tells whether or not to prepend "GNU " prefix to the package
# name that gets inserted into the header of the $(DOMAIN).pot file.
# Possible values are "yes", "no", or empty. If it is empty, try to
# detect it automatically by scanning the files in $(top_srcdir) for
# "GNU packagename" string.
PACKAGE_GNU =
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS =
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
# context. Possible values are "yes" and "no". Set this to yes if the
# package uses functions taking also a message context, like pgettext(), or
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
USE_MSGCTXT = no
# These options get passed to msgmerge.
# Useful options are in particular:
# --previous to keep previous msgids of translated messages,
# --quiet to reduce the verbosity.
MSGMERGE_OPTIONS =
# These options get passed to msginit.
# If you want to disable line wrapping when writing PO files, add
# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
# MSGINIT_OPTIONS.
MSGINIT_OPTIONS =
# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
# has changed. Possible values are "yes" and "no". Set this to no if
# the POT file is checked in the repository and the version control
# program ignores timestamps.
PO_DEPENDS_ON_POT = no
# This tells whether or not to forcibly update $(DOMAIN).pot and
# regenerate PO files on "make dist". Possible values are "yes" and
# "no". Set this to no if the POT file and PO files are maintained
# externally.
DIST_DEPENDS_ON_UPDATE_PO = no

View file

@ -1,204 +1,196 @@
src/daemon/caps.c
src/daemon/cmdline.c
src/daemon/cpulimit.c
src/daemon/daemon-conf.c
src/daemon/dumpmodules.c
src/daemon/ltdl-bind-now.c
src/daemon/main.c
src/daemon/pulseaudio.desktop.in
src/daemon/systemd/user/pulseaudio.service.in
src/daemon/systemd/user/pulseaudio-x11.service.in
src/modules/alsa/alsa-mixer.c
src/modules/alsa/alsa-sink.c
src/modules/alsa/alsa-source.c
src/modules/alsa/alsa-util.c
src/modules/alsa/module-alsa-card.c
src/modules/alsa/module-alsa-sink.c
src/modules/alsa/module-alsa-source.c
src/modules/bluetooth/module-bluez5-device.c
src/modules/echo-cancel/module-echo-cancel.c
src/modules/jack/module-jack-sink.c
src/modules/jack/module-jack-source.c
src/modules/macosx/module-coreaudio-device.c
src/modules/module-allow-passthrough.c
src/modules/module-always-sink.c
src/modules/module-always-source.c
src/modules/module-cli.c
src/modules/module-combine.c
src/modules/module-console-kit.c
src/modules/module-default-device-restore.c
src/modules/module-detect.c
src/modules/module-device-restore.c
src/modules/module-equalizer-sink.c
src/modules/module-esound-compat-spawnfd.c
src/modules/module-esound-compat-spawnpid.c
src/modules/module-esound-sink.c
src/modules/module-filter-apply.c
src/modules/module-ladspa-sink.c
src/modules/module-lirc.c
src/modules/module-match.c
src/modules/module-mmkbd-evdev.c
src/modules/module-native-protocol-fd.c
src/modules/module-null-sink.c
src/modules/module-pipe-sink.c
src/modules/module-pipe-source.c
src/modules/module-position-event-sounds.c
src/modules/module-protocol-stub.c
src/modules/module-remap-sink.c
src/modules/module-rescue-streams.c
src/modules/module-rygel-media-server.c
src/modules/module-sine.c
src/modules/module-solaris.c
src/modules/module-stream-restore.c
src/modules/module-suspend-on-idle.c
src/modules/module-tunnel.c
src/modules/module-tunnel-sink-new.c
src/modules/module-tunnel-source-new.c
src/modules/module-virtual-surround-sink.c
src/modules/module-volume-restore.c
src/modules/module-native-protocol-fd.c
src/modules/module-zeroconf-discover.c
src/modules/module-zeroconf-publish.c
src/modules/alsa/module-alsa-source.c
src/modules/module-device-restore.c
src/modules/module-match.c
src/pulsecore/dbus-util.c
src/modules/module-console-kit.c
src/modules/oss/module-oss.c
src/modules/oss/oss-util.c
src/modules/raop/module-raop-discover.c
src/modules/raop/raop-sink.c
src/modules/reserve-wrap.c
src/modules/rtp/module-rtp-recv.c
src/modules/rtp/module-rtp-send.c
src/modules/rtp/rtp-common.c
src/modules/rtp/rtp-native.c
src/modules/rtp/rtp-gstreamer.c
src/modules/rtp/sap.c
src/modules/rtp/sdp.c
src/modules/x11/module-x11-bell.c
src/modules/x11/module-x11-publish.c
src/modules/module-mmkbd-evdev.c
src/modules/module-position-event-sounds.c
src/modules/alsa/alsa-util.c
src/modules/module-pipe-source.c
src/modules/module-solaris.c
src/modules/module-default-device-restore.c
src/modules/x11/module-x11-xsmp.c
src/pulse/channelmap.c
src/pulse/client-conf.c
src/pulse/client-conf-x11.c
src/pulse/context.c
src/pulse/direction.c
src/pulsecore/asyncmsgq.c
src/pulsecore/asyncq.c
src/pulsecore/auth-cookie.c
src/pulsecore/authkey.c
src/pulsecore/avahi-wrap.c
src/pulsecore/cli.c
src/pulsecore/cli-command.c
src/pulsecore/client.c
src/pulsecore/cli-text.c
src/pulsecore/conf-parser.c
src/pulsecore/core.c
src/pulsecore/core-error.c
src/pulsecore/core-scache.c
src/pulsecore/core-subscribe.c
src/pulsecore/core-util.c
src/pulsecore/core-util.h
src/pulsecore/dbus-util.c
src/pulsecore/dynarray.c
src/pulsecore/fdsem.c
src/pulsecore/ffmpeg/resample2.c
src/pulsecore/flist.c
src/pulsecore/g711.c
src/pulsecore/hashmap.c
src/pulsecore/hook-list.c
src/pulsecore/i18n.c
src/pulsecore/idxset.c
src/pulsecore/iochannel.c
src/pulsecore/ioline.c
src/pulsecore/ipacl.c
src/pulsecore/lock-autospawn.c
src/pulsecore/log.c
src/pulsecore/ltdl-helper.c
src/pulsecore/mcalign.c
src/modules/module-remap-sink.c
src/modules/bluetooth/module-bluetooth-proximity.c
src/modules/module-detect.c
src/modules/module-always-sink.c
src/modules/module-lirc.c
src/modules/module-hal-detect.c
src/modules/module-sine.c
src/modules/module-zeroconf-publish.c
src/modules/jack/module-jack-source.c
src/modules/module-cli.c
src/modules/gconf/module-gconf.c
src/modules/gconf/gconf-helper.c
src/modules/module-esound-sink.c
src/modules/alsa/module-alsa-sink.c
src/modules/module-volume-restore.c
src/modules/x11/module-x11-bell.c
src/modules/module-protocol-stub.c
src/modules/module-stream-restore.c
src/modules/jack/module-jack-sink.c
src/modules/module-esound-compat-spawnfd.c
src/modules/module-esound-compat-spawnpid.c
#src/modules/module-waveout.c
src/modules/module-combine.c
src/modules/bluetooth/proximity-helper.c
src/modules/x11/module-x11-publish.c
src/modules/rtp/module-rtp-recv.c
src/modules/rtp/sdp.c
src/modules/rtp/rtp.c
src/modules/rtp/sap.c
src/modules/rtp/module-rtp-send.c
src/modules/module-ladspa-sink.c
src/modules/module-suspend-on-idle.c
src/modules/module-pipe-sink.c
src/modules/module-null-sink.c
src/pulsecore/memblock.c
src/pulsecore/memblockq.c
src/pulsecore/memchunk.c
src/pulsecore/modargs.c
src/pulsecore/modinfo.c
src/pulsecore/module.c
src/pulsecore/msgobject.c
src/pulsecore/mutex-posix.c
src/pulsecore/mutex-win32.c
src/pulsecore/namereg.c
src/pulsecore/object.c
src/pulsecore/once.c
src/pulsecore/packet.c
src/pulsecore/parseaddr.c
src/pulsecore/pdispatch.c
src/pulsecore/pid.c
src/pulsecore/pipe.c
src/pulsecore/play-memblockq.c
src/pulsecore/play-memchunk.c
src/pulsecore/poll-posix.c
src/pulsecore/poll-win32.c
src/pulsecore/proplist-util.c
src/pulsecore/protocol-cli.c
src/pulsecore/protocol-esound.c
src/pulsecore/protocol-http.c
src/pulsecore/protocol-native.c
src/pulsecore/protocol-simple.c
src/pulsecore/pstream.c
src/pulsecore/pstream-util.c
src/pulsecore/queue.c
src/pulsecore/random.c
src/pulsecore/resampler.c
src/pulsecore/rtpoll.c
src/pulsecore/sample-util.c
src/pulsecore/sconv.c
src/pulsecore/sconv-s16be.c
src/pulsecore/sconv-s16le.c
src/pulsecore/semaphore-posix.c
src/pulsecore/semaphore-win32.c
src/pulsecore/shared.c
src/pulsecore/shm.c
src/pulsecore/sink.c
src/pulsecore/sink-input.c
src/pulsecore/sioman.c
src/pulsecore/socket-client.c
src/pulsecore/socket-server.c
src/pulsecore/socket-util.c
src/pulsecore/sound-file.c
src/pulsecore/sound-file-stream.c
src/pulsecore/source.c
src/pulsecore/source-output.c
src/pulsecore/start-child.c
src/pulsecore/strbuf.c
src/pulsecore/strlist.c
src/pulsecore/tagstruct.c
src/pulsecore/thread-mq.c
src/pulsecore/thread-posix.c
src/pulsecore/thread-win32.c
src/pulsecore/time-smoother.c
src/pulsecore/time-smoother_2.c
src/pulsecore/tokenizer.c
src/pulsecore/x11prop.c
src/pulsecore/core.c
#src/pulsecore/shmasyncq.c
src/pulsecore/x11wrap.c
src/pulsecore/ioline.c
src/pulsecore/asyncq.c
src/pulsecore/mutex-posix.c
src/pulsecore/protocol-esound.c
src/pulsecore/proplist-util.c
src/pulsecore/pstream.c
src/pulsecore/cli-command.c
src/pulsecore/ltdl-helper.c
src/pulsecore/ipacl.c
src/pulsecore/sample-util.c
src/pulsecore/log.c
src/pulsecore/auth-cookie.c
src/pulsecore/protocol-cli.c
src/pulsecore/resampler.c
src/pulsecore/pdispatch.c
src/pulsecore/hook-list.c
src/pulsecore/conf-parser.c
src/pulsecore/mcalign.c
src/pulsecore/core-subscribe.c
src/pulsecore/protocol-native.c
src/pulsecore/source-output.c
src/pulsecore/modargs.c
src/pulsecore/core-scache.c
src/pulsecore/iochannel.c
src/pulsecore/shared.c
src/pulsecore/socket-client.c
src/pulsecore/idxset.c
src/pulsecore/pipe.c
src/pulsecore/asyncmsgq.c
src/pulsecore/inet_pton.c
src/pulsecore/socket-util.c
src/pulsecore/object.c
src/pulsecore/sioman.c
src/pulsecore/sink-input.c
src/pulsecore/x11prop.c
src/pulsecore/sconv-s16be.c
src/pulsecore/thread-posix.c
src/pulsecore/client.c
src/pulsecore/inet_ntop.c
src/pulsecore/strlist.c
src/pulsecore/msgobject.c
src/pulsecore/mutex-win32.c
src/pulsecore/dynarray.c
src/pulsecore/once.c
src/pulsecore/source.c
src/pulsecore/memchunk.c
src/pulsecore/protocol-simple.c
src/pulsecore/sink.c
src/pulsecore/sconv-s16le.c
src/pulsecore/sconv.c
src/pulsecore/core-error.c
src/pulsecore/strbuf.c
src/pulsecore/play-memblockq.c
src/pulsecore/dllmain.c
src/pulsecore/envelope.c
src/pulsecore/pid.c
src/pulsecore/thread-mq.c
src/pulsecore/shm.c
src/pulsecore/play-memchunk.c
src/pulsecore/hashmap.c
src/pulsecore/avahi-wrap.c
src/pulsecore/authkey.c
src/pulsecore/namereg.c
src/pulsecore/poll.c
src/pulsecore/tokenizer.c
src/pulsecore/semaphore-posix.c
src/pulsecore/cli-text.c
src/pulsecore/g711.c
src/pulsecore/core-util.c
src/pulsecore/thread-win32.c
src/pulsecore/tagstruct.c
src/pulsecore/socket-server.c
src/pulsecore/flist.c
src/pulsecore/fdsem.c
src/pulsecore/random.c
src/pulsecore/modinfo.c
src/pulsecore/start-child.c
src/pulsecore/packet.c
src/pulsecore/pstream-util.c
src/pulsecore/rtpoll.c
src/pulsecore/sound-file.c
src/pulsecore/module.c
src/pulsecore/ffmpeg/resample2.c
src/pulsecore/cli.c
src/pulsecore/time-smoother.c
src/pulsecore/parseaddr.c
src/pulsecore/sound-file-stream.c
src/pulsecore/memblockq.c
src/pulsecore/protocol-http.c
src/pulsecore/semaphore-win32.c
src/daemon/cpulimit.c
src/daemon/ltdl-bind-now.c
src/daemon/main.c
src/daemon/cmdline.c
src/daemon/dumpmodules.c
src/daemon/daemon-conf.c
src/daemon/caps.c
src/daemon/pulseaudio.desktop.in
src/pulse/channelmap.c
src/pulse/error.c
src/pulse/proplist.c
src/pulse/xmalloc.c
src/pulse/ext-stream-restore.c
src/pulse/format.c
src/pulse/glib-mainloop.c
src/pulse/introspect.c
src/pulse/stream.c
src/pulse/i18n.c
src/pulse/util.c
src/pulse/utf8.c
src/pulse/mainloop-api.c
src/pulse/sample.c
src/pulse/client-conf-x11.c
src/pulse/client-conf.c
src/pulse/browser.c
src/pulse/volume.c
src/pulse/simple.c
src/pulse/subscribe.c
src/pulse/introspect.c
src/pulse/mainloop.c
src/pulse/mainloop-signal.c
src/pulse/operation.c
src/pulse/proplist.c
src/pulse/sample.c
src/pulse/scache.c
src/pulse/simple.c
src/pulse/stream.c
src/pulse/subscribe.c
src/pulse/context.c
src/pulse/thread-mainloop.c
src/pulse/scache.c
src/pulse/glib-mainloop.c
src/pulse/timeval.c
src/pulse/utf8.c
src/pulse/util.c
src/pulse/volume.c
src/pulse/xmalloc.c
src/tests/resampler-test.c
src/utils/pacat.c
src/utils/pacmd.c
src/utils/pasuspender.c
src/utils/pabrowse.c
src/utils/pactl.c
src/utils/padsp.c
src/utils/pasuspender.c
src/utils/pax11publish.c
src/utils/pacmd.c
src/pulsecore/lock-autospawn.c
src/modules/alsa/alsa-sink.c
src/modules/alsa/alsa-source.c
src/modules/alsa/module-alsa-card.c
src/modules/bluetooth/module-bluetooth-device.c
src/modules/reserve-wrap.c
src/modules/module-rygel-media-server.c
src/modules/alsa/alsa-mixer.c

View file

@ -1,3 +1 @@
src/pulsecore/atomic.h
src/modules/module-virtual-sink.c
src/modules/module-virtual-source.c

2982
po/af.po

File diff suppressed because it is too large Load diff

2903
po/ar.po

File diff suppressed because it is too large Load diff

3567
po/as.po

File diff suppressed because it is too large Load diff

3471
po/be.po

File diff suppressed because it is too large Load diff

3414
po/bg.po

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

3919
po/ca.po

File diff suppressed because it is too large Load diff

4065
po/cs.po

File diff suppressed because it is too large Load diff

3389
po/da.po

File diff suppressed because it is too large Load diff

3957
po/de.po

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

4045
po/el.po

File diff suppressed because it is too large Load diff

2967
po/eo.po

File diff suppressed because it is too large Load diff

4272
po/es.po

File diff suppressed because it is too large Load diff

2902
po/eu.po

File diff suppressed because it is too large Load diff

3737
po/fi.po

File diff suppressed because it is too large Load diff

4252
po/fr.po

File diff suppressed because it is too large Load diff

3680
po/gl.po

File diff suppressed because it is too large Load diff

3581
po/gu.po

File diff suppressed because it is too large Load diff

3177
po/he.po

File diff suppressed because it is too large Load diff

4395
po/hi.po

File diff suppressed because it is too large Load diff

3501
po/hr.po

File diff suppressed because it is too large Load diff

4021
po/hu.po

File diff suppressed because it is too large Load diff

3440
po/id.po

File diff suppressed because it is too large Load diff

3533
po/it.po

File diff suppressed because it is too large Load diff

3798
po/ja.po

File diff suppressed because it is too large Load diff

3046
po/ka.po

File diff suppressed because it is too large Load diff

2990
po/kk.po

File diff suppressed because it is too large Load diff

3589
po/kn.po

File diff suppressed because it is too large Load diff

3522
po/ko.po

File diff suppressed because it is too large Load diff

3504
po/lt.po

File diff suppressed because it is too large Load diff

View file

@ -1,8 +0,0 @@
i18n.gettext(
meson.project_name(),
preset: 'glib',
# Page width is set to 90 characters in order to avoid bad wrapping of the
# bug reporting address.
args: ['--msgid-bugs-address=https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/new',
'--width=90'],
)

3564
po/ml.po

File diff suppressed because it is too large Load diff

3563
po/mr.po

File diff suppressed because it is too large Load diff

4132
po/nl.po

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more