summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile.am6
-rw-r--r--PROTOCOL7
-rwxr-xr-xbootstrap.sh4
-rw-r--r--configure.ac80
-rwxr-xr-xgit-version-gen27
-rw-r--r--m4/shave.m477
-rw-r--r--man/pulse-daemon.conf.5.xml.in49
-rw-r--r--po/LINGUAS6
-rw-r--r--po/POTFILES.in11
-rw-r--r--po/as.po1029
-rw-r--r--po/bn_IN.po1028
-rw-r--r--po/ca.po1316
-rw-r--r--po/cs.po1625
-rw-r--r--po/de.po1024
-rw-r--r--po/de_CH.po1024
-rw-r--r--po/el.po878
-rw-r--r--po/es.po1042
-rw-r--r--po/fi.po1032
-rw-r--r--po/fr.po1399
-rw-r--r--po/gu.po1024
-rw-r--r--po/hi.po2502
-rw-r--r--po/it.po1036
-rw-r--r--po/kn.po1026
-rw-r--r--po/mr.po1029
-rw-r--r--po/nl.po912
-rw-r--r--po/or.po1022
-rw-r--r--po/pa.po1794
-rw-r--r--po/pl.po1044
-rw-r--r--po/pt.po2282
-rw-r--r--po/pt_BR.po988
-rw-r--r--po/sr.po1028
-rw-r--r--po/sr@latin.po1028
-rw-r--r--po/sv.po902
-rw-r--r--po/ta.po1022
-rw-r--r--po/te.po1029
-rw-r--r--po/uk.po1020
-rw-r--r--po/zh_CN.po1022
-rw-r--r--shave-libtool.in69
-rw-r--r--shave.in79
-rw-r--r--src/Makefile.am119
-rw-r--r--src/daemon/caps.c99
-rw-r--r--src/daemon/caps.h3
-rw-r--r--src/daemon/cmdline.c11
-rw-r--r--src/daemon/cpulimit.c7
-rw-r--r--src/daemon/daemon-conf.c34
-rw-r--r--src/daemon/daemon-conf.h3
-rw-r--r--src/daemon/daemon.conf.in7
-rwxr-xr-xsrc/daemon/default.pa.in9
-rw-r--r--src/daemon/main.c244
-rw-r--r--src/map-file10
-rw-r--r--src/modules/alsa/alsa-mixer.c3406
-rw-r--r--src/modules/alsa/alsa-mixer.h292
-rw-r--r--src/modules/alsa/alsa-sink.c574
-rw-r--r--src/modules/alsa/alsa-sink.h3
-rw-r--r--src/modules/alsa/alsa-source.c577
-rw-r--r--src/modules/alsa/alsa-source.h2
-rw-r--r--src/modules/alsa/alsa-util.c1063
-rw-r--r--src/modules/alsa/alsa-util.h122
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-aux.conf62
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-fm.conf62
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-linein.conf61
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-mic-line.conf63
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-mic.conf63
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-mic.conf.common63
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-tvtuner.conf62
-rw-r--r--src/modules/alsa/mixer/paths/analog-input-video.conf61
-rw-r--r--src/modules/alsa/mixer/paths/analog-input.conf54
-rw-r--r--src/modules/alsa/mixer/paths/analog-input.conf.common257
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-headphones.conf71
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf72
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-mono.conf69
-rw-r--r--src/modules/alsa/mixer/paths/analog-output.conf80
-rw-r--r--src/modules/alsa/mixer/paths/analog-output.conf.common111
-rw-r--r--src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules26
-rw-r--r--src/modules/alsa/mixer/profile-sets/default.conf144
-rw-r--r--src/modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf91
-rw-r--r--src/modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf162
-rw-r--r--src/modules/alsa/mixer/samples/ATI IXP--Realtek ALC655 rev 0150
-rw-r--r--src/modules/alsa/mixer/samples/Brooktree Bt878--Bt87x24
-rw-r--r--src/modules/alsa/mixer/samples/Ensoniq AudioPCI--Cirrus Logic CS4297A rev 3135
-rw-r--r--src/modules/alsa/mixer/samples/HDA ATI HDMI--ATI R6xx HDMI4
-rw-r--r--src/modules/alsa/mixer/samples/HDA Intel--Analog Devices AD198162
-rw-r--r--src/modules/alsa/mixer/samples/HDA Intel--Realtek ALC889A113
-rw-r--r--src/modules/alsa/mixer/samples/Intel 82801CA-ICH3--Analog Devices AD1881A128
-rw-r--r--src/modules/alsa/mixer/samples/Logitech USB Speaker--USB Mixer27
-rw-r--r--src/modules/alsa/mixer/samples/USB Audio--USB Mixer37
-rw-r--r--src/modules/alsa/mixer/samples/USB Device 0x46d:0x9a4--USB Mixer5
-rw-r--r--src/modules/alsa/mixer/samples/VIA 8237--Analog Devices AD1888211
-rw-r--r--src/modules/alsa/mixer/samples/VIA 8237--C-Media Electronics CMI9761A+160
-rw-r--r--src/modules/alsa/module-alsa-card.c267
-rw-r--r--src/modules/alsa/module-alsa-sink.c6
-rw-r--r--src/modules/alsa/module-alsa-source.c8
-rw-r--r--src/modules/bluetooth/module-bluetooth-device.c46
-rw-r--r--src/modules/bluetooth/module-bluetooth-proximity.c4
-rw-r--r--src/modules/jack/module-jack-sink.c1
-rw-r--r--src/modules/jack/module-jack-source.c1
-rw-r--r--src/modules/module-augment-properties.c73
-rw-r--r--src/modules/module-card-restore.c19
-rw-r--r--src/modules/module-combine.c35
-rw-r--r--src/modules/module-dbus-protocol.c2
-rw-r--r--src/modules/module-default-device-restore.c13
-rw-r--r--src/modules/module-device-restore.c220
-rw-r--r--src/modules/module-esound-sink.c18
-rw-r--r--src/modules/module-hal-detect.c15
-rw-r--r--src/modules/module-intended-roles.c428
-rw-r--r--src/modules/module-ladspa-sink.c23
-rw-r--r--src/modules/module-lirc.c12
-rw-r--r--src/modules/module-mmkbd-evdev.c6
-rw-r--r--src/modules/module-null-sink.c12
-rw-r--r--src/modules/module-pipe-sink.c1
-rw-r--r--src/modules/module-pipe-source.c1
-rw-r--r--src/modules/module-rescue-streams.c12
-rw-r--r--src/modules/module-sine-source.c14
-rw-r--r--src/modules/module-solaris.c2
-rw-r--r--src/modules/module-stream-restore.c251
-rw-r--r--src/modules/module-suspend-on-idle.c31
-rw-r--r--src/modules/module-tunnel.c42
-rw-r--r--src/modules/module-udev-detect.c457
-rw-r--r--src/modules/module-waveout.c4
-rw-r--r--src/modules/oss/module-oss.c1
-rw-r--r--src/modules/raop/module-raop-discover.c (renamed from src/modules/module-raop-discover.c)0
-rw-r--r--src/modules/raop/module-raop-sink.c (renamed from src/modules/module-raop-sink.c)17
-rw-r--r--src/modules/raop/raop_client.c2
-rw-r--r--src/modules/reserve-monitor.c259
-rw-r--r--src/modules/reserve-monitor.h62
-rw-r--r--src/modules/reserve-wrap.c149
-rw-r--r--src/modules/reserve-wrap.h9
-rw-r--r--src/modules/reserve.c22
-rw-r--r--src/modules/reserve.h2
-rw-r--r--src/modules/rtp/module-rtp-recv.c22
-rw-r--r--src/modules/rtp/module-rtp-send.c18
-rw-r--r--src/modules/rtp/rtsp_client.c2
-rw-r--r--src/modules/udev-util.c63
-rw-r--r--src/modules/udev-util.h3
-rw-r--r--src/pulse/channelmap.c141
-rw-r--r--src/pulse/channelmap.h5
-rw-r--r--src/pulse/context.c38
-rw-r--r--src/pulse/context.h8
-rw-r--r--src/pulse/def.h1
-rw-r--r--src/pulse/internal.h3
-rw-r--r--src/pulse/introspect.c210
-rw-r--r--src/pulse/introspect.h36
-rw-r--r--src/pulse/mainloop-api.h1
-rw-r--r--src/pulse/mainloop.c88
-rw-r--r--src/pulse/proplist.h3
-rw-r--r--src/pulse/rtclock.c (renamed from src/pulsecore/rtsig.h)24
-rw-r--r--src/pulse/rtclock.h41
-rw-r--r--src/pulse/stream.c24
-rw-r--r--src/pulse/timeval.h9
-rw-r--r--src/pulse/version.h.in4
-rw-r--r--src/pulse/volume.c88
-rw-r--r--src/pulse/volume.h12
-rw-r--r--src/pulse/xmalloc.h13
-rw-r--r--src/pulsecore/avahi-wrap.c9
-rw-r--r--src/pulsecore/card.c49
-rw-r--r--src/pulsecore/card.h7
-rw-r--r--src/pulsecore/cli-command.c86
-rw-r--r--src/pulsecore/cli-text.c46
-rw-r--r--src/pulsecore/conf-parser.c50
-rw-r--r--src/pulsecore/core-rtclock.c (renamed from src/pulsecore/rtclock.c)52
-rw-r--r--src/pulsecore/core-rtclock.h (renamed from src/pulsecore/rtclock.h)7
-rw-r--r--src/pulsecore/core-scache.c19
-rw-r--r--src/pulsecore/core-util.c249
-rw-r--r--src/pulsecore/core-util.h13
-rw-r--r--src/pulsecore/core.c28
-rw-r--r--src/pulsecore/core.h14
-rw-r--r--src/pulsecore/database-gdbm.c7
-rw-r--r--src/pulsecore/database-tdb.c3
-rw-r--r--src/pulsecore/dbus-shared.c2
-rw-r--r--src/pulsecore/dbus-util.c61
-rw-r--r--src/pulsecore/dbus-util.h4
-rw-r--r--src/pulsecore/hashmap.c42
-rw-r--r--src/pulsecore/hashmap.h17
-rw-r--r--src/pulsecore/idxset.c14
-rw-r--r--src/pulsecore/idxset.h3
-rw-r--r--src/pulsecore/log.c5
-rw-r--r--src/pulsecore/native-common.h4
-rw-r--r--src/pulsecore/pdispatch.c17
-rw-r--r--src/pulsecore/pdispatch.h2
-rw-r--r--src/pulsecore/protocol-esound.c19
-rw-r--r--src/pulsecore/protocol-native.c135
-rw-r--r--src/pulsecore/pstream.c8
-rw-r--r--src/pulsecore/ratelimit.c5
-rw-r--r--src/pulsecore/rtkit.c189
-rw-r--r--src/pulsecore/rtkit.h62
-rw-r--r--src/pulsecore/rtpoll.c184
-rw-r--r--src/pulsecore/rtpoll.h3
-rw-r--r--src/pulsecore/rtsig.c131
-rw-r--r--src/pulsecore/sample-util.c2
-rw-r--r--src/pulsecore/sample-util.h59
-rw-r--r--src/pulsecore/sink-input.c10
-rw-r--r--src/pulsecore/sink.c286
-rw-r--r--src/pulsecore/sink.h52
-rw-r--r--src/pulsecore/sndfile-util.c2
-rw-r--r--src/pulsecore/socket-client.c22
-rw-r--r--src/pulsecore/socket-client.h2
-rw-r--r--src/pulsecore/source.c148
-rw-r--r--src/pulsecore/source.h37
-rw-r--r--src/tests/mainloop-test.c6
-rw-r--r--src/tests/rtpoll-test.c6
-rw-r--r--src/tests/rtstutter.c2
-rw-r--r--src/tests/thread-mainloop-test.c8
-rw-r--r--src/utils/pabrowse.c3
-rw-r--r--src/utils/pacat.c19
-rw-r--r--src/utils/pactl.c95
-rw-r--r--src/utils/pasuspender.c5
207 files changed, 31568 insertions, 16945 deletions
diff --git a/.gitignore b/.gitignore
index fae5b471..85c0fe5f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,4 @@
.version
-shave
-shave-libtool
.*.swp
ABOUT-NLS
intltool-extract.in
diff --git a/Makefile.am b/Makefile.am
index 2448e748..4d45a07d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -62,12 +62,6 @@ dist-hook:
fi
echo $(VERSION) > $(distdir)/.tarball-version
-update-shave:
- for i in shave.in shave.m4 shave-libtool.in; do \
- wget -O $$i http://git.lespiau.name/cgit/shave/blob/\?path=shave/$$i ; \
- done
- mv shave.m4 m4/
-
.PHONY: homepage distcleancheck doxygen
# see git-version-gen
diff --git a/PROTOCOL b/PROTOCOL
index 88166f14..92cc2832 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -181,3 +181,10 @@ new messages:
PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED
PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED
+
+### v16, implemented by >= 0.9.15
+
+new messages:
+
+ PA_COMMAND_SET_SINK_PORT
+ PA_COMMAND_SET_SOURCE_PORT
diff --git a/bootstrap.sh b/bootstrap.sh
index c7737a6e..d5025db6 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -16,7 +16,7 @@
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-VERSION=1.10
+VERSION=1.11
run_versioned() {
local P
@@ -83,7 +83,7 @@ else
run_versioned automake "$VERSION" --copy --foreign --add-missing
if test "x$NOCONFIGURE" = "x"; then
- CFLAGS="-g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen --enable-shave "$@"
+ CFLAGS="-g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen "$@"
make clean
fi
fi
diff --git a/configure.ac b/configure.ac
index a3f9f0ef..185f13bb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,16 +22,15 @@
AC_PREREQ(2.63)
-AC_INIT([pulseaudio], m4_esyscmd([./git-version-gen .tarball-version]),
- [mzchyfrnhqvb (at) 0pointer (dot) net])
+AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[mzchyfrnhqvb (at) 0pointer (dot) net])
AC_CONFIG_SRCDIR([src/daemon/main.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([foreign 1.10 -Wall -Wno-portability])
+AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax])
-m4_define(pa_major, `echo $VERSION | cut -d. -f 1`)
-m4_define(pa_minor, `echo $VERSION | cut -d. -f 2`)
-m4_define(pa_micro, `echo $VERSION | cut -d. -f 3`)
+m4_define(pa_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`)
+m4_define(pa_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`)
+m4_define(pa_micro, `echo $VERSION | cut -d. -f3 | cut -d- -f1`)
AC_SUBST(PA_MAJOR, pa_major)
AC_SUBST(PA_MINOR, pa_minor)
@@ -41,7 +40,7 @@ AC_SUBST(PA_MAJORMINORMICRO, pa_major.pa_minor.pa_micro)
AC_SUBST(PACKAGE_URL, [http://pulseaudio.org/])
AC_SUBST(PA_API_VERSION, 12)
-AC_SUBST(PA_PROTOCOL_VERSION, 15)
+AC_SUBST(PA_PROTOCOL_VERSION, 16)
# The stable ABI for client applications, for the version info x:y:z
# always will hold y=z
@@ -76,6 +75,8 @@ case $host in
;;
esac
+AM_SILENT_RULES([yes])
+
#### Checks for programs. ####
# mkdir -p
@@ -539,7 +540,7 @@ AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
#### Sound file ####
-PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.10 ])
+PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.20 ])
AC_SUBST(LIBSNDFILE_CFLAGS)
AC_SUBST(LIBSNDFILE_LIBS)
@@ -1057,7 +1058,7 @@ AC_ARG_ENABLE([udev],
],
[udev=auto])
if test "x${udev}" != xno -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \) ; then
- PKG_CHECK_MODULES(UDEV, [ libudev >= 137 ],
+ PKG_CHECK_MODULES(UDEV, [ libudev >= 143 ],
[
HAVE_UDEV=1
AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.])
@@ -1152,44 +1153,6 @@ AC_SUBST(DBUS_LIBS)
AC_SUBST(HAVE_DBUS)
AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1])
-#### PolicyKit support (optional) ####
-
-AC_ARG_ENABLE([polkit],
- AS_HELP_STRING([--disable-polkit],[Disable optional PolicyKit support]),
- [
- case "${enableval}" in
- yes) polkit=yes ;;
- no) polkit=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --disable-polkit) ;;
- esac
- ],
- [polkit=auto])
-
-if test "x${polkit}" != xno ; then
-
- PKG_CHECK_MODULES(POLKIT, [ polkit-dbus >= 0.7 ],
- [
- HAVE_POLKIT=1
- AC_DEFINE([HAVE_POLKIT], 1, [Have PolicyKit])
- policydir=`pkg-config polkit-dbus --variable prefix`/share/PolicyKit/policy/
- AC_SUBST(policydir)
- ],
- [
- HAVE_POLKIT=0
- if test "x$polkit" = xyes ; then
- AC_MSG_ERROR([*** PolicyKit support not found])
- fi
- ])
-else
- HAVE_POLKIT=0
-fi
-
-AC_SUBST(POLKIT_CFLAGS)
-AC_SUBST(POLKIT_LIBS)
-AC_SUBST(HAVE_POLKIT)
-AM_CONDITIONAL([HAVE_POLKIT], [test "x$HAVE_POLKIT" = x1])
-
-
### IPv6 connection support (optional) ###
AC_ARG_ENABLE([ipv6],
@@ -1276,15 +1239,6 @@ fi
AC_SUBST(PA_SYSTEM_GROUP)
AC_DEFINE_UNQUOTED(PA_SYSTEM_GROUP,"$PA_SYSTEM_GROUP", [Group for the PulseAudio system daemon])
-AC_ARG_WITH(realtime_group,AS_HELP_STRING([--with-realtime-group=<group>],[Group for users that are allowed to start the PulseAudio daemon with realtime scheduling (realtime)]))
-if test -z "$with_realtime_group" ; then
- PA_REALTIME_GROUP=pulse-rt
-else
- PA_REALTIME_GROUP=$with_realtime_group
-fi
-AC_SUBST(PA_REALTIME_GROUP)
-AC_DEFINE_UNQUOTED(PA_REALTIME_GROUP,"$PA_REALTIME_GROUP", [Realtime group])
-
AC_ARG_WITH(access_group,AS_HELP_STRING([--with-access-group=<group>],[Group which is allowed access to a system-wide PulseAudio daemon (pulse-access)]))
if test -z "$with_access_group" ; then
PA_ACCESS_GROUP=pulse-access
@@ -1350,8 +1304,8 @@ fi
AC_ARG_WITH(
[module-dir],
- AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINORMICRO}/modules/]),
- [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINORMICRO}/modules/"])
+ AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINORMICRO}/modules]),
+ [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINORMICRO}/modules"])
AC_SUBST(modlibexecdir)
@@ -1363,8 +1317,6 @@ AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"])
AC_CONFIG_FILES([
Makefile
-shave
-shave-libtool
src/Makefile
man/Makefile
libpulse.pc
@@ -1377,7 +1329,6 @@ src/pulse/version.h
po/Makefile.in
])
-SHAVE_INIT
AC_OUTPUT
# ==========================================================================
@@ -1461,11 +1412,6 @@ if test "x${HAVE_BLUEZ}" = "x1" ; then
ENABLE_BLUEZ=yes
fi
-ENABLE_POLKIT=no
-if test "x${HAVE_POLKIT}" = "x1" ; then
- ENABLE_POLKIT=yes
-fi
-
ENABLE_GDBM=no
if test "x${HAVE_GDBM}" = "x1" ; then
ENABLE_GDBM=yes
@@ -1519,7 +1465,6 @@ echo "
Enable BlueZ: ${ENABLE_BLUEZ}
Enable TCP Wrappers: ${ENABLE_TCPWRAP}
Enable libsamplerate: ${ENABLE_LIBSAMPLERATE}
- Enable PolicyKit: ${ENABLE_POLKIT}
Enable IPv6: ${ENABLE_IPV6}
Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
Enable tdb: ${ENABLE_TDB}
@@ -1527,7 +1472,6 @@ echo "
System User: ${PA_SYSTEM_USER}
System Group: ${PA_SYSTEM_GROUP}
- Realtime Group: ${PA_REALTIME_GROUP}
Access Group: ${PA_ACCESS_GROUP}
Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET}
Force preopen: ${FORCE_PREOPEN}
diff --git a/git-version-gen b/git-version-gen
index 710870cd..ae3988ea 100755
--- a/git-version-gen
+++ b/git-version-gen
@@ -106,22 +106,23 @@ then
# tag or the previous older version that did not?
# Newer: v6.10-77-g0f8faeb
# Older: v6.10-g0f8faeb
- case $v in
- *-*-*) : git describe is okay three part flavor ;;
- *-*)
- : git describe is older two part flavor
- # Recreate the number of commits and rewrite such that the
- # result is the same as if we were using the newer version
- # of git describe.
- vtag=`echo "$v" | sed 's/-.*//'`
- numcommits=`git rev-list "$vtag"..HEAD | wc -l`
- v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
- ;;
- esac
+# case $v in
+# *-*-*) : git describe is okay three part flavor ;;
+# *-*)
+# : git describe is older two part flavor
+# # Recreate the number of commits and rewrite such that the
+# # result is the same as if we were using the newer version
+# # of git describe.
+# vtag=`echo "$v" | sed 's/-.*//'`
+# numcommits=`git rev-list "$vtag"..HEAD | wc -l`
+# v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
+# ;;
+# esac
# Change the first '-' to a '.', so version-comparing tools work properly.
# Remove the "g" in git describe's output string, to save a byte.
- v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
+# v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
+ :
else
v=UNKNOWN
fi
diff --git a/m4/shave.m4 b/m4/shave.m4
deleted file mode 100644
index 0a3509e5..00000000
--- a/m4/shave.m4
+++ /dev/null
@@ -1,77 +0,0 @@
-dnl Make automake/libtool output more friendly to humans
-dnl Damien Lespiau <damien.lespiau@gmail.com>
-dnl
-dnl SHAVE_INIT([shavedir],[default_mode])
-dnl
-dnl shavedir: the directory where the shave scripts are, it defaults to
-dnl $(top_builddir)
-dnl default_mode: (enable|disable) default shave mode. This parameter
-dnl controls shave's behaviour when no option has been
-dnl given to configure. It defaults to disable.
-dnl
-dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
-dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrites CC and
-dnl LIBTOOL, you don't want the configure tests to have these variables
-dnl re-defined.
-dnl * This macro requires GNU make's -s option.
-
-AC_DEFUN([_SHAVE_ARG_ENABLE],
-[
- AC_ARG_ENABLE([shave],
- AS_HELP_STRING(
- [--enable-shave],
- [use shave to make the build pretty [[default=$1]]]),,
- [enable_shave=$1]
- )
-])
-
-AC_DEFUN([SHAVE_INIT],
-[
- dnl you can tweak the default value of enable_shave
- m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)])
-
- if test x"$enable_shave" = xyes; then
- dnl where can we find the shave scripts?
- m4_if([$1],,
- [shavedir="$ac_pwd"],
- [shavedir="$ac_pwd/$1"])
- AC_SUBST(shavedir)
-
- dnl make is now quiet
- AC_SUBST([MAKEFLAGS], [-s])
- AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`'])
-
- dnl we need sed
- AC_CHECK_PROG(SED,sed,sed,false)
-
- dnl substitute libtool
- SHAVE_SAVED_LIBTOOL=$LIBTOOL
- LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'"
- AC_SUBST(LIBTOOL)
-
- dnl substitute cc/cxx
- SHAVE_SAVED_CC=$CC
- SHAVE_SAVED_CXX=$CXX
- SHAVE_SAVED_FC=$FC
- SHAVE_SAVED_F77=$F77
- SHAVE_SAVED_OBJC=$OBJC
- CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}"
- CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}"
- FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}"
- F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}"
- OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}"
- AC_SUBST(CC)
- AC_SUBST(CXX)
- AC_SUBST(FC)
- AC_SUBST(F77)
- AC_SUBST(OBJC)
-
- V=@
- else
- V=1
- fi
- Q='$(V:1=)'
- AC_SUBST(V)
- AC_SUBST(Q)
-])
-
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index afa7ca00..68bcb77f 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -164,6 +164,14 @@ USA.
</option>
<option>
+ <p><opt>lock-memory=</opt> Locks the entire PulseAudio process
+ into memory. While this might increase drop-out safety when used
+ in conjunction with real-time scheduling this takes away a lot
+ of memory from other processes and might hence considerably slow
+ down your system. Defaults to <opt>no</opt>.</p>
+ </option>
+
+ <option>
<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
@@ -228,13 +236,6 @@ USA.
</option>
<option>
- <p><opt>module-idle-time=</opt> Unload autoloaded modules after
- being idle for this time in seconds. Defaults to 20. The
- <opt>--module-idle-time</opt> command line option takes
- precedence.</p>
- </option>
-
- <option>
<p><opt>scache-idle-time=</opt> Unload autoloaded sample cache
entries after being idle for this time in seconds. Defaults to
20. The <opt>--scache-idle-time</opt> command line option takes
@@ -267,9 +268,9 @@ USA.
</option>
<option>
- <p><opt>default-script-file=</opt> Load the default
+ <p><opt>load-default-script-file=</opt> Load the default
configuration script file as specified
- in <opt>default-script-file=</opt>. Defaults to "yes".</p>
+ in <opt>default-script-file=</opt>. Defaults to <opt>yes</opt>.</p>
</option>
</section>
@@ -296,6 +297,23 @@ USA.
might alter this setting.</p>
</option>
+ <option>
+ <p><opt>log-meta=</opt> With each logged message log the code
+ location the message was generated from. Defaults to
+ <opt>no</opt>.</p>
+ </option>
+
+ <option>
+ <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 the specified
+ number of stack frames. Defaults to <opt>0</opt>.</p>
+ </option>
+
</section>
<section name="Resource Limits">
@@ -371,11 +389,13 @@ USA.
<option>
<p><opt>default-sample-format=</opt> The default sampling
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>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>s32ne</opt>, <opt>s32re</opt>,
+ 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>
@@ -401,7 +421,8 @@ USA.
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 to find the nearest
- setting supported.</p>
+ setting supported. Modern drivers that support timer-based
+ scheduling ignore these options.</p>
<option>
<p><opt>default-fragments=</opt> The default number of
diff --git a/po/LINGUAS b/po/LINGUAS
index ad7275d9..660ebee9 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -2,13 +2,14 @@ as
bn_IN
ca
cs
-de
de_CH
+de
el
es
fi
fr
gu
+hi
it
kn
mr
@@ -17,8 +18,9 @@ or
pa
pl
pt_BR
-sr
+pt
sr@latin
+sr
sv
ta
te
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2cd451f5..534feb15 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -15,7 +15,7 @@ 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/module-x11-xsmp.c
+src/modules/x11/module-x11-xsmp.c
src/modules/module-remap-sink.c
src/modules/bluetooth/module-bluetooth-proximity.c
src/modules/module-detect.c
@@ -24,23 +24,23 @@ src/modules/module-lirc.c
src/modules/module-hal-detect.c
src/modules/module-sine.c
src/modules/module-zeroconf-publish.c
-src/modules/module-jack-source.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/module-x11-bell.c
+src/modules/x11/module-x11-bell.c
src/modules/module-protocol-stub.c
src/modules/module-stream-restore.c
-src/modules/module-jack-sink.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/module-x11-publish.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
@@ -190,7 +190,6 @@ src/utils/pactl.c
src/utils/padsp.c
src/utils/pax11publish.c
src/utils/pacmd.c
-src/utils/paplay.c
src/pulsecore/lock-autospawn.c
src/modules/alsa/alsa-sink.c
src/modules/alsa/alsa-source.c
diff --git a/po/as.po b/po/as.po
index 12488e66..b2468a43 100644
--- a/po/as.po
+++ b/po/as.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-08 12:35+0530\n"
"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n"
"Language-Team: Assamese <fedora-trans-as@redhat.com>\n"
@@ -16,51 +16,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analog Mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analog Stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Digital Stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Digital Stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analog ছাৰাউণà§à¦¡ 4.০"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digital ছাৰাউণà§à¦¡ 4.০ (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analog ছাৰাউণà§à¦¡ 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analog ছাৰাউণà§à¦¡ 5.০"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analog ছাৰাউণà§à¦¡ 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digital ছাৰাউণà§à¦¡ 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analog ছাৰাউণà§à¦¡ 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -72,7 +28,7 @@ msgstr ""
"অতি সমà§à¦­à§± à¦à¦‡à¦Ÿà§‹ ALSA চালক '%s' ৰ à¦à¦Ÿà¦¾ বাগ । অনà§à¦—à§à§°à¦¹ কৰি à¦à¦‡ সমসà§à¦¯à¦¾ ALSA বিকাশকক "
"জনাওক ।"
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -84,7 +40,7 @@ msgstr ""
"অতি সমà§à¦­à§± à¦à¦‡à¦Ÿà§‹ ALSA চালক '%s' ৰ à¦à¦Ÿà¦¾ বাগ । অনà§à¦—à§à§°à¦¹ কৰি à¦à¦‡ সমসà§à¦¯à¦¾ ALSA বিকাশকক "
"জনাওক ।"
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -96,11 +52,24 @@ msgstr ""
"অতি সমà§à¦­à§± à¦à¦‡à¦Ÿà§‹ ALSA চালক '%s' ৰ à¦à¦Ÿà¦¾ বাগ । অনà§à¦—à§à§°à¦¹ কৰি à¦à¦‡ সমসà§à¦¯à¦¾ ALSA বিকাশকক "
"জনাওক ।"
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "আভà§à¦¯à¦¨à§à¦¤à§°à§€à¦£ অ'ডিঅ'"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "মোডেম"
@@ -170,104 +139,104 @@ msgstr "auth পাব নোৱাৰি: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ঠ'%s' উতà§à¦¤à§° দিলে"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "চিগà§à¦¨à§‡à¦² %s পোৱা গ'ল ।"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা হৈছে ।"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾ '%s' পোৱা ন'গ'ল ।"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' সমষà§à¦Ÿà¦¿ পোৱা ন'গ'ল ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾ '%s' (UID %lu) আৰৠসমষà§à¦Ÿà¦¿ '%s' (GID %lu) পোৱা গ'ল ।"
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾ '%s' আৰৠসমষà§à¦Ÿà¦¿ '%s' ৰ GID অমিল ।"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾ '%s' ৰ ঘৰৰ পঞà§à¦œà¦¿à¦•à¦¾ '%s' নহয়, আওকাণ কৰা হৈছে ।"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' সৃষà§à¦Ÿà¦¿ কৰিবলৈ বিফল: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "সমষà§à¦Ÿà¦¿à§° তালিকা সলনি কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID সলনি কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID সলনি কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ৰূটৰ অধিকাৰ সফলভাবে à¦à§°à§‹à§±à¦¾ গ'ল ।"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦‡ সà§à¦¥à¦¾à¦ªà¦¤à§à¦¯à¦¤ পà§à§°à¦£à¦¾à¦²à§€ বà§à¦¯à¦¾à¦ªà¦• মোড অসমৰà§à¦¥à¦¿à¦¤ ।"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "আদেশ শাৰী বিশà§à¦²à§‡à¦·à¦£ কৰিবলৈ বিফল ।"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "আমি '%s' সমষà§à¦Ÿà¦¿à¦¤, য'ত high-priority scheduling ৰ অনà§à¦®à¦¤à¦¿ আছে ।"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "আমি '%s' সমষà§à¦Ÿà¦¿à¦¤, য'ত real-time scheduling ৰ অনà§à¦®à¦¤à¦¿ আছে ।"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ঠআমাক acquire-high-priority অধিকাৰ দিয়ে ।"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ঠacquire-high-priority অধিকাৰ নিদিয়ে ।"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit ঠআমাক acquire-real-time অধিকাৰ দিয়ে ।"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ঠacquire-real-time অধিকাৰ নিদিয়ে ।"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -288,207 +257,217 @@ msgstr ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"বিনà§à¦¯à¦¾à¦¸ দà§à¦¬à¦¾à§°à¦¾ high-priority scheduling ৰ সকà§à§°à¦¿à§Ÿ হ'লেও নিয়মনীতি দà§à¦¬à¦¾à§°à¦¾ সেইটো "
"অনà§à¦®à§‹à¦¦à¦¿à¦¤ নহয় ।"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO সফলতাৰে বৃদà§à¦§à¦¿ কৰা হৈছে"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO বিফল: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE বৰà§à¦œà¦¨ কৰা হৈছে"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"বিনà§à¦¯à¦¾à¦¸ দà§à¦¬à¦¾à§°à¦¾ real-time scheduling ৰ সকà§à§°à¦¿à§Ÿ হ'লেও নিয়মনীতি দà§à¦¬à¦¾à§°à¦¾ সেইটো অনà§à¦®à§‹à¦¦à¦¿à¦¤ "
"নহয় ।"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ডেমন নাই চলা"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u ৰূপে ডেমন চলিছে"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডেমন kill কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পৰিচয়ে à¦à¦‡ পà§à§°à§‹à¦—à§à§°à¦¾à¦® সঞà§à¦šà¦¾à¦²à¦¿à¦¤ হোৱা উচিত নহয় (ন'হ'লে --system উলà§à¦²à¦¿à¦–িত হয়) ।"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-ৰ অধিকাৰ আৱশà§à¦¯à¦• ।"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "পà§à§°à¦£à¦¾à¦²à§€ চানেকিৰ কà§à¦·à§‡à¦¤à§à§°à¦¤ --start সমৰà§à¦¥à¦¿à¦¤ নহয় ।"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, কিনà§à¦¤à§ --disallow-exit নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহয়!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, কিনà§à¦¤à§ --disallow-module-loading নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহয়!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, SHM মোড বলপূৰà§à¦¬à¦• নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, কাম নকৰা সময়ৰ পৰা পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা বলপূৰà§à¦¬à¦• নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe বিফল: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ডেমন আৰমà§à¦­ কৰিবলৈ বিফল ।"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "সফলতাৰে ডেমন আৰমà§à¦­ কৰা হৈছে ।"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦‡à¦Ÿà§‹ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "সঙà§à¦•à¦²à¦¨à§° গৃহসà§à¦¥: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "সঙà§à¦•à¦²à¦¨à§° CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "গৃহসà§à¦¥à¦¤ চলোৱা হৈছে: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পোৱা গৈছে ।"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "পেজৰ মাপ %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে: হয়"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে: নহয়"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মোডত চলিছে: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimized build: হয়"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimized build: নহয়"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ কৰা হৈছে, সকলো asserts নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে ।"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ কৰা হৈছে, অকল fast path asserts নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে ।"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "সকলো asserts সকà§à§°à¦¿à§Ÿ কৰা হৈছে ।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "যনà§à¦¤à§à§° ID পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ৰান-টাইম পঞà§à¦œà¦¿à¦•à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° কৰা হৈছে ।"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "অৱসà§à¦¥à¦¾à¦¸à§‚চক পঞà§à¦œà¦¿à¦•à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° কৰা হৈছে ।"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "নতà§à¦¨ high-resolution timers পোৱা হয়! অভিননà§à¦¦à¦¨!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -496,32 +475,32 @@ msgstr ""
"শà§à§°à§€à¦®à¦¾à¦¨, আপোনাৰ কাৰà§à¦£à§‡à¦² পূৰণি! high-resolution timer সকà§à§°à¦¿à§Ÿ থকা Linux ক আজি "
"উপদেশ দিয়া হয়!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "ডেমন আৰমà§à¦­ কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"তà§à¦²à¦¿ লোৱা মডিউল নোহোৱাকে ডেমন আৰমà§à¦­ কৰা হৈছে, কোনো কাম সঞà§à¦šà¦¾à¦²à¦¨ কৰা সমà§à¦­à§± নহয় ।"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "ডেমন আৰমà§à¦­ কৰা সমà§à¦ªà§‚ৰà§à¦£ ।"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "ডেমন বনà§à¦§ কৰাৰ পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾ আৰমà§à¦­ কৰা হৈছে ।"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "ডেমন বনà§à¦§ কৰা হৈছে ।"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -664,15 +643,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -680,52 +659,52 @@ msgstr ""
"--log-level ৰ কাৰণে লগ সà§à¦¤à§°à§° তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ (হয় সংখà§à¦¯à¦¾ ০..৪ ৰ সীমাত বা debug, "
"info, notice, warn, error ৰ যিকোনো à¦à¦Ÿà¦¾) ।"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "অবৈধ লগ লকà§à¦·à§à¦¯: 'syslog', 'stderr' বা 'auto' ৰ à¦à¦Ÿà¦¾ বà§à¦¯à§±à¦¹à¦¾à§° কৰক"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বৈধ নহয় ।"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§Ÿà§‡à¦¨ তৰà§à¦• পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
@@ -764,77 +743,82 @@ msgstr "বà§à¦¯à§±à¦¹à¦¾à§° পদà§à¦§à¦¤à¦¿: %s\n"
msgid "Load Once: %s\n"
msgstr "à¦à¦¬à¦¾à§° তà§à¦²à¦¿ লোৱা হ'ব: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ লকà§à¦·à§à¦¯ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগৰ সà§à¦¤à§° '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] resample পদà§à¦§à¦¤à¦¿ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] à¦à¦‡ সà§à¦¥à¦¾à¦ªà¦¤à§à¦¯à¦¤ rlimit সমৰà§à¦¥à¦¿à¦¤ নহয় ।"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] চানেকিৰ বিনà§à¦¯à¦¾à¦¸ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] চানেকিৰ মাতà§à§°à¦¾ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] চানেকিৰ চেনেল '%s' বৈধ নহয়"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চেনেল মেপ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশৰ সংখà§à¦¯à¦¾ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশৰ মাপ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à§° '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -881,237 +865,237 @@ msgstr "পà§à§°à¦£à¦¾à¦²à§€à§° নীতিয়ে PulseAudio ক high-priority
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr "পà§à§°à¦£à¦¾à¦²à§€à§° নীতিয়ে PulseAudio ক real-time scheduling পাবলৈ নিদিয়ে ।"
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "মোনো"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "সনà§à¦®à§à¦–ত কেনà§à¦¦à§à§°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "সনà§à¦®à§à¦–ত কেনà§à¦¦à§à§°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "সনà§à¦®à§à¦–ত বাওà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "পিছত কেনà§à¦¦à§à§°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "পিছত বাওà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "পিছত সোà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Low Frequency Emmiter"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "সনà§à¦®à§à¦–ত কেনà§à¦¦à§à§°à§°-বাওà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "সনà§à¦®à§à¦–ত কেনà§à¦¦à§à§°à§°-সোà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "কাষত বাওà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "কাষত সোà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ০"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ০"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৩"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৪"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৪"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৬"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৭"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৮"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৯"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১০"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১১"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১২"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১৩"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১৪"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১৫"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১৬"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১৭"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১৮"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ১৯"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২০"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২১"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২২"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২৩"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২৪"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২৫"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২৬"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২৭"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২৮"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ২৯"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৩০"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "অ'কà§à¦¸à¦¿à¦²à§‡à§°à¦¿ ৩১"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "ওপৰত কেনà§à¦¦à§à§°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "ওপৰত সনà§à¦®à§à¦–ত কেনà§à¦¦à§à§°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "ওপৰত সনà§à¦®à§à¦–ত বাওà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "ওপৰত সনà§à¦®à§à¦–ত বাওà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "ওপৰত পিছত কেনà§à¦¦à§à§°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "ওপৰত পিছত বাওà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "ওপৰত পিছত সোà¦à¦«à¦¾à¦²à§‡"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(অবৈধ)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "সà§à¦Ÿà¦¿à§°à¦¿à¦“"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "ছাৰাউণà§à¦¡ ৪.০"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "ছাৰাউণà§à¦¡ ৪.১"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "ছাৰাউণà§à¦¡ ৫.০"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "ছাৰাউণà§à¦¡ ৫.১"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "ছাৰাউণà§à¦¡ ৭.১"
@@ -1272,173 +1256,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "অজানা à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ '%s'-ৰ বাবে বাৰà§à¦¤à¦¾ পà§à§°à¦¾à¦ªà§à¦¤ হৈছে"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "সà§à¦Ÿà§à§°à¦¿à¦® drain কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "পà§à¦²à§‡à¦¬à§‡à¦• সà§à¦Ÿà§à§°à¦¿à¦®à¦• drain কৰা হ'ল ।\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "সেৱকৰ সৈতে সংযোগ Drain কৰা হৈছে ।\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "সফলতাৰে সà§à¦Ÿà§à§°à¦¿à¦® নিৰà§à¦®à¦¿à¦¤ হৈছে ।\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "চানেকি spec '%s', চেনেল মেপ '%s'পà§à§°à§Ÿà§‹à¦— কৰা হৈছে\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "যনà§à¦¤à§à§° %s-ৰ সৈতে সংযোগ কৰা হৈছে (%u, %ssuspended) ।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ষà§à¦Ÿà§à§°à¦¿à¦® সংকà§à§°à¦¾à¦¨à§à¦¤ তà§à§°à§à¦Ÿà¦¿: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "সà§à¦Ÿà§à§°à¦¿à¦® যনà§à¦¤à§à§° সà§à¦¥à¦—িত কৰা হৈছে । %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "সà§à¦Ÿà§à§°à¦¿à¦® যনà§à¦¤à§à§° পà§à¦¨à§°à¦¾à§°à¦®à§à¦­ কৰা হৈছে । %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ষà§à¦Ÿà§à§°à¦¿à¦® underrun: %s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ষà§à¦Ÿà§à§°à¦¿à¦® overrun: %s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "সà§à¦Ÿà§à§°à¦¿à¦® আৰমà§à¦­ কৰা হৈছে । %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "%s যনà§à¦¤à§à§°à¦²à§ˆ সà§à¦Ÿà§à§°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° কৰা হৈছে (%u, %ssuspended) ।%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "সà§à¦Ÿà§à§°à¦¿à¦® পà§à§°à¦¶à¦®à¦•à§° গà§à¦£ পৰিবৰà§à¦¤à¦¿à¦¤ হৈছে । %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হৈছে ।%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "<b>সংযোগৰ মোড</b>: %s<br>\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "সà§à¦Ÿà§à§°à¦¿à¦® drain কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "পà§à¦²à§‡à¦¬à§‡à¦• সà§à¦Ÿà§à§°à¦¿à¦®à¦• drain কৰা হ'ল ।\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "সেৱকৰ সৈতে সংযোগ Drain কৰা হৈছে ।\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF পোৱা গ'ল ।\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "চিগà§à¦¨à§‡à¦² পোৱা গ'ল, পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা হৈছে ।\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "latency পাবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "সময়: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1464,8 +1443,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1488,6 +1469,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1538,7 +1524,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1549,88 +1535,133 @@ msgstr ""
"libpulse ৰ সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে %s\n"
"libpulse ৰ সৈতে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "চেনেল মেপ '%s' বৈধ নহয়\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বৈধ নহয় ।"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "চেনেল মেপ '%s' বৈধ নহয়\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "অবৈধ latency নিৰà§à¦§à¦¾à§°à¦£ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "অবৈধ পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾à§° সময়ৰ নিৰà§à¦§à¦¾à§°à¦£ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বৈধ নহয় ।"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "অবৈধ চানেকি নিৰà§à¦§à¦¾à§°à¦¿à¦¤\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• তৰà§à¦• ।\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "চানেকি সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "শবà§à¦¦à§‡à§° নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥ ।\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "চানেকি সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "চেনেল মেপ আৰৠনথিপতà§à§° অমিল ।\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "à¦à¦Ÿà¦¾ %s সà§à¦Ÿà§à§°à¦¿à¦® চানেকি নিৰà§à¦§à¦¾à§°à¦£ '%s' ৰ সৈতে খোলা হৈছে ।\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "ৰেকৰà§à¦¡ কৰা হৈছে"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "পà§à¦²à§‡-বেক"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• তৰà§à¦• ।\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() বà§à¦¯à§°à§à¦¥ ।\n"
@@ -1660,8 +1691,7 @@ msgstr "পà§à¦¨à§°à¦¾à§°à¦®à§à¦­ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "সতৰà§à¦•à¦¬à¦¾à§°à§à¦¤à¦¾: ধà§à¦¬à¦¨à¦¿ সেৱক সà§à¦¥à¦¾à¦¨à§€à§Ÿ নহয়, সà§à¦¥à¦—িত কৰা নহয় ।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT পà§à§°à¦¾à¦ªà§à¦¤ হৈছে, পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা হৈছে ।\n"
@@ -1690,7 +1720,7 @@ msgstr ""
"to\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1701,32 +1731,32 @@ msgstr ""
"libpulse ৰ সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে %s\n"
"libpulse ৰ সৈতে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "পৰিসংখà§à¦¯à¦¾à¦¨ পাবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "বৰà§à¦¤à§à¦¤à¦®à¦¾à¦¨à§‡ বà§à¦¯à§±à¦¹à§ƒà¦¤: %u blocks containing %s bytes total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "সমà§à¦ªà§‚ৰà§à¦£ জীৱনকালত বিতৰণ কৰা: %u blocks containing %s bytes total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "চানেকি কেশà§à¦¬à§° মাপ: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "সেৱক সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1749,12 +1779,12 @@ msgstr ""
"অবিকলà§à¦ªà¦¿à¦¤ উৎস: %s\n"
"কà§à¦•à¦¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "চিঙà§à¦• সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1793,12 +1823,22 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tপাৰà§à¦¶à§à¦¬à§°à§‚প:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tসকà§à§°à¦¿à§Ÿ পাৰà§à¦¶à§à¦¬à§°à§‚প: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "উৎস সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1837,20 +1877,20 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "মডিউল সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1867,12 +1907,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "গà§à§°à¦¾à¦¹à¦• সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1887,12 +1927,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "কাৰà§à¦¡ সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1909,22 +1949,22 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tপাৰà§à¦¶à§à¦¬à§°à§‚প:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tসকà§à§°à¦¿à§Ÿ পাৰà§à¦¶à§à¦¬à§°à§‚প: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "চিঙà§à¦• নিবেশ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1961,12 +2001,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "উৎস আউটপà§à¦Ÿ সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1995,12 +2035,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "চানেকি সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2031,23 +2071,22 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "বà§à¦¯à§°à§à¦¥à¦¤à¦¾: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "চানেকি আপল'ড বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "নথিপতà§à§°à§° অসময়ত হোৱা সমাপà§à¦¤à¦¿\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2062,6 +2101,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2093,7 +2134,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2104,71 +2145,74 @@ msgstr ""
"libpulseৰ সৈতে সঙà§à¦•à¦²à¦¨ কৰা %s\n"
"libpulse-ৰ সৈতে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "তà§à¦²à¦¿ লোৱাৰ উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অনà§à¦—à§à§°à¦¹ কৰে à¦à¦•à¦Ÿà¦¿ চানেকি নথিপতà§à§° উলà§à¦²à§‡à¦– কৰà§à¦¨\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "শবà§à¦¦à§‡à§° নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "à¦à¦Ÿà¦¾ %s সà§à¦Ÿà§à§°à¦¿à¦® চানেকি নিৰà§à¦§à¦¾à§°à¦£ '%s' ৰ সৈতে খোলা হৈছে ।\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "বাজানোৰ উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ চানেকি নথিপতà§à§° উলà§à¦²à§‡à¦– কৰা আৱশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "আà¦à¦¤à§°à¦¾à¦¬à¦²à§ˆ à¦à¦Ÿà¦¾ চানেকি নাম দিব লাগিব \n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "চিঙà§à¦• ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ আৰৠà¦à¦Ÿà¦¾ চিঙà§à¦• নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "উৎস আউটপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦Ÿà¦¿ উৎস নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "মডিউলৰ নাম আৰৠতৰà§à¦• নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "মডিউল ইনà§à¦¡à§‡à¦•à§à¦¸ নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• চিঙà§à¦• নিৰà§à¦§à¦¾à§°à¦£ কৰা যাবে না । বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦• ।\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• উৎস নিৰà§à¦§à¦¾à§°à¦£ কৰা যাবে না । বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦• ।\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "কাৰà§à¦¡à§‡à§° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦Ÿà¦¿ পাৰà§à¦¶à§à¦¬à§°à§‚পৰ নাম উলà§à¦²à§‡à¦– কৰা আৱশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "কাৰà§à¦¡à§‡à§° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦Ÿà¦¿ পাৰà§à¦¶à§à¦¬à§°à§‚পৰ নাম উলà§à¦²à§‡à¦– কৰা আৱশà§à¦¯à¦•\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "কাৰà§à¦¡à§‡à§° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦Ÿà¦¿ পাৰà§à¦¶à§à¦¬à§°à§‚পৰ নাম উলà§à¦²à§‡à¦– কৰা আৱশà§à¦¯à¦•\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "সঞà§à¦šà¦¾à¦²à¦¨à§° বাবে আদেশ নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহয় ।\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() বà§à¦¯à§°à§à¦¥: %s"
@@ -2252,129 +2296,48 @@ msgstr "কà§à¦•à¦¿ সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ তà§à¦²à¦¿à¦¬à¦²
msgid "Not yet implemented.\n"
msgstr "à¦à¦¤à¦¿à§Ÿà¦¾à¦“ বাসà§à¦¤à¦¬à¦¾à§Ÿà¦¿à¦¤ নহয় ।\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডেমন kill কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ডেমনৰ পৰা কোনো পà§à§°à¦¤à¦¿à¦•à§à§°à¦¿à§Ÿà¦¾ পোৱা নাযায় ।"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "সফলতাৰে সà§à¦Ÿà§à§°à¦¿à¦® নিৰà§à¦®à¦¿à¦¤ হৈছে\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "সà§à¦Ÿà§à§°à¦¿à¦®à§° তà§à§°à§à¦Ÿà¦¿: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ ।\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse ৰ সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে %s\n"
-"libpulse ৰ সৈতে যà§à¦•à§à¦¤ %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "অবৈধ চেনেল মেপ\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "'%s' নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "চেনেল মেপ আৰৠনথিপতà§à§° অমিল ।\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "চানেকি spec '%s' পà§à§°à§Ÿà§‹à¦— কৰা হৈছে\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn লক পà§à§°à§Ÿà§‹à¦— কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2390,7 +2353,7 @@ msgstr ""
"POLLOUT নিৰà§à¦§à¦¾à§°à¦¿à¦¤ হোৱাৰি পিছতো আমি উথিলো -- কিনà§à¦¤à§ তাৰ পিছৰ snd_pcm_avail() ঠ০ "
"দিলে বা অনà§à¦¯ à¦à¦Ÿà¦¾ মান < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2406,34 +2369,130 @@ msgstr ""
"POLLIN নিৰà§à¦§à¦¾à§°à¦¿à¦¤ হোৱাৰি পিছতো আমি উথিলো -- কিনà§à¦¤à§ তাৰ পিছৰ snd_pcm_avail() ঠ০ "
"দিলে বা অনà§à¦¯ à¦à¦Ÿà¦¾ মান < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "নিৰà§à¦—ম %s + নিবেশ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "নিৰà§à¦—ম %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "নিবেশ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio ধà§à¦¬à¦¨à¦¿ সেৱক"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Analog Mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analog Stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digital Stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digital Stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analog ছাৰাউণà§à¦¡ 4.০"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digital ছাৰাউণà§à¦¡ 4.০ (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analog ছাৰাউণà§à¦¡ 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analog ছাৰাউণà§à¦¡ 5.০"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analog ছাৰাউণà§à¦¡ 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digital ছাৰাউণà§à¦¡ 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analog ছাৰাউণà§à¦¡ 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "নিৰà§à¦—ম %s + নিবেশ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "নিৰà§à¦—ম %s"
+
+#~ msgid "Input %s"
+#~ msgstr "নিবেশ %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "সফলতাৰে সà§à¦Ÿà§à§°à¦¿à¦® নিৰà§à¦®à¦¿à¦¤ হৈছে\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "সà§à¦Ÿà§à§°à¦¿à¦®à§° তà§à§°à§à¦Ÿà¦¿: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ ।\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "libpulse ৰ সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে %s\n"
+#~ "libpulse ৰ সৈতে যà§à¦•à§à¦¤ %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "অবৈধ চেনেল মেপ\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "'%s' নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "চেনেল মেপ আৰৠনথিপতà§à§° অমিল ।\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "চানেকি spec '%s' পà§à§°à§Ÿà§‹à¦— কৰা হৈছে\n"
diff --git a/po/bn_IN.po b/po/bn_IN.po
index fbb90837..9214f16c 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-08 16:21+0530\n"
"Last-Translator: Runa Bhattacharjee <runab@fedoraproject.org>\n"
"Language-Team: Bengali INDIA <fedora-trans-bn_in@redhat.com>\n"
@@ -17,51 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— মোনো"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সà§à¦Ÿà¦¿à¦°à¦¿à¦“"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "ডিজিটà§à¦¯à¦¾à¦² সà§à¦Ÿà¦¿à¦°à¦¿à¦“ (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "ডিজিটà§à¦¯à¦¾à¦² সà§à¦Ÿà¦¿à¦°à¦¿à¦“ (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সà§à¦Ÿà¦¿à¦°à¦¿à¦“ ৪.০"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "ডিজিটà§à¦¯à¦¾à¦² সারাউনà§à¦¡ ৪.০ (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৪.১"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৫.০"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৫.১"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "ডিজিটà§à¦¯à¦¾à¦² সারাউনà§à¦¡ ৫.১ (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৭.১"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +29,7 @@ msgstr ""
"সমà§à¦­à¦¬à¦¤ à¦à¦Ÿà¦¿ ALSA ডà§à¦°à¦¾à¦‡à¦­à¦¾à¦° '%s'-র à¦à¦•à¦Ÿà¦¿ বাগ। অনà§à¦—à§à¦°à¦¹ করে à¦à¦‡ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§‡ ALSA "
"ডিভেলপরদের সূচিত করà§à¦¨à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +41,7 @@ msgstr ""
"সমà§à¦­à¦¬à¦¤ à¦à¦Ÿà¦¿ ALSA ডà§à¦°à¦¾à¦‡à¦­à¦¾à¦° '%s'-র à¦à¦•à¦Ÿà¦¿ বাগ। অনà§à¦—à§à¦°à¦¹ করে à¦à¦‡ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§‡ ALSA "
"ডিভেলপরদের সূচিত করà§à¦¨à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +53,24 @@ msgstr ""
"সমà§à¦­à¦¬à¦¤ à¦à¦Ÿà¦¿ ALSA ডà§à¦°à¦¾à¦‡à¦­à¦¾à¦° '%s'-র à¦à¦•à¦Ÿà¦¿ বাগ। অনà§à¦—à§à¦°à¦¹ করে à¦à¦‡ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§‡ ALSA "
"ডিভেলপরদের সূচিত করà§à¦¨à¥¤"
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "অভà§à¦¯à¦¨à§à¦¤à¦°à§€à¦£ অডিও"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "মোডেম"
@@ -171,105 +140,105 @@ msgstr "auth পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit থেকে '%s' পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "%s সিগনà§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হচà§à¦›à§‡à¥¤"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ সনà§à¦§à¦¾à¦¨ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "দল '%s' সনà§à¦§à¦¾à¦¨ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ '%s' (UID %lu) ও দল '%s' (GID %lu) পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° ও '%s' দলের GID-র মধà§à¦¯à§‡ গরমিল।"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
"'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত ডিরেকà§à¦Ÿà¦°à¦¿ রূপে '%s' ধারà§à¦¯ করা হয়নি, অগà§à¦°à¦¾à¦¹à§à¦¯ করা হবে।"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' নিরà§à¦®à¦¾à¦£ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "দলের তালিকা পরিবরà§à¦¤à¦¨ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID পরিবরà§à¦¤à¦¨ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID পরিবরà§à¦¤à¦¨ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "root-র অধিকার সাফলà§à¦¯à§‡à¦° সাথে বরà§à¦œà¦¨ করা হয়েছে।"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡, সিসà§à¦Ÿà§‡à¦®à¦¬à§à¦¯à¦¾à¦ªà§€ মোড সমরà§à¦¥à¦¿à¦¤ নয়।"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "কমানà§à¦¡-লাইন পারà§à¦¸ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "অধিক গà§à¦°à§à¦¤à§à¦¬à¦¸à¦¹ শিডিউলিংয়ের সà§à¦¬à¦¿à¦§à¦¾ উপলবà§à¦§à¦•à¦¾à¦°à§€ '%s' দলে আমরা উপসà§à¦¥à¦¿à¦¤à¥¤"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "রিয়েল-টাইম শিডিউলিংয়ের সà§à¦¬à¦¿à¦§à¦¾ উপলবà§à¦§à¦•à¦¾à¦°à§€ '%s' দলে আমরা উপসà§à¦¥à¦¿à¦¤à¥¤"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit-র পকà§à¦· থেকে acquire-high-priority অধিকার পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit-র পকà§à¦· থেকে acquire-high-priority অধিকার পà§à¦°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¤ হয়েছে।"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit-র পকà§à¦· থেকে acquire-real-priority অধিকার পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit-র পকà§à¦· থেকে acquire-real-priority অধিকার পà§à¦°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¤ হয়েছে।"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -289,240 +258,250 @@ msgstr ""
"অধিকার পà§à¦°à¦¾à¦ªà§à¦¤ করà§à¦¨, অথবা '%s' দলের সদসà§à¦¯ হন, অথবা সংশà§à¦²à¦¿à¦·à§à¦Ÿ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° জনà§à¦¯ "
"RLIMIT_NICE/RLIMIT_RTPRIO রিসোরà§à¦¸à§‡à¦° সীমা বৃদà§à¦§à¦¿ করà§à¦¨à¥¤"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"কনফিগারেশন দà§à¦¬à¦¾à¦°à¦¾ high-priority শিডিইলিংয়ের সà§à¦¬à¦¿à¦§à¦¾ উপলবà§à¦§ হলেও নিয়মনীতি দà§à¦¬à¦¾à¦°à¦¾ "
"তা অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়।"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO সাফলà§à¦¯à§‡à¦° সাথে বৃদà§à¦§à¦¿ করা হয়েছে"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO বিফল: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE বরà§à¦œà¦¨ করা হচà§à¦›à§‡"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"কনফিগারেশন দà§à¦¬à¦¾à¦°à¦¾ real-time শিডিইলিংয়ের সà§à¦¬à¦¿à¦§à¦¾ উপলবà§à¦§ হলেও নিয়মনীতি দà§à¦¬à¦¾à¦°à¦¾ তা "
"অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়।"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ডেমন চলছে না"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u রূপে ডেমন চলছে"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডেমন kill করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পরিচয়ে à¦à¦‡ পà§à¦°à§‹à¦—à§à¦°à¦¾à¦®à¦Ÿà¦¿ সঞà§à¦šà¦¾à¦²à¦¿à¦¤ হওয়া উচিত নয় (যদি না --system উলà§à¦²à¦¿à¦–িত হয়)।"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-র অধিকার আবশà§à¦¯à¦•à¥¤"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "সিসà§à¦Ÿà§‡à¦® ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸à§‡à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡ --start সমরà§à¦¥à¦¿à¦¤ নয়।"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে, কিনà§à¦¤à§ --disallow-exit নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে, কিনà§à¦¤à§ --disallow-module-loading নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে, SHM মোড বলপূরà§à¦¬à¦• নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হচà§à¦›à§‡!"
# http://linux.die.net/man/1/pulseaudio à¦à¦–ানে রেফারেনà§à¦¸ পাওয়া যাবে
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"সিসà§à¦Ÿà§‡à¦® মোডে চলছে, করà§à¦®à¦¹à§€à¦¨ অবসà§à¦¥à¦¾à¦° জনà§à¦¯ ধারà§à¦¯ সময়সীমা পূরà§à¦¤à§€ পরে পà§à¦°à¦¸à§à¦¥à¦¾à¦¨à§‡à¦° বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾ "
"বলপূরà§à¦¬à¦• নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হচà§à¦›à§‡!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "পাইপ বিফল: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ডেমন আরমà§à¦­ করতে বিফল।"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "সাফলà§à¦¯à§‡à¦° সাথে ডেমন আরমà§à¦­ করা হয়েছে।"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦Ÿà¦¿ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "কমà§à¦ªà¦¾à¦‡à¦²à§‡à¦¶à¦¨à§‡à¦° হোসà§à¦Ÿ: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "কমà§à¦ªà¦¾à¦‡à¦²à¦¶à¦¨à§‡à¦° CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "চিহà§à¦¨à¦¿à¦¤ হোসà§à¦Ÿà§‡ চলছে: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পাওয়া গিয়েছে।"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "পেজের মাপ %lu বাইট"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে: না"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মোডে চলছে: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "সরà§à¦¬à¦¾à¦ªà§‡à¦•à§à¦· উতà§à¦¤à¦® বিলà§à¦¡: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "সরà§à¦¬à¦¾à¦ªà§‡à¦•à§à¦· উতà§à¦¤à¦® বিলà§à¦¡: না"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ করা হয়েছে, সকল অà§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦Ÿ নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হয়েছে।"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ করা হয়েছে, শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ফাসà§à¦Ÿ পাথ অà§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦Ÿ নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হয়েছে।"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "সকল অà§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦Ÿ সকà§à¦°à¦¿à§Ÿ করা হয়েছে।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "মেশিন ID পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "মেশিন ID হল %s।"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "মেশিন ID হল %s।"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "রান-টাইম ডিরেকà§à¦Ÿà¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "অবসà§à¦¥à¦¾à¦¸à§‚চক ডিরেকà§à¦Ÿà¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "উচà§à¦š-রেসোলিউশনের নতà§à¦¨ টাইমার উপলবà§à¦§ রয়েছে! পরীকà§à¦·à¦¾ করে দেখà§à¦¨!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "উচà§à¦š-রেসোলিউশনের নতà§à¦¨ টাইমার সহ Linux সকà§à¦°à¦¿à§Ÿ করা বাঞà§à¦›à¦¨à§€à§Ÿ!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "ডেমন আরমà§à¦­ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"লোড করা মডিউল বিনা ডেমন আরমà§à¦­ করা হয়েছে à¦à¦¬à¦‚ কোনো করà§à¦® সঞà§à¦šà¦¾à¦²à¦¨ করা সমà§à¦­à¦¬ নয়।"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "ডেমন আরমà§à¦­ করা হয়েছে।"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "ডেমন বনà§à¦§ করার পà§à¦°à¦•à§à¦°à¦¿à§Ÿà¦¾ আরমà§à¦­ করা হয়েছে।"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "ডেমন বনà§à¦§ করা হয়েছে।"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -674,15 +653,15 @@ msgstr ""
"\n"
" -n ডিফলà§à¦Ÿ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ ফাইল লোড করা হবে না\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -690,52 +669,52 @@ msgstr ""
"--log-level-র কà§à¦·à§‡à¦¤à§à¦°à§‡ লগ সà§à¦¤à¦°à§‡à¦° আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ (0..4 সীমার মধà§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সংখà§à¦¯à¦¾ "
"অথবা debug, info, notice, warn, ও error-র মধà§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ মান)।"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "লগের উদà§à¦¦à¦¿à¦·à§à¦Ÿ সà§à¦¥à¦¨ বৈধ নয়: 'syslog', 'stderr' অথবা 'auto' পà§à¦°à§Ÿà§‹à¦— করà§à¦¨à¥¤"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² পদà§à¦§à¦¤à¦¿ '%s' বৈধ নয়।"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§Ÿà¦¾à¦¨ আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
@@ -774,77 +753,82 @@ msgstr "বà§à¦¯à¦¬à¦¹à¦¾à¦° পদà§à¦§à¦¤à¦¿: %s\n"
msgid "Load Once: %s\n"
msgstr "à¦à¦•à¦¬à¦¾à¦° লোড করা হবে: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ টারà§à¦—েট '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগের সà§à¦¤à¦° '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] রি-সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² পদà§à¦§à¦¤à¦¿ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡ rlimit সমরà§à¦¥à¦¿à¦¤ নয়।"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° বিনà§à¦¯à¦¾à¦¸ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° মাতà§à¦°à¦¾ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° চà§à¦¯à¦¾à¦¨à§‡à¦² '%s' বৈধ নয়"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশ সংখà§à¦¯à¦¾ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশের মাপ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à¦° '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "কনফিগারেশন ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -895,237 +879,237 @@ msgstr ""
"সিসà§à¦Ÿà§‡à¦®à§‡à¦° নিয়ম-নীতির কারণে PulseAudio দà§à¦¬à¦¾à¦°à¦¾ রিয়েল-টাইম শিডিউলিং পà§à¦°à§Ÿà§‹à¦— করা "
"সমà§à¦­à¦¬ হচà§à¦›à§‡ না।"
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "মোনো"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "সামনে কেনà§à¦¦à§à¦°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "সামনে বাà¦à¦¦à¦¿à¦•à§‡"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "সামনে ডানদিকে"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "পিছনে কেনà§à¦¦à§à¦°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "পিছনে বাà¦à¦¦à¦¿à¦•à§‡"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "পিছনে ডানদিকে"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "কম ফà§à¦°à¦¿à¦•à§‹à§Ÿà§‡à¦¨à§à¦¸à¦¿à¦° নিঃসরণকারী"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "সামনে কেনà§à¦¦à§à¦°à§‡à¦°-বাà¦à¦¦à¦¿à¦•à§‡"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "সামনে কেনà§à¦¦à§à¦°à§‡à¦°-ডানদিকে"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "পাশে বাà¦à¦¦à¦¿à¦•à§‡"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "পাশে ডানদিকে"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ০"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৩"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৪"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৫"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৬"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৭"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৮"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৯"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১০"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১১"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১২"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১৩"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১৪"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১৫"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১৬"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১৭"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১৮"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ১৯"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২০"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২১"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২২"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২৩"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২৪"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২৫"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২৬"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২৭"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২৮"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ২৯"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৩০"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "অকà§à¦¸à¦¿à¦²à¦¾à¦°à¦¿ ৩১"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "উপরে কেনà§à¦¦à§à¦°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "উপরে সামনে কেনà§à¦¦à§à¦°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "উপরে সামনে বাà¦à¦¦à¦¿à¦•à§‡"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "উপরে সামনে ডানদিকে"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "উপরে পিছনে কেনà§à¦¦à§à¦°à¦¸à§à¦¥à¦¿à¦¤"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "উপরে পিছনে বাà¦à¦¦à¦¿à¦•à§‡"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "উপরে পিছনে ডানদিকে"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(অবৈধ)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "সà§à¦Ÿà¦¿à¦°à¦¿à¦“"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "সারাউনà§à¦¡ ৪.০"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "সারাউনà§à¦¡ ৪.১"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "সারাউনà§à¦¡ ৫.০"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "সারাউনà§à¦¡ ৫.১"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "সারাউনà§à¦¡ ৭.১"
@@ -1286,177 +1270,172 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "অজানা à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ '%s'-র জনà§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে"
-#: ../src/utils/pacat.c:94
+# drain a stream = যখন সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° মধà§à¦¯à§‡ উপসà§à¦¥à¦¿à¦¤ সকল তথà§à¦¯ আহরণ করা হয় ও সà§à¦Ÿà§à¦°à¦¿à¦®à¦Ÿà¦¿ সমà§à¦ªà§‚রà§à¦£à¦°à§‚পে ফাà¦à¦•à¦¾ হয়ে যায়।
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডà§à¦°à§‡à¦‡à¦¨ (অরà§à¦¥à¦¾à§Ž ফাà¦à¦•à¦¾) করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "পà§à¦²à§‡-বà§à¦¯à¦¾à¦• সà§à¦Ÿà§à¦°à¦¿à¦® ফাà¦à¦•à¦¾ করা হয়েছে।\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "সারà§à¦­à¦¾à¦°à§‡à¦° সাথে সà§à¦¥à¦¾à¦ªà¦¿à¦¤ সংযোগ ফাà¦à¦•à¦¾ করা হচà§à¦›à§‡à¥¤\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "সাফলà§à¦¯à§‡à¦° সাথে সà§à¦Ÿà§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হয়েছে।\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "বাফারের মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° spec '%s', ও চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ষà§à¦Ÿà§à¦°à¦¿à¦® সংকà§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦Ÿà¦¿: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস সà§à¦¥à¦—িত করা হয়েছে। %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ করা হয়েছে। %s \n"
# underrun = ধীর গতির সà§à¦Ÿà§à¦°à¦¿à¦®
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ধীর গতির সà§à¦Ÿà§à¦°à¦¿à¦®.%s \n"
# overrun=the stream fills up the allocated buffer space and there is no more space for it
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® মাতà§à¦°à¦¾ অতিকà§à¦°à¦® করেছে।%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® আরমà§à¦­ করা হয়েছে। %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "%s ডিভাইসে সà§à¦Ÿà§à¦°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হয়েছে (%u, %ssuspended)।%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "না "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® বাফারের অà§à¦¯à¦¾à¦Ÿà§à¦°à¦¿à¦¬à¦¿à¦‰à¦Ÿ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে। %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হয়েছে।%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "সংযোগ বিফল: %s\n"
-# drain a stream = যখন সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° মধà§à¦¯à§‡ উপসà§à¦¥à¦¿à¦¤ সকল তথà§à¦¯ আহরণ করা হয় ও সà§à¦Ÿà§à¦°à¦¿à¦®à¦Ÿà¦¿ সমà§à¦ªà§‚রà§à¦£à¦°à§‚পে ফাà¦à¦•à¦¾ হয়ে যায়।
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডà§à¦°à§‡à¦‡à¦¨ (অরà§à¦¥à¦¾à§Ž ফাà¦à¦•à¦¾) করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "পà§à¦²à§‡-বà§à¦¯à¦¾à¦• সà§à¦Ÿà§à¦°à¦¿à¦® ফাà¦à¦•à¦¾ করা হয়েছে।\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "সারà§à¦­à¦¾à¦°à§‡à¦° সাথে সà§à¦¥à¦¾à¦ªà¦¿à¦¤ সংযোগ ফাà¦à¦•à¦¾ করা হচà§à¦›à§‡à¥¤\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "ফাইলের সমাপà§à¦¤à¦¿ সনাকà§à¦¤ হয়েছে। \n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "সিগনà§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হবে।\n"
# latency here = delay (technical term
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "লেটেনà§à¦¸à¦¿à¦° পরিমাণ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "সময়: %0.3f সেকেনà§à¦¡; লেটেনà§à¦¸à¦¿: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1482,8 +1461,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1506,6 +1487,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1553,7 +1539,7 @@ msgstr ""
" --process-time=BYTES বাইট অনà§à¦¯à¦¾à§Ÿà§€, পà§à¦°à¦¤à¦¿à¦Ÿà¦¿ অনà§à¦°à§‹à¦§à§‡à¦° জনà§à¦¯ "
"নিরà§à¦§à¦¾à¦°à¦¿à¦¤ পà§à¦°à¦¸à§‡à¦¸ সময় অনà§à¦°à§‹à¦§ জানিয়ে দিন।\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1564,88 +1550,133 @@ msgstr ""
"libpulse সহযোগে কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে %s\n"
"libpulse-র সাথে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বৈধ নয়\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² পদà§à¦§à¦¤à¦¿ '%s' বৈধ নয়।"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বৈধ নয়\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "লেটেনà§à¦¸à¦¿à¦° জনà§à¦¯ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "পà§à¦°à¦¸à§‡à¦¸à§‡à¦° সময়ের বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² পদà§à¦§à¦¤à¦¿ '%s' বৈধ নয়।"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "অবৈধ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² নিরà§à¦§à¦¾à¦°à¦¿à¦¤\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿà¥¤\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª ও সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° মাপে গরমিল\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "à¦à¦•à¦Ÿà¦¿ %s সà§à¦Ÿà§à¦°à¦¿à¦® '%s' সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² বৈশিষà§à¦Ÿà§à¦¯ সহ খোলা হচà§à¦›à§‡à¥¤\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "রেকরà§à¦¡ করা হচà§à¦›à§‡"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "পà§à¦²à§‡-বà§à¦¯à¦¾à¦•"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿà¥¤\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() বà§à¦¯à¦°à§à¦¥à¥¤\n"
@@ -1675,8 +1706,7 @@ msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: শবà§à¦¦à§‡à¦° সারà§à¦­à¦¾à¦°à¦Ÿà¦¿ সà§à¦¥à¦¾à¦¨à§€à§Ÿ নয় ও সà§à¦¥à¦—িত করা হচà§à¦›à§‡ না।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হয়েছে।\n"
@@ -1705,7 +1735,7 @@ msgstr ""
"নাম\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1716,33 +1746,33 @@ msgstr ""
"libpulse সহযোগে কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে %s\n"
"libpulse-র সাথে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "পরিসংখà§à¦¯à¦¾à¦¨: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "বরà§à¦¤à¦®à¦¾à¦¨à§‡ বà§à¦¯à¦¬à¦¹à§ƒà¦¤: %u বà§à¦²à¦•à§‡à¦° মধà§à¦¯à§‡ উপসà§à¦¥à¦¿à¦¤ সরà§à¦¬à¦®à§‹à¦Ÿ %s বাইট।\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"সমà§à¦ªà§‚রà§à¦£ করà§à¦®à¦•à¦¾à¦²à§‡à¦° জনà§à¦¯ বরাদà§à¦¦ করা হয়েছে: %u বà§à¦²à¦•à§‡à¦° মধà§à¦¯à§‡ উপসà§à¦¥à¦¿à¦¤ সরà§à¦¬à¦®à§‹à¦Ÿ %s বাইট।\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² কà§à¦¯à¦¾à¦¶à§‡à¦° মাপ: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "সারà§à¦­à¦¾à¦° সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1765,12 +1795,12 @@ msgstr ""
"ডিফলà§à¦Ÿ সোরà§à¦¸: %s\n"
"কà§à¦•à¦¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "সিংক সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1809,12 +1839,22 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tপà§à¦°à§‹à¦«à¦¾à¦‡à¦²:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tসকà§à¦°à¦¿à§Ÿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "সোরà§à¦¸ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1853,20 +1893,20 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "মডিউল সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1883,12 +1923,12 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1903,12 +1943,12 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "কারà§à¦¡ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1925,22 +1965,22 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tপà§à¦°à§‹à¦«à¦¾à¦‡à¦²:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tসকà§à¦°à¦¿à§Ÿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "সিংক ইনপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1977,12 +2017,12 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "সোরà§à¦¸ আউটপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2011,13 +2051,13 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
# Lazy = low quality sample
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2048,23 +2088,22 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "বà§à¦¯à¦°à§à¦¥à¦¤à¦¾: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² আপলোড করতে বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "সমà§à¦ªà§‚রà§à¦£ হওয়ার পূরà§à¦¬à§‡ ফাইল সমাপà§à¦¤ হয়েছে\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2079,6 +2118,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2108,7 +2149,7 @@ msgstr ""
" -s, --server=SERVER সংযোগ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ চিহà§à¦¨à¦¿à¦¤ সারà§à¦­à¦¾à¦°\n"
" -n, --client-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° পরিচয়\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2119,71 +2160,74 @@ msgstr ""
"libpulse সহযোগে কমà§à¦ªà¦¾à¦‡à¦² করা %s\n"
"libpulse-র সাথে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "লোড করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অনà§à¦—à§à¦°à¦¹ করে à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করà§à¦¨\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "à¦à¦•à¦Ÿà¦¿ %s সà§à¦Ÿà§à¦°à¦¿à¦® '%s' সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² বৈশিষà§à¦Ÿà§à¦¯ সহ খোলা হচà§à¦›à§‡à¥¤\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "বাজানোর উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "অপসারণের উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সিংক নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "সোরà§à¦¸ আউটপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "মডিউলের নাম ও আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "মডিউল ইনà§à¦¡à§‡à¦•à§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সিংক নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "কারà§à¦¡à§‡à¦° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "কারà§à¦¡à§‡à¦° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "কারà§à¦¡à§‡à¦° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "কোনো কমানà§à¦¡ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি।\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() বà§à¦¯à¦°à§à¦¥: %s"
@@ -2267,128 +2311,48 @@ msgstr "কà§à¦•à¦¿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ লোড করà¦
msgid "Not yet implemented.\n"
msgstr "à¦à¦–নো বাসà§à¦¤à¦¬à¦¾à§Ÿà¦¿à¦¤ হয়নি।\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডেমন kill করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ডেমন থেকে কোনো পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à§Ÿà¦¾ পাওয়া যাচà§à¦›à§‡ না।"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "সাফলà§à¦¯à§‡à¦° সাথে সà§à¦Ÿà§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হয়েছে\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® সংকà§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦Ÿà¦¿: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤à¥¤\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help à¦à¦‡ সাহাযà§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
-" --version সংসà§à¦•à¦°à¦£ সংখà§à¦¯à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
-"\n"
-" -v, --verbose ভারà§à¦¬à§‹à¦¸ করà§à¦® সকà§à¦°à¦¿à§Ÿ করা হবে\n"
-"\n"
-" -s, --server=SERVER সংযোগ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ চিহà§à¦¨à¦¿à¦¤ সারà§à¦­à¦¾à¦°à§‡à¦° "
-"নাম\n"
-" -d, --device=DEVICE সংযোগ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ চিহà§à¦¨à¦¿à¦¤ সিংকের "
-"নাম\n"
-" -n, --client-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° নাম\n"
-" --stream-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° নাম\n"
-" --volume=VOLUME 0...65536 সীমার মধà§à¦¯à§‡ পà§à¦°à¦¾à¦°à¦®à§à¦­à¦¿à¦• "
-"(লিনিয়ার) আওয়াজ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨\n"
-" --channel-map=CHANNELMAP বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª নিরà§à¦§à¦¾à¦°à¦£\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse সহযোগে কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে %s\n"
-"libpulse-র সাথে যà§à¦•à§à¦¤ %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "অবৈধ চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ফাইল '%s' খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª ও ফাইলে গরমিল।\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² spec '%s' পà§à¦°à§Ÿà§‹à¦— করা হচà§à¦›à§‡\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn লক পà§à¦°à§Ÿà§‹à¦— করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2405,7 +2369,7 @@ msgstr ""
"POLLOUT set দà§à¦¬à¦¾à¦°à¦¾ চেতাবনী সৃষà§à¦Ÿà¦¿ হয়েছে -- পরবরà§à¦¤à§€ snd_pcm_avail() থেকে 0 অথবা < "
"min_avail-র থেকে কম অনà§à¦¯ à¦à¦•à¦Ÿà¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2422,34 +2386,128 @@ msgstr ""
"POLLIN set দà§à¦¬à¦¾à¦°à¦¾ চেতাবনী সৃষà§à¦Ÿà¦¿ হয়েছে -- পরবরà§à¦¤à§€ snd_pcm_avail() থেকে 0 অথবা < "
"min_avail-র থেকে কম অনà§à¦¯ à¦à¦•à¦Ÿà¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "আউটপà§à¦Ÿ %s + ইনপà§à¦Ÿ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "আউটপà§à¦Ÿ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "ইনপà§à¦Ÿ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "হাই-ফিডেলিটি পà§à¦²à§‡-বà§à¦¯à¦¾à¦• (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "টেলিফোনি ডà§à¦ªà§à¦²à§‡ (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio শবà§à¦¦à§‡à¦° সারà§à¦­à¦¾à¦°"
+
+#~ msgid "Analog Mono"
+#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— মোনো"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সà§à¦Ÿà¦¿à¦°à¦¿à¦“"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "ডিজিটà§à¦¯à¦¾à¦² সà§à¦Ÿà¦¿à¦°à¦¿à¦“ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "ডিজিটà§à¦¯à¦¾à¦² সà§à¦Ÿà¦¿à¦°à¦¿à¦“ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সà§à¦Ÿà¦¿à¦°à¦¿à¦“ ৪.০"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "ডিজিটà§à¦¯à¦¾à¦² সারাউনà§à¦¡ ৪.০ (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৪.১"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৫.০"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৫.১"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "ডিজিটà§à¦¯à¦¾à¦² সারাউনà§à¦¡ ৫.১ (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¾à¦²à¦— সারাউনà§à¦¡ ৭.১"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "আউটপà§à¦Ÿ %s + ইনপà§à¦Ÿ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "আউটপà§à¦Ÿ %s"
+
+#~ msgid "Input %s"
+#~ msgstr "ইনপà§à¦Ÿ %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "সাফলà§à¦¯à§‡à¦° সাথে সà§à¦Ÿà§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হয়েছে\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® সংকà§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦Ÿà¦¿: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤à¥¤\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help à¦à¦‡ সাহাযà§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
+#~ " --version সংসà§à¦•à¦°à¦£ সংখà§à¦¯à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
+#~ "\n"
+#~ " -v, --verbose ভারà§à¦¬à§‹à¦¸ করà§à¦® সকà§à¦°à¦¿à§Ÿ করা হবে\n"
+#~ "\n"
+#~ " -s, --server=SERVER সংযোগ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ চিহà§à¦¨à¦¿à¦¤ "
+#~ "সারà§à¦­à¦¾à¦°à§‡à¦° নাম\n"
+#~ " -d, --device=DEVICE সংযোগ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ চিহà§à¦¨à¦¿à¦¤ সিংকের "
+#~ "নাম\n"
+#~ " -n, --client-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° নাম\n"
+#~ " --stream-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° নাম\n"
+#~ " --volume=VOLUME 0...65536 সীমার মধà§à¦¯à§‡ পà§à¦°à¦¾à¦°à¦®à§à¦­à¦¿à¦• "
+#~ "(লিনিয়ার) আওয়াজ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨\n"
+#~ " --channel-map=CHANNELMAP বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª নিরà§à¦§à¦¾à¦°à¦£\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "libpulse সহযোগে কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে %s\n"
+#~ "libpulse-র সাথে যà§à¦•à§à¦¤ %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "অবৈধ চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "ফাইল '%s' খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª ও ফাইলে গরমিল।\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² spec '%s' পà§à¦°à§Ÿà§‹à¦— করা হচà§à¦›à§‡\n"
diff --git a/po/ca.po b/po/ca.po
index 5a7fa15c..878e2293 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,77 +1,37 @@
# Catalan translation of pulseaudio by Softcatalà
# Copyright (C) 2008 Free Software Foundation
# This file is distributed under the same license as the pulseaudio package.
+#
# Xavier Conde Rueda <xavi.conde@gmail.com>, 2008.
+# Agustí Grau <fletxa@gmail.com>, 2009.
+# Judith Pintó Subirada <judithp@gmail.com>
#
# This file is translated according to the glossary and style guide of
-# Softcatalà. If you plan to modify this file, please read first the page
-# of the Catalan translation team for the Fedora project at:
-# http://www.softcatala.org/projectes/fedora/
-# and contact the previous translator.
+# Softcatalà. If you plan to modify this file, please read first the page
+# of the Catalan translation team for the Fedora project at:
+# http://www.softcatala.org/projectes/fedora/
+# and contact the previous translator.
#
# Aquest fitxer s'ha de traduir d'acord amb el recull de termes i la guia
-# d'estil de Softcatalà. Si voleu modificar aquest fitxer, llegiu si
-# us plau la pàgina de catalanització del projecte Fedora a:
-# http://www.softcatala.org/projectes/fedora/
-# i contacteu l'anterior traductor/a.
+# d'estil de Softcatalà. Si voleu modificar aquest fitxer, llegiu si
+# us plau la pàgina de catalanització del projecte Fedora a:
+# http://www.softcatala.org/projectes/fedora/
+# i contacteu l'anterior traductor/a.
+#
#
msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
-"PO-Revision-Date: 2009-03-18 21:47+0100\n"
-"Last-Translator: Agustí Grau <fletxa@gmail.com>\n"
-"Language-Team: Catalan <fedora@softcatala.net>\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: 2009-06-10 18:47+0200\n"
+"Last-Translator: Judith Pintó Subirada <judithp@gmail.com>\n"
+"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Mono analògic"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Estèreo analògic"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Estèreo digital (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Estèreo digital (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Envolvent 4.0 analògic"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Envolvent 4.0 digital (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Envolvent 4.1 analògic"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Envolvent 5.0 analògic"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Envolvent 5.1 analògic"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Envolvent 5.1 digital (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Envolvent analògic 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -79,13 +39,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
-"snd_pcm_avail() ha retornat un valor que és excepcionalment gran: %lu bytes "
-"(%lu ms).\n"
-"En la majoria dels casos és un error del controlador ALSA '%s'. Siusplau, "
-"informeu d'aquest\n"
-"incident als desenvolupadors d'ALSA."
+"snd_pcm_avail() ha retornat un valor excepcionalment gran: %lu bytes (%lu "
+"ms).\n"
+"Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu "
+"d'aquest incident als desenvolupadors de l'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -95,11 +54,10 @@ msgid ""
msgstr ""
"snd_pcm_delay() ha retornat un valor excepcionalment gran: %li bytes (%s%lu "
"ms).\n"
-"En la majoria dels casos és un error del controlador ALSA '%s'. Siusplau, "
-"informeu d'aquest\n"
-"incident als desenvolupadors d'ALSA."
+"Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu "
+"d'aquest incident als desenvolupadors de l'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -109,18 +67,29 @@ msgid ""
msgstr ""
"snd_pcm_mmap_begin() ha retornat un valor excepcionalment gran: %lu bytes (%"
"lu ms).\n"
-"En la majoria dels casos és un error del controlador ALSA '%s'. Siusplau, "
-"informeu d'aquest\n"
-"incident als desenvolupadors d'ALSA."
+"Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu "
+"d'aquest incident als desenvolupadors de l'ALSA."
-#: ../src/pulsecore/sink.c:2141
-#, fuzzy
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
-msgstr "S'ha produït un error intern"
+msgstr "Audio intern"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
-msgstr ""
+msgstr "Mòdem"
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
@@ -128,11 +97,11 @@ msgstr "No s'ha trobat el carregador lt_dlopen original."
#: ../src/daemon/ltdl-bind-now.c:129
msgid "Failed to allocate new dl loader."
-msgstr "S'ha produït un error en allotjar el nou carregador dl."
+msgstr "No s'ha pogut allotjar el nou carregador dl."
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
-msgstr "S'ha produït un error en afegir bind-now-loader."
+msgstr "No s'ha pogut afegir bind-now-loader."
#: ../src/daemon/polkit.c:55
#, c-format
@@ -146,27 +115,27 @@ msgstr "No s'ha pogut obtenir una crida del PID: %s"
#: ../src/daemon/polkit.c:77
msgid "Cannot set UID on caller object."
-msgstr "No s'ha pogut especificar UID en l'objecte crida."
+msgstr "No s'ha pogut especificar l'UID en l'objecte crida."
#: ../src/daemon/polkit.c:82
msgid "Failed to get CK session."
-msgstr "S'ha produït un error en obtenir la sessió CK"
+msgstr "No s'ha pogut obtenir la sessió CK."
#: ../src/daemon/polkit.c:90
msgid "Cannot set UID on session object."
-msgstr "No s'ha pogut especificar UID en l'objecte sessió"
+msgstr "No s'ha pogut definir l'UID en l'objecte sessió."
#: ../src/daemon/polkit.c:95
msgid "Cannot allocate PolKitAction."
-msgstr "No s'ha pogut introduïr PolKitAction"
+msgstr "No s'ha pogut assignar PolKitAction."
#: ../src/daemon/polkit.c:100
msgid "Cannot set action_id"
-msgstr "No s'ha pogut especificar action_id"
+msgstr "No s'ha pogut definir action_id"
#: ../src/daemon/polkit.c:105
msgid "Cannot allocate PolKitContext."
-msgstr "No s'ha pogut introduïr PolKitContext"
+msgstr "No s'ha pogut assignar PolKitContext."
#: ../src/daemon/polkit.c:110
#, c-format
@@ -176,119 +145,119 @@ msgstr "No s'ha pogut inicialitzar PolKitContext: %s"
#: ../src/daemon/polkit.c:119
#, c-format
msgid "Could not determine whether caller is authorized: %s"
-msgstr "S'ha produït un error en determinar si la crida està autoritzada: %s"
+msgstr "No s'ha pogut determinar si la crida està autoritzada: %s"
#: ../src/daemon/polkit.c:139
#, c-format
msgid "Cannot obtain auth: %s"
-msgstr "No s'ha pogut obtenir autorització: %s"
+msgstr "No s'ha pogut obtenir l'autorització: %s"
#: ../src/daemon/polkit.c:148
#, c-format
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ha respós '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "S'ha obtingut la senyal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "S'està sortint."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
-msgstr "S'ha produït un error en trobar l'usuari '%s'."
+msgstr "No s'ha trobat l'usuari '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
-msgstr "S'ha produït un error en trobar el grup '%s'."
+msgstr "No s'ha trobat el grup '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "S'han trobat l'usuari '%s' (UID %lu) i el grup '%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
-msgstr "El GID de l'usuari '%s' i del grup '%s' no coincideixen"
+msgstr "El GID de l'usuari '%s' i del grup '%s' no coincideixen."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "El directori arrel de l'usuari '%s' no és '%s', s'ignorarà."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
-msgstr "S'ha produït un error durant la creació '%s': %s"
+msgstr "No s'ha pogut crear '%s': %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
-msgstr "S'ha produït un error en canviar la llista del grup :%s"
+msgstr "No s'ha pogut canviar la llista del grup :%s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
-msgstr "S'ha produït un error en canviar la GID: %s"
+msgstr "No s'ha pogut canviar el GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
-msgstr "S'ha produït un error en canviar la UID: %s"
+msgstr "No s'ha pogut canviar l'UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
-msgstr "S'han lliberat els permissos de root amb éxit."
+msgstr "S'han alliberat els permisos de root."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
-msgstr "El mode de sistema ampli no està suportat en aquesta plataforma."
+msgstr "El mode de sistema global no és compatible amb aquesta plataforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "S'ha produït un error en setrlimit(%s, (%u, %u)): %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
-msgstr "S'ha produït un error en interpretar la línia de comandes."
+msgstr "No s'ha pogut interpretar la línia d'ordres."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Aquesta aplicació està en el grup '%s', s'està establint la prioritat en "
"temps real."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ha permés el privilegi acquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ha rebutjat el privilegi acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit h permés el privilegi acquire-real-time."
+msgstr "PolicyKit ha permés el privilegi acquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ha rebutjat el privilegi acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -309,48 +278,48 @@ msgstr ""
"incrementar els límits de recursos de RLIMIT_NICE/RLIMIT_RTPRIO per a aquest "
"usuari."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La prioritat alta està habilitada en la configuració però no està permesa "
"per la política."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit."
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "S'abandona CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La prioritat de temps real està habilitada en la configuració però no està "
"permesa per la política."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "El dimoni no s'està executant"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "El dimoni s'està executant amb PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "S'ha produït un error en matar el dimoni: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -358,165 +327,176 @@ msgstr ""
"No és necessari executar aquesta aplicació com a root (excepte si "
"s'especifica --system)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Es requereixen privilegis de root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "La opció --start no està suportada per a instàncies de sistema."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-exit."
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-module-loading."
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"S'està executant en mode sistema, es deshabilitarà el mode SHM forçosament."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"S'està executant en mode sistema, la sortida per temps d'inactivitat es "
"deshabilita."
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "S'ha produït un error en adquirir stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Ha fallat la canonada: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Ha fallat fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Ha fallat read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "S'ha produït un error en iniciar el dimoni."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "S'ha iniciat el dimoni."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Aquest és el PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilació: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilació: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "S'està executant en el host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "S'han trobat %u CPU's"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "La mida de pàgina és de %lu bytes."
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilat amb suport per a Valgrind: sí"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilat amb suport per a Valgrind: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "S'està executant amb el mode valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Construcció optimitzada: sí"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Construcció optmitzada: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
-msgstr ""
+msgstr "NDEBUG està definit, s'han desactivat totes les assercions."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
+"FASTPATH està definit, només s'ha deshabilitat les assercions de camí ràpid."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
-msgstr ""
+msgstr "S'han habilitat totes les assercions."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
-msgstr "S'ha produït un error en obtenir l'ID de la màquina"
+msgstr "No s'ha pogut obtenir l'ID de la màquina"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la màquina és %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID de la màquina és %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "S'està utilitzant el directori d'execució %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
-msgstr "Estan disponibles els temporitzadors frescos de alta resolució."
+msgstr "Estan disponibles els temporitzadors frescos d'alta resolució."
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -524,31 +504,31 @@ msgstr ""
"Es recomana la utilització d'un nucli amb els temporitzadors d'alta "
"resolució habilitats."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
-msgstr "Com el dimoni s'ha iniciat sense cap mòdul carregat, no funciona."
+msgstr "El dimoni s'ha iniciat sense cap mòdul carregat, no funcionarà."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -632,8 +612,8 @@ msgstr ""
"remostratge\n"
" --cleanup-shm Neteja els segments de memòria "
"compartida sense emprar\n"
-" --start Inicia el dimoni si aquest no està "
-"corrent\n"
+" --start Inicia el dimoni si aquest no s'està "
+"executant\n"
" -k --kill Mata el dimoni en execució\n"
" --check Comprova l'execució del dimoni\n"
"\n"
@@ -704,15 +684,15 @@ msgstr ""
" -n No carreguis el fitxer de "
"configuració per omissió\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize necessita un argument booleà"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail necessita un argument booleà"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -720,52 +700,52 @@ msgstr ""
"--log-level necessita un argument de nivell de log (valor númeric 0..4 o "
"debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority necessita un argument booleà"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime necessita un argument booleà"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading necessita un argument booleà"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit necessita d'un argument booleà"
+msgstr "--disallow-exit necessita un argument booleà"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file necessita un argument booleà"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Objectiu de log invàlid: utilitzeu 'syslog', 'stderr' o 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--logtime necessita un argument booleà"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta necessita un argument booleà"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Mètode de remostratge invàlid '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system necessita un argument booleà"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit necessita un argument booleà"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm necessita un argument booleà"
@@ -804,77 +784,82 @@ msgstr "Utilització: %s\n"
msgid "Load Once: %s\n"
msgstr "Càrrega: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destí de registre incorrecte '%s'"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivell de registre incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit no disponible en aquesta plataforma."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format de mostra incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Velocitat de mostreig '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canals incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -907,254 +892,257 @@ msgstr "Inicialitza el sistema de so PulseAudio"
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr ""
+"Programació d'alta prioritat (nivell Unix nice negatiu) per al dimoni "
+"PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Ha fallat en matar el dimoni PulseAudio."
+msgstr "Programació en temps real per al dimoni PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
msgstr ""
-"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
+"Les normes d'ús del sistema no permeten PulseAudio adquirir programació "
+"d'alta prioritat."
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
+"Les normes d'ús del sistema no permeten la programació en temps real de "
+"PulseAudio."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Frontal central"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Frontal esquerra"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Frontal dreta"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Posterior central"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Posterior esquerra"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Posterior dreta"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Emissor de baixa freqüència"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Frontal central part esquerra"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Frontal central part dreta"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Lateral esquerra"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Lateral dreta"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Auxiliar 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Auxiliar 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Auxiliar 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Auxiliar 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Auxiliar 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Auxiliar 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Auxiliar 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Auxiliar 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Auxiliar 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Auxiliar 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Auxiliar 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Auxiliar 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Auxiliar 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Auxiliar 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Auxiliar 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Auxiliar 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Auxiliar 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Auxiliar 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Auxiliar 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Auxiliar 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Auxiliar 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Auxiliar 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Auxiliar 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Auxiliar 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Auxiliar 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Auxiliar 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Auxiliar 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Auxiliar 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Auxiliar 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Auxiliar 31"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Auxiliar 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Auxiliar 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Superior central"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Superior frontal central"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
-msgstr "Superior frontal central"
+msgstr "Superior frontal esquerra"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Superior frontal dreta"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Superior posterior central"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Superior posterior esquerra"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Superior posterior dreta"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(incorrecte)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Estèreo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Envolvent 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Envolvent 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Envolvent 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Envolvent 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Envolvent 7.1"
@@ -1256,7 +1244,7 @@ msgstr "Manca la implementació"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "Client bifurcat"
#: ../src/pulse/sample.c:169
#, c-format
@@ -1313,177 +1301,172 @@ msgstr "waitpid(): %s"
#: ../src/pulse/context.c:1403
#, c-format
msgid "Received message for unknown extension '%s'"
-msgstr "S'ha rebut un missatge per a l'extensió desconeguda '%s'"
+msgstr "S'ha rebut un missatge per a una extensió desconeguda '%s'"
+
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "S'ha produït un error en drenar el fluxe: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Flux de reproducció drenat.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "S'està drenant la connexió amb el servidor.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Ha fallat pa_stream_write(): %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Ha fallat pa_stream_peek(): %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Flux creat correctament.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "Ha fallat pa_stream_get_buffer_attr(): %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Mètriques del búffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Mètriques del búffer: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
"S'estan utilitzant les especificacions de mostreig '%s', mapejat del canal '%"
"s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "S'ha connectat al dispositiu %s (%u, %s suspés).\n"
+msgstr "S'ha connectat al dispositiu %s (%u, %ssuspés).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "S'ha produït un error en l'stream: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Flux del dispositiu suspés.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Flux del dispositiu représ.%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Dades insuficients al flux .%s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Desbordament de flux.%s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "S'ha iniciat el flux.%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "S'ha mogut el flux al dispositiu %s (%u, %s suspés).%s\n"
+msgstr "S'ha mogut el flux al dispositiu %s (%u, %ssuspés).%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:245
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:378
+#, c-format
msgid "Stream buffer attributes changed.%s \n"
-msgstr "Dades insuficients al flux .%s\n"
+msgstr "Atributs del fluxe de la memòria intermèdia canviats.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "S'ha establert la connexió.%s\n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Ha fallat pa_stream_new(): %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ha fallat la connexió: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "S'ha produït un error en drenar el fluxe: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Stream de reproducció drenat.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "S'està drenant la connexió amb el servidor.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "S'ha llegit EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "Ha fallat read(): %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "Ha fallat write(): %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "S'ha rebut un senyal, s'està sortint.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
-msgstr "Ha fallat en obtenir la latència: %s\n"
+msgstr "No s'ha pogut obtenir la latència: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Temps: %0.3f segs; Latència: %0.0f microsegs.\r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Ha fallat pa_stream_update_timing_info(): %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1509,8 +1492,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1533,6 +1518,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opcions]\n"
"\n"
@@ -1575,14 +1565,14 @@ msgstr ""
"de canals del\n"
" conducte al qual s'està connectant "
"el flux.\n"
-" --no-remix No mesclar els canals.\n"
-" --no-remap Mapeja els canals per índex enlloc "
-"de per nom .\n"
-" --latency=BYTES Especifica la latència en bytes.\n"
-" --process-time=BYTES Especifica el temps de procés per "
+" --no-remix No barregis els canals.\n"
+" --no-remap Mapeja els canals per índex en "
+"comptes de per nom .\n"
+" --latency=BYTES Sol·licita la latència en bytes.\n"
+" --process-time=BYTES Sol·licita el temps de procés per "
"petició en bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1590,91 +1580,136 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
"pacat %s\n"
-"Compil·lat amb libpulse %s\n"
+"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mapa de canals invàlid '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Mètode de remostratge invàlid '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canals invàlid '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificació de latència invàlida '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificació de temps de procés invàlida '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Mètode de remostratge invàlid '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Especificació de mostra invàlida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Hi han massa arguments.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "No s'ha pogut obtenir informació de la mostra: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "No s'ha pogut obrir el fitxer de so.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "No s'ha pogut obtenir informació de la mostra: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "El mapa de canals no coincideix amb l'especificació de mostra\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "S'està obrint un flux %s amb especificació de mostra '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "enregistrant"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "reproducció"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Hi han massa arguments.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Ha fallat pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "Ha fallat io_new().\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Ha fallat pa_context_new().\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "Ha fallat pa_context_connect(): %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "Ha fallat time_new().\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Ha fallat pa_mainloop_run().\n"
@@ -1692,20 +1727,19 @@ msgstr "execvp(): %s\n"
#: ../src/utils/pasuspender.c:109
#, c-format
msgid "Failure to suspend: %s\n"
-msgstr "Ha fallat en susprendre: %s\n"
+msgstr "No s'ha pogut suspendre: %s\n"
#: ../src/utils/pasuspender.c:124
#, c-format
msgid "Failure to resume: %s\n"
-msgstr "Ha fallat en reprendre: %s\n"
+msgstr "No s'ha pogut en rependre: %s\n"
#: ../src/utils/pasuspender.c:147
#, c-format
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ADVERTÈNCIA: el sevidor de so no és local, no s'està suspenent.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "S'ha rebut SIGINT, s'està sortint.\n"
@@ -1713,7 +1747,7 @@ msgstr "S'ha rebut SIGINT, s'està sortint.\n"
#: ../src/utils/pasuspender.c:194
#, c-format
msgid "WARNING: Child process terminated by signal %u\n"
-msgstr "ADVERTÈNCIA: Procés fill acabat per senyal %u\n"
+msgstr "ADVERTÈNCIA: procés fill acabat pel senyal %u\n"
#: ../src/utils/pasuspender.c:212
#, c-format
@@ -1734,7 +1768,7 @@ msgstr ""
"se\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1742,36 +1776,37 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
"pasuspender %s\n"
-"Compil·lat amb libpulse %s\n"
+"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
-msgstr "Ha fallat en obtenir les estadístiques: %s\n"
+msgstr "No s'han pogut obtenir les estadístiques: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
-msgstr "Actualment s'estan utilitzant: %u blocs contenent %s bytes en total.\n"
+msgstr ""
+"Actualment s'estan utilitzant: %u blocs que contenen %s bytes en total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-"Allotjats durant el temps de vida: %u blocs contenent %s bytes en total.\n"
+"Allotjats durant el temps de vida: %u blocs que contenen %s bytes en total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
-msgstr "Mida de memòria cau de mostra: %s\n"
+msgstr "Mida de la memòria cau de mostres: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
-msgstr "Ha fallat en obtenir la informació del servidor: %s\n"
+msgstr "No s'ha pogut obtenir la informació del servidor: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1792,14 +1827,14 @@ msgstr ""
"Mapa de canals per omissió: %s\n"
"Conducte per omissió: %s\n"
"Font per omissió: %s\n"
-"Cookie: %08x\n"
+"Galeta: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
-msgstr "Ha fallat en obtenir la informació del conducte: %s\n"
+msgstr "No s'ha pogut obtenir la informació del conducte: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1838,12 +1873,22 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tPerfils:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tPerfil actiu: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
-msgstr "Ha fallat en obtenir la informació de la font: %s\n"
+msgstr "No s'ha pogut obtenir la informació de la font: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1882,20 +1927,20 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
-msgstr "Ha fallat en obtenir informació del mòdul: %s\n"
+msgstr "No s'ha pogut obtenir informació del mòdul: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1912,12 +1957,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
-msgstr "Ha fallat en obtenir informació: %s\n"
+msgstr "No s'ha pogut obtenir informació del client: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1932,12 +1977,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
-msgstr "Ha fallat en obtenir la informació de la targeta: %s\n"
+msgstr "No s'ha pogut obtenir la informació de la targeta: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1954,22 +1999,22 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPerfils:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tPerfil actiu: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
-msgstr "Ha fallat en obtenir informació del conducte d'entrada: %s\n"
+msgstr "No s'ha pogut obtenir informació del conducte d'entrada: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1999,19 +2044,19 @@ msgstr ""
"\tSilenciat: %s\n"
"\tVolum: %s\n"
"\t %s\n"
-"\t balacenig %0.2f\n"
+"\t balanç %0.2f\n"
"\tLatència de búffer: %0.0f microsegs.\n"
"\tLatència del conducte: %0.0f microsegs.\n"
"\tMètode de remostreig: %s\n"
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
-msgstr "Ha fallat en obtenir la informació del conducte de sortida: %s\n"
+msgstr "No s'ha pogut obtenir la informació del conducte de sortida: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2040,12 +2085,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
-msgstr "Ha fallat en obtenir informació de la mostra: %s\n"
+msgstr "No s'ha pogut obtenir informació de la mostra: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2076,23 +2121,22 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Ha fallat: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
-msgstr "Ha fallat en pujar la mostra: %s\n"
+msgstr "No s'ha pogut pujar la mostra: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "S'ha trobat un fi de fitxer prematurament\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2107,6 +2151,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2138,7 +2184,7 @@ msgstr ""
" -n, --client-name=NOM Com cridar aquest client al "
"servidor\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2149,48 +2195,44 @@ msgstr ""
"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Especifiqueu un fitxer de mostra per a carregar\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
-msgstr "Ha fallat en obrir el fitxer de so.\n"
+msgstr "No s'ha pogut obrir el fitxer de so.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "S'està obrint un flux %s amb especificació de mostra '%s'.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Heu d'especificar un nom de mostra a reproduir\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Heu d'especificar un nom de mostra a esborrar\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Heu d'especificar una entrada del conducte i un conducte\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
-msgstr "Heu d'especificar una font de sortida i una font\n"
+msgstr "Heu d'especificar un índex de la font de sortida i una font\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Heu d'especificar un nom de mòdul i els seus arguments.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Heu d'especificar un índex de mòdul\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2198,25 +2240,32 @@ msgstr ""
"No haríeu d'especificar més d'un conducte. Heu d'especifcar un valor "
"booleà.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"No haríeu d'especificar més d'una font. Heu d'especificar un valor booleà.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "S'ha especificat una ordre invàlida.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Ha fallat pa_context_connect(): %s"
@@ -2245,7 +2294,7 @@ msgstr ""
#: ../src/utils/pax11publish.c:94
#, c-format
msgid "Failed to parse command line.\n"
-msgstr "Ha fallat en parsejar la línia de comandes.\n"
+msgstr "No s'ha pogut parsejar la línia d'ordres.\n"
#: ../src/utils/pax11publish.c:108
#, c-format
@@ -2265,191 +2314,85 @@ msgstr "Conducte: %s\n"
#: ../src/utils/pax11publish.c:114
#, c-format
msgid "Cookie: %s\n"
-msgstr "Cookie: %s\n"
+msgstr "Galeta: %s\n"
#: ../src/utils/pax11publish.c:132
#, c-format
msgid "Failed to parse cookie data\n"
-msgstr "Ha fallat en parsejar les dades de la cookie\n"
+msgstr "No s'han pogut parsejar les dades de la galeta\n"
#: ../src/utils/pax11publish.c:137
#, c-format
msgid "Failed to save cookie data\n"
-msgstr "Ha fallat en desar les dades de la cookie\n"
+msgstr "No s'han pogut desar les dades de la galeta\n"
#: ../src/utils/pax11publish.c:152
#, c-format
msgid "Failed to load client configuration file.\n"
-msgstr "Ha fallat en carregar el fitxer de configuració del client.\n"
+msgstr "No s'ha pogut carregar el fitxer de configuració del client.\n"
#: ../src/utils/pax11publish.c:157
#, c-format
msgid "Failed to read environment configuration data.\n"
-msgstr "Ha fallat en llegir les dades de configuració de l'entorn.\n"
+msgstr "No s'han pogut llegir les dades de configuració de l'entorn.\n"
#: ../src/utils/pax11publish.c:174
#, c-format
msgid "Failed to get FQDN.\n"
-msgstr "Ha fallat en obtenir FQDN.\n"
+msgstr "No s'ha pogut obtenir el nom de domini qualificat complet.\n"
#: ../src/utils/pax11publish.c:194
#, c-format
msgid "Failed to load cookie data\n"
-msgstr "Ha fallat en carregar les dades de la cookie\n"
+msgstr "No s'han pogut carregar les dades de la galeta\n"
#: ../src/utils/pax11publish.c:211
#, c-format
msgid "Not yet implemented.\n"
-msgstr "No s'ha implementat encara.\n"
+msgstr "Encara no s'ha implementat.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
-msgstr "Ha fallat en matar el dimoni PulseAudio."
+msgstr "No s'ha pogut matar el dimoni PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "El dimoni no respon."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Flux creat amb èxit\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "S'ha produït un error en el flux: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "S'ha establert la connexió.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [opcions] [FITXER]\n"
-"\n"
-" -h, --help Mostra aquesta ajuda\n"
-" --version Mostra la versió\n"
-"\n"
-" -v, --verbose Habilita les operacions detallades\n"
-"\n"
-" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
-"se\n"
-" -d, --device=DISPOSITIU Nom del conducte/font al qual "
-"connectar-se\n"
-" -n, --client-name=NOM Com cridar aquest client al "
-"servidor\n"
-" --stream-name=NOM Com cridar aquest flux al servidor\n"
-" --volume=VOLUM Especifica el volum inicial lineal "
-"dins el rang 0...65536\n"
-" --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz (per "
-"omissió, 44100)\n"
-" --format=FORMATMOSTRA El tipus de mostra, una de s16le, "
-"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(per omissió, s16ne)\n"
-" --channels=CANALS Número de canals, 1 per a mono, 2 "
-"per a estèreo\n"
-" (per omissió, 2)\n"
-" --channel-map=MAPACANAL Mapa de canals a utilitzar\n"
-" --fix-format Pren el format de mostra del "
-"conducte al qual s'està connectant\n"
-" el flux.\n"
-" --fix-rate Pren la velocitat de mostreig del "
-"conducte al qual\n"
-" s'està connectant el flux.\n"
-" --fix-channels Pren el número de canals i el mapa "
-"de canals del\n"
-" conducte al qual s'està connectant "
-"el flux.\n"
-" --no-remix No mesclar els canals.\n"
-" --no-remap Mapeja els canals per índex enlloc "
-"de per nom .\n"
-" --latency=BYTES Especifica la latència en bytes.\n"
-" --process-time=BYTES Especifica el temps de procés per "
-"petició en bytes.\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compil·lat amb libpulse %s\n"
-"Enllaçat amb libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mapa de canals invàlid\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Ha fallat en obrir el fitxer '%s'\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "El mapa de canals no coincideix amb el fitxer.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "S'estan utilitzant les especificacions de mostra '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "No s'ha pogut accedir al bloqueig d'autospawn."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2459,8 +2402,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA ens ha despertat per a escriure dades noves al dispositiu però no hi "
+"havia res a escriure!\n"
+"Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu "
+"d'aquest problema als desenvolupadors de l'ALSA.\n"
+"Ens han cridat mitjançant POLLOUT set -- tammateix una crida posterior de "
+"snd_pcm_avail() ha retornat 0 o un altre valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2470,39 +2419,166 @@ msgid ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+"Alsa ens ha cridat per a llegir dades noves del dispositiu, però no hi ha "
+"res a llegir!\n"
+"Probablement es tracta d'un error de la controladora '%s' de l'ALSA. "
+"Reporteu aquest problema als desenvolupadors de l'ALSA.\n"
+"Ens ha cridat mitjançant POLLIN set -- tammateix una ordre posterior "
+"snd_pcm_avail() ha retornat 0 o un altre valor < min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
-msgstr ""
+msgstr "Inactiu"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "Reproducció d'alta fidelitat (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "Dúplex de telefonia (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
-#, fuzzy
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
-msgstr "Sistema de so PulseAudio"
+msgstr "Servidor de so PulseAudio"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Mono analògic"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Estèreo analògic"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Estèreo digital (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Estèreo digital (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Envolvent analògic 4.0 "
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Envolvent digital 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Envolvent analògic 4.1 "
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Envolvent analògic 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Envolvent analògic 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Envolvent digital 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Envolvent analògic 7.1"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Flux creat amb èxit\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "S'ha produït un error en el flux: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "S'ha establert la connexió.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [opcions] [FITXER]\n"
+#~ "\n"
+#~ " -h, --help Mostra aquesta ajuda\n"
+#~ " --version Mostra la versió\n"
+#~ "\n"
+#~ " -v, --verbose Habilita les operacions "
+#~ "detallades\n"
+#~ "\n"
+#~ " -s, --server=SERVIDOR Nom del servidor al qual "
+#~ "connectar-se\n"
+#~ " -d, --device=DISPOSITIU Nom del conducte al qual "
+#~ "connectar-se\n"
+#~ " -n, --client-name=NOM Com cridar aquest client al "
+#~ "servidor\n"
+#~ " --stream-name=NOM Com cridar aquest flux al "
+#~ "servidor\n"
+#~ " --volume=VOLUM Especifica el volum inicial "
+#~ "(lineal) dins el rang 0...65536\n"
+#~ " --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz "
+#~ "(per omissió, 44100)\n"
+#~ " --format=FORMATMOSTRA El tipus de mostra, una de s16le, "
+#~ "s16be, u8, float32le,\n"
+#~ " float32be, ulaw, alaw, s32le, "
+#~ "s32be (per omissió, s16ne)\n"
+#~ " --channels=CANALS Número de canals, 1 per a mono, 2 "
+#~ "per a estèreo\n"
+#~ " (per omissió, 2)\n"
+#~ " --channel-map=MAPACANAL Mapa de canals a utilitzar\n"
+#~ " --fix-format Pren el format de mostra del "
+#~ "conducte al qual s'està connectant\n"
+#~ " el flux.\n"
+#~ " --fix-rate Pren la velocitat de mostreig del "
+#~ "conducte al qual\n"
+#~ " s'està connectant el flux.\n"
+#~ " --fix-channels Pren el número de canals i el "
+#~ "mapa de canals del\n"
+#~ " conducte al qual s'està "
+#~ "connectant el flux.\n"
+#~ " --no-remix No mesclar els canals.\n"
+#~ " --no-remap Mapeja els canals per índex "
+#~ "enlloc de per nom .\n"
+#~ " --latency=BYTES Especifica la latència en bytes.\n"
+#~ " --process-time=BYTES Especifica el temps de procés per "
+#~ "petició en bytes.\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilat amb libpulse %s\n"
+#~ "Enllaçat amb libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mapa de canals invàlid\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "No s'ha pogut obrir el fitxer '%s'\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "El mapa de canals no coincideix amb el fitxer.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "S'estan utilitzant les especificacions de mostra '%s'\n"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Sortida %s + Entrada %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Sortida %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Entrada %s"
#~ msgid ""
#~ "Called SUID root and real-time/high-priority scheduling was requested in "
diff --git a/po/cs.po b/po/cs.po
index f42c8553..51ce0850 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,14 +1,14 @@
# Czech translation of pulseaudio.
-# Copyright (C) 2008 the author(s) of pulseaudio.
+# Copyright (C) 2008, 2009 the author(s) of pulseaudio.
# This file is distributed under the same license as the pulseaudio package.
-# Petr Kovar <pknbe@volny.cz>, 2008.
+# Petr Kovar <pknbe@volny.cz>, 2008, 2009.
#
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio\n"
+"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
-"PO-Revision-Date: 2008-10-19 22:31+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: 2009-05-03 23:57+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -17,51 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,8 +25,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_avail() navrátil hodnotu, která je nezvykle vysoká: %lu bajtů (%lu "
+"ms).\n"
+"S nejvÄ›tší pravdÄ›podobností se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosím tento problém vývojářům ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -78,8 +38,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_delay() navrátil hodnotu, která je nezvykle vysoká: %li bajtů (%s%lu "
+"ms).\n"
+"S nejvÄ›tší pravdÄ›podobností se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosím tento problém vývojářům ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -87,25 +51,39 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_mmap_begin() navrátil hodnotu, která je nezvykle vysoká: %lu bajtů (%"
+"lu ms).\n"
+"S nejvÄ›tší pravdÄ›podobností se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosím tento problém vývojářům ALSA."
-#: ../src/pulsecore/sink.c:2141
-#, fuzzy
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
-msgstr "Vnitřní chyba"
+msgstr "Vnitřní zvukový systém"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
-msgstr ""
+msgstr "Modem"
#: ../src/daemon/ltdl-bind-now.c:124
-#, fuzzy
msgid "Failed to find original lt_dlopen loader."
-msgstr "Nezdařilo se nalezení původního nahrávacího programu dlopen."
+msgstr "Nezdařilo se nalézt původní nahrávací program lt_dlopen."
#: ../src/daemon/ltdl-bind-now.c:129
-#, fuzzy
msgid "Failed to allocate new dl loader."
-msgstr "Nezdařilo se nalezení původního nahrávacího programu dlopen."
+msgstr "Nezdařilo se přidělení nového nahrávacího programu dl."
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
@@ -165,105 +143,105 @@ msgstr "Nezdařilo se získat oprávnění: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit odpověděl s \"%s\""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Získán signál %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "UkonÄování."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Nezdařilo se nalézt uživatele \"%s\"."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Nezdařilo se nalézt skupinu \"%s\"."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Nalezen uživatel \"%s\" (UID %lu) a skupina \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID uživatele \"%s\" a skupiny \"%s\" nesouhlasí."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Domovský adresář uživatele \"%s\" není \"%s\", bude ignorováno."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Nezdařilo se vytvořit \"%s\": %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Nezdařilo se změnit seznam skupin: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Nezdařilo se změnit GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Nezdařilo se změnit UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Oprávnění superuživatele úspěšně zrušena."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Režim celého systému není na této platformě podporován."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) selhalo: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Nezdařila se analýza příkazového řádku."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Nacházíme se ve skupině \"%s\", což umožňuje plánování o vysoké prioritě."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Nacházíme se ve skupinÄ› \"%s\", což umožňuje plánování v reálném Äase."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nám udělil oprávnění acquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit nám neudělil oprávnění acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nám udělil oprávnění acquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit nám neudělil oprávnění acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -275,47 +253,54 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
+"Voláno SUID root a v nastavení bylo požádáno o plánování v reálném Äase Äi o "
+"vysoké prioritě. Schází nám ovšem potřebná oprávnění.\n"
+"Nejsme ve skupině \"%s\", PolicyKit nám odmítá přidělit požadovaná oprávnění "
+"a je nutné zvýšit omezení zdroje RLIMIT_NICE/RLIMIT_RTPRIO.\n"
+"Plánování v reálném Äase Äi o vysoké prioritÄ› zapnete získáním přísluÅ¡ných "
+"oprávnÄ›ní PolicyKit, nebo tím, že se stanete Äleny \"%s\", nebo uživateli "
+"zvýšíte omezení zdroje RLIMIT_NICE/RLIMIT_RTPRIO."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Plánování o vysoké prioritě v konfiguraci zapnuto, ale nepovoleno pravidly."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Úspěšně zvýšeno RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO selhalo: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Vzdávání se CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Plánování v reálném Äase v konfiguraci zapnuto, ale nepovoleno pravidly."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Démon neběží"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Démon běží jako PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zabití démona se nezdařilo: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -323,160 +308,169 @@ msgstr ""
"Tento program není urÄen ke spuÅ¡tÄ›ní pod superuživatelem (není-li zadáno --"
"system)."
-#: ../src/daemon/main.c:720
-#, fuzzy
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Jsou vyžadována oprávnění superuživatele."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nepodporováno u systémových instancí."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Běží v systémovém režimu, ale nenastaveno --disallow-exit!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "Běží v systémovém režimu, ale nenastaveno --disallow-module-loading!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Běží v systémovém režimu, vynuceně se vypíná režim SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "Běží v systémovém režimu, vynucenÄ› se vypíná Äas neÄinnosti ukonÄení!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Nezdařilo se získání stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe selhalo: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() selhalo: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() selhalo: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Spuštění démona selhalo."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Spuštění démona bylo úspěšné."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Toto je PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "PÅ™ekladový poÄítaÄ: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Překladové CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Běží na poÄítaÄi: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
-msgstr ""
+msgstr "Nalezen následující poÄet CPU: %u."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Velikost stránky je %lu bajtů"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Přeloženo s podporou Valgrind: ano"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Přeloženo s podporou Valgrind: ne"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Běží v režimu valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimalizované sestavení: ano"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimalizované sestavení: ne"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
-msgstr ""
+msgstr "NDEBUG definováno, všechny výrazy zakázány."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
-msgstr ""
+msgstr "FASTPATH definováno, zakázány pouze výrazy rychlých cest."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
-msgstr ""
+msgstr "Všechny výrazy povoleny."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "NezdaÅ™ilo se získání ID poÄítaÄe"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ID poÄítaÄe je %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ID poÄítaÄe je %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Používán běhový adresář %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Používán stavový adresář %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Běží v systémovém režimu: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"Jsou dostupné výteÄné ÄasovaÄe o vysokém rozliÅ¡ení. Tak s chutí do toho!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -484,32 +478,32 @@ msgstr ""
"Sorry, vole, kernel error! Tip šéfkuchaře na dnešní den zní: Linux se "
"zapnutými ÄasovaÄi o vysokém rozliÅ¡ení."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Selhalo spuštění démona."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Spuštění démona bez jakýchkoliv nahraných modulů, běh bude odmítnut."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "SpuÅ¡tÄ›ní démona dokonÄeno."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Vypínání démona spuštěno."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Démon ukonÄen."
-#: ../src/daemon/cmdline.c:121
-#, fuzzy, c-format
+#: ../src/daemon/cmdline.c:115
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -581,62 +575,88 @@ msgid ""
"\n"
" -n Don't load default script file\n"
msgstr ""
-"s n\n"
-" h nápověda Zob_razit nápověda\n"
-" verze Zobrazit verze\n"
-" implicitní\n"
-" seznam z k dispozici\n"
-" k dispozici\n"
-" Úklid\n"
-" ZaÄátek je ne\n"
-" Zabít a\n"
-" Zjistit pro a n\n"
-" Spustit\n"
-" D po\n"
-" UkonÄit\n"
-" vysoká priorita až set vysoká úroveň\n"
-" k dispozici SUID nebo\n"
-" s\n"
-" až povolit\n"
-" k dispozici SUID nebo\n"
-" s\n"
-" modul naÄítám modul uživatel modul\n"
-" naÄítám po\n"
-" uživatel\n"
-" Äas SEKUNDY a\n"
-" Äas\n"
-" modul Äas SEKUNDY a\n"
-" Äas\n"
-" Äas SEKUNDY a\n"
-" Äas\n"
-" úroveň ÚROVEŇ Zvýšit nebo set úroveň\n"
-" Zvýšit úroveň\n"
-" auto\n"
-" p cesta CESTA Nastavit cesta pro\n"
-"\n"
+"%s [pÅ™epínaÄe]\n"
"\n"
-" Viz pro\n"
+"PŘÃKAZY:\n"
+" -h, --help Zobrazí tuto nápovědu\n"
+" --version Zobrazí verzi\n"
+" --dump-conf Vypíše výchozí nastavení\n"
+" --dump-modules Vypíše seznam dostupných modulů\n"
+" --dump-resample-methods Vypíše dostupné metody "
+"převzorkování\n"
+" --cleanup-shm Vyprázdní zastaralé Äásti sdílené "
+"paměti\n"
+" --start Spustí démona, pokud neběží\n"
+" -k --kill Zabije běžícího démona\n"
+" --check Zjistí, zda démon běží (vrací pouze "
+"ukonÄovací kód)\n"
"\n"
-" soubor Vytvořit a PID soubor\n"
-" ne ne CPU zapnuto\n"
+"PŘEPÃNAÄŒE:\n"
+" --system[=BOOLEOVSKÃ] Poběží jako celosystémová instance\n"
+" -D, --daemonize[=BOOLEOVSKÃ] Stane se démonem po spuÅ¡tÄ›ní\n"
+" --fail[=BOOLEOVSKÃ] UkonÄí se v případÄ› selhání "
+"spuštění\n"
+" --high-priority[=BOOLEOVSKÃ] Pokusí se nastavit vysokou úroveň "
+"nice\n"
+" (dostupné pouze u superuživatele, v "
+"případě SUID nebo\n"
+" se zvýšeným RLIMIT_NICE)\n"
+" --realtime[=BOOLEOVSKÃ] Pokusí se zapnout plánování v "
+"reálném Äase\n"
+" (dostupné pouze u superuživatele, v "
+"případě SUID nebo\n"
+" se zvýšeným RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOLEOVSKÃ] Nepovolí nahrání Äi zruÅ¡ení "
+"nahrání modulu po spuštění\n"
+" vyžádané uživatelem modulu\n"
+" --disallow-exit[=BOOLEOVSKÃ] Nepovolí ukonÄení vyžádané "
+"uživatelem\n"
+" --exit-idle-time=SEKUNDY UkonÄí démona v případÄ› neÄinnosti a "
+"po\n"
+" této době\n"
+" --module-idle-time=SEKUNDY Zruší nahrání automaticky nahraných "
+"modulů v případÄ› neÄinnosti\n"
+" a po této době\n"
+" --scache-idle-time=SEKUNDY Zruší nahrání automaticky nahraných "
+"vzorků v případÄ› neÄinnosti a\n"
+" po této době\n"
+" --log-level[=ÚROVEŇ] Zvýší nebo nastaví úroveň "
+"podrobností\n"
+" -v Zvýší úroveň podrobností\n"
+" --log-target={auto,syslog,stderr} UrÄí cíl záznamů\n"
+" --log-meta[=BOOLEOVSKÃ] Do záznamů zahrne umístÄ›ní kódu\n"
+" --log-time[=BOOLEOVSKÃ] Do záznamů zahrne urÄení Äasu\n"
+" --log-backtrace=RÃMCE Do záznamů zahrne backtrace\n"
+" -p, --dl-search-path=CESTA Nastaví cestu hledání z důvodu "
+"dynamického sdílení\n"
+" objektů (zásuvných modulů)\n"
+" --resample-method=METODA Použije zadanou metodu "
+"převzorkování\n"
+" (Možné hodnoty viz\n"
+" --dump-resample-methods)\n"
+" --use-pid-file[=BOOLEOVSKÃ] Vytvoří soubor PID\n"
+" --no-cpu-limit[=BOOLEOVSKÃ] Nenainstaluje omezovaÄ zátěže CPU\n"
+" na platformách, které ho podporují.\n"
+" --disable-shm[=BOOLEOVSKÃ] Vypne podporu sdílené pamÄ›ti.\n"
"\n"
-" Vypnout n\n"
-" L MODUL NaÄíst modul s\n"
+"SPOUÅ TÄšCÃ SKRIPT:\n"
+" -L, --load=\"ARGUMENTY MODULU\" Nahraje zadaný zásuvný modul\n"
+" s urÄeným argumentem\n"
+" -F, --file=NÃZEVSOUBORU Spustí zadaný skript\n"
+" -C Po spuštění otevře příkazový řádek\n"
+" na běžícím TTY\n"
"\n"
-" F soubor NÃZEVSOUBORU Spustit skript\n"
-" C Otevřít a zapnuto TTY\n"
-" po n\n"
-" n implicitní skript soubor n"
+" -n Nenahraje výchozí soubor skriptu\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -644,56 +664,53 @@ msgstr ""
"--log-level pÅ™edpokládá argument protokolovací úrovnÄ› (buÄ Äíselný v rozmezí "
"0..4, nebo jeden z debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:302
-#, fuzzy
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit booleovský argument"
+msgstr "--disallow-exit předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Neplatný cíl protokolu: použijte buÄto \"syslog\", \"stderr\" nebo \"auto\"."
-#: ../src/daemon/cmdline.c:333
-#, fuzzy
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
-msgstr "--realtime předpokládá booleovský argument"
+msgstr "--log-time předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:340
-#, fuzzy
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
-msgstr "--disallow-exit booleovský argument"
+msgstr "--log-meta předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Neplatná metoda převzorkování \"%s\"."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit předpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm předpokládá booleovský argument"
@@ -728,85 +745,92 @@ msgid "Usage: %s\n"
msgstr "Použití: %s\n"
#: ../src/daemon/dumpmodules.c:73
-#, fuzzy, c-format
+#, c-format
msgid "Load Once: %s\n"
-msgstr "NaÄíst Jednou s n"
+msgstr "NaÄíst jednou: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Cesta: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neplatný protokolovací cíl \"%s\"."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neplatná protokolovací úroveň \"%s\"."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neplatná metoda převzorkování \"%s\"."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neplatné rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit na této platformě není podporováno."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neplatný vzorkovací formát \"%s\"."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neplatná vzorkovací frekvence \"%s\"."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neplatné vzorkovací kanály \"%s\"."
-#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#: ../src/daemon/daemon-conf.c:354
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "[%s:%u] Neplatné vzorkovací kanály \"%s\"."
+msgstr "[%s:%u] Neplatná mapa kanálů \"%s\"."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neplatný poÄet fragmentů \"%s\"."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveň nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "NezdaÅ™ilo se otevřít konfiguraÄní soubor: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"Zadaná výchozí mapa kanálů obsahuje odliÅ¡ný poÄet kanálů než je zadaný "
+"výchozí poÄet kanálů."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -814,7 +838,6 @@ msgid "### Read from configuration file: %s ###\n"
msgstr "### ÄŒtení z konfiguraÄního souboru: %s ###\n"
#: ../src/daemon/caps.c:63
-#, fuzzy
msgid "Dropping root privileges."
msgstr "Rušení superuživatelských oprávnění."
@@ -824,267 +847,268 @@ msgstr "Schopnosti úspěšně omezeny na CAP_SYS_NICE."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "Zvukový systém PulseAudio"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "Spustit zvukový systém PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr ""
+"Plánování o vysoké prioritě (záporná úroveň nice v Unixu) démona PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Nezdařilo se zabít démona PulseAudio."
+msgstr "Plánování v reálném Äase démona PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
msgstr ""
-"Nacházíme se ve skupině \"%s\", což umožňuje plánování o vysoké prioritě."
+"Systémová pravidla znemožňují technologii PulseAudio získat přístup k "
+"plánování o vysoké prioritě."
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
+"Systémová pravidla znemožňují technologii PulseAudio získat přístup k "
+"plánování v reálném Äase."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Přední středový"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Přední levý"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Přední pravý"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Zadní středový"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Zadní levý"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Zadní pravý"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "NízkofrekvenÄní zářiÄ"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Přední levý středový"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Přední pravý středový"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "BoÄní levý"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "BoÄní pravý"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Aux 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Aux 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Aux 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Aux 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Aux 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Aux 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Aux 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Aux 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Aux 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Aux 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Aux 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Aux 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Aux 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Aux 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Aux 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Aux 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Aux 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Aux 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Aux 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Aux 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Aux 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Aux 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Aux 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Aux 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Aux 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Aux 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Aux 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Aux 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Aux 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Aux 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Aux 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Aux 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Horní středový"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Horní přední středový"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Horní přední levý"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Horní přední pravý"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Horní zadní středový"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Horní zadní levý"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Horní zadní pravý"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
-#, fuzzy
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
-msgstr "Neplatné"
+msgstr "(neplatné)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
-msgstr ""
+msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
-msgstr ""
+msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
-msgstr ""
+msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
-msgstr ""
+msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
-msgstr ""
+msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
-msgstr ""
+msgstr "Surround 7.1"
#: ../src/pulse/error.c:43
msgid "OK"
@@ -1176,40 +1200,40 @@ msgstr "Takové rozšíření neexistuje"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "Zastaralá vlastnost"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "Scházející implementace"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "Klient rozvětven"
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:181
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:183
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:187
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
@@ -1243,173 +1267,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Přijata zpráva pro neznámé rozšíření \"%s\""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Nezdařilo se vyprázdnit proud: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Proud přehrávání vyprázdněn.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Vyprazdňování spojení se serverem.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() selhalo: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() selhalo: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Proud úspěšně vytvořen.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() selhalo: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
"Metrika vyrovnávací paměti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metrika vyrovnávací paměti: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Používána vzorkovací specifikace \"%s\", mapa kanálů \"%s\".\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Připojeno k zařízení %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Chyba proudu: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Proudové zařízení pozastaveno.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Proudové zařízení obnoveno.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Podběhnutí proudu.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Přeběhnutí proudu.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Proud spuštěn.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Proud přesunut na zařízení %s (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nikoliv "
-#: ../src/utils/pacat.c:245
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:378
+#, c-format
msgid "Stream buffer attributes changed.%s \n"
-msgstr "Podběhnutí proudu.%s \n"
+msgstr "Změněny atributy vyrovnávací paměti proudu.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Spojení navázáno.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() selhalo: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() selhalo: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() selhalo: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Spojení selhalo: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Nezdařilo se vyprázdnit proud: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Proud přehrávání vyprázdněn.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Vyprazdňování spojení se serverem.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Získáno EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() selhalo: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() selhalo: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Získán signál, ukonÄování.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Nezdařilo se získat latenci: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Čas: %0.3f sekund; latence: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() selhalo: %s\n"
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -1436,8 +1455,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1460,36 +1481,58 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
-"s n\n"
-" h nápověda Zobrazit nápověda\n"
-" verze Zobrazit verze n\n"
-" Vytvořit a pro nahrávání\n"
-" p přehrávání Vytvořit a pro přehrávání n\n"
-" Povolit n\n"
-" s SERVER název z až až\n"
-" d zařízení ZAŘÃZENà název z cíl zdroj až až\n"
-" n název NÃZEV Jak až zapnuto\n"
-" název NÃZEV Jak až zapnuto\n"
-" svazek svazek in oblast\n"
-" in Hz až\n"
-" typ z\n"
-" až\n"
-" Äíslo z pro mono pro stereo\n"
-" až\n"
-" kanál mapa Kanál mapa až z implicitní\n"
-" z alba cíl je\n"
-" až\n"
-" z alba cíl je\n"
-" až\n"
-" Äíslo z a kanál mapa\n"
-" z alba cíl je až\n"
-" ne nebo\n"
-" ne od rejstřík z název\n"
-" Požadavek in bajty\n"
-" Äas Požadavek Äas in bajty n"
-
-#: ../src/utils/pacat.c:612
+"%s [pÅ™epínaÄe]\n"
+"\n"
+" -h, --help Zobrazí tuto nápovědu\n"
+" --version Zobrazí verzi\n"
+"\n"
+" -r, --record Vytvoří spojení z důvodu nahrávání\n"
+" -p, --playback Vytvoří spojení z důvodu přehrávání\n"
+"\n"
+" -v, --verbose Zapne nakládání s úrovní "
+"podrobností\n"
+"\n"
+" -s, --server=SERVER Název připojovaného serveru\n"
+" -d, --device=ZAŘÃZENà Název pÅ™ipojovaného cíle Äi zdroje\n"
+" -n, --client-name=NÃZEV Způsob volání tohoto klienta na "
+"serveru\n"
+" --stream-name=NÃZEV Způsob volání tohoto proudu na "
+"serveru\n"
+" --volume=HLASITOST UrÄí poÄáteÄní (lineární) hlasitost "
+"v rozmezí 0...65536\n"
+" --rate=VZORKOVACÃFREKVENCE Vzorkovací frekvence v Hz (výchozí "
+"je 44100)\n"
+" --format=FORMÃTVZORKU Typ vzorku, jeden z s16le, s16be, "
+"u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(výchozí je s16ne)\n"
+" --channels=KANÃLY PoÄet kanálů, u mono 1, u sterea 2\n"
+" (výchozí je 2)\n"
+" --channel-map=MAPAKANÃLÅ® Mapa kanálů urÄená k použití namísto "
+"výchozí\n"
+" --fix-format Získá formát vzorku z cíle, ke "
+"kterému se\n"
+" připojuje proud.\n"
+" --fix-rate Získá vzorkovací frekvenci z cíle, "
+"ke kterému se\n"
+" připojuje proud.\n"
+" --fix-channels Získá poÄet kanálů a mapu kanálů z "
+"cíle, ke kterému se\n"
+" připojuje proud.\n"
+" --no-remix Nesměšuje kanály.\n"
+" --no-remap Mapuje kanály dle indexu namísto "
+"názvu.\n"
+" --latency=BAJTY Vyžádá urÄenou latenci v bajtech.\n"
+" --process-time=BAJTY Vyžádá urÄený Äas zpracování na "
+"požadavek v bajtech.\n"
+
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1500,88 +1543,133 @@ msgstr ""
"Přeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Neplatná mapa kanálů \"%s\"\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Neplatná metoda převzorkování \"%s\"."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Neplatná mapa kanálů \"%s\"\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Neplatné upřesnění latence \"%s\"\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Neplatné upÅ™esnÄ›ní Äasu zpracování \"%s\"\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Neplatná metoda převzorkování \"%s\"."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Neplatné upřesnění vzorkování\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Příliš mnoho argumentů.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Selhalo získání informace o vzorku: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Selhalo otevření zvukového souboru.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Selhalo získání informace o vzorku: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Mapa kanálů se neshoduje s upřesněním vzorkování\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Otevírání proudu %s s upřesněním vzorkování \"%s\".\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "nahrávání"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "přehrávání"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Příliš mnoho argumentů.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() selhalo.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() selhalo.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() selhalo.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() selhalo: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() selhalo.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() selhalo.\n"
@@ -1611,8 +1699,7 @@ msgstr "Nezdařilo se obnovení: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "VAROVÃNÃ: Zvukový server není místní, nedojde k pozastavení.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Získáno SIGINT, ukonÄování.\n"
@@ -1623,7 +1710,7 @@ msgid "WARNING: Child process terminated by signal %u\n"
msgstr "VAROVÃNÃ: Proces potomka ukonÄen signálem %u\n"
#: ../src/utils/pasuspender.c:212
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options] ... \n"
"\n"
@@ -1633,12 +1720,14 @@ msgid ""
"to\n"
"\n"
msgstr ""
-"s n\n"
-" h nápověda Zobrazit nápověda\n"
-" verze Zobrazit verze\n"
-" s SERVER název z až až n n"
+"%s [pÅ™epínaÄe] ... \n"
+"\n"
+" -h, --help Zobrazí tuto nápovědu\n"
+" --version Zobrazí verzi\n"
+" -s, --server=SERVER Název připojovaného serveru\n"
+"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1649,33 +1738,33 @@ msgstr ""
"Přeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Selhalo získání statistik: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Právě používáno: %u bloků obsahujících celkem %s bajtů.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Alokováno během celého běhu: %u bloků obsahujících celkem %s bajtů.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Velikost vzorkovací vyrovnávací paměti: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Nezdařilo se získání informací o serveru: %s\n"
-#: ../src/utils/pactl.c:137
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:157
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1692,17 +1781,18 @@ msgstr ""
"Název serveru: %s\n"
"Verze serveru: %s\n"
"Výchozí upřesnění vzorkování: %s\n"
+"Výchozí mapa kanálů: %s\n"
"Výchozí cíl: %s\n"
"Výchozí zdroj: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Nezdařilo se získání informací o cíli: %s\n"
-#: ../src/utils/pactl.c:194
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:214
+#, c-format
msgid ""
"Sink #%u\n"
"\tState: %s\n"
@@ -1722,26 +1812,41 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Cíl Ä. %u ***\n"
-"Název: %s\n"
-"OvladaÄ: %s\n"
-"Upřesnění vzorkování: %s\n"
-"Mapa kanálů: %s\n"
-"Modul vlastníka: %u\n"
-"Hlasitost %s\n"
-"Zdroj monitoru: %s\n"
-"Latence: %0.0f μs, konfigurováno %0.0f μs\n"
-"Příznaky: %s%s%s%s%s%s\n"
-"Vlastnosti:\n"
-"%s"
-
-#: ../src/utils/pactl.c:258
+"Cíl Ä. %u\n"
+"\tStav: %s\n"
+"\tNázev: %s\n"
+"\tPopis: %s\n"
+"\tOvladaÄ: %s\n"
+"\tUpřesnění vzorkování: %s\n"
+"\tMapa kanálů: %s\n"
+"\tModul vlastníka: %u\n"
+"\tZtlumení: %s\n"
+"\tHlasitost: %s%s%s\n"
+"\t vyvážení %0.2f\n"
+"\tZákladní hlasitost %s%s%s\n"
+"\tZdroj monitoru: %s\n"
+"\tLatence: %0.0f μs, konfigurováno %0.0f μs\n"
+"\tPříznaky: %s%s%s%s%s%s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfily:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tAktivní profil: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Nezdařilo se získání informací o zdroji: %s\n"
-#: ../src/utils/pactl.c:274
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:306
+#, c-format
msgid ""
"Source #%u\n"
"\tState: %s\n"
@@ -1761,34 +1866,39 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Zdroj Ä. %u ***\n"
-"Název: %s\n"
-"OvladaÄ: %s\n"
-"Upřesnění vzorkování: %s\n"
-"Mapa kanálů: %s\n"
-"Modul vlastníka: %u\n"
-"Hlasitost %s\n"
-"Monitor zdroje: %s\n"
-"Latence: %0.0f μs, konfigurováno %0.0f μs\n"
-"Příznaky: %s%s%s%s%s%s\n"
-"Vlastnosti:\n"
-"%s"
-
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+"Zdroj Ä. %u\n"
+"\tStav: %s\n"
+"\tNázev: %s\n"
+"\tPopis: %s\n"
+"\tOvladaÄ: %s\n"
+"\tUpřesnění vzorkování: %s\n"
+"\tMapa kanálů: %s\n"
+"\tModul vlastníka: %u\n"
+"\tZtlumení: %s\n"
+"\tHlasitost: %s%s%s\n"
+"\t vyvážení %0.2f\n"
+"\tZákladní hlasitost %s%s%s\n"
+"\tMonitor zdroje: %s\n"
+"\tLatence: %0.0f μs, konfigurováno %0.0f μs\n"
+"\tPříznaky: %s%s%s%s%s%s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "nic"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Selhalo získání informací o modulu: %s\n"
-#: ../src/utils/pactl.c:342
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:386
+#, c-format
msgid ""
"Module #%u\n"
"\tName: %s\n"
@@ -1797,19 +1907,20 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Modul Ä. %u ***\n"
-"Název: %s\n"
-"Argument: %s\n"
-"PoÄet použití %s\n"
-"Automatické uvolnění: %s\n"
+"Modul Ä. %u\n"
+"\tNázev: %s\n"
+"\tArgument: %s\n"
+"\tPoÄet použití %s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Selhalo získání informací o klientu: %s\n"
-#: ../src/utils/pactl.c:379
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:423
+#, c-format
msgid ""
"Client #%u\n"
"\tDriver: %s\n"
@@ -1817,19 +1928,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Klient Ä. %u ***\n"
-"OvladaÄ: %s\n"
-"Modul vlastníka: %s\n"
-"Vlastnosti:\n"
-"%s"
+"Klient Ä. %u\n"
+"\tOvladaÄ: %s\n"
+"\tModul vlastníka: %s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:396
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:440
+#, c-format
msgid "Failed to get card information: %s\n"
-msgstr "Selhalo až get s n"
+msgstr "Selhalo získání informací o kartě: %s\n"
-#: ../src/utils/pactl.c:414
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:458
+#, c-format
msgid ""
"Card #%u\n"
"\tName: %s\n"
@@ -1838,29 +1949,30 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Klient Ä. %u ***\n"
-"OvladaÄ: %s\n"
-"Modul vlastníka: %s\n"
-"Vlastnosti:\n"
-"%s"
+"Karta Ä. %u\n"
+"\tNázev: %s\n"
+"\tOvladaÄ: %s\n"
+"\tModul vlastníka: %s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tProfily:\n"
-#: ../src/utils/pactl.c:434
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:478
+#, c-format
msgid "\tActive Profile: %s\n"
-msgstr "pipe selhalo: %s"
+msgstr "\tAktivní profil: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Nezdařilo se získání cílových vstupních informací: %s\n"
-#: ../src/utils/pactl.c:464
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:508
+#, c-format
msgid ""
"Sink Input #%u\n"
"\tDriver: %s\n"
@@ -1878,15 +1990,31 @@ msgid ""
"\tResample method: %s\n"
"\tProperties:\n"
"\t\t%s\n"
-msgstr "Vstup s Modul s s s s s s n s"
+msgstr ""
+"Vstup cíle Ä. %u\n"
+"\tOvladaÄ: %s\n"
+"\tModul vlastníka: %s\n"
+"\tKlient: %s\n"
+"\tCíl: %u\n"
+"\tUpřesnění vzorkování: %s\n"
+"\tMapa kanálů: %s\n"
+"\tZtlumení: %s\n"
+"\tHlasitost: %s\n"
+"\t %s\n"
+"\t vyvážení %0.2f\n"
+"\tLatence vyrovnávací paměti: %0.0f μs\n"
+"\tLatence cíle: %0.0f μs\n"
+"\tMetoda převzorkování: %s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:503
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:547
+#, c-format
msgid "Failed to get source output information: %s\n"
-msgstr "Selhalo až get zdroj s n"
+msgstr "Selhalo získání informace o výstupu zdroje: %s\n"
-#: ../src/utils/pactl.c:523
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:567
+#, c-format
msgid ""
"Source Output #%u\n"
"\tDriver: %s\n"
@@ -1900,15 +2028,27 @@ msgid ""
"\tResample method: %s\n"
"\tProperties:\n"
"\t\t%s\n"
-msgstr "Zdroj Výstup s Modul s s s s s n s"
+msgstr ""
+"Výstup zdroje Ä. %u\n"
+"\tOvladaÄ: %s\n"
+"\tModul vlastníka: %s\n"
+"\tKlient: %s\n"
+"\tZdroj: %u\n"
+"\tUpřesnění vzorkování: %s\n"
+"\tMapa kanálů: %s\n"
+"\tLatence vyrovnávací paměti: %0.0f μs\n"
+"\tLatence zdroje: %0.0f μs\n"
+"\tMetoda převzorkování: %s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:554
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:598
+#, c-format
msgid "Failed to get sample information: %s\n"
-msgstr "Selhalo až get s n"
+msgstr "Selhalo získání informace o vzorku: %s\n"
-#: ../src/utils/pactl.c:572
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:616
+#, c-format
msgid ""
"Sample #%u\n"
"\tName: %s\n"
@@ -1923,24 +2063,36 @@ msgid ""
"\tFilename: %s\n"
"\tProperties:\n"
"\t\t%s\n"
-msgstr "Ukázka s s s s s s s n s"
+msgstr ""
+"Vzorek Ä. %u\n"
+"\tNázev: %s\n"
+"\tUpřesnění vzorkování: %s\n"
+"\tMapa kanálů: %s\n"
+"\tHlasitost: %s\n"
+"\t %s\n"
+"\t vyvážení %0.2f\n"
+"\tDélka: %0.1fs\n"
+"\tVelikost: %s\n"
+"\tOpoždění: %s\n"
+"\tNázev souboru: %s\n"
+"\tVlastnosti:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Selhání: %s\n"
-#: ../src/utils/pactl.c:636
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:680
+#, c-format
msgid "Failed to upload sample: %s\n"
-msgstr "Selhalo až s n"
+msgstr "Selhalo nahrání vzorku: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "PÅ™edÄasný konec souboru\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:826
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -1956,6 +2108,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1965,15 +2119,28 @@ msgid ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
msgstr ""
-"s n s seznam n s n s NÃZEVSOUBORU NÃZEV n s NÃZEV n s odstranit NÃZEV n s "
-"pÅ™esunout cíl ID n s pÅ™esunout zdroj ID ZDROJ n s modul NÃZEV n s modul ID n "
-"s cíl n s zdroj ZDROJ n\n"
-" h nápověda Zobrazit nápověda\n"
-" verze Zobrazit verze n\n"
-" s SERVER název z až až\n"
-" n název NÃZEV Jak až zapnuto n"
+"%s [pÅ™epínaÄe] stat\n"
+"%s [pÅ™epínaÄe] list\n"
+"%s [pÅ™epínaÄe] exit\n"
+"%s [pÅ™epínaÄe] upload-sample NÃZEVSOUBORU [NÃZEV]\n"
+"%s [pÅ™epínaÄe] play-sample NÃZEV [CÃL]\n"
+"%s [pÅ™epínaÄe] remove-sample NÃZEV\n"
+"%s [pÅ™epínaÄe] move-sink-input ID CÃL\n"
+"%s [pÅ™epínaÄe] move-source-output ID ZDROJ\n"
+"%s [pÅ™epínaÄe] load-module NÃZEV [ARG ...]\n"
+"%s [pÅ™epínaÄe] unload-module ID\n"
+"%s [pÅ™epínaÄe] suspend-sink [CÃL] 1|0\n"
+"%s [pÅ™epínaÄe] suspend-source [ZDROJ] 1|0\n"
+"%s [pÅ™epínaÄe] set-card-profile [KARTA] [PROFIL] \n"
+"\n"
+" -h, --help Zobrazí tuto nápovědu\n"
+" --version Zobrazí verzi\n"
+"\n"
+" -s, --server=SERVER Název připojovaného serveru\n"
+" -n, --client-name=NÃZEV Způsob volání tohoto klienta na "
+"serveru\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -1984,77 +2151,81 @@ msgstr ""
"Přeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
-msgstr "Prosím a soubor až n"
+msgstr "Zadejte prosím soubor se vzorkem urÄeným k nahrání\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Selhalo otevření zvukového souboru.\n"
-#: ../src/utils/pactl.c:899
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Otevírání proudu %s s upřesněním vzorkování \"%s\".\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
-msgstr "Vy až a název až n"
+msgstr "Je nutné zadat název vzorku urÄeného k pÅ™ehrání\n"
-#: ../src/utils/pactl.c:911
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
-msgstr "Vy až a název až odstranit n"
+msgstr "Je nutné zadat název vzorku urÄeného k odstranÄ›ní\n"
-#: ../src/utils/pactl.c:919
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
-msgstr "Vy až a cíl rejstřík a a cíl n"
+msgstr "Je nutné zadat vstup cíle a cíl\n"
-#: ../src/utils/pactl.c:928
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
-msgstr "Vy až a zdroj rejstřík a a zdroj n"
+msgstr "Je nutné zadat index výstupu zdroje a zdroj\n"
-#: ../src/utils/pactl.c:942
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
-msgstr "Vy až a modul název a n"
+msgstr "Je nutné zadat název modulu a argumenty.\n"
-#: ../src/utils/pactl.c:962
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
-msgstr "Vy až a modul rejstřík n"
+msgstr "Je nutné zadat index modulu\n"
-#: ../src/utils/pactl.c:972
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
-msgstr "Vy ne cíl Vy až při booleovská hodnota hodnota n"
+msgstr "Nelze zadat více než jeden cíl. Je nutné zadat booleovskou hodnotu.\n"
-#: ../src/utils/pactl.c:985
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
-msgstr "Vy ne zdroj Vy až při booleovská hodnota hodnota n"
+msgstr ""
+"Nelze zadat více než jeden zdroj. Je nutné zadat booleovskou hodnotu.\n"
-#: ../src/utils/pactl.c:997
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
-msgstr "Vy až a cíl rejstřík a a cíl n"
+msgstr "Je nutné upřesnit název karty/indexu a název profilu\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Je nutné upřesnit název karty/indexu a název profilu\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Je nutné upřesnit název karty/indexu a název profilu\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Nezadán žádný platný příkaz.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() selhalo: %s"
#: ../src/utils/pax11publish.c:61
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
"\n"
@@ -2064,11 +2235,13 @@ msgid ""
"variables and cookie file.\n"
" -r Remove PulseAudio data from X11 display\n"
msgstr ""
-"s D S O cíl I zdroj c soubor d e n\n"
-" d Zobrazit až implicitní\n"
-" e Exportovat místní až\n"
-" Importovat z alba až místní a soubor\n"
-" Odstranit z alba n"
+"%s [-D displej] [-S server] [-O cíl] [-I zdroj] [-c soubor] [-d|-e|-i|-r]\n"
+"\n"
+" -d Zobrazí aktuální data PulseAudio přiřazená k displeji X11 (výchozí)\n"
+" -e Exportuje místní data PulseAudio na displej X11\n"
+" -i Importuje data PulseAudio z displeje X11 mezi místní proměnné "
+"prostředí a soubor cookie.\n"
+" -r Odstraní data PulseAudio z displeje X11\n"
#: ../src/utils/pax11publish.c:94
#, c-format
@@ -2130,123 +2303,48 @@ msgstr "Nezdařilo se nahrát data cookie\n"
msgid "Not yet implemented.\n"
msgstr "Doposud neimplementováno.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Nezdařilo se zabít démona PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Démon neodpovídá."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Proud úspěšně vytvořen\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Chyba proudu: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Spojení navázáno.\n"
-
-#: ../src/utils/paplay.c:198
-#, fuzzy, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"s SOUBOR n\n"
-" h nápověda Zobrazit nápověda\n"
-" verze Zobrazit verze n\n"
-" Povolit n\n"
-" s SERVER název z až až\n"
-" d zařízení ZAŘÃZENà název z cíl až až\n"
-" n název NÃZEV Jak až zapnuto\n"
-" název NÃZEV Jak až zapnuto\n"
-" svazek svazek in oblast\n"
-" kanál mapa Nastavit kanál mapa až n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Přeloženo s libpulse %s\n"
-"Propojeno s libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, fuzzy, c-format
-msgid "Invalid channel map\n"
-msgstr "Neplatné kanál mapa n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Selhalo otevření souboru \"%s\"\n"
-
-#: ../src/utils/paplay.c:350
-#, fuzzy, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Kanál mapa soubor n"
-
-#: ../src/utils/paplay.c:376
-#, fuzzy, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "s n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
-#, fuzzy
msgid "Cannot access autospawn lock."
-msgstr "přístup."
+msgstr "Nelze přistoupit k zámku automatického spouštění."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2256,8 +2354,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA nás probudila z důvodu zápisu nových dat na zařízení, ale ve "
+"skuteÄnosti nebylo co zapisovat.\n"
+"S nejvÄ›tší pravdÄ›podobností se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosím tento problém vývojářům ALSA.\n"
+"Probudilo nás nastavení POLLOUT - nicméně následné snd_pcm_avail() vrátilo 0 "
+"Äi jinou hodnotu < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2267,92 +2371,137 @@ msgid ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA nás probudila z důvodu Ätení nových dat ze zařízení, ale ve skuteÄnosti "
+"nebylo co Äíst.\n"
+"S nejvÄ›tší pravdÄ›podobností se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosím tento problém vývojářům ALSA.\n"
+"Probudilo nás nastavení POLLIN - nicméně následné snd_pcm_avail() vrátilo 0 "
+"Äi jinou hodnotu < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
-msgstr ""
+msgstr "Vypnuto"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "Přehrávání s velmi věrnou reprodukcí (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "Duplexní telefonie (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
-msgstr ""
+msgstr "Zvukový server PulseAudio"
-#, fuzzy
-#~ msgid ""
-#~ "Called SUID root and real-time and/or high-priority scheduling was "
-#~ "requested in the configuration. However, we lack the necessary "
-#~ "privileges:\n"
-#~ "We are not in group '"
-#~ msgstr ""
-#~ "Volaný SUID root a plánování v reálném Äase / o vysoké prioritÄ› bylo "
-#~ "zažádáno v konfiguraci. Nedisponujeme ovšem potřebnými oprávněními:\n"
-#~ "Nejsme ve skupinÄ› \""
+#~ msgid "Analog Mono"
+#~ msgstr "Analogové mono"
-#, fuzzy
-#~ msgid "--log-time boolean argument"
-#~ msgstr "--disallow-exit booleovský argument"
+#~ msgid "Analog Stereo"
+#~ msgstr "Analogové stereo"
-#~ msgid "Default sink name (%s) does not exist in name register."
-#~ msgstr "Výchozí jméno cíle (%s) ve jmenném registru neexistuje."
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digitální stereo (IEC958)"
-#~ msgid "Buffer overrun, dropping incoming data\n"
-#~ msgstr "Přeběh vyrovnávací paměti, zahazují se příchozí data\n"
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digitální stereo (HDMI)"
-#~ msgid "pa_stream_drop() failed: %s\n"
-#~ msgstr "pa_stream_drop() selhalo: %s\n"
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analogový Surround 4.0"
-#~ msgid "muted"
-#~ msgstr "ztlumeno"
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digitální Surround 4.0 (IEC958/AC3)"
-#, fuzzy
-#~ msgid ""
-#~ "*** Autoload Entry #%u ***\n"
-#~ "Name: %s\n"
-#~ "Type: %s\n"
-#~ "Module: %s\n"
-#~ "Argument: %s\n"
-#~ msgstr "s s s s n"
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analogový Surround 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analogový Surround 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analogový Surround 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digitální Surround 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analogový Surround 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Výstup %s + vstup %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Výstup %s"
-#~ msgid "sink"
-#~ msgstr "cíl"
+#~ msgid "Input %s"
+#~ msgstr "Vstup %s"
-#~ msgid "source"
-#~ msgstr "zdroj"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Proud úspěšně vytvořen\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Chyba proudu: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Spojení navázáno.\n"
#~ msgid ""
-#~ "' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
-#~ "For enabling real-time scheduling please acquire the appropriate "
-#~ "PolicyKit priviliges, or become a member of '"
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
#~ msgstr ""
-#~ "\" a PolicyKit odmítl udělit oprávnění. Opětovné zahazování SUID.\n"
-#~ "Chcete-li zapnout plánování v reálném Äase, obstarejte prosím přísluÅ¡ná "
-#~ "oprávnÄ›ní PolicyKit, nebo se staňte Älenem \""
+#~ "%s [pÅ™epínaÄe] [SOUBOR]\n"
+#~ "\n"
+#~ " -h, --help Zobrazí tuto nápovědu\n"
+#~ " --version Zobrazí verzi\n"
+#~ "\n"
+#~ " -v, --verbose Zapne nakládání s úrovní "
+#~ "podrobností\n"
+#~ "\n"
+#~ " -s, --server=SERVER Název připojovaného serveru\n"
+#~ " -d, --device=ZAŘÃZENà Název pÅ™ipojovaného cíle\n"
+#~ " -n, --client-name=NÃZEV Způsob volání tohoto klienta na "
+#~ "serveru\n"
+#~ " --stream-name=NÃZEV Způsob volání tohoto proudu na "
+#~ "serveru\n"
+#~ " --volume=HLASITOST UrÄí poÄáteÄní (lineární) "
+#~ "hlasitost v rozmezí 0...65536\n"
+#~ " --channel-map=MAPAKANÃLÅ® Nastaví mapu kanálů urÄenou k "
+#~ "použití\n"
#~ msgid ""
-#~ "', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this "
-#~ "user."
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
#~ msgstr ""
-#~ "\", Äi zvyÅ¡te zdrojové limity RLIMIT_NICE/RLIMIT_RTPRIO tohoto uživatele."
+#~ "paplay %s\n"
+#~ "Přeloženo s libpulse %s\n"
+#~ "Propojeno s libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Neplatná mapa kanálů\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Selhalo otevření souboru \"%s\"\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Mapa kanálů neodpovídá souboru.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Používá se vzorkovací specifikace \"%s\"\n"
diff --git a/po/de.po b/po/de.po
index 222fe781..dd96f71c 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-18 12:43+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n"
@@ -19,51 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analog Mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analog Stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Digital Stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Digital Stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analog Surround 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digital Surround 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analog Surround 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analog Surround 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analog Surround 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digital Surround 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analog Surround 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -76,7 +32,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -89,7 +45,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -102,11 +58,24 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Modem"
@@ -176,107 +145,107 @@ msgstr "Keine Authorisierung erhalten: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit antwortete mit '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität "
"ermöglicht."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Richtlinien gewähren das Recht aquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Richtlinien verweigern das Recht acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, fuzzy, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -292,44 +261,44 @@ msgstr ""
"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Verwerfe CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -337,191 +306,201 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "System-Modus aktiv, jedoch --disallow-module-loading nicht gesetzt!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermaßen deaktiviert!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaßen deaktiviert!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Seitengröße ist %lu Bytes."
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
#, fuzzy
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
#, fuzzy
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
#, fuzzy
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Daemon beendet."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -660,15 +639,15 @@ msgstr ""
"\n"
" -n Standardskript nicht laden\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "Option --daemonize erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "Option --fail erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -676,53 +655,53 @@ msgstr ""
"--log-level erfordert Wert für Grad der Protokollierung (entweder numerisch "
"im Bereich 0..4 or einen dieser: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "Option --high-priority erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "Option --realtime erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "Option --disallow-module-loading erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "Option --use-pid-file erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Ungültiges Log-Ziel: Benutzen Sie entweder 'syslog', 'stderr' oder 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--realtime erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta erfordert boolschen Wert"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Ungültige Resample-Methode '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--System erwartet Boolean-Argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "Option --no-cpu-limit erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "Option --disable-shm erfordert bool'schen Wert"
@@ -761,77 +740,82 @@ msgstr "Verwendung: %s\n"
msgid "Load Once: %s\n"
msgstr "Lade einmalig: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgröße '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
#, fuzzy
msgid ""
"The specified default channel map has a different number of channels than "
@@ -886,237 +870,237 @@ msgstr ""
"System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-"
"Terminierung.."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Vorne Mitte"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Vorne Links"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Vorne Rechts"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Hinten Mitte"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Hinten Links"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Hinten Rechts"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Niedrigfrequenzemitter"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Vorne Links der Mitte"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Vorne Rechts der Mitte"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Seite Links"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Seite Rechts"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Zusatz 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Zusatz 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Zusatz 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Zusatz 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Zusatz 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Zusatz 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Zusatz 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Zusatz 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Zusatz 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Zusatz 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Zusatz 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Zusatz 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Zusatz 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Zusatz 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Zusatz 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Zusatz 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Zusatz 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Zusatz 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Zusatz 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Zusatz 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Zusatz 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Zusatz 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Zusatz 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Zusatz 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Zusatz 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Zusatz 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Zusatz 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Zusatz 26"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Zusatz 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Zusatz 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Zusatz 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Zusatz 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Oben Mitte"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Oben Vorne Mitte"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Oben Vorne Links"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Oben Vorne Rechts"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Oben Hinten Mitte"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Oben Hinten Links"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(ungültig)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1277,173 +1261,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Wiedergabe-Stream entleert.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Draining connection to server.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Stream wurde erfolgreich erstellt.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Stream-Fehler: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Stream-Gerät ausgesetzt.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Stream-Gerät reaktiviert.%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Stream unterlaufen.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Stream überlief.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Stream gestartet: %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nicht "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Verbindung hergestellt.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Verbindungsfehler: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Wiedergabe-Stream entleert.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Draining connection to server.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF empfangen.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Signal empfangen, beende.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Erhalten der Latenz fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1469,8 +1448,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1493,6 +1474,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1534,7 +1520,7 @@ msgstr ""
" --process-time=BYTES Diese Prozesszeit pro Anfrage "
"verwenden.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1545,88 +1531,133 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Ungültige Kanal-Zuweisung '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Ungültige Latenz-Angaben '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Ungültige Prozesszeit-Angaben '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Ungültige Sample-Angaben\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Zu viele Argumente.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "aufnehmen"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "abspielen"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Zu viele Argumente.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() fehlgeschlagen: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() fehlgeschlagen.\n"
@@ -1656,8 +1687,7 @@ msgstr "Resume fehlgeschlagen: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "WARNUNG: Sound-Server läuft nicht lokal, nicht ausgesetzt.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT empfangen, beende.\n"
@@ -1685,7 +1715,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1696,32 +1726,32 @@ msgstr ""
"kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Beziehen der Statistik fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Momentane Nutzung: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Während gesamter Laufzeit: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Sample-Pufferspeichergrösse: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1744,12 +1774,12 @@ msgstr ""
"-Standard-Quelle: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1788,12 +1818,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfile:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tAktive Profile: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1832,20 +1872,20 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "k. A."
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1862,12 +1902,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1882,12 +1922,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1904,22 +1944,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktive Profile: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1956,12 +1996,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1990,12 +2030,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2026,23 +2066,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Hochladen des Sample fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Dateiende ist zu früh aufgetreten\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2057,6 +2096,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2086,7 +2127,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2097,49 +2138,45 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Geben Sie eine zu öffnende Sample-Datei an\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr ""
"Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Sie müssen einen Indexwert für ein Modul angeben\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2147,8 +2184,7 @@ msgstr ""
"Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2156,17 +2192,25 @@ msgstr ""
"Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Kein gültiger Befehl angegeben.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() fehlgeschlagen: %s"
@@ -2250,126 +2294,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Stream erfolgreich erzeugt\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Stream-Fehler: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Verbindung hergestellt.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Zeige diese Hilfe\n"
-" --version Zeige Version\n"
-"\n"
-" -v, --verbose Ausführliche Meldungen\n"
-"\n"
-" -s, --server=SERVER Name des Zielservers\n"
-" -d, --device=DEVICE Name des Ziel-Sink\n"
-" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-" --stream-name=NAME Rufname des Streams auf dem Server\n"
-" --volume=VOLUME Initiale (lineare) Lautstärke "
-"zwischen 0...65536\n"
-" --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompliert mit libpulse %s\n"
-"Gelinkt mit libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Ungültige Kanal-Zuweisung\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Öffnen der Datei '%s' fehlgeschlagen\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Sampling-Angabe '%s' wird benutzt\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2380,7 +2346,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2391,38 +2357,132 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Ausgabe %s + Eingabe %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Ausgang %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Eingang %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#~ msgid "Analog Mono"
+#~ msgstr "Analog Mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analog Stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digital Stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digital Stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analog Surround 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digital Surround 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analog Surround 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analog Surround 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analog Surround 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digital Surround 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analog Surround 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Ausgabe %s + Eingabe %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Ausgang %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Eingang %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Stream erfolgreich erzeugt\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Stream-Fehler: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Verbindung hergestellt.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Zeige diese Hilfe\n"
+#~ " --version Zeige Version\n"
+#~ "\n"
+#~ " -v, --verbose Ausführliche Meldungen\n"
+#~ "\n"
+#~ " -s, --server=SERVER Name des Zielservers\n"
+#~ " -d, --device=DEVICE Name des Ziel-Sink\n"
+#~ " -n, --client-name=NAME Rufname des Clients auf dem "
+#~ "Server\n"
+#~ " --stream-name=NAME Rufname des Streams auf dem "
+#~ "Server\n"
+#~ " --volume=VOLUME Initiale (lineare) Lautstärke "
+#~ "zwischen 0...65536\n"
+#~ " --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Kompliert mit libpulse %s\n"
+#~ "Gelinkt mit libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Ungültige Kanal-Zuweisung\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Öffnen der Datei '%s' fehlgeschlagen\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Sampling-Angabe '%s' wird benutzt\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/de_CH.po b/po/de_CH.po
index 68076bd4..7c069efb 100644
--- a/po/de_CH.po
+++ b/po/de_CH.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-18 12:55+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n"
@@ -18,51 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swiss German\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analog Mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analog Stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Digital Stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Digital Stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analog Surround 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digital Surround 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analog Surround 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analog Surround 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analog Surround 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digital Surround 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analog Surround 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -75,7 +31,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -88,7 +44,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -101,11 +57,24 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Modem"
@@ -175,107 +144,107 @@ msgstr "Keine Authorisierung erhalten: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit antwortete mit '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität "
"ermöglicht."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Richtlinien gewähren das Recht aquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Richtlinien verweigern das Recht acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, fuzzy, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -291,44 +260,44 @@ msgstr ""
"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Verwerfe CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -336,191 +305,201 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "System-Modus aktiv, jedoch --disallow-module-loading nicht gesetzt!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Seitengrösse ist %lu Bytes."
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
#, fuzzy
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
#, fuzzy
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
#, fuzzy
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Daemon beendet."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -659,15 +638,15 @@ msgstr ""
"\n"
" -n Standardskript nicht laden\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "Option --daemonize erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "Option --fail erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -675,53 +654,53 @@ msgstr ""
"--log-level erfordert Wert für Grad der Protokollierung (entweder numerisch "
"im Bereich 0..4 or einen dieser: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "Option --high-priority erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "Option --realtime erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "Option --disallow-module-loading erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "Option --use-pid-file erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Ungültiges Log-Ziel: Benutzen Sie entweder 'syslog', 'stderr' oder 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--realtime erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta erfordert boolschen Wert"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Ungültige Resample-Methode '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--System erwartet Boolean-Argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "Option --no-cpu-limit erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "Option --disable-shm erfordert bool'schen Wert"
@@ -760,77 +739,82 @@ msgstr "Verwendung: %s\n"
msgid "Load Once: %s\n"
msgstr "Lade einmalig: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
#, fuzzy
msgid ""
"The specified default channel map has a different number of channels than "
@@ -888,237 +872,237 @@ msgstr ""
"System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-"
"Terminierung.."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Vorne Mitte"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Vorne Links"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Vorne Rechts"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Hinten Mitte"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Hinten Links"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Hinten Rechts"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Niedrigfrequenzemitter"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Vorne Links der Mitte"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Vorne Rechts der Mitte"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Seite Links"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Seite Rechts"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Zusatz 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Zusatz 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Zusatz 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Zusatz 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Zusatz 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Zusatz 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Zusatz 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Zusatz 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Zusatz 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Zusatz 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Zusatz 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Zusatz 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Zusatz 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Zusatz 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Zusatz 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Zusatz 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Zusatz 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Zusatz 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Zusatz 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Zusatz 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Zusatz 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Zusatz 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Zusatz 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Zusatz 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Zusatz 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Zusatz 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Zusatz 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Zusatz 26"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Zusatz 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Zusatz 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Zusatz 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Zusatz 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Oben Mitte"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Oben Vorne Mitte"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Oben Vorne Links"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Oben Vorne Rechts"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Oben Hinten Mitte"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Oben Hinten Links"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(ungültig)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1280,173 +1264,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Wiedergabe-Stream entleert.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Draining connection to server.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Stream wurde erfolgreich erstellt.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Stream-Fehler: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Stream-Gerät ausgesetzt.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Stream-Gerät reaktiviert.%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Stream unterlaufen.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Stream überlief.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Stream gestartet: %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nicht "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Verbindung hergestellt.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Verbindungsfehler: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Wiedergabe-Stream entleert.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Draining connection to server.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF empfangen.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Signal empfangen, beende.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Erhalten der Latenz fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1472,8 +1451,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1496,6 +1477,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1537,7 +1523,7 @@ msgstr ""
" --process-time=BYTES Diese Prozesszeit pro Anfrage "
"verwenden.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1548,88 +1534,133 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Ungültige Kanal-Zuweisung '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Ungültige Latenz-Angaben '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Ungültige Prozesszeit-Angaben '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Ungültige Sample-Angaben\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Zu viele Argumente.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "aufnehmen"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "abspielen"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Zu viele Argumente.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() fehlgeschlagen: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() fehlgeschlagen.\n"
@@ -1659,8 +1690,7 @@ msgstr "Resume fehlgeschlagen: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "WARNUNG: Sound-Server läuft nicht lokal, nicht ausgesetzt.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT empfangen, beende.\n"
@@ -1688,7 +1718,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1699,32 +1729,32 @@ msgstr ""
"kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Beziehen der Statistik fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Momentane Nutzung: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Während gesamter Laufzeit: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Sample-Pufferspeichergrösse: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1747,12 +1777,12 @@ msgstr ""
"-Standard-Quelle: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1791,12 +1821,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfile:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tAktive Profile: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1835,20 +1875,20 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "k. A."
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1865,12 +1905,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1885,12 +1925,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1907,22 +1947,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktive Profile: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1959,12 +1999,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1993,12 +2033,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2029,23 +2069,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Hochladen des Sample fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Dateiende ist zu früh aufgetreten\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2060,6 +2099,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2089,7 +2130,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2100,49 +2141,45 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Geben Sie eine zu öffnende Sample-Datei an\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr ""
"Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Sie müssen einen Indexwert für ein Modul angeben\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2150,8 +2187,7 @@ msgstr ""
"Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2159,17 +2195,25 @@ msgstr ""
"Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Kein gültiger Befehl angegeben.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() fehlgeschlagen: %s"
@@ -2253,126 +2297,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Stream erfolgreich erzeugt\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Stream-Fehler: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Verbindung hergestellt.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Zeige diese Hilfe\n"
-" --version Zeige Version\n"
-"\n"
-" -v, --verbose Ausführliche Meldungen\n"
-"\n"
-" -s, --server=SERVER Name des Zielservers\n"
-" -d, --device=DEVICE Name des Ziel-Sink\n"
-" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-" --stream-name=NAME Rufname des Streams auf dem Server\n"
-" --volume=VOLUME Initiale (lineare) Lautstärke "
-"zwischen 0...65536\n"
-" --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompliert mit libpulse %s\n"
-"Gelinkt mit libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Ungültige Kanal-Zuweisung\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Öffnen der Datei '%s' fehlgeschlagen\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Sampling-Angabe '%s' wird benutzt\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2390,7 +2356,7 @@ msgstr ""
"von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < "
"min_avail ist."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2408,38 +2374,132 @@ msgstr ""
"von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < "
"min_avail ist."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Ausgabe %s + Eingabe %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Ausgang %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Eingang %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#~ msgid "Analog Mono"
+#~ msgstr "Analog Mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analog Stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digital Stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digital Stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analog Surround 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digital Surround 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analog Surround 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analog Surround 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analog Surround 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digital Surround 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analog Surround 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Ausgabe %s + Eingabe %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Ausgang %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Eingang %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Stream erfolgreich erzeugt\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Stream-Fehler: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Verbindung hergestellt.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Zeige diese Hilfe\n"
+#~ " --version Zeige Version\n"
+#~ "\n"
+#~ " -v, --verbose Ausführliche Meldungen\n"
+#~ "\n"
+#~ " -s, --server=SERVER Name des Zielservers\n"
+#~ " -d, --device=DEVICE Name des Ziel-Sink\n"
+#~ " -n, --client-name=NAME Rufname des Clients auf dem "
+#~ "Server\n"
+#~ " --stream-name=NAME Rufname des Streams auf dem "
+#~ "Server\n"
+#~ " --volume=VOLUME Initiale (lineare) Lautstärke "
+#~ "zwischen 0...65536\n"
+#~ " --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Kompliert mit libpulse %s\n"
+#~ "Gelinkt mit libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Ungültige Kanal-Zuweisung\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Öffnen der Datei '%s' fehlgeschlagen\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Sampling-Angabe '%s' wird benutzt\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/el.po b/po/el.po
index cc1baaef..9e593e16 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: el\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2008-08-22 19:40+0300\n"
"Last-Translator: Dimitris Glezos <dimitris@glezos.com>\n"
"Language-Team: Greek <fedora-trans-el@redhat.com>\n"
@@ -16,51 +16,7 @@ msgstr ""
"X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,7 +25,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -78,7 +34,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -87,11 +43,24 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr ""
@@ -161,104 +130,104 @@ msgstr ""
msgid "PolicyKit responded with '%s'"
msgstr ""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr ""
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Έξοδος."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Αποτυχία εÏÏεσης ομάδας χÏηστών '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr ""
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -271,201 +240,211 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr ""
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Αυτό είναι το PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -473,31 +452,31 @@ msgstr ""
"Δικέ μου, ο πυÏήνας σου είναι για τα μπάζα! Η Ï€Ïόταση του σεφ σήμεÏα είναι "
"Linux με ενεÏγοποιημένα τα high-resolution timers!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr ""
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -571,66 +550,66 @@ msgid ""
" -n Don't load default script file\n"
msgstr ""
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
msgstr ""
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr ""
@@ -669,77 +648,82 @@ msgstr ""
msgid "Load Once: %s\n"
msgstr ""
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr ""
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -784,237 +768,237 @@ msgstr ""
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr ""
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr ""
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr ""
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr ""
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr ""
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr ""
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr ""
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr ""
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr ""
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr ""
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr ""
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr ""
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr ""
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr ""
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr ""
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr ""
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr ""
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr ""
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr ""
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr ""
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr ""
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr ""
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr ""
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr ""
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr ""
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr ""
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr ""
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr ""
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr ""
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr ""
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr ""
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr ""
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr ""
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr ""
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr ""
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr ""
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr ""
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr ""
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr ""
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr ""
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr ""
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr ""
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr ""
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr ""
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr ""
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr ""
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr ""
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr ""
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr ""
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr ""
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr ""
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr ""
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr ""
@@ -1175,172 +1159,167 @@ msgstr ""
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr ""
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr ""
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr ""
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr ""
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr ""
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1367,8 +1346,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1391,9 +1372,14 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1401,88 +1387,130 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
#, c-format
-msgid "Invalid channel map '%s'\n"
+msgid "Invalid client name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:776
#, c-format
-msgid "Invalid latency specification '%s'\n"
+msgid "Invalid stream name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:813
#, c-format
-msgid "Invalid process time specification '%s'\n"
+msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:842
#, c-format
-msgid "Invalid sample specification\n"
+msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:849
#, c-format
-msgid "Channel map doesn't match sample specification\n"
+msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:861
#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+msgid "Invalid property '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "recording"
+#: ../src/utils/pacat.c:878
+#, c-format
+msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "playback"
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:736
+#: ../src/utils/pacat.c:907
#, c-format
msgid "open(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:741
+#: ../src/utils/pacat.c:912
#, c-format
msgid "dup2(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:751
-#, c-format
+#: ../src/utils/pacat.c:919
msgid "Too many arguments.\n"
msgstr ""
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:930
+msgid "Failed to generate sample specification for file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:950
+msgid "Failed to open audio file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+msgid "Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
#, c-format
-msgid "pa_mainloop_new() failed.\n"
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
msgstr ""
-#: ../src/utils/pacat.c:785
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr ""
@@ -1512,8 +1540,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1535,7 +1562,7 @@ msgid ""
"\n"
msgstr ""
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1543,32 +1570,32 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1582,12 +1609,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1609,12 +1636,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, c-format
+msgid "\tPorts:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, c-format
+msgid "\tActive Port: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1636,20 +1673,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1660,12 +1697,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1675,12 +1712,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1691,22 +1728,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1727,12 +1764,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1749,12 +1786,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -1772,22 +1809,21 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1803,6 +1839,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1813,7 +1851,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -1821,71 +1859,71 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr ""
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1084
+msgid "You have to specify a source name/index and a port name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr ""
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr ""
@@ -1962,109 +2000,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr ""
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr ""
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2075,7 +2052,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2086,34 +2063,19 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
diff --git a/po/es.po b/po/es.po
index d3221d33..8af1c738 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,60 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
-"PO-Revision-Date: 2009-04-18 12:45-0300\n"
-"Last-Translator: Domingo Becker <domingobecker@gmail.com>\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: 2009-06-11 21:48-0300\n"
+"Last-Translator: Dennis Tobar <dennis.tobar@gmail.com>\n"
"Language-Team: Fedora Spanish <fedora-trans-es@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Spanish\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Mono Analógico"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Estéreo Analógico"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Estéreo Digital (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Estéreo Digital (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Análogo Envolvente 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digital Envolvente 4.0 (IEC9588/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Análogo Envolvente 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Análogo Envolvente 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Análogo Envolvente 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digital Envolvente 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Análogo Envolvénte 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -74,7 +30,7 @@ msgstr ""
"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
"informe ésto a los desarrolladores de ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +43,7 @@ msgstr ""
"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
"informe ésto a los desarrolladores de ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +56,24 @@ msgstr ""
"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
"informe ésto a los desarrolladores de ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Audio Interno"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Módem"
@@ -174,104 +143,104 @@ msgstr "No se pudo obtener auth: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit respondió con '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Se obtuvo la señal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Saliendo."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falló al buscar usuario '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falló al buscar grupo '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Se encontró el usuario '%s' (UID %lu) y el grupo '%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID del usuario '%s' y del grupo '%s' no son similares."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "El directorio de inicio del usuario '%s' no es '%s', ignorando."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falló al crear '%s': %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falló al cambiar la lista de grupo: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falló al cambiar GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falló al cambiar UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Se han liberado con éxitos los privilegios de root."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "El modo a nivel de sistema no es soportado en esta plataforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falló: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Falló al analizar la línea de comando."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -293,48 +262,48 @@ msgstr ""
"o aumente los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este "
"usuario."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitadada la planificación de prioridad alta, pero no están "
"permitidas por la política."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Fallo en RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitada la planificación en tiempo real, pero no está permitido por "
"la política."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "El demonio no está funcionando"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "El demonio está funcionando como PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "No se ha podido detener el demonio: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -342,165 +311,175 @@ msgstr ""
"Este programa no tiene por qué ser ejecutado como root (a menos que --system "
"sea especificado)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Se necesitan privilegios de root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start no está soportado para las instancias del sistema."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-exit! "
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-"
"module-loading!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente el modo SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente exit idle time!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Fallo al intentar adquirir stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Falló el pipe: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Falló el fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Falló la operación read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Falló el inicio del demonio. "
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "El demonio se inició exitosamente."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Esto es PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilación: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilación CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Ejecutándose en el host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Se encontraron %u CPUs."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "El tamaño de la página es de %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Soporte para compilar con Valgrind: si"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Soporte para compilar con Valgrind: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Ejecutándose en modo valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Build optimizado: si"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Build optimizado: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todos los chequeos deshabilitados."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definido, sólo se deshabilitan los chequeos fast path."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Todos los chequeos habilitados."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Fallo al intentar obtener el ID de la máquina"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilizando directorio de tiempo de ejecución %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon "
"appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -508,33 +487,33 @@ msgstr ""
"¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el "
"chef es Linux con cronómetros de alta resolución activados! "
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a "
"funcionar."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -686,15 +665,15 @@ msgstr ""
" -n No carga el archivo script "
"predeterminado\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize espera un argumento booleano"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail espera un argumento booleano"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -703,52 +682,52 @@ msgstr ""
"caiga en el rango de 0..4; ya sea uno de debug, info, notice, warn, o "
"error). "
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority espera un argumento booleano"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime espera un argumento booleano"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera un argumento booleano"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit espera un argumento booleano"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use pid-file espera un argumento booleano"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Log target inválido: use o \"syslog\", o \"stderr\", o \"auto\"."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time espera un argumento booleano"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta espera un argumento booleano"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Método de remuestreo inválido '%s'"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system espera un argumento booleano"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit espera un argumento booleano"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm espera un argumento booleano"
@@ -787,77 +766,82 @@ msgstr "Uso: %s\n"
msgid "Load Once: %s\n"
msgstr "Carga una vez: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, fuzzy, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr "ADVERTENCIA DE COMPATIBILIDAD: %s\n"
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destino de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de remuestreo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] Rlimit no soportado en esta plataforma."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de muestra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Tasa de muestra inválida '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canal inválido '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamaño inválido de fragmento '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "No se pudo abrir el archivo de configuración: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -910,237 +894,237 @@ msgstr ""
"Las políticas del sistema impidieron a PulseAudio adquirir la planificación "
"de tiempo real."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Frente central"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Frente izquierdo"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Frente derecho"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Posterior central"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "POsterior izquierdo"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "POsterior derecho"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Emisor de baja frecuencia"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Frente izquierdo del centro"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Frente derecho del centro"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Lateral izquierdo"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Lateral derecho"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Auxiliar 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Auxiliar 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Auxiliar 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Auxiliar 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Auxiliar 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Auxiliar 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Auxiliar 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Auxiliar 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Auxiliar 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Auxiliar 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Auxiliar 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Auxiliar 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Auxiliar 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Auxiliar 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Auxiliar 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Auxiliar 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Auxiliar 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Auxiliar 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Auxiliar 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Auxiliar 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Auxiliar 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Auxiliar 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Auxiliar 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Auxiliar 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Auxiliar 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Auxiliar 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Auxiliar 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Auxiliar 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Auxiliar 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Auxiliar 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Auxiliar 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Auxiliar 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Central superior"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Central frontal superior"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Frontal superior izquierdo"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Frontal superior derecho"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Posterior central superior "
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Posterior izquierdo superior"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Posterior derecho superior"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(inválido)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Estéreo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Envolvente 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Envolvente 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Envolvente 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Envolvente 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Envolvente 7.1"
@@ -1301,173 +1285,168 @@ msgstr "waitpid(:) %s"
msgid "Received message for unknown extension '%s'"
msgstr "Se ha recibido un mensaje para una extensión desconocida '%s'"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Error al drenar el flujo: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "El flujo de platback se ha drenado.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Drenando conexión con el servidor.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() falló: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() falló: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Se ha creado exitosamente el flujo (stream).\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() falló: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Métrica del búfer: maxlenght=%u, tlenghth=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Métrica del búfer: maxlenght=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Utilizando especificaciones de muestra '%s', mapa del canal '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Conectado al dispositivo %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Error de flujo: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Dispositivo de flujo suspendido. %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Dispositivo de flujo reestablecido. %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Flujo agotado. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Flujo saturado.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Flujo iniciado. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Fujo trasladado al dispositivo %s (%u, %ssuspended). %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Los atributos del buffer de flujo cambiaron. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Conexión establecida. %s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() falló; %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() falló: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falló: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Error en la conexión: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Error al drenar el flujo: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "El flujo de platback se ha drenado.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Drenando conexión con el servidor.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Hay EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() falló: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() falló: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Hay señal, saliendo (exiting).\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "No se pudo obtener latencia: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tiempo: %0.3f sec; Latencia: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() falló: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1493,8 +1472,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1517,6 +1498,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opciones]\n"
"\n"
@@ -1568,7 +1554,7 @@ msgstr ""
" --process-time=BYTES Solicitar los procesos de tiempo por "
"pedido especificados en bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1579,88 +1565,132 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mapa de canales inválido '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Método de remuestreo inválido '%s'"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canales inválido '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificación de latencia inválida '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificación de tiempo de proceso inválida '%s'\n"
-#: ../src/utils/pacat.c:716
-#, c-format
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Método de remuestreo inválido '%s'"
+
+#: ../src/utils/pacat.c:878
+#, fuzzy, c-format
+msgid "Unknown file format %s."
+msgstr "Formato de archivo desconocido %s."
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Especificación de muestra inválida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open() %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Demasiados argumentos.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Error al intentar obtener información de muestra: %s\n"
+
+#: ../src/utils/pacat.c:950
+msgid "Failed to open audio file.\n"
+msgstr "Error al intentar abrir el archivo de sonido.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Error al intentar obtener información de muestra: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "El mapa del canal no se corresponde con la especificación de muestra\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Abriendo un %s flujo con las especificaciones de muestra '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "grabando"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "playback"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open() %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Demasiados argumentos.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falló.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() falló.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falló.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() falló: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() falló.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falló.\n"
@@ -1690,8 +1720,7 @@ msgstr "Error al continuar: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "AVISO: El servidor de sonido no es local, no se suspende.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Hay SIGINT, saliendo.\n"
@@ -1720,7 +1749,7 @@ msgstr ""
"conectarse\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1731,34 +1760,34 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Error al intentar obtener estadísticas: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Actualmente en uso: %u bloques conteniendo %s bytes en total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Ubicados durante a lo largo del tiempo: %u bloques conteniendo %s bytes en "
"total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Tamaño del cache de muestra: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Error al intentar obtener información del servidor: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1781,12 +1810,12 @@ msgstr ""
"Fuente por defecto: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Error al intentar obtener información del destino: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1825,12 +1854,22 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tPerfiles:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tPerfil Activo: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Error al intentar obtener información de la fuente: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1869,20 +1908,20 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Error al intentar obtener información del módulo: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1899,12 +1938,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Error al intentar obtener información del cliente: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1919,12 +1958,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Fallo al obtener la información de la placa: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1941,22 +1980,22 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPerfiles:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tPerfil Activo: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Error al intentar obtener información de entrada del destino: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1993,13 +2032,13 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
"Error al intentar obtener información acerca de la salida de la fuenta: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2028,12 +2067,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Error al intentar obtener información de muestra: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2064,23 +2103,22 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Falla: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Fallo al cargar muestra: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Fin prematuro del archivo\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2095,6 +2133,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2126,7 +2166,7 @@ msgstr ""
" -n, --client-name=NAME El nombre de este cliente en el "
"servidor\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2137,50 +2177,46 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linked con libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Por favor, especifique un archivo de muestra a cargar\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Error al intentar abrir el archivo de sonido.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Abriendo un %s flujo con las especificaciones de muestra '%s'.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Debe especificar un nombre de muestra para ser escuchado\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Debe especificar un nombre de muestra para ser eliminado\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Debe especificar un índice para las entradas del destino y un destino\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr ""
"Debe especificar un índice para las salidas de la fuente, y una fuente\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Debe especificar un nombre de módulo y los argumentos\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Debe especificar un índice de módulo\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2188,8 +2224,7 @@ msgstr ""
"No puede especificar más de un sumidero. Tiene que especificar un valor "
"booleano.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2197,17 +2232,25 @@ msgstr ""
"No puede especificar más de una fuente. Tiene que especificar un valor "
"booleano.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Debe especificar un nombre de placa/índice y un nombre de perfil\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Debe especificar un nombre de placa/índice y un nombre de perfil\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Debe especificar un nombre de placa/índice y un nombre de perfil\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "No se ha especificadfo ningún comando válido.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() falló: %s"
@@ -2292,132 +2335,51 @@ msgstr "Error al cargar datos de cookie\n"
msgid "Not yet implemented.\n"
msgstr "Aún no se ha implementado.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+#, fuzzy
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+"El demonio PulseAudio no está ejecutándose, o no se está ejecutando como un "
+"demonio de sesión."
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Error al intentar detener el demonio de PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "El demonio no responde."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Se ha creado el flujo exitosamente\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Error de flujo: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Conección establecida.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Muestra esta ayuda\n"
-" --version Muestra la versión\n"
-"\n"
-" -v, --verbose Habilita operación con vocabulario "
-"más detallado\n"
-"\n"
-" -s, --server=SERVER El nombre del servidor al que "
-"conectarse\n"
-" -d, --device=DEVICE El nombre del destino al que "
-"conectarse\n"
-" -n, --client-name=NAME Cómo llamar a este cliente en el "
-"servidor\n"
-" --stream-name=NAME Cómo llamar a este flujo en el "
-"servidor\n"
-" --volume=VOLUME Especifica el volumen inicial "
-"(linear)en el rango de 0...65536\n"
-" --channel-map=CHANNELMAP Establece el mapa del canal para el "
-"uso\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilado con libpulse %s\n"
-"Linked con libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mapa de canal inválido\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Error al intentar abrir el archivo '%s'\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "El mapa del canal no se corresponde con el archivo.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Utilizando especificaciones de muestra '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "No se puede acceder al candado de autogeneración."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2434,7 +2396,7 @@ msgstr ""
"Nos despertaron con POLLOUT puesto -- sin embargo, una llamada a "
"snd_pcm_avail() devolvió 0 u otro valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2451,38 +2413,136 @@ msgstr ""
"Nos despertaron con POLLIN puesto -- sin embargo, una llamada a snd_pcm_avail"
"() devolvió 0 u otro valor < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Salida %s + Entrada %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Salida %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Entrada %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "Apagado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "Reproducción de Alta Fidelidad (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telefonía Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Servidor de Sonido PulseAudio"
+#~ msgid "Analog Mono"
+#~ msgstr "Mono Analógico"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Estéreo Analógico"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Estéreo Digital (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Estéreo Digital (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Análogo Envolvente 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digital Envolvente 4.0 (IEC9588/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Análogo Envolvente 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Análogo Envolvente 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Análogo Envolvente 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digital Envolvente 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Análogo Envolvénte 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Salida %s + Entrada %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Salida %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Entrada %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Se ha creado el flujo exitosamente\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Error de flujo: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Conección establecida.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Muestra esta ayuda\n"
+#~ " --version Muestra la versión\n"
+#~ "\n"
+#~ " -v, --verbose Habilita operación con "
+#~ "vocabulario más detallado\n"
+#~ "\n"
+#~ " -s, --server=SERVER El nombre del servidor al que "
+#~ "conectarse\n"
+#~ " -d, --device=DEVICE El nombre del destino al que "
+#~ "conectarse\n"
+#~ " -n, --client-name=NAME Cómo llamar a este cliente en el "
+#~ "servidor\n"
+#~ " --stream-name=NAME Cómo llamar a este flujo en el "
+#~ "servidor\n"
+#~ " --volume=VOLUME Especifica el volumen inicial "
+#~ "(linear)en el rango de 0...65536\n"
+#~ " --channel-map=CHANNELMAP Establece el mapa del canal para "
+#~ "el uso\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilado con libpulse %s\n"
+#~ "Linked con libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mapa de canal inválido\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Error al intentar abrir el archivo '%s'\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "El mapa del canal no se corresponde con el archivo.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Utilizando especificaciones de muestra '%s'\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/fi.po b/po/fi.po
index 5b72a3dc..c005658d 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-05 16:24+0300\n"
"Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu@lokalisointi.org>\n"
@@ -16,51 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analoginen mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analoginen stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Digitaalinen stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Digitaalinen stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analoginen tilaääni 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digitaalinen tilaääni 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analoginen tilaääni 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analoginen tilaääni 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analoginen tilaääni 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digitaalinen tilaääni 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analoginen tilaääni 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -72,7 +28,7 @@ msgstr ""
"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa â€%sâ€. Ilmoita tästä "
"ongelmasta ALSA-kehittäjille."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +41,7 @@ msgstr ""
"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa â€%sâ€. Ilmoita tästä "
"ongelmasta ALSA-kehittäjille."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -98,11 +54,24 @@ msgstr ""
"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa â€%sâ€. Ilmoita tästä "
"ongelmasta ALSA-kehittäjille."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Sisäinen äänentoisto"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Modeemi"
@@ -172,104 +141,104 @@ msgstr "Tunnistautumista ei saada: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit vastasi â€%sâ€"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Saatiin signaali %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Poistutaan."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Käyttäjää â€%s†ei löydetty."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ryhmää â€%s†ei löydetty."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Löydettiin käyttäjä â€%s†(UID %lu) ja ryhmä â€%s†(GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "Käyttäjän â€%s†ja ryhmän â€%s†GID:t eivät vastaa toisiaan."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Käyttäjän â€%s†kotihakemisto ei ole â€%sâ€, ohitetaan."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Hakemiston â€%s†luominen epäonnistui: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ryhmäluettelon vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root-oikeuksista luopuminen onnistui."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Järjestelmänlaajuista tilaa ei tueta tällä alustalla."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) epäonnistui: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Komentorivin jäsentäminen epäonnistui."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Ollaan ryhmässä â€%sâ€, korkean prioriteetin ajoitus on sallittua."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Ollaan ryhmässä â€%sâ€, tosiaikainen vuorottaminen on sallittua."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit myöntää acquire-high-priority-oikeuden."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ei myönnä acquire-high-priority-oikeutta."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit myöntää acquire-real-time-oikeuden."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ei myönnä acquire-real-time-oikeutta."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -290,48 +259,48 @@ msgstr ""
"käyttäjän RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja reaaliaikaisen ja/tai "
"korkean prioriteetin ajoituksen ottamiseksi käyttöön."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Korkean prioriteetin ajoitus otettu käyttöön asetuksissa, mutta käytännöt "
"eivät salli sitä."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO:n kasvatus onnistui"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO epäonnistui: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Luovutaan CAP_NICE:stä"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Tosiaikainen ajoitus otettu käyttöön asetuksissa, mutta käytännöt eivät "
"salli sitä."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Taustaprosessi ei ole käynnissä"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Taustaprosessi käynnissä prosessitunnisteella %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Taustaprosessin lopettaminen epäonnistui: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -339,164 +308,174 @@ msgstr ""
"Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --"
"system ole määritelty)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Pääkäyttäjän (root) oikeudet vaaditaan."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start-valitsinta ei tueta järjestelmätilassa."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Suoritetaan järjestelmätilassa, mutta --disallow-exit ei ole asetettuna!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Suoritetaan järjestelmätilassa, mutta -disallow-module-loading ei ole "
"asetettuna!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"Suoritetaan järjestelmätilassa, otetaan SHM-tila pakotetusti pois käytöstä."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Suoritetaan järjestelmätilassa, otetaan poistumisen joutenoloaika "
"pakotetusti pois käytöstä."
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio:n saaminen epäonnistui."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "putki epäonnistui: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() epäonnistui: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() epäonnistui: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Taustaprosessin käynnistys epäonnistui."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Taustaprosessin käynnistys onnistui."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Tämä on PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Käännöksen isäntäkone: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Käännösaikaiset C-liput (CFLAGS): %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Käynnissä isäntäkoneella: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Löydettiin %u CPU:ta."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Sivun koko on %lu tavua"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Käännetty Valgrind-tuella: kyllä"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Käännetty Valgrind-tuella: ei"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Käynnissä valgrind-tilassa: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimoitu rakentaminen: kyllä"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimoitu rakentaminen: ei"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG on määritelty, kaikki assertit ovat poissa käytöstä."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH on määritelty, vain fast path -assertit ovat poissa käytöstä."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Kaikki assertit ovat käytössä."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Konetunnisteen nouto epäonnistui"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() epäonnistui."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -504,33 +483,33 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() epäonnistui."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"Taustaprosessin käynnistys ilman ladattavia moduuleita, kieltäydytään "
"toiminnasta."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -685,15 +664,15 @@ msgstr ""
" -n Älä lataa oletuskomentosarja-\n"
" tiedostoa\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -701,54 +680,54 @@ msgstr ""
"--log-level vaatii lokikirjoituksen tason argumentiksi (joko numero väliltä "
"0..4 tai yksi seuraavista: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Virheellinen lokikirjoituksen kohde: käytä jotain seuraavista: â€syslogâ€, "
"â€stderr†tai â€autoâ€."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Virheellinen uudelleennäytteistyksen tapa â€%sâ€."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm vaatii totuusarvoisen argumentin"
@@ -787,77 +766,82 @@ msgstr "Käyttö: %s\n"
msgid "Load Once: %s\n"
msgstr "Lataa kerran: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Polku: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde â€%sâ€."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen taso â€%sâ€."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa â€%sâ€."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Virheellinen rlimit â€%sâ€."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimitiä ei tueta tällä alustalla."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Virheellinen näytemuoto â€%sâ€."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Virheellinen näytteenottotaajuus â€%sâ€."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Virheelliset näytekanavat â€%sâ€."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Virheellinen kanavakartta â€%sâ€."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Virheellinen fragmenttimäärä â€%sâ€."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Virheellinen fragmenttikoko â€%sâ€."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Virheellinen nice-taso â€%sâ€."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -909,237 +893,237 @@ msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
"Järjestelmäkäytäntö estää PulseAudiota saamasta reaaliaikaista ajoitusta."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Keski"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Vasen etu"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Oikea etu"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Takakeski"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Vasen taka"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Oikea taka"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Alataajuus"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Vasemmalle keskeltä etu"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Oikealle keskeltä etu"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Vasen sivu"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Oikea sivu"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Avustava 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Avustava 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Avustava 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Avustava 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Avustava 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Avustava 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Avustava 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Avustava 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Avustava 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Avustava 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Avustava 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Avustava 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Avustava 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Avustava 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Avustava 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Avustava 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Avustava 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Avustava 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Avustava 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Avustava 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Avustava 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Avustava 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Avustava 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Avustava 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Avustava 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Avustava 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Avustava 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Avustava 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Avustava 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Avustava 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Avustava 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Avustava 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Keski ylä"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Keski ylä etu"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Vasen ylä etu"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Oikea ylä etu"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Keski ylä taka"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Vasen ylä taka"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Oikea ylä taka"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(virheellinen)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "4.0-tilaääni"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "4.1-tilaääni"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "5.0-tilaääni"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "5.1-tilaääni"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "7.1-tilaääni"
@@ -1300,173 +1284,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Saatiin viesti tuntemattomalle laajennokselle â€%sâ€"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Virran tyhjentäminen epäonnistui: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Toistovirta on tyhjennetty.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Tyhjennetään yhteyttä palvelimelle.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Virran luonti onnistui.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Puskuritiedot: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Puskuritiedot: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Käytetään näytemäärittelyä â€%sâ€, kanavakarttaa â€%sâ€.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Yhdistetty laitteeseen %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Virtavirhe: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Virtalaite keskeytetty.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Virtalaite palautettu.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Virran alivuoto.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Virran ylivuoto.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Virta käynnistetty.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Virta siirretty laitteelle %s (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "ei "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Virran puskuriattribuutteja muutettu.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Yhteys muodostettu.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Yhteysvirhe: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Virran tyhjentäminen epäonnistui: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Toistovirta on tyhjennetty.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Tyhjennetään yhteyttä palvelimelle.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Saatiin EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Saatiin signaali, lopetetaan.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Latenssin selvittäminen epäonnistui: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Aika: %0.3f s; latenssi: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1492,8 +1471,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1516,6 +1497,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [valitsimet]\n"
"\n"
@@ -1564,7 +1550,7 @@ msgstr ""
" --process-time=TAVUA Pyydä määritettyä prosessiaikaa "
"pyyntöä kohti tavuissa.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1575,88 +1561,133 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Virheellinen kanavakartta â€%sâ€\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Virheellinen uudelleennäytteistyksen tapa â€%sâ€."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Virheellinen kanavakartta â€%sâ€\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Virheellinen latenssimääritys â€%sâ€\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Virheellinen prosessiajan määritys â€%sâ€\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Virheellinen uudelleennäytteistyksen tapa â€%sâ€."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Virheellinen näytemääritys\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Liian monta argumenttia.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Näytetietojen nouto epäonnistui: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Äänitiedoston avaaminen epäonnistui.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Näytetietojen nouto epäonnistui: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Kanavakartta ei vastaa näytemääritystä\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Avataan %svirta näytemäärityksellä â€%sâ€.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "nauhoitus"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "toisto"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Liian monta argumenttia.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() epäonnistui: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() epäonnistui.\n"
@@ -1686,8 +1717,7 @@ msgstr "Palautus epäonnistui: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "VAROITUS: Äänipalvelin ei ole paikallinen, ei keskeytetä.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Saatiin SIGINT, lopetetaan.\n"
@@ -1716,7 +1746,7 @@ msgstr ""
" yhdistetään\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1727,32 +1757,32 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Tilastojen selvittäminen epäonnistui: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Nyt käytössä: %u lohkoa sisältäen yhteensä %s tavua.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Koko käyttöaikana varattu: %u lohkoa sisältäen yhteensä %s tavua.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Näytevälimuistin koko: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Palvelintietojen selvittäminen epäonnistui: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1775,12 +1805,12 @@ msgstr ""
"Oletuslähde: %s\n"
"Eväste: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Nielun tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1819,12 +1849,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfiilit:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tAktiivinen profiili: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Lähteen tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1863,20 +1903,20 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "-"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Moduulin tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1893,12 +1933,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Asiakkaan tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1913,12 +1953,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Kortin tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1935,22 +1975,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiilit:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktiivinen profiili: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Nielun sisääntulon tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1987,12 +2027,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Lähteen ulostulon tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2021,12 +2061,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Näytetietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2057,23 +2097,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Epäonnistuminen: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Näytteen lähettäminen epäonnistui: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Ennenaikainen tiedoston päättyminen\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2088,6 +2127,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2119,7 +2160,7 @@ msgstr ""
" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa\n"
" kutsutaan palvelimella\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2130,71 +2171,74 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Anna ladattava näytetiedosto\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Äänitiedoston avaaminen epäonnistui.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Avataan %svirta näytemäärityksellä â€%sâ€.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Soitettavan näytteen nimi on annettava\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Poistettavan näytteen nimi on annettava\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Nielun syöteindeksi ja nielu on annettava\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "Lähteen ulostuloindeksi ja lähde on annettava\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Moduulin nimi ja argumentit on annettava.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Moduulin indeksi on annettava\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "Ei voi antaa enempää kuin yhden nielun. Totuusarvo on annettava.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "Ei voi antaa enempää kuin yhden lähteen. Totuusarvo on annettava.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Mitään kelvollista komentoa ei annettu.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() epäonnistui: %s"
@@ -2280,130 +2324,48 @@ msgstr "Evästetietojen lataaminen epäonnistui\n"
msgid "Not yet implemented.\n"
msgstr "Toteutusta ei vielä ole.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio-taustaprosessin lopettaminen epäonnistui."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Taustaprosessi ei vastaa."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Virran luonti onnistui\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Virtavirhe: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Yhteys muodostetettu.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [valitsimet] [TIEDOSTO]\n"
-"\n"
-" -h, --help Näytä tämä ohje\n"
-" --version Näytä tiedostot\n"
-"\n"
-" -v, --verbose Yksityiskohtaiset tulosteet\n"
-"\n"
-" -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
-" yhdistetään\n"
-" -d, --device=LAITE Sen nielun nimi, johon yhdistetään\n"
-" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa "
-"kutsutaan\n"
-" palvelimella\n"
-" --stream-name=NIMI Kuinka tätä virtaa kutsutaan\n"
-" palvelimella\n"
-" --volume=ÄÄNENVOIMAKKUUS Määritä (lineaarinen) aloitusäänen-\n"
-" voimakkuus väliltä 0...65536\n"
-" --channel-map=KANAVAKARTTA Aseta käytettävä kanavakartta\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Käännetty libpulsen versiolle %s\n"
-"Linkitetty libpulsen versiolle %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Virheellinen kanavakartta\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Tiedoston â€%s†avaaminen epäonnistui\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Kanavakartta ei täsmää tiedostoon.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Käytetään näytemäärittelyä â€%sâ€\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Automaattisen käynnistyksen lukkoa ei voida käyttää."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2420,7 +2382,7 @@ msgstr ""
"asetettuna, snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, "
"joka on < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2436,38 +2398,136 @@ msgstr ""
"ongelmasta ALSA-kehittäjille. Taustaprosessi herätettiin POLLIN asetettuna, "
"snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, on < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Ulostulo %s + Sisääntulo %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Ulostulo %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Sisääntulo %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "Poissa"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "Korkean äänenlaadun toisto (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio-äänipalvelin"
+#~ msgid "Analog Mono"
+#~ msgstr "Analoginen mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analoginen stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digitaalinen stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digitaalinen stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analoginen tilaääni 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digitaalinen tilaääni 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analoginen tilaääni 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analoginen tilaääni 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analoginen tilaääni 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digitaalinen tilaääni 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analoginen tilaääni 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Ulostulo %s + Sisääntulo %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Ulostulo %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Sisääntulo %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Virran luonti onnistui\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Virtavirhe: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Yhteys muodostetettu.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [valitsimet] [TIEDOSTO]\n"
+#~ "\n"
+#~ " -h, --help Näytä tämä ohje\n"
+#~ " --version Näytä tiedostot\n"
+#~ "\n"
+#~ " -v, --verbose Yksityiskohtaiset tulosteet\n"
+#~ "\n"
+#~ " -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
+#~ " yhdistetään\n"
+#~ " -d, --device=LAITE Sen nielun nimi, johon "
+#~ "yhdistetään\n"
+#~ " -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa "
+#~ "kutsutaan\n"
+#~ " palvelimella\n"
+#~ " --stream-name=NIMI Kuinka tätä virtaa kutsutaan\n"
+#~ " palvelimella\n"
+#~ " --volume=ÄÄNENVOIMAKKUUS Määritä (lineaarinen) "
+#~ "aloitusäänen-\n"
+#~ " voimakkuus väliltä 0...65536\n"
+#~ " --channel-map=KANAVAKARTTA Aseta käytettävä kanavakartta\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Käännetty libpulsen versiolle %s\n"
+#~ "Linkitetty libpulsen versiolle %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Virheellinen kanavakartta\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Tiedoston â€%s†avaaminen epäonnistui\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Kanavakartta ei täsmää tiedostoon.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Käytetään näytemäärittelyä â€%sâ€\n"
+
#~ msgid "muted"
#~ msgstr "vaimennettu"
diff --git a/po/fr.po b/po/fr.po
index 89c56066..ca8e2b80 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,66 +4,23 @@
# Robert-André Mauchin <zebob.m@pengzone.org>, 2008.
# Michaël Ughetto <telimektar esraonline com>, 2008.
# Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>, 2008.
+# Corentin Perard <corentin.perard@gmail.com>, 2009.
#
#
msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
-"PO-Revision-Date: 2008-10-18 20:34+0200\n"
-"Last-Translator: Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>\n"
-"Language-Team: Français <fedora-trans-fr@redhat.com>\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: 2009-04-26 17:22+0200\n"
+"Last-Translator: Corentin Perard <corentin.perard@gmail.com>\n"
+"Language-Team: French <fedora-trans-fr@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -71,8 +28,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_avail() a retourné une valeur qui est exceptionnellement large : %lu "
+"octets (%lu ms).\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -80,8 +41,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_delay() a retourné une valeur qui est exceptionnellement large : %li "
+"octets (%s%lu ms).\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -89,25 +54,39 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_mmap_begin() a retourné une valeur qui est exceptionnellement "
+"large : %lu octets (%lu·ms).\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA."
-#: ../src/pulsecore/sink.c:2141
-#, fuzzy
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
-msgstr "Erreur interne"
+msgstr "Audio interne"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
-msgstr ""
+msgstr "Modem"
#: ../src/daemon/ltdl-bind-now.c:124
-#, fuzzy
msgid "Failed to find original lt_dlopen loader."
-msgstr "Échec lors de la recherche du chargeur dlopen original."
+msgstr "Échec lors de la recherche du chargeur lt_dlopen original."
#: ../src/daemon/ltdl-bind-now.c:129
-#, fuzzy
msgid "Failed to allocate new dl loader."
-msgstr "Échec lors de la recherche du chargeur dlopen original."
+msgstr "Échec lors de l'allocation du nouveau chargeur dl."
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
@@ -167,108 +146,108 @@ msgstr "Impossible d'obtenir l'authentification : %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit a renvoyé « %s »"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Signal %s obtenu."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Fermeture."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Impossible de trouver l'utilisateur « %s »."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Impossible de trouver le groupe « %s »."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Utilisateur « %s †(UID %lu) et groupe « %s » (GID %lu) trouvé."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
"Le GID de l'utilisateur « %s » et du groupe « %s » ne sont pas identiques."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Le dossier personnel de l'utilisateur « %s » n'est pas « %s », ignoré."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Échec lors de la création de « %s » : %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Échec lors du changement de la liste du groupe : %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Échec lors du changement de GID : %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Échec lors du changement d'UID : %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
-msgstr "Les permissions root ont été correctement abandonnées."
+msgstr "Les privilèges root ont été correctement abandonnés."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Mode système étendu non pris en charge sur cette plateforme."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) a échoué : %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Échec lors de l'analyse de la ligne de commande"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Nous sommes dans le groupe « %s », permettant une planification à haute "
"priorité."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-"Nous sommes dans le groupe « %s », permettant une planification en temps réel."
+"Nous sommes dans le groupe « %s », permettant un ordonnancement en temps réel."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -280,49 +259,59 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-
-#: ../src/daemon/main.c:581
+"Le SUID root et l'ordonnancement en temps réel et/ou haute priorité ont été "
+"spécifiés dans la configuration. Cependant, il nous manque les privilèges "
+"nécessaires :\n"
+"Nous ne sommes pas dans le groupe « %s », PolicyKit refuse de nous accorder "
+"les privilèges demandés et nous devons augmenter les limites de ressources "
+"RLIMIT_NICE/RLIMIT_RTPRIO.\n"
+"Pour activer l'ordonnancement en temps réel/haute priorité, veuillez "
+"acquérir les privilèges PolicyKit apropriés, ou devenir membre de « %s », ou "
+"augmenter les limites de ressources RLIMIT_NICE/RLIMIT_RTPRIO pour cet "
+"utilisateur."
+
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La planification à haute priorité est activée dans la configuration mais "
"n'est pas permise par la politique."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Augmentation de RLIMIT_RTPRIO réussie"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO a échoué : %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abandon de CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La planification en temps réel est activée mais n'est pas permise par la "
"politique."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Lé démon n'est pas lancé"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Le démon est lancé avec le PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Impossible de tuer le démon : %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -330,165 +319,175 @@ msgstr ""
"Le programme n'est pas conçu pour être lancé en tant que root (sauf si --"
"system est renseigné)."
-#: ../src/daemon/main.c:720
-#, fuzzy
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
-msgstr "Les permissions root sont nécessaires."
+msgstr "Les privilèges root sont nécessaires."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start n'est pas pris en charge pour les instances système."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Le démon s'exécute en mode système, mais --disallow-exit n'est pas défini."
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Le démon s'exécute en mode système, mais --disallow-module-loading n'est pas "
"défini."
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Le démon s'exécute en mode système, désactivation forcée du mode SHM."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Le démon s'exécute en mode système, désactivation forcée de la fermeture "
"après délai d'inactivité."
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Échec lors de l'acquisition de stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Échec du tube : %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Échec de fork() : %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Échec de read() : %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Échec lors du démarrage du démon."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Démarrage du démon réussi."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Pulseaudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Hôte de compilation : %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilation : %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Exécution sur l'hôte : %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
-msgstr ""
+msgstr "%u processeurs trouvés."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "La taille de la page est de %lu octets"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilé avec la prise en charge Valgrind : oui"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilé avec la prise en charge Valgrind : non"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Exécution en mode valgrind : %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Construction optimisée : oui"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Construction optimisée : non"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
-msgstr ""
+msgstr "NDEBUG défini, tous les messages d'erreur sont désactivés."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
+"FASTPATH défini, seuls les messages d'erreur fastpath ont été désactivés."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
-msgstr ""
+msgstr "Tous les messages d'erreur sont activés."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Échec lors de l'obtention de l'ID de la machine"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "Échec de pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -496,32 +495,32 @@ msgstr ""
"Eh mec, ton noyau il pue ! La recommandation d'aujourd'hui du patron est "
"d'activer les horloges à haute résolution sur ton Linux."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "Échec de pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Échec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Démarrage du démon sans aucun module chargé : refus de fonctionner."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Démon terminé."
-#: ../src/daemon/cmdline.c:121
-#, fuzzy, c-format
+#: ../src/daemon/cmdline.c:115
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -609,7 +608,7 @@ msgstr ""
"lancé\n"
" -k --kill Tue un démon en cours d'exécution\n"
" --check Vérifie s'il existe un démon en "
-"cours d'exécution\n"
+"cours d'exécution (ne retourne que le code de sortie)\n"
"\n"
"OPTIONS :\n"
" --system[=BOOL] Exécuter en tant qu'instance "
@@ -648,6 +647,12 @@ msgstr ""
"verbosité\n"
" -v Augmente le niveau de verbosité\n"
" --log-target={auto,syslog,stderr} Indique la cible du journal\n"
+" --log-meta[=BOOL] Inclure la position du code dans les "
+"messages ·du journal\n"
+" --log-time[=BOOL] Inclure la date dans les messages du "
+"journal\n"
+" --log-backtrace=TRAMES Inclure un traçage de la pile dans "
+"les messages du journal\n"
" -p, --dl-search-path=CHEMIN Définit le chemin de recherche pour "
"les objets dynamiques\n"
" partagés (extensions)\n"
@@ -675,15 +680,15 @@ msgstr ""
" -n Ne pas charger les fichiers de "
"scripts par défaut\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -691,55 +696,52 @@ msgstr ""
"--log-level requiert un paramètre de niveau de journal (soit numérique entre "
"0 et 4, soit de débogage : info, notice, warn , error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:302
-#, fuzzy
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Cible du journal invalide : utilisez « syslog », « stderr » ou « auto »."
-#: ../src/daemon/cmdline.c:333
-#, fuzzy
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
-msgstr "--realtime requiert un paramètre booléen"
+msgstr "--log-time requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:340
-#, fuzzy
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
-msgstr "--disallow-exit requiert un paramètre booléen"
+msgstr "--log-meta requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Méthode de rééchantillonnage invalide « %s »."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm requiert un paramètre booléen"
@@ -778,82 +780,89 @@ msgstr "Utilisation : %s\n"
msgid "Load Once: %s\n"
msgstr "Chargement unique : %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Chemin : %s\n"
# dans les lignes suivantes [%s = nom de fichier: %u = ligne dans celui-ci]
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Cible du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Niveau du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit « %s » invalide."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit n'est pas pris en charge sur cette plateforme."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format d'échantillon « %s » invalide."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#: ../src/daemon/daemon-conf.c:354
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
+msgstr "[%s:%u] Plan de canaux « %s » invalide."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments « %s » invalide."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Taille du fragment « %s » invalide."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Échec lors de l'ouverture du fichier de configuration : %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"Le plan de canaux spécifié par défaut a un nombre de canaux différent du "
+"nombre spécifié par défaut."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -861,9 +870,8 @@ msgid "### Read from configuration file: %s ###\n"
msgstr "### Lecture à partir du fichier de configuration : %s ###\n"
#: ../src/daemon/caps.c:63
-#, fuzzy
msgid "Dropping root privileges."
-msgstr "Abandon des permissions root."
+msgstr "Abandon des privilèges root."
#: ../src/daemon/caps.c:103
msgid "Limited capabilities successfully to CAP_SYS_NICE."
@@ -871,267 +879,269 @@ msgstr "Limitation des capacités à CAP_SYS_NICE réussie."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "Système de son PulseAudio"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "Démarrer le système de son PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr ""
+"Ordonnancement haute priorité (niveau Unix « nice » négatif) pour le démon "
+"PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Impossible de tuer le démon PulseAudio."
+msgstr "Ordonnancement en temps réel pour le démon PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
msgstr ""
-"Nous sommes dans le groupe « %s », permettant une planification à haute "
-"priorité."
+"La politique du système empêche PulseAudio d'acquérir un ordonnancement "
+"haute priorité"
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
+"La politique du système empêche PulseAudio d'acquérir un ordonnancement en "
+"temps réel"
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Avant centre"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Avant gauche"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Avant droit"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Arrière centre"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Arrière gauche"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Arrière droit"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Émetteur à basse fréquence"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Avant à gauche du centre"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Avant à droite du centre"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Côté gauche"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Côté droit"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Auxiliaire 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Auxiliaire 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Auxiliaire 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Auxiliaire 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Auxiliaire 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Auxiliaire 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Auxiliaire 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Auxiliaire 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Auxiliaire 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Auxiliaire 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Auxiliaire 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Auxiliaire 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Auxiliaire 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Auxiliaire 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Auxiliaire 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Auxiliaire 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Auxiliaire 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Auxiliaire 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Auxiliaire 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Auxiliaire 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Auxiliaire 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Auxiliaire 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Auxiliaire 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Auxiliaire 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Auxiliaire 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Auxiliaire 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Auxiliaire 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Auxiliaire 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Auxiliaire 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Auxiliaire 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Auxiliaire 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Auxiliaire 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Centre haut"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Avant centre haut"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Avant gauche haut"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Avant droit haut"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Arrière centre haut"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Arrière gauche haut"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Arrière droit haut"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(invalide)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
-msgstr ""
+msgstr "Stéréo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
-msgstr ""
+msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
-msgstr ""
+msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
-msgstr ""
+msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
-msgstr ""
+msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
-msgstr ""
+msgstr "Surround 7.1"
#: ../src/pulse/error.c:43
msgid "OK"
@@ -1223,40 +1233,40 @@ msgstr "Aucune extension de ce type"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "Fonctionnalité dépréciée"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "Implantation manquante"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "Le client s'est divisé (Client forked)"
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:181
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f Gio"
#: ../src/pulse/sample.c:183
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f Mio"
#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f Kio"
#: ../src/pulse/sample.c:187
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
@@ -1290,170 +1300,165 @@ msgstr "waitpid() : %s"
msgid "Received message for unknown extension '%s'"
msgstr "Message reçu pour une extension inconnue « %s »"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Échec lors du vidage du flux : %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Flux de lecture vidé.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Vidage de la connexion au serveur.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain() : %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Échec de pa_stream_write() : %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Échec de pa_stream_peek() : %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Création du flux réussie.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "Échec de pa_stream_get_buffer_attr() : %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Mesures du tampon : maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Mesures du tampon : maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
"Utilisation de la spécification d'échantillon « %s », plan des canaux « %s ».\n"
# l'espace manquant entre %s et suspended est voulu
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Connecté au périphérique %s (%u, %ssuspendu).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Erreur du flux : %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Périphérique de flux suspendu %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Périphérique de flux repris %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Flux vide %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Flux saturé %s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Flux démarré %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Flux déplacé vers le périphérique %s (%u, %ssuspendu).%s \n"
# suspendu ou non suspendu
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "non "
-#: ../src/utils/pacat.c:245
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:378
+#, c-format
msgid "Stream buffer attributes changed.%s \n"
-msgstr "Flux vide %s \n"
+msgstr "Des attributs du tampon de flux ont changé. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Connection établie.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Échec de pa_stream_new() : %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Échec de pa_stream_connect_playback() : %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Échec de pa_stream_connect_record() : %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Échec lors de la connexion : %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Échec lors du vidage du flux : %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Flux de lecture vidé.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Vidage de la connexion au serveur.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF obtenu.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain() : %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "Échec de read() : %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "Échec de write() : %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Signal obtenu, fermeture.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Échec lors de l'obtention de la latence : %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Durée : %0.3f s ; Latency : %0.0f µs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Échec de pa_stream_update_timing_info() : %s\n"
@@ -1461,8 +1466,8 @@ msgstr "Échec de pa_stream_update_timing_info() : %s\n"
# downmix = par ex. convertir 5 canaux en 2 canaux
# upmixer = par ex. convertir 2 canaux en 5 canaux
# https://bugzilla.redhat.com/show_bug.cgi?id=460798
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1488,8 +1493,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1512,6 +1519,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1565,7 +1577,7 @@ msgstr ""
" --process-time=OCTETS Demande le temps de traitement "
"indiqué par requête en octets.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1576,89 +1588,134 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Plan des canaux invalide « %s »\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Méthode de rééchantillonnage invalide « %s »."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Plan des canaux invalide « %s »\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Spécification de latence invalide « %s »\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Spécification de temps de traitement invalide « %s »\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Méthode de rééchantillonnage invalide « %s »."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Spécification d'échantillon invalide\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open() : %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2() : %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Trop de paramètres.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Échec lors de l'ouverture du fichier audio.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr ""
"Le plan des canaux ne correspond pas à la spécification d'échantillon\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "enregistrement"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "lecture"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open() : %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2() : %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Trop de paramètres.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Échec de pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "Échec de io_new().\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Échec de pa_context_new().\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "Échec de pa_context_connect() : %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "Échec de time_new().\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Échec de pa_mainloop_run().\n"
@@ -1689,8 +1746,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"AVERTISSEMENT : le serveur de son n'est pas local, suspension annulée.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT reçu, fermeture.\n"
@@ -1719,7 +1775,7 @@ msgstr ""
"connecter\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1730,35 +1786,35 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Échec lors de l'obtention des statistiques : %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "En cours d'utilisation : %u blocs contenant au total %s octets.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Alloué pendant l'ensemble de la durée d'exécution : %u blocs contenant au "
"total %s octets.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Taille du cache de l'échantillon : %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Échec lors de l'obtention des informations du serveur : %s\n"
-#: ../src/utils/pactl.c:137
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:157
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1775,18 +1831,19 @@ msgstr ""
"Nom du serveur : %s\n"
"Version du serveur : %s\n"
"Spécification d'échantillon par défaut : %s\n"
+"Plan de canaux par défaut : %s\n"
"Destination par défaut : %s\n"
"Source par défaut : %s\n"
"Cookie : %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Échec lors de l'obtention des informations sur la destination : %s\n"
# demander à Lennart s'il s'agit de monitor of source
-#: ../src/utils/pactl.c:194
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:214
+#, c-format
msgid ""
"Sink #%u\n"
"\tState: %s\n"
@@ -1806,26 +1863,41 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Destination #%u ***\n"
-"Nom : %s\n"
-"Pilote : %s\n"
-"Spécification de l'échantillon : %s\n"
-"Plan des canaux : %s\n"
-"Module propriétaire : %u\n"
-"Volume : %s\n"
-"Moniteur de la source : %s\n"
-"Latence : %0.0f µs, %0.0f µs configurée \n"
-"Drapeaux : %s%s%s%s%s%s\n"
-"Propriétés :\n"
-"%s"
-
-#: ../src/utils/pactl.c:258
+"Destination #%u\n"
+"\tÉtat : %s\n"
+"\tNom : %s\n"
+"\tDescription : %s\n"
+"\tPilote : %s\n"
+"\tSpécification de l'échantillon : %s\n"
+"\tPlan des canaux : %s\n"
+"\tModule propriétaire : %u\n"
+"\tMuet : %s\n"
+"\tVolume : %s%s%s\n"
+"\t balance %0.2f\n"
+"\tVolume de base : %s%s%s\n"
+"\tMoniteur de la source : %s\n"
+"\tLatence : %0.0f·µs, configurée %0.0f·µs\n"
+"\tDrapeaux : %s%s%s%s%s%s\n"
+"\tPropriétés :\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfils :\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tProfil actif : %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Échec lors de l'obtention des informations sur la source : %s\n"
-#: ../src/utils/pactl.c:274
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:306
+#, c-format
msgid ""
"Source #%u\n"
"\tState: %s\n"
@@ -1845,34 +1917,39 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Source #%u ***\n"
-"Nom : %s\n"
-"Pilote : %s\n"
-"Spécification de l'échantillon : %s\n"
-"Plan des canaux : %s\n"
-"Module propriétaire : %u\n"
-"Volume : %s\n"
-"Moniteur de la destination : %s\n"
-"Latence : %0.0f µs, %0.0f µs configurée \n"
-"Drapeaux : %s%s%s%s%s%s\n"
-"Propriétés :\n"
-"%s"
-
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+"Source #%u\n"
+"\tÉtat : %s\n"
+"\tNom : %s\n"
+"\tDescription : %s\n"
+"\tPilote : %s\n"
+"\tSpécification de l'échantillon : %s\n"
+"\tPlan des canaux : %s\n"
+"\tModule propriétaire : %u\n"
+"\tMuet : %s\n"
+"\tVolume : %s%s%s\n"
+"\t balance %0.2f\n"
+"\tVolume de base : %s%s%s\n"
+"\tMoniteur de la destination : %s\n"
+"\tLatence : %0.0f µs, configurée %0.0f µs\n"
+"\tDrapeaux : %s%s%s%s%s%s\n"
+"\tPropriétés :\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Échec lors de l'obtention des informations du module : %s\n"
-#: ../src/utils/pactl.c:342
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:386
+#, c-format
msgid ""
"Module #%u\n"
"\tName: %s\n"
@@ -1881,19 +1958,20 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Module #%u ***\n"
-"Nom : %s\n"
-"Paramètre : %s\n"
-"Nombre d'utilisations : %s\n"
-"Déchargement automatique : %s\n"
+"Module #%u\n"
+"\tNom : %s\n"
+"\tParamètre : %s\n"
+"\tNombre d'utilisations : %s\n"
+"\tPropriétés : \n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Échec lors de l'obtention des informations du client : %s\n"
-#: ../src/utils/pactl.c:379
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:423
+#, c-format
msgid ""
"Client #%u\n"
"\tDriver: %s\n"
@@ -1901,20 +1979,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Client #%u ***\n"
-"Pilote : %s\n"
-"Module propriétaire : %s\n"
-"Propriétés :\n"
-"%s"
+"Client #%u\n"
+"\tPilote : %s\n"
+"\tModule propriétaire : %s\n"
+"\tPropriétés :\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:396
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:440
+#, c-format
msgid "Failed to get card information: %s\n"
-msgstr ""
-"Échec lors de l'obtention des informations du chargement automatique : %s\n"
+msgstr "Impossible d'obtenir des informations sur la carte : %s\n"
-#: ../src/utils/pactl.c:414
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:458
+#, c-format
msgid ""
"Card #%u\n"
"\tName: %s\n"
@@ -1923,31 +2000,32 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Client #%u ***\n"
-"Pilote : %s\n"
-"Module propriétaire : %s\n"
-"Propriétés :\n"
-"%s"
+"Carte #%u\n"
+"\tNom : %s\n"
+"\tPilote : %s\n"
+"\tModule propriétaire : %s\n"
+"\tPropriétés :\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tProfils :\n"
-#: ../src/utils/pactl.c:434
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:478
+#, c-format
msgid "\tActive Profile: %s\n"
-msgstr "Échec du tube : %s"
+msgstr "\tProfil actif : %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
"Échec lors de l'obtention des informations de l'entrée de la destination : %"
"s\n"
-#: ../src/utils/pactl.c:464
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:508
+#, c-format
msgid ""
"Sink Input #%u\n"
"\tDriver: %s\n"
@@ -1966,28 +2044,31 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Entrée de la destination #%u ***\n"
-"Pilote : %s\n"
-"Module propriétaire : %s\n"
-"Client : %s\n"
-"Destination : %u\n"
-"Spécification de l'échantillon : %s\n"
-"Plan des canaux : %s\n"
-"Volume : %s\n"
-"Latence du tampon : %0.0f µs\n"
-"Latence de la destination : %0.0f µs\n"
-"Méthode de rééchantillonnage : %s\n"
-"Propriétés :\n"
-"%s"
-
-#: ../src/utils/pactl.c:503
+"Entrée de la destination #%u\n"
+"\tPilote : %s\n"
+"\tModule propriétaire : %s\n"
+"\tClient : %s\n"
+"\tDestination : %u\n"
+"\tSpécification de l'échantillon : %s\n"
+"\tPlan des canaux : %s\n"
+"\tMuet : %s\n"
+"\tVolume : %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tLatence du tampon : %0.0f µs\n"
+"\tLatence de la destination : %0.0f µs\n"
+"\tMéthode de rééchantillonnage : %s\n"
+"\tPropriétés :\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
"Échec lors de l'obtention des informations de la sortie de la source : %s\n"
-#: ../src/utils/pactl.c:523
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:567
+#, c-format
msgid ""
"Source Output #%u\n"
"\tDriver: %s\n"
@@ -2002,20 +2083,20 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Source Output #%u ***\n"
-"Pilote : %s\n"
-"Module propriétaire : %s\n"
-"Client : %s\n"
-"Source : %u\n"
-"Spécification de l'échantillon : %s\n"
-"Plan des canaux : %s\n"
-"Latence du tampon : %0.0f µs\n"
-"Latence de la source : %0.0f µs\n"
-"Méthode de rééchantillonnage : %s\n"
-"Propriétés :\n"
-"%s"
-
-#: ../src/utils/pactl.c:554
+"Sortie de la source #%u\n"
+"\tPilote : %s\n"
+"\tModule propriétaire : %s\n"
+"\tClient : %s\n"
+"\tSource : %u\n"
+"\tSpécification de l'échantillon : %s\n"
+"\tPlan des canaux : %s\n"
+"\tLatence du tampon : %0.0f µs\n"
+"\tLatence de la source : %0.0f µs\n"
+"\tMéthode de rééchantillonnage : %s\n"
+"\tPropriétés :\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n"
@@ -2023,8 +2104,8 @@ msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n"
# Lazy ?
# load-sample-lazy = 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
-#: ../src/utils/pactl.c:572
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:616
+#, c-format
msgid ""
"Sample #%u\n"
"\tName: %s\n"
@@ -2040,34 +2121,35 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Échantillon #%u ***\n"
-"Nom : %s\n"
-"Volume : %s\n"
-"Spécification de l'échantillon : %s\n"
-"Plan des canaux : %s\n"
-"Durée : %0.1f s\n"
-"Taille : %s\n"
-"Cache retardé : %s\n"
-"Nom de fichier : %s\n"
-"Propriétés :\n"
-"%s"
-
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+"Échantillon #%u\n"
+"\tNom : %s\n"
+"\tSpécification de l'échantillon : %s\n"
+"\tPlan des canaux : %s\n"
+"\tVolume : %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDurée : %0.1f s\n"
+"\tTaille : %s\n"
+"\tCache retardé : %s\n"
+"\tNom de fichier : %s\n"
+"\tPropriétés :\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Échec : %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Échec lors de l'envoi de l'échantillon : %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Fin prématurée du fichier\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:826
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2083,6 +2165,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2104,6 +2188,7 @@ msgstr ""
"%s [options] unload-module ID\n"
"%s [options] suspend-sink [DEST] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s·[options]·set-card-profile·[CARTE]·[PROFIL]·\n"
"\n"
" -h, --help Affiche cette aide\n"
" --version Affiche la version\n"
@@ -2113,7 +2198,7 @@ msgstr ""
" -n, --client-name=NOM Définit le nom de ce client sur le "
"serveur\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2124,77 +2209,79 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Veuillez indiquer un fichier d'échantillon à charger\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Échec lors de l'ouverture du fichier audio.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Vous devez indiquer un nom d'échantillon à lire\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Vous devez indiquer un nom d'échantillon à supprimer\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Vous devez indiquer un index de sortie de destination et une destination\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "Vous devez indiquer un index de sortie de source et une source\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Vous devez indiquer un nom de module et des paramètres.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Vous devez indiquer un index de module\n"
-#: ../src/utils/pactl.c:972
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-"Vous ne pouvez pas indiquer plus d'une destination. Vous devez indiquer au "
-"moins une valeur booléenne.\n"
+"Vous ne pouvez pas indiquer plus d'une destination. Vous devez indiquer une "
+"valeur booléenne.\n"
-#: ../src/utils/pactl.c:985
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-"Vous ne pouvez pas indiquer plus d'une source. Vous devez indiquer au moins "
-"une valeur booléenne.\n"
+"Vous ne pouvez pas indiquer plus d'une source. Vous devez indiquer une "
+"valeur booléenne.\n"
-#: ../src/utils/pactl.c:997
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
-msgstr ""
-"Vous devez indiquer un index de sortie de destination et une destination\n"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Aucune commande valide indiquée.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Échec de pa_context_connect() : %s"
@@ -2282,131 +2369,48 @@ msgstr "Échec lors du chargement des données du cookie\n"
msgid "Not yet implemented.\n"
msgstr "Pas encore implémenté.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0) : %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect() : %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Impossible de tuer le démon PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Le démon ne répond pas."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select() : %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read() : %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write() : %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Création du flux réussie\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Erreur du flux : %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Connexion établie.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FICHIER]\n"
-"\n"
-" -h, --help Affiche cette aide\n"
-" --version Affiche la version\n"
-"\n"
-" -v, --verbose Active le mode verbeux\n"
-"\n"
-" -s, --server=SERVEUR Le nom du serveur auquel se "
-"connecter\n"
-" -d, --device=PÉRIPHÉRIQUE Le nom de la destination à laquelle "
-"se connecter\n"
-" -n, --client-name=NOM Définit le nom de ce client sur le "
-"serveur\n"
-" --stream-name=NOM Définit le nom de ce flux sur le "
-"serveur\n"
-" --volume=VOLUME Définit le volume initial (linéaire) "
-"entre 0 et 65536\n"
-" --channel-map=PLANDESCANAUX Définit le plan des canaux à "
-"utiliser\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilé avec libpulse %s\n"
-"Lié avec libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Plan des canaux invalide\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Échec lors de l'ouverture du fichier « %s »\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Le plan des canaux ne correspond pas au fichier.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Utilisation de la spécification de l'échantillon « %s »\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Impossible d'accèder au verrou autonome."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2416,8 +2420,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA nous a réveillé pour lire de nouvelles données à partir du "
+"périphérique, mais il n'y avait en fait rien à écrire !\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA.Nous avons été réveillés avec "
+"le jeu POLLOUT -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une "
+"autre valeur < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2427,38 +2437,141 @@ msgid ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA nous a réveillé pour lire de nouvelles données à partir du "
+"périphérique, mais il n'y avait en fait rien à lire !\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA.Nous avons été réveillés avec "
+"le jeu POLLIN -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une "
+"autre valeur < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
-msgstr ""
+msgstr "Éteint"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "Lecture haute fidélité (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "Telephonie en duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
-msgstr ""
+msgstr "Serveur de son PulseAudio"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Mono analogique"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Stéréo analogique"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Stéréo numérique (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Stéréo numérique (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Surround analogique 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Surround numérique 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Surround analogique 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Surround analogique 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Surround analogique 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Surround numérique 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Surround analogique 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Sortie %s + Entrée %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Sortie %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Entrée %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Création du flux réussie\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Erreur du flux : %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Connexion établie.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FICHIER]\n"
+#~ "\n"
+#~ " -h, --help Affiche cette aide\n"
+#~ " --version Affiche la version\n"
+#~ "\n"
+#~ " -v, --verbose Active le mode verbeux\n"
+#~ "\n"
+#~ " -s, --server=SERVEUR Le nom du serveur auquel se "
+#~ "connecter\n"
+#~ " -d, --device=PÉRIPHÉRIQUE Le nom de la destination à "
+#~ "laquelle se connecter\n"
+#~ " -n, --client-name=NOM Définit le nom de ce client sur "
+#~ "le serveur\n"
+#~ " --stream-name=NOM Définit le nom de ce flux sur le "
+#~ "serveur\n"
+#~ " --volume=VOLUME Définit le volume initial "
+#~ "(linéaire) entre 0 et 65536\n"
+#~ " --channel-map=PLANDESCANAUX Définit le plan des canaux à "
+#~ "utiliser\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilé avec libpulse %s\n"
+#~ "Lié avec libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Plan des canaux invalide\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Échec lors de l'ouverture du fichier « %s »\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Le plan des canaux ne correspond pas au fichier.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Utilisation de la spécification de l'échantillon « %s »\n"
#, fuzzy
#~ msgid ""
diff --git a/po/gu.po b/po/gu.po
index 2a0906f2..437cd1cd 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-07 14:27+0530\n"
"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n"
"Language-Team: Gujarati\n"
@@ -17,51 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "àªàª¨àª¾àª²à«‹àª— મોનો"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "àªàª¨àª¾àª²à«‹àª— સà«àªŸà«‡àª°àª¿àª“"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "ડિજિટલ સà«àªŸà«‡àª°àª¿àª“ (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "ડિજિટલ સà«àªŸà«‡àª°àª¿àª“ (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.2"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +29,7 @@ msgstr ""
"ALSA ડà«àª°àª¾àª‡àªµàª° '%s' માં મોટેભાગે આ ભૂલ જેવૠછે. ALSA ડેવલà«àªªàª°à«‹àª®àª¾àª‚ આ સમસà«àª¯àª¾àª¨à«‡ મહેરબાની કરીને "
"અહેવાલ કરો."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -86,7 +42,7 @@ msgstr ""
"ALSA ડà«àª°àª¾àª‡àªµàª° '%s' માં મોટેભાગે આ ભૂલ જેવૠછે. ALSA ડેવલà«àªªàª°à«‹àª®àª¾àª‚ આ સમસà«àª¯àª¾àª¨à«‡ મહેરબાની કરીને "
"અહેવાલ કરો."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -99,11 +55,24 @@ msgstr ""
"ALSA ડà«àª°àª¾àª‡àªµàª° '%s' માં મોટેભાગે આ ભૂલ જેવૠછે. ALSA ડેવલà«àªªàª°à«‹àª®àª¾àª‚ આ સમસà«àª¯àª¾àª¨à«‡ મહેરબાની કરીને "
"અહેવાલ કરો."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "આંતરિક ઓડિયો"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "મોડેમ"
@@ -173,104 +142,104 @@ msgstr "auth મેળવા શકાતૠનથી: %s"
msgid "PolicyKit responded with '%s'"
msgstr "'%s' સાથે PolicyKit ઠપà«àª°àª¤à«àª¯à«àª¤à«àª¤àª° આપેલ છે"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "સંકેત %s મળà«àª¯à«."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "બહાર નીકળી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "વપરાશકરà«àª¤àª¾ '%s' ને શોધવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "જૂથ '%s' ને શોધવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "વપરાશકરà«àª¤àª¾ '%s' (UID %lu) અને જૂથ '%s' (GID %lu) શોધાયà«."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "વપરાશકરà«àª¤àª¾ '%s' અને જૂથ '%s' ની GID બંધબેસતૠનથી."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "વપરાશકરà«àª¤àª¾àª“ '%s' ની ઘર ડિરેકà«àªŸàª°à«€ '%s' નથી, અવગણી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ને બનાવવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "જૂથ યાદીને બદલવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID ને બદલવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID ને બદલવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "સફળતાપૂરà«àªµàª• છોડી દીધેલ રà«àªŸ અધિકારો."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "આ પà«àª²à«‡àªŸàª«à«‹àª°à«àª® પર બિનઆધારભૂત સિસà«àªŸàª® વિશાળ સà«àª¥àª¿àª¤àª¿."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "આદેશ વાકà«àª¯àª¨à«‡ પદચà«àª›à«‡àª¦àª¨ કરવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "આપણે જૂથ '%s' માં છીàª, high-priority ગોઠવવાની પરવાનગી આપી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "આપણે જૂથ '%s' માં છીàª, સાચા સમયે ગોઠવવાની પરવાનગી આપી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit આપણને acquire-high-priority અધિકારની મંજૂરી આપે છે."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ઠacquire-high-priority અધિકારને ફરીથી શરૂ કરે છે."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit ઠacquire-real-time અધિકારની મંજૂરી આપે છે."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ઠacquire-real-time અધિકારને ફરી શરૂ કરે છે."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -290,206 +259,216 @@ msgstr ""
"અધિકારોને મેળવો, અથવા '%s' નાં સભà«àª¯ બનો, અથવા આ વપરાશકરà«àª¤àª¾ માટે RLIMIT_NICE/"
"RLIMIT_RTPRIO સà«àª¤à«àª°à«‹àª¤ મરà«àª¯àª¾àª¦àª¾àª“ને વધારો."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"High-priority ગોઠવવાનà«àª‚ રૂપરેખાંકનમાં સકà«àª°àª¿àª¯ થયેલ છે પરંતૠપોલિસી દà«àª¦àª¾àª°àª¾ પરવાનગી આપેલ નથી."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "સફળતાપૂરà«àªµàª• વધારેલ RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE ને છોડી રહà«àª¯àª¾ છે"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Real-time ગોઠવવાનà«àª‚ ઠરૂપરેખાંકનમાં સકà«àª°àª¿àª¯ થયેલ છે પરંતૠપોલિસી દà«àª¦àª¾àª°àª¾ પરવાનગી આપેલ નથી."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ડિમન ચાલી રહà«àª¯à« નથી"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u તરીકે ડિમન ચાલી રહà«àª¯à« છે"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ડિમનને મારવાનà«àª‚ નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"આ પà«àª°àª•à«àª°àª¿àª¯àª¾àª¨à«‡ રà«àªŸ તરીકે ચલાવવા માટે વિચાર થયેલ નથી (નહિં તો --system ઠસà«àªªàª·à«àªŸ થયેલ છે)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "રà«àªŸ અધિકારો જરૂરી છે."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start ઠસિસà«àªŸàª® ઉદાહરણો માટે આધારભૂત નથી."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, પરંતૠ--disallow-exit સà«àª¯à«‹àªœàª¿àª¤ નથી!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, પરંતૠ--disallow-module-loading ઠસà«àª¯à«‹àªœàª¿àª¤ નથી!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, SHM સà«àª¥àª¿àª¤àª¿àª¨à«‡ દબાણપૂરà«àªµàª• નિષà«àª•à«àª°àª¿àª¯ કરી રહà«àª¯àª¾ છે!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, બહાર નીકળવનાં નિષà«àª•àª¾àª°à«àª¯ સમયને દબાણપૂરà«àªµàª• નિષà«àª•à«àª°àª¿àª¯ કરી "
"રહà«àª¯àª¾ છે!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio ને મેળવવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "પાઇપ નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ડિમન શરૂઆત નિષà«àª«àª³."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "ડિમન શરૂઆત કરવૠસફળ છે."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "આ PulseAudio %s છે"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "કમà«àªªàª¾àª‡àª²à«‡àª¶àª¨ યજમાન: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "કમà«àªªàª¾àª‡àª²à«‡àª¶àª¨ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "યજમાન પર ચાલી રહà«àª¯à« છે: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs શોધાયà«."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "પાનાંનૠમાપ %lu બાઇટો છે"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind આધાર સાથે કમà«àªªàª¾àª‡àª² થયેલ છે: હા"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind આધાર સાથે કમà«àªªàª¾àª‡àª² થયેલ છે: ના"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "શà«àª°à«‡àª·à«àªŸ થયેલ બિલà«àª¡: હા"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "શà«àª°à«‡àª·à«àªŸ થયેલ બિલà«àª¡: ના"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG વà«àª¯àª¾àª–à«àª¯àª¾àª¯àª¿àª¤ થયેલ છે, બધા હકો નિષà«àª•à«àª°àª¿àª¯ થયેલ છે."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH વà«àª¯àª¾àª–à«àª¯àª¾àª¯àª¿àª¤ થયેલ છે, ફકà«àª¤ àªàª¡àªªà«€ પાથનાં હકો નિષà«àª•à«àª°àª¿àª¯ થયેલ છે."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "બધા હકો સકà«àª°àª¿àª¯ થયેલ છે."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "મશીન ID ને મેળવવામાં નિષà«àª«àª³"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "મશીન ID %s છે."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "મશીન ID %s છે."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "રનટાઇમ ડિરેકà«àªŸàª°à«€ %s ને વાપરી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "સà«àª¥àª¿àª¤àª¿ ડિરેકà«àªŸàª°à«€ %s ને વાપરી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() નિષà«àª«àª³."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "તાજૠhigh-resolution ટાઇમરો ઉપલà«àª¬àª§ છે! બોન àªàªªà«‡àªŸàª¾àª‡àªŸ!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -497,31 +476,31 @@ msgstr ""
"મિતà«àª°, તમારૠકરà«àª¨àª²àª®àª¾àª‚ ગડબડ છે! રસોઇયાનà«àª‚ આજે ભલામણ ઠસકà«àª°àª¿àª¯ થયેલ high-resolution "
"ટાઇમરો સાથે Linux નà«àª‚ છે!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() નિષà«àª«àª³."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "ડિમનને શરૂ કરવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "કોઇપણ લોડ થયેલ મોડà«àª¯à«àª²à«‹ વગર ડિમનને શરૂ કરો, કામ કરવા માટે ફરી શરૂ કરી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "ડિમન પારંભ કરવાનà«àª‚ સમાપà«àª¤ છે."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "ડિમનને બંધ કરવાનà«àª‚ પà«àª°àª¾àª°àª‚ભ થયેલ છે."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "ડિમનનો અંત આવેલ છે."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -663,15 +642,15 @@ msgstr ""
"\n"
" -n મૂળભૂત સà«àª•à«àª°àª¿àªªà«àªŸ ફાઇલને લોડ કરો નહિં\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -679,52 +658,52 @@ msgstr ""
"--log-level ઠલોગ સà«àª¤àª° દલીલની ઇચà«àª›àª¾ રાખે છે (કà«àª¯àª¾àª‚તો સીમા 0..4 માં પૂરà«àª£àª¸àª‚ખà«àª¯àª¾ છે અથવા "
"ડિબગ, જાણકારી, સૂચના, ચેતવણી, ભૂલ નà«àª‚ àªàª•)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "અયોગà«àª¯ લોગ લકà«àª·à«àª¯: કà«àª¯àª¾àª‚તો 'syslog', 'stderr' અથવા 'auto' ને વાપરો."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "અયોગà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm ઠબà«àª²àª¿àª¯àª¨ દલીલની ઇચà«àª›àª¾ રાખે છે"
@@ -763,77 +742,82 @@ msgstr "વપરાશ: %s\n"
msgid "Load Once: %s\n"
msgstr "àªàª•àªµàª¾àª° લોડ કરો: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "પાથ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] અયોગà«àª¯ લોગ લકà«àª·à«àª¯ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] અયોગà«àª¯ લોગ સà«àª¤àª° '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] અયોગà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] અયોગà«àª¯ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ઠઆ પà«àª²à«‡àªŸàª«à«‹àª°à«àª® પર આધારભૂત નથી."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] અયોગà«àª¯ નમૂના બંધારણ '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] અયોગà«àª¯ નમૂના દર '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] અયોગà«àª¯ નમૂના ચેનલો '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] અયોગà«àª¯ ચેનલ મેપ '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] અયોગà«àª¯ ફà«àª°à«‡àª—મેનà«àªŸà«‹àª¨àª¾àª‚ નંબર '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] અયોગà«àª¯ ફà«àª°à«‡àª—મેનà«àªŸ માપ '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] અયોગà«àª¯ સારૠસà«àª¤àª° '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "રૂપરેખાંકન ફાઇલને ખોલવાનà«àª‚ નિષà«àª«àª³: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -880,237 +864,237 @@ msgstr ""
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr "real-time ગોઠવણી પà«àª°àª¾àªªà«àª¤ કરવા માંથી સિસà«àªŸàª® પોલિસી ઠPulseAudio ને અટકાવે છે."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "મોનો"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "આગળનà«àª‚ કેનà«àª¦à«àª°"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "આગળ ડાબે"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "આગળ જમણે"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "રિઅર કેનà«àª¦à«àª°"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "રિઅર ડાબે"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "રિઅર જમણે"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Low Frequency Emmiter"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "આગળ કેનà«àª¦à«àª°àª¨à«€ ડાબે"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "આગળ કેનà«àª¦à«àª°àª¨à«€ જમણે"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "ડાબી બાજà«"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "જમણી બાજà«"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "ઑગà«àªàª¿àª²àª¿àª…રિ 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "ઊંચે કેનà«àª¦à«àª°"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "ઊંચે આગળ કેનà«àª¦à«àª°"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "ઊંચે આગળ ડાબે"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "ઊંચે આગળ જમણે"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "ઊંચે રિઅર કેનà«àª¦à«àª°"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "ઉપર રિઅર ડાબે"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "ઉપર રિઅર જમણે"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(અયોગà«àª¯)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "સà«àªŸà«‡àª°àª¿àª“"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "સરાઉનà«àª¡ 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "સરાઉનà«àª¡ 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "સરાઉનà«àª¡ 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "સરાઉનà«àª¡ 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "સરાઉનà«àª¡ 7.1"
@@ -1271,173 +1255,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "અજà«àªžàª¾àª¤ àªàª•à«àª¸àªŸà«‡àª¨à«àª¶àª¨ '%s' માટે મળેલ સંદેશ"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "સà«àªŸà«àª°à«€àª®àª¨à«‡ નિકાલ કરવામાં નિષà«àª«àª³: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "પà«àª²à«‡àª¬à«‡àª• સà«àªŸà«àª°à«€àª® ને નિકાલ કરેલ છે.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "સરà«àªµàª°àª®àª¾àª‚ જોડાણને નિકાલ કરી રહà«àª¯àª¾ છે.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "સà«àªŸà«àª°à«€àª® સફળતાપૂરà«àªµàª• બનાવેલ છે.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "બફર મેટà«àª°àª¿àª•à«àª¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "બફર મેટà«àª°àª¿àª•à«àª¸: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "નમૂનો spec '%s' ને વાપરી રહà«àª¯àª¾ છે, ચેનલ મેપ '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ઉપકરણ %s (%u, %ssuspended) સાથે જોડાયેલ છે.\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "સà«àªŸà«àª°à«€àª® ભૂલ: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "સà«àªŸà«àª°à«€àª® ઉપકરણ ને થોડા સમય માટે બંધ રાખેલ છે.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "સà«àªŸà«àª°à«€àª® ઉપકરણને ફરી શરૂ કરેલ છે.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "સà«àªŸà«àª°à«€àª® ચલાવવા હેઠળ છે.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "સà«àªŸà«àª°à«€àª® ઉપર ચાલે છે.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "સà«àªŸà«àª°à«€àª® શરૂ થયેલ છે.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "સà«àªŸà«àª°à«€àª® ઠઉપકરણ %s (%u, %ssuspended) માં ખસેડેલ છે.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "નથી "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "સà«àªŸà«àª°à«€àª® બફર ગà«àª£àª§àª°à«àª®à«‹ બદલાયેલ છે.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "જોડાણ સà«àª¥àª¾àªªàª¿àª¤ થયેલ છે.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "જોડાણ નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "સà«àªŸà«àª°à«€àª®àª¨à«‡ નિકાલ કરવામાં નિષà«àª«àª³: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "પà«àª²à«‡àª¬à«‡àª• સà«àªŸà«àª°à«€àª® ને નિકાલ કરેલ છે.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "સરà«àªµàª°àª®àª¾àª‚ જોડાણને નિકાલ કરી રહà«àª¯àª¾ છે.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF મળà«àª¯à«.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "સંકેત મળà«àª¯à«àª‚, બહાર નીકળી રહà«àª¯àª¾ છે.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "ગà«àªªà«àª¤àª¤àª¾ મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Time: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1463,8 +1442,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1487,6 +1468,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1537,7 +1523,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1548,88 +1534,133 @@ msgstr ""
"libpulse %s સાથે કમà«àªªàª¾àª‡àª² થયેલ છે\n"
"libpulse %s સાથે કડી થયેલ છે\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "અયોગà«àª¯ ચેનલ મેપ '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "અયોગà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "અયોગà«àª¯ ચેનલ મેપ '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "અયોગà«àª¯ ગà«àªªà«àª¤àª¤àª¾ સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "અયોગà«àª¯ પà«àª°àª•à«àª°àª¿àª¯àª¾ સમય સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "અયોગà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "અયોગà«àª¯ નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "ઘણી બધી દલીલો છે.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "નમૂના જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "સાઉનà«àª¡ ફાઇલને ખોલવામાં નિષà«àª«àª³.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "નમૂના જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "ચેનલ મેપ ઠસà«àªªàª·à«àªŸà«€àª•àª°àª£ નમૂનાને બંધબેસતૠનથી\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s' સાથે %s સà«àªŸà«àª°à«€àª®àª¨à«‡ ખોલી રહà«àª¯àª¾ છે.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "રેકોરà«àª¡ કરી રહà«àª¯àª¾ છે"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "પà«àª²à«‡àª¬à«‡àª•"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "ઘણી બધી દલીલો છે.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() નિષà«àª«àª³.\n"
@@ -1659,8 +1690,7 @@ msgstr "ફરી શરૂ કરવામાં નિષà«àª«àª³àª¤àª¾: %s\n
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ચેતવણી: સાઉનà«àª¡ સરà«àªµàª° ઠસà«àª¥àª¾àª¨àª¿àª• નથી, થોડા સમય માટે બંધ કરવામાં આવà«àª¯à« નથી.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT મળà«àª¯à«, બહાર નીકળી રહà«àª¯àª¾ છે.\n"
@@ -1688,7 +1718,7 @@ msgstr ""
" -s, --server=SERVER જોડાવવા માટે સરà«àªµàª°àª¨à«àª‚ નામ\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1699,32 +1729,32 @@ msgstr ""
"libpulse %s સાથે કમà«àªªàª¾àª‡àª² થયેલ છે\n"
"libpulse %s સાથે કડી થયેલ છે\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "પરિસà«àª¥àª¿àª¤àª¿àª“ને મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "હાલમાં વપરાશમાં છે: %u બà«àª²à«‹àª•à«‹ %s કà«àª² બાઇટોને સમાવી રહà«àª¯àª¾ છે.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "આખી જીંદગી દરમà«àª¯àª¾àª¨ ફાળવેલ છે: %u બà«àª²à«‹àª•à«‹ %s કà«àª² બાઇટોને સમાવી રહà«àª¯àª¾ છે.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "નમૂના કેશ માપ: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "સરà«àªµàª° જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1747,12 +1777,12 @@ msgstr ""
"મૂળભૂત સà«àª¤à«àª°à«‹àª¤: %s\n"
"કà«àª•à«€: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "સિંક જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1791,12 +1821,22 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tરૂપરેખાઓ:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tસકà«àª°àª¿àª¯ રૂપરેખા: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "સà«àª¤à«àª°à«‹àª¤ જાણકારીને મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1835,20 +1875,20 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "મોડà«àª¯à«àª²àª¨à«€ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1865,12 +1905,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "કà«àª²àª¾àª‡àª¨à«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1885,12 +1925,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "કારà«àª¡ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1907,22 +1947,22 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tરૂપરેખાઓ:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tસકà«àª°àª¿àª¯ રૂપરેખા: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "સિંક ઇનપà«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1959,12 +1999,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "સà«àª¤à«àª°à«‹àª¤ આઉટપà«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1993,12 +2033,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "નમૂના જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2029,23 +2069,22 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "નિષà«àª«àª³àª¤àª¾: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "નમૂનાને અપલોડ કરવામાં નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "ફાઇલનો નિયત સમય પહેલા અંત\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2060,6 +2099,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2089,7 +2130,7 @@ msgstr ""
" -s, --server=SERVER જોડાવા માટે સરà«àªµàª° નà«àª‚ નામ\n"
" -n, --client-name=NAME સરà«àªµàª° પર આ કà«àª²àª¾àª‡àª¨à«àªŸàª¨à«‡ કેવી રીતે કોલ કરશો\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2100,73 +2141,76 @@ msgstr ""
"libpulse %s સાથે કમà«àªªàª¾àª‡àª² થયેલ છે\n"
"libpulse %s સાથે કડી થયેલ છે\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "મહેરબાની કરીને લોડ કરવા માટે નમૂના ફાઇલને સà«àªªàª·à«àªŸ કરો\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "સાઉનà«àª¡ ફાઇલને ખોલવામાં નિષà«àª«àª³.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s' સાથે %s સà«àªŸà«àª°à«€àª®àª¨à«‡ ખોલી રહà«àª¯àª¾ છે.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "વગાડવા માટે તમારે નમૂના નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "દૂર કરવા માટે તમારે નમૂના નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "સિંક ઇનપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને સિંકને તમારે સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "તમારે સà«àª¤à«àª°à«‹àª¤ આઉટપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને સà«àª¤à«àª°à«‹àª¤àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "તમારે મોડà«àª¯à«àª² નામ અને દલીલોને સà«àªªàª·à«àªŸ કરવૠજ પડશે.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "તમારે મોડà«àª¯à«àª² અનà«àª•à«àª°àª®àª£àª¿àª•àª¾àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"તમે àªàª• સિંક કરતા વધારે સà«àªªàª·à«àªŸ કરી શકશો નહિં. તમારે બà«àª²àª¿àª¯àª¨ કિંમતને સà«àªªàª·à«àªŸ કરવૠજ પડશે.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"તમે àªàª• સà«àª¤à«àª°à«‹àª¤ કરતા વધારે સà«àªªàª·à«àªŸ કરી શકશો નહિં. તમારે બà«àª²àª¿àª¯àª¨ કિંમતને સà«àªªàª·à«àªŸ કરવૠજ પડશે.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને રૂપરેખા નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને રૂપરેખા નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને રૂપરેખા નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "યોગà«àª¯ આદેશ સà«àªªàª·à«àªŸ થયેલ નથી.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() નિષà«àª«àª³: %s"
@@ -2250,126 +2294,48 @@ msgstr "કà«àª•à«€ માહિતીને લોડ કરવામાં àª
msgid "Not yet implemented.\n"
msgstr "હજૠઅમલીકરણ થયેલ નથી.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ડિમનને મારવામાં નિષà«àª«àª³."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ડિમન ઠજવાબ આપતૠનથી."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "સà«àªŸà«àª°à«€àª® સફળતાપૂરà«àªµàª• બનાવેલ છે\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "સà«àªŸà«àª°à«€àª® ભૂલ: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "જોડાણ સà«àª¥àª¾àªªàª¿àª¤ થયેલ છે.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help આ મદદને બતાવો\n"
-" --version આવૃતà«àª¤àª¿àª¨à«‡ બતાવો\n"
-"\n"
-" -v, --verbose વરà«àª¬à«‹àª¸ કà«àª°àª¿àª¯àª¾àª¨à«‡ સકà«àª°àª¿àª¯ કરો\n"
-"\n"
-" -s, --server=SERVER જોડાવા માટે સરà«àªµàª°àª¨à«àª‚ નામ\n"
-" -d, --device=DEVICE જોડાવા માટે સિંકનà«àª‚ નામ\n"
-" -n, --client-name=NAME સરà«àªµàª° પર આ કà«àª²àª¾àª‡àª¨à«àªŸàª¨à«‡ કેવી રીતે કોલ કરશો\n"
-" --stream-name=NAME સરà«àªµàª° પર આ સà«àªŸà«àª°à«€àª®àª¨à«‡ કેવી રીતે કોલ કરશો\n"
-" --volume=VOLUME સીમા 0...65536 માં પà«àª°àª¾àª°àª‚ભનાં (àªàª• સરખા) "
-"વોલà«àª¯à«àª®àª¨à«‡ સà«àªªàª·à«àªŸ કરો\n"
-" --channel-map=CHANNELMAP વાપરવા માટે ચેનલ મેપને સà«àª¯à«‹àªœàª¿àª¤ કરો\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse %s સાથે કમà«àªªàª¾àª‡àª² થયેલ છે\n"
-"libpulse %s સાથે કડી થયેલ છે\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "અયોગà«àª¯ ચેનલ મેપ\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ફાઇલ '%s' ખોલવામાં નિષà«àª«àª³\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "ચેનલ મેપ ફાઇલ સાથે બંધબેસતૠનથી.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "નમૂના spec '%s' ને વાપરી રહà«àª¯àª¾ છે\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn તાળાને દાખલ કરી શકાતૠનથી."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2386,7 +2352,7 @@ msgstr ""
"POLLOUT સà«àª¯à«‹àªœàª¨ સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનà«àª‚ snd_pcm_avail() ને 0 પાછો મળે "
"છે અથવા બીજી કિંમત < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2403,34 +2369,128 @@ msgstr ""
"POLLOUT સà«àª¯à«‹àªœàª¨ સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનà«àª‚ snd_pcm_avail() ને 0 પાછો મળે "
"છે અથવા બીજી કિંમત < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "આઉટપà«àªŸ %s + ઇનપà«àªŸ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "આઉટપà«àªŸ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "ઇનપà«àªŸ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "બંધ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio સાઉનà«àª¡ સરà«àªµàª°"
+
+#~ msgid "Analog Mono"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— મોનો"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સà«àªŸà«‡àª°àª¿àª“"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "ડિજિટલ સà«àªŸà«‡àª°àª¿àª“ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "ડિજિટલ સà«àªŸà«‡àª°àª¿àª“ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 4.2"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "àªàª¨àª¾àª²à«‹àª— સરાઉનà«àª¡ 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "આઉટપà«àªŸ %s + ઇનપà«àªŸ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "આઉટપà«àªŸ %s"
+
+#~ msgid "Input %s"
+#~ msgstr "ઇનપà«àªŸ %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "સà«àªŸà«àª°à«€àª® સફળતાપૂરà«àªµàª• બનાવેલ છે\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "સà«àªŸà«àª°à«€àª® ભૂલ: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "જોડાણ સà«àª¥àª¾àªªàª¿àª¤ થયેલ છે.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help આ મદદને બતાવો\n"
+#~ " --version આવૃતà«àª¤àª¿àª¨à«‡ બતાવો\n"
+#~ "\n"
+#~ " -v, --verbose વરà«àª¬à«‹àª¸ કà«àª°àª¿àª¯àª¾àª¨à«‡ સકà«àª°àª¿àª¯ કરો\n"
+#~ "\n"
+#~ " -s, --server=SERVER જોડાવા માટે સરà«àªµàª°àª¨à«àª‚ નામ\n"
+#~ " -d, --device=DEVICE જોડાવા માટે સિંકનà«àª‚ નામ\n"
+#~ " -n, --client-name=NAME સરà«àªµàª° પર આ કà«àª²àª¾àª‡àª¨à«àªŸàª¨à«‡ કેવી રીતે કોલ "
+#~ "કરશો\n"
+#~ " --stream-name=NAME સરà«àªµàª° પર આ સà«àªŸà«àª°à«€àª®àª¨à«‡ કેવી રીતે કોલ "
+#~ "કરશો\n"
+#~ " --volume=VOLUME સીમા 0...65536 માં પà«àª°àª¾àª°àª‚ભનાં (àªàª• "
+#~ "સરખા) વોલà«àª¯à«àª®àª¨à«‡ સà«àªªàª·à«àªŸ કરો\n"
+#~ " --channel-map=CHANNELMAP વાપરવા માટે ચેનલ મેપને સà«àª¯à«‹àªœàª¿àª¤ કરો\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "libpulse %s સાથે કમà«àªªàª¾àª‡àª² થયેલ છે\n"
+#~ "libpulse %s સાથે કડી થયેલ છે\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "અયોગà«àª¯ ચેનલ મેપ\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "ફાઇલ '%s' ખોલવામાં નિષà«àª«àª³\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "ચેનલ મેપ ફાઇલ સાથે બંધબેસતૠનથી.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "નમૂના spec '%s' ને વાપરી રહà«àª¯àª¾ છે\n"
diff --git a/po/hi.po b/po/hi.po
new file mode 100644
index 00000000..91a27120
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,2502 @@
+# translation of pulseaudio.master-tx.pulseaudio.po to Hindi
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Rajesh Ranjan <rajesh672@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: 2009-06-08 12:01+0530\n"
+"Last-Translator: Rajesh Ranjan <rajesh672@gmail.com>\n"
+"Language-Team: Hindi <hindi.sf.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"\n"
+"\n"
+"\n"
+
+#: ../src/modules/alsa/alsa-util.c:1015
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() ने à¤à¤• मान दिया जो अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ रूप से बड़ा है: %lu बाइट (%lu ms).\n"
+"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को रिपोरà¥à¤Ÿ "
+"करें."
+
+#: ../src/modules/alsa/alsa-util.c:1056
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() ने à¤à¤• मान दिया जो अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ रूप से बड़ा है: %li बाइट (%s%lu ms).\n"
+"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को रिपोरà¥à¤Ÿ "
+"करें."
+
+#: ../src/modules/alsa/alsa-util.c:1103
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() ने à¤à¤• मान दिया जो अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ रूप से बड़ा है: %lu बाइट (%lu "
+"ms).\n"
+"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को रिपोरà¥à¤Ÿ "
+"करें."
+
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
+msgid "Internal Audio"
+msgstr "आंतरिक ऑडियो"
+
+#: ../src/pulsecore/sink.c:2400
+msgid "Modem"
+msgstr "मॉडेम"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "मौलिक ltdlopen लोडर ढूà¤à¤¢à¤¼à¤¨à¥‡ में विफल (_d)."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "नया dl लोडर आबंटित करने में विफल."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-loader जोड़ने में विफल."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "तंतà¥à¤° बस से कनेकà¥à¤Ÿ नहीं हो सकता है: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID से कॉलर पाने में विफल: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "UID को कॉलर वसà¥à¤¤à¥ पर सेट नहीं कर सकता है."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK सतà¥à¤° पाने में विफल."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "UID को सतà¥à¤° वसà¥à¤¤à¥ पर सेट नहीं कर सकता है."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitAction आबंटित नहीं कर सकता है."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id सेट नहीं कर सकता है"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext आबंटित नहीं कर सकता है."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContext आरंभ नहीं कर सकता है.: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "निरà¥à¤§à¤¾à¤°à¤¿à¤¤ नहीं कर सकता है कि कà¥à¤¯à¤¾ कॉलर अधिकृत है: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "अधिकार पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं कर सकता है: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit ने '%s' के साथ अनà¥à¤•à¥à¤°à¤¿à¤¯à¤¾ किया"
+
+#: ../src/daemon/main.c:142
+#, c-format
+msgid "Got signal %s."
+msgstr "%s संकेत पाया."
+
+#: ../src/daemon/main.c:169
+msgid "Exiting."
+msgstr "बाहर हो रहा है."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "'%s' उपयोकà¥à¤¤à¤¾ ढूंढ़ने में विफल."
+
+#: ../src/daemon/main.c:192
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "'%s' समूह ढूंढ़ने में विफल."
+
+#: ../src/daemon/main.c:196
+#, c-format
+msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
+msgstr "'%s' (UID %lu) उपयोकà¥à¤¤à¤¾ व '%s' (GID %lu) समूह पाया."
+
+#: ../src/daemon/main.c:201
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "'%s' उपयोकà¥à¤¤à¤¾ और '%s' समूह का GID मेल नहीं खाता है"
+
+#: ../src/daemon/main.c:206
+#, c-format
+msgid "Home directory of user '%s' is not '%s', ignoring."
+msgstr "'%s' उपयोकà¥à¤¤à¤¾ की घर निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ '%s' नहीं है, अनदेखा कर रहा है."
+
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' बनाने में विफल: %s"
+
+#: ../src/daemon/main.c:221
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "समूह सूची पाने में विफल: %s"
+
+#: ../src/daemon/main.c:237
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID बदलने में विफल: %s"
+
+#: ../src/daemon/main.c:253
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID बदलने में विफल: %s"
+
+#: ../src/daemon/main.c:267
+msgid "Successfully dropped root privileges."
+msgstr "रूट अधिकार सफलतापूरà¥à¤µà¤• छोड़ा."
+
+#: ../src/daemon/main.c:275
+msgid "System wide mode unsupported on this platform."
+msgstr "इस पà¥à¤²à¥ˆà¤Ÿà¤«à¥‰à¤°à¥à¤® पर असमरà¥à¤¥à¤¿à¤¤ तंतà¥à¤° वà¥à¤¯à¤¾à¤ªà¤• विधि."
+
+#: ../src/daemon/main.c:293
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) विफल: %s"
+
+#: ../src/daemon/main.c:481
+msgid "Failed to parse command line."
+msgstr "कमांड लाइन विशà¥à¤²à¥‡à¤·à¤£ में विफल."
+
+#: ../src/daemon/main.c:505
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "हम '%s' समूह में हैं, उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ नियोजन की अनà¥à¤®à¤¤à¤¿ के साथ."
+
+#: ../src/daemon/main.c:512
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "हम '%s' समूह में हैं, वासà¥à¤¤à¤µà¤¿à¤• समय नियोजन को अनà¥à¤®à¤¤à¤¿ देते हà¥à¤."
+
+#: ../src/daemon/main.c:520
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ अधिकार अधिगà¥à¤°à¤¹à¤£ हमें देती है."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ अधिकार अधिगà¥à¤°à¤¹à¤£ असà¥à¤µà¥€à¤•à¥ƒà¤¤ करती है."
+
+#: ../src/daemon/main.c:528
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit हमें देती है वासà¥à¤¤à¤µà¤¿à¤• समय अधिकार अधिगà¥à¤°à¤¹à¤£."
+
+#: ../src/daemon/main.c:531
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit सà¥à¤µà¥€à¤•à¥ƒà¤¤ करती है वासà¥à¤¤à¤µà¤¿à¤• समय अधिकार अधिगà¥à¤°à¤¹à¤£."
+
+#: ../src/daemon/main.c:560
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"SUID रूट को आहà¥à¤µà¤¾à¤¨ किया और वासà¥à¤¤à¤µà¤¿à¤• समय/या उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ नियोजन को इस विनà¥à¤¯à¤¾à¤¸ में "
+"निवेदन किया गया था. हालांकि, हमें जरूरी अधिकार कम है:\n"
+"हम '%s' समूह में नहीं है, PolicyKit निवेदित अधिकार हमें देने से मना करता है और हम "
+"RLIMIT_NICE/RLIMIT_RTPRIO संसाधन सीमा को बढ़ाना नहीं है.\n"
+"वासà¥à¤¤à¤µà¤¿à¤• समय/या उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ नियोजन को सकà¥à¤°à¤¿à¤¯ करने के लिठकृपया उचित PolicyKit "
+"अधिकार अधिगà¥à¤°à¤¹à¤¿à¤¤ करें, या '%s' का सदसà¥à¤¯ बनें, RLIMIT_NICE/RLIMIT_RTPRIO संसाधन सीमा "
+"को इस उपयोकà¥à¤¤à¤¾ के लिठबढ़ाà¤à¤."
+
+#: ../src/daemon/main.c:585
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"विनà¥à¤¯à¤¾à¤¸ में उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ नियोजन सकà¥à¤°à¤¿à¤¯ है लेकिन नीति के दà¥à¤µà¤¾à¤°à¤¾ अनà¥à¤®à¤¤à¤¿ पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं है."
+
+#: ../src/daemon/main.c:614
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "सफलतापूरà¥à¤µà¤• बढ़ा हà¥à¤† RLIMIT_RTPRIO"
+
+#: ../src/daemon/main.c:617
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO विफल: %s"
+
+#: ../src/daemon/main.c:624
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE छोड़ रहा है"
+
+#: ../src/daemon/main.c:631
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr "विनà¥à¤¯à¤¾à¤¸ में वासà¥à¤¤à¤µà¤¿à¤• समय नियोजन लेकिन नीति के दà¥à¤µà¤¾à¤°à¤¾ अनà¥à¤®à¤¤à¤¿ पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं."
+
+#: ../src/daemon/main.c:692
+msgid "Daemon not running"
+msgstr "डेमॉन नहीं कारà¥à¤¯à¤¶à¥€à¤²"
+
+#: ../src/daemon/main.c:694
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "डेमॉन बतौर PID %u चल रहा है"
+
+#: ../src/daemon/main.c:704
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "डेमॉन हटाने में विफल: %s"
+
+#: ../src/daemon/main.c:722
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"यह पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤® बतौर रूट चलाने के लिठइचà¥à¤›à¤¿à¤¤ नहीं है (unless --system is specified)."
+
+#: ../src/daemon/main.c:724
+msgid "Root privileges required."
+msgstr "रूट अधिकार जरूरी."
+
+#: ../src/daemon/main.c:729
+msgid "--start not supported for system instances."
+msgstr "--start not supported for system instances."
+
+#: ../src/daemon/main.c:734
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "तंतà¥à¤° मोड में चल रहा है, लेकिन --disallow-exit सेट नहीं!"
+
+#: ../src/daemon/main.c:737
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr "तंतà¥à¤° मोड में चल रहा है, लेकिन --disallow-module-loading सेट नहीं!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "तंतà¥à¤° मोड में चल रहा है, SHM मोड बाधà¥à¤¯ रूप से निषà¥à¤•à¥à¤°à¤¿à¤¯!"
+
+#: ../src/daemon/main.c:745
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr "तंतà¥à¤° मोड में चल रहा है, निकास निषà¥à¤•à¥à¤°à¤¿à¤¯ समय बाधà¥à¤¯ रूप से निषà¥à¤•à¥à¤°à¤¿à¤¯!"
+
+#: ../src/daemon/main.c:772
+msgid "Failed to acquire stdio."
+msgstr "stdio पाने में विफल."
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "pipe failed: %s"
+msgstr "पाइप विफल: %s"
+
+#: ../src/daemon/main.c:783
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() विफल: %s"
+
+#: ../src/daemon/main.c:797
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() विफल: %s"
+
+#: ../src/daemon/main.c:803
+msgid "Daemon startup failed."
+msgstr "डेमॉन आरंभ विफल."
+
+#: ../src/daemon/main.c:805
+msgid "Daemon startup successful."
+msgstr "डेमॉन आरंभ सफल."
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "यह पलà¥à¤¸à¤‘डियो %s है."
+
+#: ../src/daemon/main.c:876
+#, c-format
+msgid "Compilation host: %s"
+msgstr "Compilation host: %s"
+
+#: ../src/daemon/main.c:877
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "Compilation CFLAGS: %s"
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Running on host: %s"
+msgstr "मेजबान पर चल रहा है: %s"
+
+#: ../src/daemon/main.c:883
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPU पाया."
+
+#: ../src/daemon/main.c:885
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "पृषà¥à¤  आकार %lu बाइट है."
+
+#: ../src/daemon/main.c:888
+msgid "Compiled with Valgrind support: yes"
+msgstr "वेलगà¥à¤°à¤¿à¤‚ड समरà¥à¤¥à¤¨ से कंपाइल: हाà¤"
+
+#: ../src/daemon/main.c:890
+msgid "Compiled with Valgrind support: no"
+msgstr "वेलगà¥à¤°à¤¿à¤‚ड समरà¥à¤¥à¤¨ से कंपाइल: नहीं"
+
+#: ../src/daemon/main.c:893
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "वेलगà¥à¤°à¤¿à¤‚ड विधि में चल रहा है: %s"
+
+#: ../src/daemon/main.c:896
+msgid "Optimized build: yes"
+msgstr "अनà¥à¤•à¥‚लित बिलà¥à¤¡: हाà¤"
+
+#: ../src/daemon/main.c:898
+msgid "Optimized build: no"
+msgstr "अनà¥à¤•à¥‚लित बिलà¥à¤¡: नहीं"
+
+#: ../src/daemon/main.c:902
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG परिभाषित, सभी निषà¥à¤•à¥à¤°à¤¿à¤¯."
+
+#: ../src/daemon/main.c:904
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH परिभाषित, केव तेज पथ à¤à¤¸à¤°à¥à¤Ÿ निषà¥à¤•à¥à¤°à¤¿à¤¯."
+
+#: ../src/daemon/main.c:906
+msgid "All asserts enabled."
+msgstr "सभी à¤à¤¸à¤°à¥à¤Ÿ सकà¥à¤·à¤®."
+
+#: ../src/daemon/main.c:910
+msgid "Failed to get machine ID"
+msgstr "मशीन ID पाने में विफल"
+
+#: ../src/daemon/main.c:913
+#, c-format
+msgid "Machine ID is %s."
+msgstr "मशीन ID %s है."
+
+#: ../src/daemon/main.c:917
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "मशीन ID %s है."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "रनटाइम निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ %s का पà¥à¤°à¤¯à¥‹à¤— कर रहा है."
+
+#: ../src/daemon/main.c:928
+#, c-format
+msgid "Using state directory %s."
+msgstr "सà¥à¤Ÿà¥‡à¤Ÿ निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ %s का पà¥à¤°à¤¯à¥‹à¤— कर रहा है."
+
+#: ../src/daemon/main.c:931
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "तंतà¥à¤° मोड में चल रहा है: %s"
+
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() विफल."
+
+#: ../src/daemon/main.c:961
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "ताज़ा उचà¥à¤š विभेदन टाइमर उपलबà¥à¤§! आनंद लें!"
+
+#: ../src/daemon/main.c:963
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"आपका करà¥à¤¨à¥‡à¤² बà¥à¤°à¥€ सà¥à¤¥à¤¿à¤¤à¤¿ में है! सलाह है कि उचà¥à¤š विभेदन यà¥à¤•à¥à¤¤ लिनकà¥à¤¸ सकà¥à¤°à¤¿à¤¯ किया जाना चाहिà¤!"
+
+#: ../src/daemon/main.c:988
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() विफल."
+
+#: ../src/daemon/main.c:1050
+msgid "Failed to initialize daemon."
+msgstr "डेमॉन आरंभ करने में विफल."
+
+#: ../src/daemon/main.c:1055
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "बिना लोड मॉडà¥à¤¯à¥‚ल के डेमॉन आरंभ, काम करने से असà¥à¤µà¥€à¤•à¤¾à¤° कर रहा है."
+
+#: ../src/daemon/main.c:1072
+msgid "Daemon startup complete."
+msgstr "डेमॉन आरंभन पूरà¥à¤£."
+
+#: ../src/daemon/main.c:1078
+msgid "Daemon shutdown initiated."
+msgstr "डेमॉन बनà¥à¤¦ किया जाना आरंभ."
+
+#: ../src/daemon/main.c:1100
+msgid "Daemon terminated."
+msgstr "डेमॉन अवरोधित."
+
+#: ../src/daemon/cmdline.c:115
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+
+#: ../src/daemon/cmdline.c:247
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:254
+msgid "--fail expects boolean argument"
+msgstr "--fail के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:264
+msgid ""
+"--log-level expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+msgstr ""
+"--log-level expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+
+#: ../src/daemon/cmdline.c:276
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:283
+msgid "--realtime expects boolean argument"
+msgstr "--realtime के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:290
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:297
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:304
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:321
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "अवैध लॉग लकà¥à¤·à¥à¤¯: use either 'syslog', 'stderr' or 'auto'."
+
+#: ../src/daemon/cmdline.c:328
+msgid "--log-time expects boolean argument"
+msgstr "--log-time के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:335
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:354
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "अवैध पà¥à¤¨à¤ƒ पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ विधि '%s'."
+
+#: ../src/daemon/cmdline.c:361
+msgid "--system expects boolean argument"
+msgstr "--system के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:368
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/cmdline.c:375
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm के लिठबà¥à¤²à¤¿à¤¯à¤¨ तरà¥à¤• की आशा है"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "नाम: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "कोई मॉडà¥à¤¯à¥‚ल सूचना उपलबà¥à¤§ नहीं\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "संसà¥à¤•à¤°à¤£: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "विवरण: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "लेखक: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "उपयोग: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "à¤à¤• बार लोड करें: %s\n"
+
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
+#, c-format
+msgid "Path: %s\n"
+msgstr "पथ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:216
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] अवैध लॉग लकà¥à¤·à¥à¤¯ '%s'."
+
+#: ../src/daemon/daemon-conf.c:232
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] अवैध लॉग सà¥à¤¤à¤° '%s'."
+
+#: ../src/daemon/daemon-conf.c:248
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] अवैध पà¥à¤¨à¤ƒ नमूना विधि '%s'."
+
+#: ../src/daemon/daemon-conf.c:271
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] अवैध rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:278
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit इस पà¥à¤²à¥‡à¤Ÿà¤«à¥‰à¤°à¥à¤® पर समरà¥à¤¥à¤¿à¤¤ नहीं."
+
+#: ../src/daemon/daemon-conf.c:294
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] अवैध पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ पà¥à¤°à¤¾à¤°à¥‚प '%s'."
+
+#: ../src/daemon/daemon-conf.c:312
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] अवैध पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ दर '%s'."
+
+#: ../src/daemon/daemon-conf.c:336
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] अवैध पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ चैनल '%s'."
+
+#: ../src/daemon/daemon-conf.c:354
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] अवैध चैनल मानचितà¥à¤° '%s'."
+
+#: ../src/daemon/daemon-conf.c:372
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] टà¥à¤•à¤¡à¤¼à¥‡ '%s' की अवैध संखà¥à¤¯à¤¾."
+
+#: ../src/daemon/daemon-conf.c:390
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] अवैध खंड आकार '%s'."
+
+#: ../src/daemon/daemon-conf.c:408
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] अवैध नाइस सà¥à¤¤à¤° '%s'."
+
+#: ../src/daemon/daemon-conf.c:524
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "विनà¥à¤¯à¤¾à¤¸ फ़ाइल खोलने में विफल: %s"
+
+#: ../src/daemon/daemon-conf.c:540
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+"निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ तयशà¥à¤¦à¤¾ चैनल मानचितà¥à¤° के पास चैनल की भिनà¥à¤¨ संखà¥à¤¯à¤¾ है चैनल की तयशà¥à¤¦à¤¾ निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ संखà¥à¤¯à¤¾ "
+"के बनिसà¥à¤ªà¤¤."
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### विनà¥à¤¯à¤¾à¤¸ फ़ाइल से पढ़ें: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "रूट अधिकार छोड़ रहा है."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "CAP_SYS_NICE में सीमित कà¥à¤·à¤®à¤¤à¤¾ सफलतापूरà¥à¤µà¤•."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "पलà¥à¤¸à¤‘डियो धà¥à¤µà¤¨à¤¿ तंतà¥à¤°"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "पलà¥à¤¸à¤‘डियो धà¥à¤µà¤¨à¤¿ तंतà¥à¤° पà¥à¤°à¤¾à¤°à¤‚भ करें"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ अनà¥à¤¸à¥‚चन (negative Unix nice level) PulseAudio डेमॉन के लिà¤"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "पलà¥à¤¸à¤‘डियो डेमॉन के लिठवासà¥à¤¤à¤µà¤¿à¤• समय नियोजन"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "तंतà¥à¤° नीति PulseAudio को रोकती है उचà¥à¤š पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ अनà¥à¤¸à¥‚चन के लिà¤."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr "तंतà¥à¤° नीति PulseAudio को वासà¥à¤¤à¤µà¤¿à¤• समय अनà¥à¤¸à¥‚चन पाने से रोकती है."
+
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+msgid "Mono"
+msgstr "मोनो"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Center"
+msgstr "अगà¥à¤° केंदà¥à¤°"
+
+#: ../src/pulse/channelmap.c:108
+msgid "Front Left"
+msgstr "अगà¥à¤° बायाà¤"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Front Right"
+msgstr "अगà¥à¤° दाहिना"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Center"
+msgstr "पशà¥à¤š केंदà¥à¤°"
+
+#: ../src/pulse/channelmap.c:112
+msgid "Rear Left"
+msgstr "पशà¥à¤š बायां"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Rear Right"
+msgstr "पशà¥à¤š दाहिना"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Low Frequency Emmiter"
+msgstr "निमà¥à¤¨ आवृतà¥à¤¤à¤¿ निकासकरà¥à¤¤à¤¾"
+
+#: ../src/pulse/channelmap.c:117
+msgid "Front Left-of-center"
+msgstr "केंदà¥à¤° का अगà¥à¤° वाम"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Front Right-of-center"
+msgstr "केंदà¥à¤° का अगà¥à¤° दकà¥à¤·à¤¿à¤£"
+
+#: ../src/pulse/channelmap.c:120
+msgid "Side Left"
+msgstr "किनारा वाम"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Side Right"
+msgstr "किनारा दायाà¤"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 0"
+msgstr "सहायक 0"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 1"
+msgstr "सहायक 1"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 2"
+msgstr "सहायक 2"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 3"
+msgstr "सहायक 3"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 4"
+msgstr "सहायक 4"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 5"
+msgstr "सहायक 5"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 6"
+msgstr "सहायक 6"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 7"
+msgstr "सहायक 7"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 8"
+msgstr "सहायक 8"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 9"
+msgstr "सहायक 9"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 10"
+msgstr "सहायक 10"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 11"
+msgstr "सहायक 11"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 12"
+msgstr "सहायक 12"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 13"
+msgstr "सहायक 13"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 14"
+msgstr "सहायक 14"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 15"
+msgstr "सहायक 15"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 16"
+msgstr "सहायक 16"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 17"
+msgstr "सहायक 17"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 18"
+msgstr "सहायक 18"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 19"
+msgstr "सहायक 19"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 20"
+msgstr "सहायक 20"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 21"
+msgstr "सहायक 21"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 22"
+msgstr "सहायक 22"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 23"
+msgstr "सहायक 23"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 24"
+msgstr "सहायक 24"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 25"
+msgstr "सहायक 25"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 26"
+msgstr "सहायक 26"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 27"
+msgstr "सहायक 27"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 28"
+msgstr "सहायक 28"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 29"
+msgstr "सहायक 29"
+
+#: ../src/pulse/channelmap.c:153
+msgid "Auxiliary 30"
+msgstr "सहायक 30"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Auxiliary 31"
+msgstr "सहायक 31"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Center"
+msgstr "शीरà¥à¤· केंदà¥à¤°"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Center"
+msgstr "शीरà¥à¤· अगà¥à¤° केंदà¥à¤°"
+
+#: ../src/pulse/channelmap.c:159
+msgid "Top Front Left"
+msgstr "शीरà¥à¤· अगà¥à¤° वाम"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Front Right"
+msgstr "ऊपर अगà¥à¤° दायाà¤"
+
+#: ../src/pulse/channelmap.c:162
+msgid "Top Rear Center"
+msgstr "ऊपर पशà¥à¤š केंदà¥à¤°"
+
+#: ../src/pulse/channelmap.c:163
+msgid "Top Rear Left"
+msgstr "ऊपर पशà¥à¤š बायाà¤"
+
+#: ../src/pulse/channelmap.c:164
+msgid "Top Rear Right"
+msgstr "ऊपर पशà¥à¤š दायाà¤"
+
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+msgid "(invalid)"
+msgstr "(अवैध)"
+
+#: ../src/pulse/channelmap.c:751
+msgid "Stereo"
+msgstr "सà¥à¤Ÿà¥€à¤°à¤¿à¤¯à¥‹"
+
+#: ../src/pulse/channelmap.c:756
+msgid "Surround 4.0"
+msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 4.0"
+
+#: ../src/pulse/channelmap.c:762
+msgid "Surround 4.1"
+msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 4.1"
+
+#: ../src/pulse/channelmap.c:768
+msgid "Surround 5.0"
+msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 5.0"
+
+#: ../src/pulse/channelmap.c:774
+msgid "Surround 5.1"
+msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 5.1"
+
+#: ../src/pulse/channelmap.c:781
+msgid "Surround 7.1"
+msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "ठीक"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "पहà¥à¤à¤š मनाही"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "अनजान कमांड"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "अवैध तरà¥à¤•"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "à¤à¤‚टिटी मौजूद"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "कोई à¤à¤¸à¥€ à¤à¤‚टिटी नहीं"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "कनेकà¥à¤¶à¤¨ असà¥à¤µà¥€à¤•à¥ƒà¤¤"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "पà¥à¤°à¥‹à¤Ÿà¥‹à¤•à¤¾à¤² तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "समय ख़तà¥à¤®"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "कोई पà¥à¤°à¤¾à¤§à¤¿à¤•à¤°à¤£ कà¥à¤‚जी नहीं"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "आंतरिक तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "कनेकà¥à¤¶à¤¨ समापà¥à¤¤"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "à¤à¤‚टिटी मृत"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "अवैध सरà¥à¤µà¤°"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "मॉडयूल आरंभीकरण असफल"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "बà¥à¤°à¥€ सà¥à¤¥à¤¿à¤¤à¤¿"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "कोई आà¤à¤•à¤¡à¤¼à¤¾ नहीं"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "बेमेल पà¥à¤°à¥‹à¤Ÿà¥‹à¤•à¥‰à¤² संसà¥à¤•à¤°à¤£"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "काफी बड़ा"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "समरà¥à¤¥à¤¿à¤¤ नहीं है"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "अजà¥à¤žà¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¤¿ कोड"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "कोई à¤à¤¸à¤¾ विसà¥à¤¤à¤¾à¤° नहीं"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "पà¥à¤°à¤¾à¤¨à¥€ पà¥à¤°à¤•à¤¾à¤°à¥à¤¯à¤¾à¤¤à¥à¤®à¤•à¤¤à¤¾"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "अनà¥à¤ªà¤¸à¥à¤¥à¤¿à¤¤ कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¯à¤¨"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "कà¥à¤²à¤¾à¤à¤‚ट विभाजित"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() विफल"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "कà¥à¤•à¥€ आंकड़ा के विशà¥à¤²à¥‡à¤·à¤£ में विफल"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "विनà¥à¤¯à¤¾à¤¸ फ़ाइल '%s' खोलने में विफल: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "कोई कà¥à¤•à¥€ नहीं लोड किया गया. इसके बिना कनेकà¥à¤Ÿ करने की कोशिश कर रहा हूà¤."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1403
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "अजà¥à¤žà¤¾à¤¤ विसà¥à¤¤à¤¾à¤° '%s' के लिठसंदेश पà¥à¤°à¤¾à¤ªà¥à¤¤"
+
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Failed to drain stream: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "पà¥à¤²à¥‡à¤¬à¥ˆà¤• सà¥à¤Ÿà¥à¤°à¥€à¤® खतà¥à¤®.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "सरà¥à¤µà¤° में कनेकà¥à¤¶à¤¨ ले जा रहा है.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() विफल: %s\n"
+
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() विफल: %s\n"
+
+#: ../src/utils/pacat.c:302
+msgid "Stream successfully created.\n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® सफलतापूरà¥à¤µà¤• निरà¥à¤®à¤¿à¤¤.\n"
+
+#: ../src/utils/pacat.c:305
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() विफल: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgstr "बफ़र मेटà¥à¤°à¤¿à¤•à¥à¤¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+
+#: ../src/utils/pacat.c:312
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "बफ़र मेटà¥à¤°à¤¿à¤•à¥à¤¸: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:316
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "नमूना सà¥à¤ªà¥‡à¤• '%s' का पà¥à¤°à¤¯à¥‹à¤—, चैनल मैप '%s'.\n"
+
+#: ../src/utils/pacat.c:320
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "यà¥à¤•à¥à¤¤à¤¿ %s (%u, %ssuspended) से कनेकà¥à¤Ÿà¥‡à¤¡.\n"
+
+#: ../src/utils/pacat.c:330
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¤¿: %s\n"
+
+#: ../src/utils/pacat.c:340
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ सà¥à¤¥à¤—ित.%s \n"
+
+#: ../src/utils/pacat.c:342
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ पà¥à¤¨à¤°à¥à¤¬à¤¹à¤¾à¤².%s \n"
+
+#: ../src/utils/pacat.c:350
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® अंडररन.%s \n"
+
+#: ../src/utils/pacat.c:357
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® ओवररन.%s \n"
+
+#: ../src/utils/pacat.c:364
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® आरंभ.%s \n"
+
+#: ../src/utils/pacat.c:371
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ %s (%u, %ssuspended).%s में खिसकाया गया \n"
+
+#: ../src/utils/pacat.c:371
+msgid "not "
+msgstr "नहीं "
+
+#: ../src/utils/pacat.c:378
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® बफ़र गà¥à¤£ परिवरà¥à¤¤à¤¿à¤¤.%s \n"
+
+#: ../src/utils/pacat.c:411
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "कनेकà¥à¤¶à¤¨ सà¥à¤¥à¤¾à¤ªà¤¿à¤¤.%s \n"
+
+#: ../src/utils/pacat.c:414
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() विफल: %s\n"
+
+#: ../src/utils/pacat.c:442
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() विफल: %s\n"
+
+#: ../src/utils/pacat.c:448
+#, c-format
+msgid "pa_stream_connect_record() failed: %s\n"
+msgstr "pa_stream_connect_record() विफल: %s\n"
+
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "कनेकà¥à¤¶à¤¨ विफल.%s \n"
+
+#: ../src/utils/pacat.c:495
+msgid "Got EOF.\n"
+msgstr "EOF पाया.\n"
+
+#: ../src/utils/pacat.c:500
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() विफल: %s\n"
+
+#: ../src/utils/pacat.c:532
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() विफल: %s\n"
+
+#: ../src/utils/pacat.c:553
+msgid "Got signal, exiting.\n"
+msgstr "संकेत पाया, निकल रहा है.\n"
+
+#: ../src/utils/pacat.c:567
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "Failed to get latency: %s\n"
+
+#: ../src/utils/pacat.c:572
+#, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgstr "समय: %0.3f sec; लैटेंसी: %0.0f usec. \r"
+
+#: ../src/utils/pacat.c:592
+#, c-format
+msgid "pa_stream_update_timing_info() failed: %s\n"
+msgstr "pa_stream_update_timing_info() विफल: %s\n"
+
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+
+#: ../src/utils/pacat.c:727
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"लिबपलà¥à¤¸ %s के साथ कंपाइल\n"
+"लिबपलà¥à¤¸ %s के साथ लिंक\n"
+
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "अवैध चैनल मानचितà¥à¤° '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "अवैध पà¥à¤¨à¤ƒ पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ विधि '%s'."
+
+#: ../src/utils/pacat.c:813
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "अवैध चैनल मानचितà¥à¤° '%s'\n"
+
+#: ../src/utils/pacat.c:842
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "अवैध लैटेंसी विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s'\n"
+
+#: ../src/utils/pacat.c:849
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "अवैध पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ समय विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s'\n"
+
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "अवैध पà¥à¤¨à¤ƒ पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ विधि '%s'."
+
+#: ../src/utils/pacat.c:878
+#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
+msgstr "अवैध नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾\n"
+
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "कई वितरà¥à¤•.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "नमूना सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "धà¥à¤µà¤¨à¤¿ फ़ाइल खोलने में विफल.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "नमूना सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr "चैनल मानचितà¥à¤° नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ के मेल नहीं खाता\n"
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® को किसी नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s' के साथ खोल रहा है.\n"
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr "रिकारà¥à¤¡à¤¿à¤‚ग"
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
+msgstr "पà¥à¤²à¥‡à¤¬à¥ˆà¤•"
+
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() विफल.\n"
+
+#: ../src/utils/pacat.c:1051
+msgid "io_new() failed.\n"
+msgstr "io_new() विफल.\n"
+
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() विफल.\n"
+
+#: ../src/utils/pacat.c:1066
+#, fuzzy, c-format
+msgid "pa_context_connect() failed: %s\n"
+msgstr "pa_context_connect() विफल: %s"
+
+#: ../src/utils/pacat.c:1077
+msgid "time_new() failed.\n"
+msgstr "time_new() विफल.\n"
+
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() विफल.\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "सà¥à¤¥à¤—न में विफल: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "पà¥à¤¨à¤°à¥à¤¬à¤¹à¤¾à¤²à¥€ में विफल: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "चेतावनी: धà¥à¤µà¤¨à¤¿ सरà¥à¤µà¤° सà¥à¤¥à¤¾à¤¨à¥€à¤¯ नहीं है, सà¥à¤¥à¤—ित नहीं कर रहा है.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT पाया, निकल रहा है.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "चेतावनी: संतति पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ %u संकेत से रूका\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:248
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"लिबपलà¥à¤¸ %s से कंपाइल\n"
+"लिबपलà¥à¤¸ %s से कड़ीबदà¥à¤§\n"
+
+#: ../src/utils/pactl.c:128
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "आंकड़े पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:134
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "पà¥à¤°à¤¯à¥‹à¤— में मà¥à¤¦à¥à¤°à¤¾: %u बà¥à¤²à¥‰à¤• %s बाइट कà¥à¤² समाहित करता है.\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr "संपूरà¥à¤£ जीवनचकà¥à¤° के दौरान आबंटित: %u बà¥à¤²à¥‰à¤• %s बाइट कà¥à¤² को समाहित करता है.\n"
+
+#: ../src/utils/pactl.c:140
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "नमूना कैश आकार: %s\n"
+
+#: ../src/utils/pactl.c:149
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "सरà¥à¤µà¤° सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:157
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"उपयोकà¥à¤¤à¤¾ नाम: %s\n"
+"मेजबान नाम: %s\n"
+"सरà¥à¤µà¤° नाम: %s\n"
+"सरà¥à¤µà¤° संसà¥à¤•à¤°à¤£: %s\n"
+"तयशà¥à¤¦à¤¾ नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾: %s\n"
+"तयशà¥à¤¦à¤¾ चैनल मानचितà¥à¤°: %s\n"
+"तयशà¥à¤¦à¤¾ सिंक: %s\n"
+"तयशà¥à¤¦à¤¾ सà¥à¤°à¥‹à¤¤: %s\n"
+"कà¥à¤•à¥€: %08x\n"
+
+#: ../src/utils/pactl.c:198
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "सिंक सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:214
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfiles:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tActive Profile: %s\n"
+
+#: ../src/utils/pactl.c:290
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "सà¥à¤°à¥‹à¤¤ सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:306
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:368
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "मॉडà¥à¤¯à¥‚ल सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:386
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:405
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "कà¥à¤²à¤¾à¤‡à¤‚ट सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:423
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:440
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "कारà¥à¤¡ सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:458
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:472
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tProfiles:\n"
+
+#: ../src/utils/pactl.c:478
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tActive Profile: %s\n"
+
+#: ../src/utils/pactl.c:489
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "सिंक इनपà¥à¤Ÿ सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:508
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:547
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "सà¥à¤°à¥‹à¤¤ आउटपà¥à¤Ÿ सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:567
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:598
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "नमूना सूचना पाने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:616
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#, c-format
+msgid "Failure: %s\n"
+msgstr "विफलता: %s\n"
+
+#: ../src/utils/pactl.c:680
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "नमूना अफलोड करने में विफल: %s\n"
+
+#: ../src/utils/pactl.c:697
+msgid "Premature end of file\n"
+msgstr "फ़ाइल का असामयिक अंत\n"
+
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+
+#: ../src/utils/pactl.c:880
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"लिबपलà¥à¤¸ %s से कंपाइल\n"
+"लिबपलà¥à¤¸ %s से कड़ीबदà¥à¤§\n"
+
+#: ../src/utils/pactl.c:926
+msgid "Please specify a sample file to load\n"
+msgstr "लोड करने के लिठकिसी नमूना फ़ाइल निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करें\n"
+
+#: ../src/utils/pactl.c:939
+msgid "Failed to open sound file.\n"
+msgstr "धà¥à¤µà¤¨à¤¿ फ़ाइल खोलने में विफल.\n"
+
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® को किसी नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s' के साथ खोल रहा है.\n"
+
+#: ../src/utils/pactl.c:961
+msgid "You have to specify a sample name to play\n"
+msgstr "आपने किसी नमूना नाम को बजाने के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+
+#: ../src/utils/pactl.c:973
+msgid "You have to specify a sample name to remove\n"
+msgstr "आपने किसी नमूना नाम को हटाने के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+
+#: ../src/utils/pactl.c:982
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "आपने किसी सिंक इनपà¥à¤Ÿ सूची और सिंक को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+
+#: ../src/utils/pactl.c:992
+msgid "You have to specify a source output index and a source\n"
+msgstr "आपने किसी सिंक सà¥à¤°à¥‹à¤¤ आउटपà¥à¤Ÿ और सà¥à¤°à¥‹à¤¤ को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+
+#: ../src/utils/pactl.c:1007
+msgid "You have to specify a module name and arguments.\n"
+msgstr "आपने किसी मॉडà¥à¤¯à¥‚ल नाम और वितरà¥à¤• को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+
+#: ../src/utils/pactl.c:1027
+msgid "You have to specify a module index\n"
+msgstr "आपने किसी मॉडà¥à¤¯à¥‚ल सूची को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+
+#: ../src/utils/pactl.c:1037
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"आप à¤à¤• सिंक से अधिक निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ नहीं कर सकते हैं. आपको किसी बà¥à¤²à¤¿à¤¯à¤¨ मान को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना "
+"है.\n"
+
+#: ../src/utils/pactl.c:1050
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"आप à¤à¤• सà¥à¤°à¥‹à¤¤ से अधिक निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ नहीं कर सकते हैं. आपको किसी बà¥à¤²à¤¿à¤¯à¤¨ मान को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना "
+"है.\n"
+
+#: ../src/utils/pactl.c:1062
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "आपको किसी कारà¥à¤¡ नाम/सूची और पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² नाम को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है.\n"
+
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "आपको किसी कारà¥à¤¡ नाम/सूची और पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² नाम को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है.\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "आपको किसी कारà¥à¤¡ नाम/सूची और पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² नाम को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है.\n"
+
+#: ../src/utils/pactl.c:1099
+msgid "No valid command specified.\n"
+msgstr "कोई वैध कमांड निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ नहीं.\n"
+
+#: ../src/utils/pactl.c:1122
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() विफल: %s"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "कमांड लाइन के विशà¥à¤²à¥‡à¤·à¤£ में असमरà¥à¤¥.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "सरà¥à¤µà¤°: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "सà¥à¤°à¥‹à¤¤: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "सिंक: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "कà¥à¤•à¥€: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "कà¥à¤•à¥€ आंकड़ा के विशà¥à¤²à¥‡à¤·à¤£ में विफल\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "कà¥à¤•à¥€ आंकड़ा के सहेजने में विफल\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "कà¥à¤²à¤¾à¤‡à¤‚ट विनà¥à¤¯à¤¾à¤¸ फ़ाइल लोड करने में विफल\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "वातावरण विनà¥à¤¯à¤¾à¤¸ आंकड़ा को पढ़ने में विफल.\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDN पाने में विफल.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "कà¥à¤•à¥€ आंकड़ा लोड करने में विफल\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "अभी तक कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ नहीं.\n"
+
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:83
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:91
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio डेमॉन को मारने में विफल."
+
+#: ../src/utils/pacmd.c:99
+msgid "Daemon not responding."
+msgstr "डेमॉन पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾ नहीं दे रहा है."
+
+#: ../src/utils/pacmd.c:146
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#, c-format
+msgid "write(): %s"
+msgstr "write(): %s"
+
+#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+msgid "Cannot access autospawn lock."
+msgstr "autospawn लॉक की पहà¥à¤à¤š नहीं ले सकता है."
+
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA ने यà¥à¤•à¥à¤¤à¤¿ में नया आंकड़ा लिखने के लिठहमें तैयार किया, लेकिन वहाठवासà¥à¤¤à¤µ में लिखने के लिठ"
+"कà¥à¤› नहीं था!\n"
+"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. कृपया इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को "
+"रिपोरà¥à¤Ÿ करें.\n"
+"हमें POLLOUT सेट के साथ तैयार किया गया है -- हालांकि परवरà¥à¤¤à¥€ snd_pcm_avail() ने 0 या "
+"दूसरा मान < min_avail दिया."
+
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA ने यà¥à¤•à¥à¤¤à¤¿ में नया आंकड़ा पढ़ने के लिठहमें तैयार किया, लेकिन वहाठवासà¥à¤¤à¤µ में पढ़ने के लिठकà¥à¤› "
+"नहीं था!\n"
+"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. कृपया इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को "
+"रिपोरà¥à¤Ÿ करें.\n"
+"हमें POLLIN सेट के साथ तैयार किया गया है -- हालांकि परवरà¥à¤¤à¥€ snd_pcm_avail() ने 0 या "
+"दूसरा मान < min_avail दिया."
+
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+msgid "Off"
+msgstr "बंद"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+msgid "High Fidelity Playback (A2DP)"
+msgstr "उचà¥à¤š विशà¥à¤µà¤¸à¤¨à¥€à¤¯à¤¤à¤¾à¤¯à¥à¤•à¥à¤¤à¤¿ पà¥à¤²à¥‡à¤¬à¥ˆà¤• (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "टेलिफोनी डà¥à¤¯à¥‚पà¥à¤²à¥‡à¤•à¥à¤¸ (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:151
+msgid "PulseAudio Sound Server"
+msgstr "पलà¥à¤¸à¤‘डियो धà¥à¤µà¤¨à¤¿ सरà¥à¤µà¤°"
+
+#~ msgid "Analog Mono"
+#~ msgstr "à¤à¤¨à¤¾à¤²à¥‰à¤— मोनो"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "à¤à¤¨à¤¾à¤²à¥‰à¤— सà¥à¤Ÿà¥€à¤°à¤¿à¤¯à¥‹"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "डिजिटल सà¥à¤Ÿà¥€à¤°à¤¿à¤¯à¥‹ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "डिजिटल सà¥à¤Ÿà¥€à¤°à¤¿à¤¯à¥‹ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "à¤à¤¨à¤¾à¤²à¥‰à¤— सरà¥à¤°à¤¾à¤‰à¤‚ड 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "डिजिटल सरà¥à¤°à¤¾à¤‰à¤‚ड 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "à¤à¤¨à¤¾à¤²à¥‰à¤— सरà¥à¤°à¤¾à¤‰à¤‚ड 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "à¤à¤¨à¤¾à¤²à¥‰à¤— सरà¥à¤°à¤¾à¤‰à¤‚ड 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "à¤à¤¨à¤¾à¤²à¥‰à¤— सरà¥à¤°à¤¾à¤‰à¤‚ड 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "डिजिटल सरà¥à¤°à¤¾à¤‰à¤‚ड 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "à¤à¤¨à¤¾à¤²à¥‰à¤— सरà¥à¤°à¤¾à¤‰à¤‚ड 7.1"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® सफलतापूरà¥à¤µà¤• बनाया गया\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¤¿: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "कनेकà¥à¤¶à¤¨ सà¥à¤¥à¤¾à¤ªà¤¿à¤¤.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "लिबपलà¥à¤¸ %s से कंपाइल\n"
+#~ "लिबपलà¥à¤¸ %s से कड़ीबदà¥à¤§\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "अवैध चैनल मानचितà¥à¤°\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "फ़ाइल '%s' खोलने में विफल\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "चैनल मानचितà¥à¤° फ़ाइल से मेल नहीं खाता है.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "नमूना सà¥à¤ªà¥‡à¤• '%s' का पà¥à¤°à¤¯à¥‹à¤— कर रहा है\n"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "आउटपà¥à¤Ÿ %s + इनपà¥à¤Ÿ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "आउटपà¥à¤Ÿ %s"
+
+#~ msgid "Input %s"
+#~ msgstr "इनपà¥à¤Ÿ %s"
diff --git a/po/it.po b/po/it.po
index 27819391..3ecca4e4 100644
--- a/po/it.po
+++ b/po/it.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-20 22:34+0200\n"
"Last-Translator: mario_santagiuliana <mario at marionline.it>\n"
"Language-Team: Italian <fedora-trans-it at redhat.com>\n"
@@ -19,51 +19,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Mono analogico"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Stereo analogico"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Stereo digitale (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Stereo digitale (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Surround analogico 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Surround digitale 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Surround analogico 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Surround analogico 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Surround analogico 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Surround digitale 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Surround analogico 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -75,7 +31,7 @@ msgstr ""
"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +43,7 @@ msgstr ""
"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +56,24 @@ msgstr ""
"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Audio interno"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Modem"
@@ -174,105 +143,105 @@ msgstr "Impossibile ottenere l'autorizzazione: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ha risposto con \"%s\""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Ottenuto il segnale %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Uscita."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ricerca dell'utente \"%s\" non riuscita."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ricerca del gruppo \"%s\" non riuscita."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Trovato l'utente \"%s\" (UID %lu) e il gruppo \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "Il GID dell'utente \"%s\" e del gruppo \"%s\" non corrispondono."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "La directory home dell'utente \"%s\" non è \"%s\", ignorato."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Creazione di \"%s\" non riuscita: %s"
# group list ????
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Cambio dell'elenco di gruppo non riuscito: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Cambio di GID non riuscito: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Cambio di UID non riuscito: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Privilegi di root abbandonati con successo."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Modalità \"system wide\" non supportata su questa piattaforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Analisi della riga di comando non riuscita."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling high-priority."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling real-time."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority assegnati da PolicyKit."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Privilegi acquire-real-time assegnati da PolicyKit."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Privilegi acquire-real-time rifiutati da PolicyKit."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -293,49 +262,49 @@ msgstr ""
"PolicyKit appropriati, diventare un membro di «%s» oppure incrementare i "
"limiti RLIMIT_NICE/RLIMIT_RTPRIO della risorsa per questo utente."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Scheduling high-priority abilitato nella configurazione, ma non ammesso "
"dalla politica."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Incremento di RLIMIT_RTPRIO riuscito"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO non riuscito: %s"
# abbandono??
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abbandono del CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Scheduling real-time abilitato nella configurazione, ma non ammesso dalla "
"politica."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Demone non in esecuzione"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demone in esecuzione con PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Terminazione del demone non riuscita: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -343,168 +312,178 @@ msgstr ""
"Questo programma non è pensato per essere eseguito come root (a meno di "
"specificare --system)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Richiesti privilegi di root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start non supportato per le istanze di sistema."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "In esecuzione in modalità sistema, ma --disallow-exit non impostato."
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"In esecuzione in modalità sistema, ma --disallow-module-loading non "
"impostato."
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"In esecuzione in modalità sistema, disabilitata in modo forzoso la modalità "
"SHM."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"In esecuzione in modalità sistema, disabilitato in modo forzoso il tempo di "
"uscita per inattività."
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Acquisizione di STDIO non riuscita."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe non riuscita: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() non riuscita: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() non riuscita: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Avvio del demone non riuscito."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Avvio del demone riuscito."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Questo è PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host di compilazione: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS di compilazione: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "In esecuzione sull'host: %s"
# evviva il rispetto della l10n!!!
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Trovate %u CPU."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "La dimensione di pagina è %lu byte"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilato con supporto a Valgrind: sì"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilato con supporto a Valgrind: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "In esecuzione in modalità valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Build ottimizzata: sì"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Build ottimizzata: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definito, tutte le dichiarazioni sono disabilitate."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH definito, solo le dichiarazioni veloci di path sono disabilitate."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Tutte le dichiarazioni sono abilitate."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Recupero dell'ID della macchina non riuscito"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "In uso directory di runtime %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Disponibili timer high-resolution freschi freschi! Buon appetito!"
# $REPEAT_PREVIOUS_COMMENT_HERE
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -512,32 +491,32 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Avvio del demone senza alcun modulo caricato, rifiuta di lavorare."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Demone terminato."
# mamma mia che impressione
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -709,15 +688,15 @@ msgstr ""
" -n Non carica il file script "
"predefinito\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -726,54 +705,54 @@ msgstr ""
"nell'intervallo numerico 0..4 oppure uno tra debug, info, notice, warn, "
"error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Destinazione del registro non valida: usare \"syslog\", \"stderr\" o \"auto"
"\"."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm richiede un argomento booleano"
@@ -813,78 +792,83 @@ msgstr "Uso: %s\n"
msgid "Load Once: %s\n"
msgstr "Caricato una sola volta: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Percorso: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destinazione di registro \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Livello di registro \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit non supportato su questa piattaforma."
# o campionamento?? ma campionamento non è sampling?
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato di campionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Frequenza di campionamento '%s' non valida."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mappa del canale \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Numero di frammenti \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -937,239 +921,239 @@ msgstr ""
"La politica di sistema previene PulseAudio dall'ottenere lo scheduling real-"
"time."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
# frontale centrale non si usa in HiFi
# solo centrale.
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Centrale"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Frontale sinistro"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Frontale destro"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Centrale posteriore"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Posteriore sinistro"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Posteriore destro"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Emettitore basse frequenze"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Frontale sinistra-del-centro"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Frontale destra-del-centro"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Laterale sinistro"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Laterale destro"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Ausiliario 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Ausiliario 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Ausiliario 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Ausiliario 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Ausiliario 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Ausiliario 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Ausiliario 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Ausiliario 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Ausiliario 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Ausiliario 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Ausiliario 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Ausiliario 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Ausiliario 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Ausiliario 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Ausiliario 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Ausiliario 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Ausiliario 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Ausiliario 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Ausiliario 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Ausiliario 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Ausiliario 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Ausiliario 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Ausiliario 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Ausiliario 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Ausiliario 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Ausiliario 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Ausiliario 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Ausiliario 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Ausiliario 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Ausiliario 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Ausiliario 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Ausiliario 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Centrale superiore"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Superiore frontale centrale"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Superiore frontale sinistro"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Superiore frontale destro"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Superiore posteriore centrale"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Superiore posteriore sinistro"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Superiore posteriore destro"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(non valido)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1330,176 +1314,171 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Svuotamento dello stream non riuscito: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Stream di riproduzione svuotato.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Svuotamento della connessione sul server.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() non riuscita: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() non riuscita: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Creazione dello stream riuscita.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() non riuscita: %s\n"
# maxlength, fragsize e gli altri non so se vanno tradotti...
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metriche del buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
# maxlength e fragsize non so se vanno tradotti...
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metriche del buffer: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "In uso specifica di campionamento \"%s\", mappa di canali \"%s\".\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Connesso al device %s (%u, %ssospeso).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Errore di stream: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Device stream sospeso.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Device stream ripristinato.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Underrun dello stream.%s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Overrun dello stream.%s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Stream avviato.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Stream spostato sul device %s (%u, %ssospeso).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "non "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Attributi del buffer di stream cambiati.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Connessione stabilita.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() non riuscita: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() non riuscita: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() non riuscita: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Connessione non riuscita: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Svuotamento dello stream non riuscito: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Stream di riproduzione svuotato.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Svuotamento della connessione sul server.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Ricevuto EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() non riuscita: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() non riuscita: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Ricevuto il segnale, uscita.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Recupero della latenza non riuscito: %s\n"
# dubbio: tempo o durata??
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tempo: %0.3f sec; Latenza: %0.0f microsec. \\r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() non riuscita: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1525,8 +1504,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1549,6 +1530,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [OPZIONI]\n"
"\n"
@@ -1611,7 +1597,7 @@ msgstr ""
"per\n"
" richiesta specificato in byte.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1622,89 +1608,134 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mappa di canali \"%s\" non valida\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Metodo di ricampionamento \"%s\" non valido."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mappa di canali \"%s\" non valida\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Specifica di latenza \"%s\" non valida\n"
# esecuzione???
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Specifica di tempo di elaborazione \"%s\" non valida\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Metodo di ricampionamento \"%s\" non valido."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Specifica di campionamento non valida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Troppi argomenti.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Apertura del file audio non riuscita.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "La mappa di canali non corrisponde alla specifica di campionamento\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "registrazione"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "riproduzione"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Troppi argomenti.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() non riuscita.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() non riuscita.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() non riuscita.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() non riuscita: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() non riuscita.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() non riuscita.\n"
@@ -1735,8 +1766,7 @@ msgstr "Ripristino non riuscito: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ATTENZIONE: server audio non locale, impossibile sospendere.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Ricevuto SIGINT, in uscita.\n"
@@ -1765,7 +1795,7 @@ msgstr ""
"connettersi\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1776,34 +1806,34 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Recupero delle statistiche non riuscito: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Attualmente in uso: %u blocchi contenenti %s byte in totale.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Allocati durante l'intera esecuzione: %u blocchi contenenti %s byte in "
"totale.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Dimensione della cache dei campioni: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Recupero delle informazioni del server non riuscito: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1826,7 +1856,7 @@ msgstr ""
"Sorgente predefinita: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Recupero delle informazioni del sink non riuscito: %s\n"
@@ -1834,7 +1864,7 @@ msgstr "Recupero delle informazioni del sink non riuscito: %s\n"
# nel relativo messaggio per il source
# c'è "monitor of sink", quindi assumo che
# qui dovesse essere "monitor of source"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1873,12 +1903,22 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfili:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tProfilo attivo: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Recupero delle informazioni della sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1917,20 +1957,20 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "N/D"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Recupero delle informazioni del modulo non riuscito: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1947,12 +1987,12 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Recupero delle informazioni del client non riuscito: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1967,12 +2007,12 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Recupero delle informazioni della scheda non riuscito: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1989,12 +2029,12 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfili:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tProfilo attivo: %s\n"
@@ -2003,13 +2043,13 @@ msgstr "\tProfilo attivo: %s\n"
# A stream that is connected to an output device, i.e. an input for a sink.
#
# from http://pulseaudio.org/wiki/WritingVolumeControlUIs
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
"Recupero delle informazioni dell'ingresso per il sink non riuscito: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2050,13 +2090,13 @@ msgstr ""
# A stream that is connected to an input device, i.e. an output of a source.
#
# from http://pulseaudio.org/wiki/WritingVolumeControlUIs
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
"Recupero delle informazioni dell'uscita per la sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2085,13 +2125,13 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
# campiona lazy??
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2122,23 +2162,22 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Fallimento: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Caricamento del campione non riuscito: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Fine del file prematura\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2153,6 +2192,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2182,7 +2223,7 @@ msgstr ""
" -s, --server=SERVER Il nome del server a cui connettersi\n"
" -n, --client-name=NOME Come chiamare questo client sul server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2193,48 +2234,44 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Specificare un file campione da caricare\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Apertura del file audio non riuscita.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "È necessario specificare un nome di campione da riprodurre\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "È necessario specificare un nome di campione da rimuovere\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "È necessario specificare un ingresso per sink e un sink\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "È necessario specificare una uscita per sorgente e una sorgente\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "È necessario specificare un nome di modulo e gli argomenti.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "È necessario specificare un indice di modulo\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2242,8 +2279,7 @@ msgstr ""
"Non è possibile specificare più di un sink. È necessario specificare un "
"valore booleano.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2251,18 +2287,28 @@ msgstr ""
"Non è possibile specificare più di una sorgente. È necessario specificare un "
"valore booleano.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"È necessario specificare un nome/indice di scheda e un nome di profilo.\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr ""
+"È necessario specificare un nome/indice di scheda e un nome di profilo.\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr ""
+"È necessario specificare un nome/indice di scheda e un nome di profilo.\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Nessun comando valido specificato.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() non riuscita: %s"
@@ -2348,131 +2394,48 @@ msgstr "Caricamento dei dati cookie non riuscito\n"
msgid "Not yet implemented.\n"
msgstr "Non ancora implementato.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Uccisione del demone PulseAudio non riuscita."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Il demone non sta rispondendo."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Creazione dello stream riuscita\n"
-
-# fixme!!! errror
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Errore nello stream: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Connessione stabilita.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [OPZIONI] [FILE]\n"
-"\n"
-" -h, --help Mostra questo aiuto\n"
-" --version Mostra la versione\n"
-"\n"
-" -v, --verbose Abilita la modalità prolissa\n"
-"\n"
-" -s, --server=SERVER Il nome del server a cui "
-"connettersi\n"
-" -d, --device=DEVICE Il nome del sink a cui connettersi\n"
-" -n, --client-name=NOME Come chiamare questo client sul "
-"server\n"
-" --stream-name=NOME Come chiamare questo stream sul "
-"server\n"
-" --volume=VOLUME Specifica il volume iniziale "
-"(lineare) \n"
-" nell'intervallo 0...65536\n"
-" --channel-map=MAPPA_CANALI Imposta la mappa di canali da usare\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilato con libpulse %s\n"
-"Link eseguito con libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mappa dei canali non valida\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Apertura del file \"%s\" non riuscita\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "La mappa dei canali non corrisponde al file.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "In uso la specifica di campionamento \"%s\"\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Impossibile accedere al lock di autospawn."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2489,7 +2452,7 @@ msgstr ""
"Ci si è alzati con impostato POLLOUT -- come sempre un subsequent "
"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2506,34 +2469,133 @@ msgstr ""
"Ci si è alzati con impostato POLLIN -- come sempre un subsequent "
"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Output %s + Input %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Output %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Input %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "Spento"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "Playback ad alta fidabilità (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Doppino Telefonico (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Server sonoro PulseAudio"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Mono analogico"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Stereo analogico"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Stereo digitale (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Stereo digitale (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Surround analogico 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Surround digitale 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Surround analogico 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Surround analogico 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Surround analogico 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Surround digitale 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Surround analogico 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Output %s + Input %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Output %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Input %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Creazione dello stream riuscita\n"
+
+# fixme!!! errror
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Errore nello stream: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Connessione stabilita.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [OPZIONI] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Mostra questo aiuto\n"
+#~ " --version Mostra la versione\n"
+#~ "\n"
+#~ " -v, --verbose Abilita la modalità prolissa\n"
+#~ "\n"
+#~ " -s, --server=SERVER Il nome del server a cui "
+#~ "connettersi\n"
+#~ " -d, --device=DEVICE Il nome del sink a cui "
+#~ "connettersi\n"
+#~ " -n, --client-name=NOME Come chiamare questo client sul "
+#~ "server\n"
+#~ " --stream-name=NOME Come chiamare questo stream sul "
+#~ "server\n"
+#~ " --volume=VOLUME Specifica il volume iniziale "
+#~ "(lineare) \n"
+#~ " nell'intervallo 0...65536\n"
+#~ " --channel-map=MAPPA_CANALI Imposta la mappa di canali da "
+#~ "usare\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilato con libpulse %s\n"
+#~ "Link eseguito con libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mappa dei canali non valida\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Apertura del file \"%s\" non riuscita\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "La mappa dei canali non corrisponde al file.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "In uso la specifica di campionamento \"%s\"\n"
diff --git a/po/kn.po b/po/kn.po
index 0a5ba6be..b6636504 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-07 11:13+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: Kannada <en@li.org>\n"
@@ -17,51 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "ಅನಲಾಗೠಮೊನೊ"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "ಅನಲಾಗೠಸà³à²Ÿà³€à²°à²¿à²¯à³‹"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "ಡಿಜಿಟಲೠಸà³à²Ÿà³€à²°à²¿à²¯à³‹ (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "ಡಿಜಿಟಲೠಸà³à²Ÿà³€à²°à²¿à²¯à³‹ (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "ಅನಲಾಗೠ4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "ಡಿಜಿಟಲೠಸರೌಂಡೠ4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "ಅನಲಾಗೠಸರೌಂಡೠ4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "ಅನಲಾಗೠಸರೌಂಡೠ5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "ಅನಲಾಗೠಸರೌಂಡೠ5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "ಡಿಜಿಟಲೠಸರೌಂಡೠ5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "ಡಿಜಿಟಲೠಸರೌಂಡೠ7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +29,7 @@ msgstr ""
"ಇದಕà³à²•à³† ALSA ಚಾಲಕ '%s' ದಲà³à²²à²¿à²¨ ಒಂದೠದೋಷದ ಕಾರಣವಿರಬಹà³à²¦à³. ದಯವಿಟà³à²Ÿà³à²ˆ ತೊಂದರೆಯನà³à²¨à³ ALSA "
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +41,7 @@ msgstr ""
"ಇದಕà³à²•à³† ALSA ಚಾಲಕ '%s' ದಲà³à²²à²¿à²¨ ಒಂದೠದೋಷದ ಕಾರಣವಿರಬಹà³à²¦à³. ದಯವಿಟà³à²Ÿà³à²ˆ ತೊಂದರೆಯನà³à²¨à³ ALSA "
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +53,24 @@ msgstr ""
"ಇದಕà³à²•à³† ALSA ಚಾಲಕ '%s' ದಲà³à²²à²¿à²¨ ಒಂದೠದೋಷದ ಕಾರಣವಿರಬಹà³à²¦à³. ದಯವಿಟà³à²Ÿà³à²ˆ ತೊಂದರೆಯನà³à²¨à³ ALSA "
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "ಆಂತರಿಕ ಆಡಿಯೊ"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "ಮಾಡೆಮà³:"
@@ -171,105 +140,105 @@ msgstr "auth ಅನà³à²¨à³ ಪಡೆಯಲೠಸಾಧà³à²¯à²µà²¾à²—ಿಲà³
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit '%s' ನೊಂದಿಗೆ ಪà³à²°à²¤à³à²¯à³à²¤à³à²¤à²°à²¿à²¸à²¿à²¦à³†"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "%s ನಿಂದ ಸಂಕೇತವೠದೊರೆತಿದೆ."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "ಬಳಕೆದಾರ '%s' ಅನà³à²¨à³ ಪತà³à²¤à³† ಮಾಡಲೠವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "ಗà³à²‚ಪೠ'%s' ಅನà³à²¨à³ ಪತà³à²¤à³† ಮಾಡಲೠವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ಬಳಕೆದಾರ '%s' (UID %lu) ಹಾಗೠಗà³à²‚ಪೠ'%s' (GID %lu) ಕಂಡà³à²¬à²‚ದಿದೆ."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ಬಳಕೆದಾರ '%s' ರ GID ಹಾಗೠಗà³à²‚ಪೠ'%s' ತಾಳೆಯಾಗà³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ಬಳಕೆದಾರ '%s' ರ ನೆಲೆ ಕೋಶವೠ'%s' ಆಗಿಲà³à²², ಆಲಕà³à²·à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ಅನà³à²¨à³ ರಚಿಸà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "ಗà³à²‚ಪಿನ ಪಟà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID ಅನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID ಅನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ರೂಟೠಸವಲತà³à²¤à³à²—ಳನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ಬಿಡಲಾಗಿದೆ."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯à²¾à²¦à³à²¯à²‚ತದ ಕà³à²°à²®à²•à³à²•à³† ಈ ಪà³à²²à²¾à²Ÿà³â€Œà²«à²¾à²°à³à²®à²¿à²¨à²²à³à²²à²¿ ಬೆಂಬಲವಿಲà³à²²."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "ಆಜà³à²žà²¾ ಸಾಲನà³à²¨à³ ಪಾರà³à²¸à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"ನಾವೠ'%s' ಗà³à²‚ಪಿನಲà³à²²à²¿à²¦à³à²¦à³‡à²µà³†, ಹಾಗೠಹೆಚà³à²šà³-ಆದà³à²¯à²¤à³† ಶೆಡà³à²¯à³‚ಲಿಂಗೠಅನà³à²¨à³ ಅನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à³‡à²µà³†."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "ನಾವೠ'%s' ಗà³à²‚ಪಿನಲà³à²²à²¿à²¦à³à²¦à³‡à²µà³†, ಹಾಗೠರಿಯಲà³-ಟೈಮೠಶೆಡà³à²¯à³‚ಲಿಂಗೠಅನà³à²¨à³ ಅನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à³‡à²µà³†."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "ಹೆಚà³à²šà³-ಆದà³à²¯à²¤à³† ಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡೆದà³à²•à³Š ಅನà³à²¨à³ PolicyKit ಅನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à²¦à³†."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "ಹೆಚà³à²šà³-ಆದà³à²¯à²¤à³† ಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡೆದà³à²•à³Š ಅನà³à²¨à³ PolicyKit ನಿರಾಕರಿಸà³à²¤à³à²¤à²¦à³†."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "ರಿಯಲà³-ಟೈಮೠಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡೆದà³à²•à³Š ಅನà³à²¨à³ PolicyKit ಅನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à²¦à³†."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "ರಿಯಲà³-ಟೈಮೠಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡೆದà³à²•à³Š ಅನà³à²¨à³ PolicyKit ನಿರಾಕರಿಸà³à²¤à³à²¤à²¦à³†."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -290,47 +259,47 @@ msgstr ""
"PolicyKit ಸವಲತà³à²¤à³à²—ಳನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à²¿, ಅಥವ '%s' ನ ಸದಸà³à²¯à²°à²¾à²—ಿ, ಅಥವ ಈ ಬಳಕೆದಾರನಿಗಾಗಿ "
"RLIMIT_NICE/RLIMIT_RTPRIO ಸಂಪನà³à²®à³‚ಲ ಮಿತಿಯನà³à²¨à³ ಹೆಚà³à²šà²¿à²¸à²¿."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ಸಂರಚನೆಯಲà³à²²à²¿ ಹೆಚà³à²šà³-ಆದà³à²¯à²¤à³†à²¯ ಶೆಡà³à²¯à³‚ಲಿಂಗೠಅನà³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಪಾಲಿಸಿಯಿಂದ ಅನà³à²®à²¤à²¿ "
"ಇಲà³à²²."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO ಅನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ಹೆಚà³à²šà²¿à²¸à²²à²¾à²—ಿದೆ"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE ಅನà³à²¨à³ ಬಿಡಲಾಗà³à²¤à³à²¤à²¿à²¦à³†"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ಸಂರಚನೆಯಲà³à²²à²¿ ರಿಯಲà³-ಟೈಮೠಶೆಡà³à²¯à³‚ಲಿಂಗೠಅನà³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಪಾಲಿಸಿಯಿಂದ ಅನà³à²®à²¤à²¿ ಇಲà³à²²."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ಡೀಮನೠಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "ಡೀಮನೠPID %u ಯಾಗಿ ಚಲಾಯಿಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಕೊಲà³à²²à²²à³ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -338,166 +307,176 @@ msgstr ""
"ಈ ಪà³à²°à³‹à²—à³à²°à²¾à²®à²¨à³à²¨à³ ರೂಟà³â€Œ ಆಗಿ ಚಲಾಯಿಸà³à²µ ಉದà³à²§à³‡à²¶à²µà²¨à³à²¨à³ ಹೊಂದಿಲà³à²² (--system ಅನà³à²¨à³ ಸೂಚಿಸದೆ "
"ಇದà³à²¦à²²à³à²²à²¿ ಮಾತà³à²°)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ನಿರà³à²µà²¾à²¹à²• ಸವಲತà³à²¤à³à²—ಳ ಅಗತà³à²¯à²µà²¿à²¦à³†."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಸನà³à²¨à²¿à²µà³‡à²¶à²¦à²¿à²‚ದ --start ಬೆಂಬಲಿತವಾಗಿಲà³à²²."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†, ಆದರೆ --disallow-exit ಅನà³à²¨à³ ಹೊಂದಿಸಲಾಗಿಲà³à²²!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†, ಆದರೆ --disallow-module-loading ಅನà³à²¨à³ "
"ಹೊಂದಿಸಲಾಗಿಲà³à²²!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, SHM ಕà³à²°à²®à²µà²¨à³à²¨à³ ಒತà³à²¤à²¾à²¯à²ªà³‚ರà³à²µà²•à²µà²¾à²—ಿ "
"ಅಶಕà³à²¤à²—ೊಳಿಸà³à²¤à³à²¤à²¿à²¦à³†!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, ನಿರà³à²—ಮಿಸà³à²µ ಜಡ ಸಮಯವನà³à²¨à³ ಒತà³à²¤à²¾à²¯à²ªà³‚ರà³à²µà²•à²µà²¾à²—ಿ "
"ಅಶಕà³à²¤à²—ೊಳಿಸà³à²¤à³à²¤à²¿à²¦à³†!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio ಅನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "ಪೈಪà³â€Œ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ಡೀಮನೠಆರಂಭಗೊಳà³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ಆರಂಭಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "ಇದೠPulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "ಕಂಪೈಲೠಮಾಡà³à²µ ಅತಿಥೇಯ: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ಕಂಪೈಲೠಮಾಡà³à²µ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "ಅತಿಥೇಯದಲà³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUಗಳೠಕಂಡà³à²¬à²‚ದಿವೆ."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "ಪà³à²Ÿà²¦ ಗಾತà³à²°à²µà³ %lu ಬೈಟà³â€Œà²—ಳಾಗಿವೆ"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ: ಹೌದà³"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ: ಇಲà³à²²"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: ಹೌದà³"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: ಇಲà³à²²"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG ಅನà³à²¨à³ ಸೂಚಿಸಲಾಗಿದೆ, ಎಲà³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³†à²—ಳನà³à²¨à³‚ ಅಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH ಅನà³à²¨à³ ಸೂಚಿಸಲಾಗಿದೆ, ಕೇವಲ ವೇಗ ಮಾರà³à²—ದ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³†à²—ಳನà³à²¨à³‚ ಅಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "ಎಲà³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³†à²—ಳನà³à²¨à³‚ ಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "ಮೆಶೀನೠID ಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ಮೆಶೀನೠID ಯೠ%s ಆಗಿದೆ."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ಮೆಶೀನೠID ಯೠ%s ಆಗಿದೆ."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ಚಲಾವಣಾಸಮಯ(ರನà³â€Œà²Ÿà³ˆà²®à³) ಕೋಶ %s ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "ಸà³à²¥à²¿à²¤à²¿ ಕೋಶ %s ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ತಾಜಾ ರೆಸಲà³à²¯à³‚ಶನೠಟೈಮರೠಲಭà³à²¯à²µà²¿à²¦à³†! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -505,31 +484,31 @@ msgstr ""
"ಮಹಾಶಯರೆ, ನಿಮà³à²® ಕರà³à²¨à²²à³ ಕೊಳೆತà³à²¹à³‹à²—ಿದೆ! ಅತà³à²¯à³à²¤à³à²¤à²® ರೆಸಲà³à²¯à³‚ಶನೠಟೈಮರೠಅನà³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸಲಾದ "
"ಲಿನಕà³à²¸à²¨à³à²¨à³ ಬಳಸà³à²µà²‚ತೆ ಅಡà³à²—ೆಯವರೠಸಲಹೆ ಮಾಡà³à²¤à³à²¤à²¿à²¦à³à²¦à²¾à²°à³†!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಆರಂಭಿಸಲೠವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ಲೋಡೠಮಾಡಲಾದ ಯಾವà³à²¦à³† ಡೀಮನೠಇಲà³à²²à²¦à³† ಆರಂಭಗೊಂಡಿದೆ, ಕೆಲಸ ಮಾಡಲೠನಿರಾಕರಿಸಿದೆ."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "ಡೀಮನೠಆರಂಭಗೊಳಿಕೆ ಪೂರà³à²£à²—ೊಂಡಿದೆ."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "ಡೀಮನೠಸà³à²¥à²—ಿತಗೊಳಿಕೆಯನà³à²¨à³ ಆರಂಭಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಅಂತà³à²¯à²—ೊಳಿಸಲಾಗಿದೆ."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -677,15 +656,15 @@ msgstr ""
" -n ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤ ಸà³à²•à³à²°à²¿à²ªà³à²Ÿà²¿à²¨ ಕಡತವನà³à²¨à³ ಲೋಡೠ"
"ಮಾಡಬೇಡ\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -693,52 +672,52 @@ msgstr ""
"--log-level ದಾಖಲೆ ಮಟà³à²Ÿà²¦ ಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³† (0..4 ವà³à²¯à²¾à²ªà³à²¤à²¿à²¯à²²à³à²²à²¿à²¨ ಅಂಕೆಯನà³à²¨à³ "
"ಅಥವ debug, info, notice, warn, error ಅನà³à²¨à³)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ದಾಖಲೆ ಗà³à²°à²¿: 'syslog', 'stderr' ಅಥವ 'auto' ಅನà³à²¨à³ ಬಳಸಿ."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³‚ನೆ ವಿಧಾನ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm ಬೂಲಿಯನೠಆರà³à²—à³à²®à³†à²‚ಟನà³à²¨à³ ನಿರೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³†"
@@ -777,77 +756,82 @@ msgstr "ಬಳಕೆ: %s\n"
msgid "Load Once: %s\n"
msgstr "ಒಮà³à²®à³† ಲೋಡೠಮಾಡà³: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ಮಾರà³à²—: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ದಾಖಲೆ ಗà³à²°à²¿ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ದಾಖಲೆ ಮಟà³à²Ÿ '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³‚ನೆ ವಿಧಾನ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ಗೆ ಈ ಪà³à²²à²¾à²Ÿà³â€Œà²«à²¾à²°à³à²®à²¿à²¨à²²à³à²²à²¿ ಬೆಂಬಲವಿಲà³à²²."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ರಚನೆ '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ದರ '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ಚಾನಲà³â€Œà²—ಳೠ'%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³† '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¤à²µà²¾à²¦ ಫà³à²°à²¾à²—à³à²®à³†à²‚ಟà³à²—ಳ ಸಂಖà³à²¯à³† '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ಫà³à²°à²¾à²—à³à²®à³†à²‚ಟೠಗಾತà³à²° '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನೈಸà³â€Œ ಹಂತ '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ಸಂರಚನಾ ಕಡತವನà³à²¨à³ ತೆರೆಯಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -897,237 +881,237 @@ msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
"PulseAudio ರಿಯಲà³-ಟೈಮà³â€Œ ಶೆಡà³à²¯à³‚ಲಿಂಗೠಅನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à²¦à²‚ತೆ ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಪಾಲಿಸಿಯೠತಡೆಯà³à²¤à³à²¤à²¦à³†."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "ಮೊನೊ"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "ಎದà³à²°à²¿à²¨ ಮಧà³à²¯à²­à²¾à²—"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "ಎದà³à²°à²¿à²¨ ಎಡಭಾಗ"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "ಎದà³à²°à²¿à²¨ ಬಲಭಾಗ"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "ಹಿಂಬದಿಯ ಮಧà³à²¯à²­à²¾à²—"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "ಹಿಂಬದಿಯ ಎಡಭಾಗ"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "ಹಿಂಬದಿಯ ಬಲಭಾಗ"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "ಕೆಳಮಟà³à²Ÿà²¦ ಫà³à²°à³€à²•à³à²µà³†à²¨à³à²¸à²¿ ಉತà³à²ªà²¾à²¦à²•"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "ಮಧà³à²¯à²¦ ಎಡಭಾಗದ ಎದà³à²°à³à²­à²¾à²—"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "ಮಧà³à²¯à²¦ ಬಲಭಾಗದ ಎದà³à²°à³à²­à²¾à²—"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "ಬದಿಯ ಎಡಭಾಗ"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "ಬದಿಯ ಬಲಭಾಗ"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "ಸಹಾಯಕ 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "ಸಹಾಯಕ 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "ಸಹಾಯಕ 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "ಸಹಾಯಕ 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "ಸಹಾಯಕ 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "ಸಹಾಯಕ 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "ಸಹಾಯಕ 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "ಸಹಾಯಕ 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "ಸಹಾಯಕ 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "ಸಹಾಯಕ 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "ಸಹಾಯಕ 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "ಸಹಾಯಕ 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "ಸಹಾಯಕ 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "ಸಹಾಯಕ 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "ಸಹಾಯಕ 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "ಸಹಾಯಕ 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "ಸಹಾಯಕ 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "ಸಹಾಯಕ 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "ಸಹಾಯಕ 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "ಸಹಾಯಕ 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "ಸಹಾಯಕ 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "ಸಹಾಯಕ 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "ಸಹಾಯಕ 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "ಸಹಾಯಕ 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "ಸಹಾಯಕ 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "ಸಹಾಯಕ 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "ಸಹಾಯಕ 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "ಸಹಾಯಕ 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "ಸಹಾಯಕ 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "ಸಹಾಯಕ 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "ಸಹಾಯಕ 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "ಸಹಾಯಕ 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "ಮೇಲಿನ ಮಧà³à²¯à²­à²¾à²—"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "ಮೇಲಿನ ಎದà³à²°à²¿à²¨ ಮಧà³à²¯à²­à²¾à²—"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "ಮೇಲಿನ ಎದà³à²°à²¿à²¨ ಎಡಭಾಗ"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "ಮೇಲಿನ ಎದà³à²°à²¿à²¨ ಬಲಭಾಗ"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಮಧà³à²¯à²­à²¾à²—"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಎಡಭಾಗ"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಬಲಭಾಗ"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(ಅಮಾನà³à²¯)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "ಸà³à²Ÿà³€à²°à²¿à²¯à³‹"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "ಸರೌಂಡà³â€Œ 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "ಸರೌಂಡà³â€Œ 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "ಸರೌಂಡà³â€Œ 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "ಸರೌಂಡà³â€Œ 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "ಸರೌಂಡà³â€Œ 7.1"
@@ -1289,173 +1273,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "ಅಜà³à²žà²¾à²¤ ವಿಸà³à²¤à²°à²£à³† '%s' ಇಂದ ಸಂದೇಶವನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à²²à²¾à²—ಿದೆ"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à³ ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸಲಾಗಿದೆ.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "ಪರಿಚಾರಕಕà³à²•à³† ಬರಿದಾಗಿಸà³à²µ ಸಂಪರà³à²•.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() failed: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() failed: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ನಿರà³à²®à²¿à²¸à²²à²¾à²—ಿದೆ.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() failed: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "ಬಫರೠಮೆಟà³à²°à²¿à²•à³â€Œà²—ಳà³: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "ಬಫರೠಮೆಟà³à²°à²¿à²•à³â€Œà²—ಳà³: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ನಮೂನೆಯ ವಿವರ '%s' ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³, ಚಾನಲà³â€Œ ನಕà³à²·à³† '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ಸಾಧನ %s ಕà³à²•à³† ಸಂಪರà³à²• ಜೋಡಿಸಲಾಗಿದೆ (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ದೋಷ: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಸಾಧನವನà³à²¨à³ ತಾತà³à²•à²¾à²²à²¿à²•à²µà²¾à²—ಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಸಾಧನವನà³à²¨à³ ಮರಳಿ ಆರಂಭಿಸಲಾಗಿದೆ.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಕಡಿಮೆ ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಹೆಚà³à²šà³ ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಆರಂಭಿಸಲಾಗಿದೆ.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ಸಾಧನ %s ಅನà³à²¨à³ ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಸà³à²¥à²³à²¾à²‚ತರಿಸಲಾಗಿದೆ (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "ಇಲà³à²² "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಬಫರೠಗà³à²£à²µà²¿à²¶à³‡à²·à²¤à³†à²—ಳನà³à²¨à³ ಬದಲಾಯಿಸಲಾಗಿದೆ.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "ಸಂಪರà³à²•à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾಗಿದೆ.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() failed: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() failed: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() failed: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "ಸಂಪರà³à²•à²¦ ವಿಫಲತೆ: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à³ ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸಲಾಗಿದೆ.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "ಪರಿಚಾರಕಕà³à²•à³† ಬರಿದಾಗಿಸà³à²µ ಸಂಪರà³à²•.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF ಅನà³à²¨à³ ಪಡೆಯಲಾಗಿದೆ.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "ಓದà³à²µà²¿à²•à³†() ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "ಬರೆಯà³à²µà²¿à²•à³†() ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "ಸಂಕೇತ ದೊರೆತಿದೆ, ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "ಅಗೋಚರತೆಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ಸಮಯ: %0.3f sec; ಅಗೋಚರತೆ: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() failed: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1481,8 +1460,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1505,6 +1486,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [ಆಯà³à²•à³†à²—ಳà³]\n"
"\n"
@@ -1552,7 +1538,7 @@ msgstr ""
" --process-time=BYTES ಸೂಚಿಸಲಾದ ಪà³à²°à²¤à²¿ ಮನವಿಯ ಪà³à²°à²•à³à²°à²¿à²¯à³†à²¯ ಸಮಯವನà³à²¨à³ "
"ಬೈಟà³â€Œà²—ಳಲà³à²²à²¿ ಮನವಿ ಮಾಡà³.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1563,88 +1549,133 @@ msgstr ""
"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ\n"
"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³† '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³‚ನೆ ವಿಧಾನ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³† '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಅಗೋಚರತೆ ವಿವರಣೆ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಪà³à²°à²•à³à²°à²¿à²¯à³† ಸಮಯದ ವಿವರಣೆ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³‚ನೆ ವಿಧಾನ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ವಿವರ\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "ತೆರೆ(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "ಬಹಳಷà³à²Ÿà³ ಆರà³à²—à³à²®à³†à²‚ಟà³â€Œà²—ಳà³.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ಧà³à²µà²¨à²¿ ಕಡತವನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "ಚಾನಲೠನಕà³à²·à³†à²¯à³ ನಮೂನೆಯ ವಿವರಣೆಯೊಂದಿಗೆ ತಾಳೆಯಾಗà³à²¤à³à²¤à²¿à²²à³à²²\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "ಒಂದೠ%s ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಅನà³à²¨à³ ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ತೆರೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "ರೆಕಾರà³à²¡à²¿à²‚ಗà³"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à³â€Œ"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "ತೆರೆ(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "ಬಹಳಷà³à²Ÿà³ ಆರà³à²—à³à²®à³†à²‚ಟà³â€Œà²—ಳà³.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() failed.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() ವಿಫಲಗೊಂಡಿದೆ.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() failed.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() failed: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() failed.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() failed.\n"
@@ -1674,8 +1705,7 @@ msgstr "ಮರಳಿ ಆರಂಭಿಸಲೠವಿಫಲಗೊಂಡಿದೆ:
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ಎಚà³à²šà²°à²¿à²•à³†: ಧà³à²µà²¨à²¿ ಪರಿಚಾರಕವೠಸà³à²¥à²³à³€à²¯à²µà²¾à²—ಿಲà³à²², ತಾತà³à²•à²¾à²²à²¿à²•à²µà²¾à²—ಿ ತಡೆಹಿಡಿಯಲಾಗà³à²¤à³à²¤à²¿à²²à³à²².\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ದೊರೆತಿದೆ, ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†.\n"
@@ -1703,7 +1733,7 @@ msgstr ""
" -s, --server=SERVER ಸಂಪರà³à²•à²¸à²¾à²§à²¿à²¸à²¬à³‡à²•à²¿à²°à³à²µ ಪರಿಚಾರಕದ ಹೆಸರà³\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1714,34 +1744,34 @@ msgstr ""
"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ\n"
"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "ಅಂಕಿಅಂಶಗಳನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ಪà³à²°à²¸à²•à³à²¤ ಬಳಕೆಯಲà³à²²à²¿à²°à³à²µà³à²¦à³: %u ಖಂಡಗಳೠಒಟà³à²Ÿà³ %s ಬೈಟà³â€Œà²—ಳನà³à²¨à³ ಹೊಂದಿದೆ.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"ಸಂಪೂರà³à²£ ಜೀವಿತಾವಧಿಯ ಸಮಯದಲà³à²²à²¿ ನಿಯೋಜಿಸಲಾಗಿದà³à²¦à³: %u ಖಂಡಗಳೠಒಟà³à²Ÿà³ %s ಬೈಟà³â€Œà²—ಳನà³à²¨à³ "
"ಹೊಂದಿದೆ.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ನಮೂನೆಯ ಕà³à²¯à²¾à²¶à³† ಗಾತà³à²°: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "ಪರಿಚಾರಕದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1764,12 +1794,12 @@ msgstr ""
"ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤ ಆಕರ: %s\n"
"ಕà³à²•à²¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "ಸಿಂಕà³â€Œ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1808,12 +1838,22 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tಸಕà³à²°à²¿à²¯ ಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "ಆಕರದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1852,20 +1892,20 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "ಅನà³à²µà²¯à²¿à²¸à³à²µà³à²¦à²¿à²²à³à²²"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "ಘಟಕದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1882,12 +1922,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "ಕà³à²²à³ˆà²‚ಟಿನ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1902,12 +1942,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "ಕಾರà³à²¡à²¿à²¨ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1924,22 +1964,22 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tಸಕà³à²°à²¿à²¯ ಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "ಸಿಂಕà³â€Œ ಇನà³â€Œà²ªà³à²Ÿà³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1976,12 +2016,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "ಆಕರದ ಔಟà³â€Œà²ªà³à²Ÿà³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2010,12 +2050,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2046,23 +2086,22 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "ವಿಫಲತೆ: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ನಮೂನೆಯನà³à²¨à³ ಅಪà³â€Œà²²à³‹à²¡à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "ಕಡತದ ಅಪà³à²°à²¾à²ªà³à²¤ ಸಮಯದಲà³à²²à²¿ ಅಂತà³à²¯\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2077,6 +2116,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2107,7 +2148,7 @@ msgstr ""
" -n, --client-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಕà³à²²à³ˆà²‚ಟಿನಲà³à²²à²¿ à²à²¨à³†à²‚ದೠ"
"ಕರೆಯಬೇಕà³\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2118,48 +2159,44 @@ msgstr ""
"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ\n"
"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "ಲೋಡೠಮಾಡಬೇಕಿರà³à²µ ಒಂದೠಕಡತದ ನಮೂನೆಯನà³à²¨à³ ಸೂಚಿಸಿ\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "ಧà³à²µà²¨à²¿ ಕಡತವನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "ಒಂದೠ%s ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಅನà³à²¨à³ ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ತೆರೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "ಚಲಾಯಿಸಲೠನೀವೠಒಂದೠನಮೂನೆಯ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕಾಗà³à²¤à³à²¤à²¦à³†\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "ತೆಗೆದೠಹಾಕಲೠನೀವೠಒಂದೠನಮೂನೆಯ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "ನೀವೠಒಂದೠಸಿಂಕೠಇನà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಸಿಂಕà³â€Œ ಅನà³à²¨à³ ಸೂಚಿಸಬೇಕà³.\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "ನೀವೠಒಂದೠಆಕರ ಔಟà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಆಕರವನà³à²¨à³ ಸೂಚಿಸಬೇಕà³.\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "ನೀವೠಒಂದೠಘಟಕದ ಹೆಸರನà³à²¨à³ ಹಾಗೠಆರà³à²—à³à²®à³†à²‚ಟà³à²—ಳನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "ನೀವೠಒಂದೠಘಟಕ ಸೂಚಿಯನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2167,8 +2204,7 @@ msgstr ""
"ನೀವೠಒಂದಕà³à²•à²¿à²‚ತ ಹೆಚà³à²šà²¿à²¨ ಸಿಂಕನà³à²¨à³ ಸೂಚಿಸಲಾಗà³à²µà³à²¦à²¿à²²à³à²². ನೀವೠಒಂದೠಬೂಲಿಯನà³â€Œ ಮೌಲà³à²¯à²µà²¨à³à²¨à³ "
"ಸೂಚಿಸಬೇಕಾಗà³à²¤à³à²¤à²¦à³†.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2176,17 +2212,25 @@ msgstr ""
"ನೀವೠಒಂದಕà³à²•à²¿à²‚ತ ಹೆಚà³à²šà²¿à²¨ ಆಕರವನà³à²¨à³ ಸೂಚಿಸಲಾಗà³à²µà³à²¦à²¿à²²à³à²². ನೀವೠಒಂದೠಬೂಲಿಯನà³â€Œ ಮೌಲà³à²¯à²µà²¨à³à²¨à³ "
"ಸೂಚಿಸಬೇಕಾಗà³à²¤à³à²¤à²¦à³†.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "ಒಂದೠಕಾರà³à²¡à²¿à²¨ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಪà³à²°à³Šà²«à³ˆà²²à³â€Œ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "ಒಂದೠಕಾರà³à²¡à²¿à²¨ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಪà³à²°à³Šà²«à³ˆà²²à³â€Œ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "ಒಂದೠಕಾರà³à²¡à²¿à²¨ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಪà³à²°à³Šà²«à³ˆà²²à³â€Œ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "ಯಾವà³à²¦à³† ಆಜà³à²žà³†à²¯à²¨à³à²¨à³ ಸೂಚಿಸಲಾಗಿಲà³à²².\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() failed: %s"
@@ -2271,128 +2315,48 @@ msgstr "ಕà³à²•à²¿ ದತà³à²¤à²¾à²‚ಶವನà³à²¨à³ ಲೋಡೠಮಾಡ
msgid "Not yet implemented.\n"
msgstr "ಇನà³à²¨à³‚ ಸಹ ಅನà³à²µà²¯à²¿à²¸à²²à²¾à²—ಿಲà³à²².\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ಸಾಕೆಟà³(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "ಸಂಪರà³à²•à²¿à²¸à³(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ಡೀಮನೠಅನà³à²¨à³ ಕೊಲà³à²²à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ಡೀಮನೠಪà³à²°à²¤à²¿à²•à³à²°à²¿à²¯à²¿à²¸à³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "ಆಯà³à²•à³†à²®à²¾à²¡à³(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "ಓದà³(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "ಬರೆ(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ನಿರà³à²®à²¿à²¸à²²à²¾à²—ಿದೆ\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ದೋಷ: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "ಸಂಪರà³à²•à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾಗಿದೆ.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [ಆಯà³à²•à³†à²—ಳà³] [FILE]\n"
-"\n"
-" -h, --help ಈ ನೆರವನà³à²¨à³ ತೋರಿಸà³\n"
-" --version ಆವೃತà³à²¤à²¿à²¯à²¨à³à²¨à³ ತೋರಿಸà³\n"
-"\n"
-" -v, --verbose ವರà³à²¬à³‹à²¸à³ ಕಾರà³à²¯à²µà²¨à³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸà³\n"
-"\n"
-" -s, --server=SERVER ಸಂಪರà³à²•à²¸à²¾à²§à²¿à²¸à²¬à³‡à²•à²¿à²°à³à²µ ಪರಿಚಾರಕದ ಹೆಸರà³\n"
-" -d, --device=DEVICE ಸಂಪರà³à²•à²¸à²¾à²§à²¿à²¸à²¬à³‡à²•à²¿à²°à³à²µ ಸಿಂಕಿನ ಹೆಸರà³\n"
-" -n, --client-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಕà³à²²à³ˆà²‚ಟಿನಲà³à²²à²¿ à²à²¨à³†à²‚ದೠ"
-"ಕರೆಯಬೇಕà³\n"
-" --stream-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಸà³à²Ÿà³à²°à³€à²®à²¿à²¨à²²à³à²²à²¿ à²à²¨à³†à²‚ದೠ"
-"ಕರೆಯಬೇಕà³\n"
-" --volume=VOLUME ಆರಂಭಿಕ (ರೇಖೀಯ) ಪರಿಮಾಣವನà³à²¨à³ 0...65536 "
-"ವà³à²¯à²¾à²ªà³à²¤à²¿à²¯à²²à³à²²à²¿ ತೋರಿಸà³\n"
-" --channel-map=CHANNELMAP ಬಳಕೆಗಾಗಿ ಚಾನಲೠನಕà³à²·à³†à²¯à²¨à³à²¨à³ ಹೊಂದಿಸà³\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ\n"
-"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³†\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ಕಡತ '%s' ಅನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "ಮಾರà³à²—ದ ನಕà³à²·à³†à²¯à³ ಕಡತಕೆ ಹೊಂದಿಕೆಯಾಗà³à²¤à³à²¤à²¿à²²à³à²².\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ಸರಳ ವಿವರಣೆ(ಸà³à²ªà³†à²•à³) '%s' ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "ಸà³à²µà²¯à²‚ಹೆಚà³à²šà²¿à²¸à³à²µà²¿à²•à³†à²¯ ಲಾಕೠಅನà³à²¨à³ ನಿಲà³à²•à²¿à²¸à²¿à²•à³Šà²³à³à²³à²²à³ ಸಾಧà³à²¯à²µà²¿à²²à³à²²."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2407,7 +2371,7 @@ msgstr ""
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿.POLLOUT ಸೆಟà³â€Œà²¨à²¿à²‚ದ ನಾವೠಎಚà³à²šà³†à²¤à³à²¤à³à²—ೊಂಡಿದà³à²¦à³‡à²µà³† -- ಆದರೆ ನಂತರದ "
"snd_pcm_avail() 0 ಅಥವ min_avail ಕà³à²•à²¿à²‚ತ ಚಿಕà³à²•à²¦à²¾à²¦ ಇನà³à²¨à³Šà²‚ದೠಮೌಲà³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದೆ."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2422,34 +2386,128 @@ msgstr ""
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿.POLLIN ಸೆಟà³â€Œà²¨à²¿à²‚ದ ನಾವೠಎಚà³à²šà³†à²¤à³à²¤à³à²—ೊಂಡಿದà³à²¦à³‡à²µà³† -- ಆದರೆ ನಂತರದ "
"snd_pcm_avail() 0 ಅಥವ min_avail ಕà³à²•à²¿à²‚ತ ಚಿಕà³à²•à²¦à²¾à²¦ ಇನà³à²¨à³Šà²‚ದೠಮೌಲà³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದೆ."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "ಔಟà³â€Œà²ªà³à²Ÿà³ %s + ಇನà³â€Œà²ªà³à²Ÿà³ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "ಔಟà³â€Œà²ªà³à²Ÿà³ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "ಜಡ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "ಹೈ ಫಿಡಿಲಿಟಿ ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à³ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "ಟೆಲಿಫೋನಿ ಡà³à²¯à³‚ಪà³à²²à³†à²•à³à²¸à³â€Œ (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "ಪಲà³à²¸à³â€à²†à²¡à²¿à²¯à³‹ ಧà³à²µà²¨à²¿ ಪರಿಚಾರಕ"
+
+#~ msgid "Analog Mono"
+#~ msgstr "ಅನಲಾಗೠಮೊನೊ"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "ಅನಲಾಗೠಸà³à²Ÿà³€à²°à²¿à²¯à³‹"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "ಡಿಜಿಟಲೠಸà³à²Ÿà³€à²°à²¿à²¯à³‹ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "ಡಿಜಿಟಲೠಸà³à²Ÿà³€à²°à²¿à²¯à³‹ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "ಅನಲಾಗೠ4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "ಡಿಜಿಟಲೠಸರೌಂಡೠ4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "ಅನಲಾಗೠಸರೌಂಡೠ4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "ಅನಲಾಗೠಸರೌಂಡೠ5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "ಅನಲಾಗೠಸರೌಂಡೠ5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "ಡಿಜಿಟಲೠಸರೌಂಡೠ5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "ಡಿಜಿಟಲೠಸರೌಂಡೠ7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "ಔಟà³â€Œà²ªà³à²Ÿà³ %s + ಇನà³â€Œà²ªà³à²Ÿà³ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "ಔಟà³â€Œà²ªà³à²Ÿà³ %s"
+
+#~ msgid "Input %s"
+#~ msgstr "ಇನà³â€Œà²ªà³à²Ÿà³ %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ನಿರà³à²®à²¿à²¸à²²à²¾à²—ಿದೆ\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ದೋಷ: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "ಸಂಪರà³à²•à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾಗಿದೆ.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [ಆಯà³à²•à³†à²—ಳà³] [FILE]\n"
+#~ "\n"
+#~ " -h, --help ಈ ನೆರವನà³à²¨à³ ತೋರಿಸà³\n"
+#~ " --version ಆವೃತà³à²¤à²¿à²¯à²¨à³à²¨à³ ತೋರಿಸà³\n"
+#~ "\n"
+#~ " -v, --verbose ವರà³à²¬à³‹à²¸à³ ಕಾರà³à²¯à²µà²¨à³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸà³\n"
+#~ "\n"
+#~ " -s, --server=SERVER ಸಂಪರà³à²•à²¸à²¾à²§à²¿à²¸à²¬à³‡à²•à²¿à²°à³à²µ ಪರಿಚಾರಕದ ಹೆಸರà³\n"
+#~ " -d, --device=DEVICE ಸಂಪರà³à²•à²¸à²¾à²§à²¿à²¸à²¬à³‡à²•à²¿à²°à³à²µ ಸಿಂಕಿನ ಹೆಸರà³\n"
+#~ " -n, --client-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಕà³à²²à³ˆà²‚ಟಿನಲà³à²²à²¿ à²à²¨à³†à²‚ದೠ"
+#~ "ಕರೆಯಬೇಕà³\n"
+#~ " --stream-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಸà³à²Ÿà³à²°à³€à²®à²¿à²¨à²²à³à²²à²¿ à²à²¨à³†à²‚ದೠ"
+#~ "ಕರೆಯಬೇಕà³\n"
+#~ " --volume=VOLUME ಆರಂಭಿಕ (ರೇಖೀಯ) ಪರಿಮಾಣವನà³à²¨à³ "
+#~ "0...65536 ವà³à²¯à²¾à²ªà³à²¤à²¿à²¯à²²à³à²²à²¿ ತೋರಿಸà³\n"
+#~ " --channel-map=CHANNELMAP ಬಳಕೆಗಾಗಿ ಚಾನಲೠನಕà³à²·à³†à²¯à²¨à³à²¨à³ ಹೊಂದಿಸà³\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ\n"
+#~ "libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³†\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "ಕಡತ '%s' ಅನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "ಮಾರà³à²—ದ ನಕà³à²·à³†à²¯à³ ಕಡತಕೆ ಹೊಂದಿಕೆಯಾಗà³à²¤à³à²¤à²¿à²²à³à²².\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "ಸರಳ ವಿವರಣೆ(ಸà³à²ªà³†à²•à³) '%s' ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³\n"
diff --git a/po/mr.po b/po/mr.po
index 5aba3b9b..6e3c759a 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-06 13:43+0530\n"
"Last-Translator: Sandeep Shedmake <sandeep.shedmake@gmail.com>\n"
"Language-Team: marathi\n"
@@ -17,51 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "à¤à¤¨à¤²à¥‰à¤— मोनो"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "à¤à¤¨à¤²à¥‰à¤— सà¥à¤Ÿà¤¿à¤°à¥€à¤“"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "डिजीटल सà¥à¤Ÿà¤¿à¤°à¥€à¤“ (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "डिजीटल सà¥à¤Ÿà¤¿à¤°à¥€à¤“ (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "डिजीटल सराऊनà¥à¤¡ 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "डिजीटल सराऊनà¥à¤¡ 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +29,7 @@ msgstr ""
"हे सहसा ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' अंतरà¥à¤—त बग अशू शकते. कृपया या अडचणीस ALSA डेवà¥à¤¹à¤²à¤ªà¤° करीता "
"कळवा."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +41,7 @@ msgstr ""
"हे सहसा ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' अंतरà¥à¤—त बग अशू शकते. कृपया या अडचणीस ALSA डेवà¥à¤¹à¤²à¤ªà¤° करीता "
"कळवा."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +53,24 @@ msgstr ""
"हे सहसा ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' अंतरà¥à¤—त बग अशू शकते. कृपया या अडचणीस ALSA डेवà¥à¤¹à¤²à¤ªà¤° करीता "
"कळवा."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "आंतरीक ऑडिओ"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "मोडेम"
@@ -171,104 +140,104 @@ msgstr "परवानगी पà¥à¤°à¤¾à¤ªà¥à¤¤ करणे अशकà¥à¤¯
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ने '%s' सह पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦ दिला"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "संकेत %s पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "बाहेर पडत आहे."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "वापरकरà¥à¤¤à¤¾ '%s' शोधणे अशकà¥à¤¯."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "गट '%s' शोधणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "वापरकरà¥à¤¤à¤¾ '%s' (UID %lu) व गट '%s' (GID %lu) आढळले."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "वापरकरà¥à¤¤à¤¾ '%s' व गट '%s' चे GID जà¥à¤³à¤¤ नाही."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "वापरकरà¥à¤¤à¤¾ '%s' ची मà¥à¤–à¥à¤¯ डिरेकà¥à¤Ÿà¥à¤°à¥€ '%s' नाही, दà¥à¤°à¥à¤²à¤•à¥à¤· करत आहे."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' बनवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "गट यादी बदलवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID बदलवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID बदलवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "रूट परवानगी यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ वगळले."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ भर पदà¥à¤§à¤¤ या पà¥à¤²à¥…टफॉरà¥à¤® करीता समरà¥à¤¥à¥€à¤¤ नाही."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) अपयशी: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "आदेश ओळ वाचणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "आपण गट '%s' अंतरà¥à¤—त आहोत, उचà¥à¤š-पà¥à¤°à¤¾à¤§à¤¨à¥à¤¯à¤•à¥à¤°à¤® वेळपतà¥à¤°à¤• करीता परवानगी देते."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "आपण गट '%s' अंतरà¥à¤—त आहोत, रियल-टाईम वेळपतà¥à¤°à¤• करीता परवानगी देते."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit आपलà¥à¤¯à¤¾à¤²à¤¾ acquire-high-priority परवानगी देतो."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit acquire-high-priority परवानगी नकारतो."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time परवानगी पà¥à¤°à¤µà¤¿à¤¤à¥‹."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time परवानगी नकारतो."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -288,204 +257,214 @@ msgstr ""
"परवानगी पà¥à¤°à¤¾à¤ªà¥à¤¤ करा, किंवा '%s' चे सदसà¥à¤¯ बनवा, किंवा या वापरकरà¥à¤¤à¤¾ करीताRLIMIT_NICE/"
"RLIMIT_RTPRIO सà¥à¤¤à¥à¤°à¥‹à¤¤ मरà¥à¤¯à¤¾à¤¦à¤¾ वाढवा."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"संयोजना अंतरà¥à¤—त उचà¥à¤š-पà¥à¤°à¤¾à¤§à¤¾à¤¨à¥à¤¯à¤•à¥à¤°à¤® वेळपतà¥à¤°à¤• कारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ केले करार दà¥à¤µà¤¾à¤°à¥‡ सà¥à¤µà¥€à¤•à¤¾à¤°à¥à¤¯ नाही."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ RLIMIT_RTPRIO वाढवले"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO अपयशी: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE करीता पà¥à¤°à¤¯à¤¤à¥à¤¨ बंद केले"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"संयोजना अंतरà¥à¤—त रियल-टाईम वेळपतà¥à¤° कारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करत आहे परंतॠकरार दà¥à¤µà¤¾à¤°à¥‡ सà¥à¤µà¥€à¤•à¤¾à¤°à¥à¤¯ नाही."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "डिमन कारà¥à¤¯à¤°à¤¤ नाही"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "डिमन PID %u नà¥à¤°à¥‚प कारà¥à¤¯à¤°à¤¤ आहे"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "डिमन नषà¥à¤Ÿ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "हा कारà¥à¤¯à¤•à¥à¤°à¤® रूट नà¥à¤°à¥‚प चालविणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ नाही (जोपरà¥à¤¯à¤‚त --system निशà¥à¤šà¤¿à¤¤ नाही)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "रूट परवानगी आवशà¥à¤¯à¤•."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ घटनांकरीता --start समरà¥à¤¥à¥€à¤¤ नाही."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, परंतॠ--disallow-exit निशà¥à¤šà¤¿à¤¤ केले नाही!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, परंतॠ--disallow-module-loading निशà¥à¤šà¤¿à¤¤ केले नाही!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, SHM पदà¥à¤§à¤¤ जबरनरितà¥à¤¯à¤¾ अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करत आहे!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, रिकामे वेळ जबरनरितà¥à¤¯à¤¾ अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करत आहे!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "पाइप अपयशी: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() अपयशी: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() अपयशी: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "डिमन सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प अपयशी."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "डिमन सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प यशसà¥à¤µà¥€."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "हे PulseAudio %s आहे"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "कंपाइलेशन यजमान: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "कंपाइलेशन CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "यजमान वर कारà¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs आढळले."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "पान आकार %lu बाईटसॠआहे"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥€ कंपाईल केले: होय"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥€ कंपाईल केले: नाही"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind पदà¥à¤§à¤¤à¥€à¤¤ कारà¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "अनà¥à¤•à¥‚ल बिलà¥à¤¡: होय"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "अनà¥à¤•à¥‚ल बिलà¥à¤¡: नाही"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG वरà¥à¤£à¥€à¤•à¥ƒà¤¤, सरà¥à¤µ asserts अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH वरà¥à¤£à¥€à¤•à¥ƒà¤¤, फकà¥à¤¤ जलद मारà¥à¤—ीय asserts अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ केले."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "सरà¥à¤µ asserts कारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ केले."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "मशीन ID पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "मशीन ID %s आहे."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "मशीन ID %s आहे."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "रनटाईम डिरेकà¥à¤Ÿà¥à¤°à¥€ %s वापरत आहे."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "सà¥à¤¥à¤¿à¤¤à¥€ डिरेकà¥à¤Ÿà¥à¤°à¥€ %s वापरत आहे."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€à¤¤ कारà¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() अपयशी."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "नवीन उचà¥à¤š-बिंदूता टाइमर उपलबà¥à¤§! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -493,31 +472,31 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() अपयशी."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "डिमन पà¥à¤°à¤¾à¤°à¤‚भ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "विना विभाग दाखल केलà¥à¤¯à¤¾à¤¸ डिमन पà¥à¤°à¤¾à¤°à¤‚भ à¤à¤¾à¤²à¥‡, कारà¥à¤¯ करणà¥à¤¯à¤¾à¤¸ नकार."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "डिमन सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प पूरà¥à¤£ à¤à¤¾à¤²à¥‡."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "डिमन पूरà¥à¤£à¤ªà¤£à¥‡ बंद करणà¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¾à¤°à¤‚भ केले."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "डिमन नषà¥à¤Ÿ केले."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -660,15 +639,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -676,52 +655,52 @@ msgstr ""
"--log-level यास लॉग सà¥à¤¤à¤°à¥€à¤¯ बाब अपेकà¥à¤·à¥€à¤¤ आहे (à¤à¤•à¤¤à¤° कà¥à¤·à¥‡à¤¤à¥à¤° 0..4 अंतरà¥à¤—त संखà¥à¤¯à¤¾à¤¯à¥€ किंवा "
"debug, info, notice, warn, error पैकी à¤à¤•)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "अवैध लॉग लकà¥à¤·à¥à¤¯: 'syslog', 'stderr' किंवा 'auto' पैकी à¤à¤• वापरा."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "अवैध पà¥à¤¨à¥à¤¹ सॅमà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm यास बूलीयन बाब अपेकà¥à¤·à¥€à¤¤ आहे"
@@ -760,77 +739,82 @@ msgstr "वापरणी: %s\n"
msgid "Load Once: %s\n"
msgstr "à¤à¤•à¤¦à¤¾ दाखल करा: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "मारà¥à¤—: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] अवैध लॉग लकà¥à¤·à¥à¤¯ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] अवैध लॉग सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] अवैध पà¥à¤¨à¥à¤¹ सॅमà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] अवैध rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit या पà¥à¤²à¥…टफॉरà¥à¤® वर समरà¥à¤¥à¥€à¤¤ नाही."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] अवैध सॅमà¥à¤ªà¤² सà¥à¤µà¤°à¥‚प '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] अवैध सॅमà¥à¤ªà¤² दर '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] अवैध सॅमà¥à¤ªà¤² मारà¥à¤— '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] अवैध मारà¥à¤— मॅप '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] अवैध तà¥à¤•à¤¡à¥‡ '%s' यांची à¤à¤•à¥‚ण संखà¥à¤¯à¤¾."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] अवैध तà¥à¤•à¤¡à¥à¤¯à¤¾à¤šà¥‡ आकार '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] अवैध nice सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "संयोजना फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -877,237 +861,237 @@ msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ करार PulseAudio ला उचà¥à¤š-पà¥
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ करार PulseAudio ला रियल-टाइम वेळपतà¥à¤°à¤• पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤ªà¤¾à¤¸à¥‚न रोखते."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "मोनो"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "समोर मधà¥à¤¯à¤­à¤¾à¤—ी"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "समोर डावीकडे"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "समोर उजवीकडे"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "पाठीमागे भधà¥à¤¯à¤­à¤¾à¤—ी"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "पाठीमागे डावीकडे"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "पाठीमागे उजवीकडे"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "कमी कà¥à¤°à¤¿à¤•à¥à¤µà¥‡à¤¨à¥à¤¸à¥€ सà¥à¤¤à¥à¤°à¥‹à¤¤"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "समोर डावी-कडील-मधà¥à¤¯à¤­à¤¾à¤—ी"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "समोर उजवी-कडील-मधà¥à¤¯à¤­à¤¾à¤—ी"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "डावी बाजू"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "उजवी बाजू"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "ऑकà¥à¤œà¥€à¤²à¤°à¥€ 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "वरील मधà¥à¤¯"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "वरील समोरचे मधà¥à¤¯"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "वरील समोरचे डावे"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "वरील समोरचे उजवे"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "वरील पाठीमागचे मधà¥à¤¯"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "वरील पाठीमागचे डावे"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "वरील पाठीमागचे उजवे"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(अवैध)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "सà¥à¤Ÿà¤¿à¤°à¥€à¤“"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "सराऊनà¥à¤¡ 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "सराऊनà¥à¤¡ 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "सराऊनà¥à¤¡ 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "सराऊनà¥à¤¡ 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "सराऊनà¥à¤¡ 7.1"
@@ -1268,173 +1252,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "अपरिचीत वाढ '%s' करीता संदेश पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "पà¥à¤²à¥‡à¤¬à¥…क सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे केले.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "सरà¥à¤µà¤° करीता जà¥à¤³à¤µà¤£à¥€ डà¥à¤°à¥‡à¤¨ केली.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() अपयशी: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() अपयशी: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ बनवले.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() अपयशी: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "बफर मेटà¥à¤°à¥€à¤•: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "बफर मेटà¥à¤°à¥€à¤•: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "उदाहरणतया spec '%s', वाहिनी नकाशा '%s' वापरत आहे.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "साधन %s शी जà¥à¤³à¤²à¥‡ (%u, %s ससà¥à¤ªà¥‡à¤‚ड केले).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¥€: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन ससà¥à¤ªà¥‡à¤‚ड केले.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन पà¥à¤¨à¥à¤¹à¤¾ सà¥à¤°à¥‚ केले.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® underrun.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® overrun.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® सà¥à¤°à¥‚ केले.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन %s कडे सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत केले (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "नाही "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® बफर गà¥à¤£à¤§à¤°à¥à¤® बदलले.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "जà¥à¤³à¤µà¤£à¥€ सà¥à¤¥à¤¾à¤ªà¥€à¤¤ केली.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() अपयशी: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() अपयशी: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() अपयशी: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "जà¥à¤³à¤µà¤£à¥€ अपयशी: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "पà¥à¤²à¥‡à¤¬à¥…क सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे केले.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "सरà¥à¤µà¤° करीता जà¥à¤³à¤µà¤£à¥€ डà¥à¤°à¥‡à¤¨ केली.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() अपयशी: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() अपयशी: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "संकेत पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡, बाहेर पडत आहे.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "विलंब पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "वेळ: %0.3f sec; विलंब: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() अपयशी: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1460,8 +1439,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1484,6 +1465,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1534,7 +1520,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1545,88 +1531,133 @@ msgstr ""
"libpulse %s शी कंपाई केले\n"
"libpulse %s शी लिंक केले\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "अवैध वाहिनी नकाशा '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "अवैध पà¥à¤¨à¥à¤¹ सॅमà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "अवैध वाहिनी नकाशा '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "अवैध विलंब संयोजना '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "अवैध कारà¥à¤¯ वेळ संयोजना '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "अवैध पà¥à¤¨à¥à¤¹ सॅमà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "अवैध सॅमà¥à¤ªà¤² संयोजना\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "खूप जासà¥à¤¤ बाब.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "सॅमà¥à¤ªà¤² माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "आवाज फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "सॅमà¥à¤ªà¤² माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "वाहिनी नकाशा सॅमà¥à¤ªà¤² संयोजनाशी जà¥à¤³à¤¤ नाही\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® सॅमà¥à¤ªà¤² संयोजना '%s' शी उघडत आहे.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "रेकॉरà¥à¤¡à¥€à¤‚ग"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "पà¥à¤²à¥‡à¤¬à¥…क"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "खूप जासà¥à¤¤ बाब.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() अपयशी.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() अपयशी.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() अपयशी.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() अपयशी: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() अपयशी.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() अपयशी.\n"
@@ -1656,8 +1687,7 @@ msgstr "पà¥à¤¨à¥à¤¹à¤¾ चालू करणà¥à¤¯à¤¾à¤¸ अपयशी: %
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "सावधानता: आवाज सरà¥à¤µà¤° सà¥à¤¥à¤¾à¤¨à¥€à¤¯ नाही, ससà¥à¤ªà¥‡à¤‚ड करत नाही.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡, बाहेर पडत आहे.\n"
@@ -1686,7 +1716,7 @@ msgstr ""
"to\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1697,32 +1727,32 @@ msgstr ""
"libpulse %s शी कंपाई केले\n"
"libpulse %s शी लिंक केले\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "आकडेवारी पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "वरà¥à¤¤à¤®à¤¾à¤¨à¤•à¥à¤·à¤£à¥€ वापरणीत आहे: %2$s बाईटसॠसमाविषà¥à¤Ÿà¥€à¤¤ à¤à¤•à¥‚ण %1$u बà¥à¤²à¥‰à¤•à¥à¤¸à¥ .\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "संपूरà¥à¤£ कारà¥à¤¯à¤•à¤¾à¤³à¤µà¥‡à¤³à¥€ लागू केले: %2$s बाईटसॠसमाविषà¥à¤Ÿà¥€à¤¤ à¤à¤•à¥‚ण %1$u बà¥à¤²à¥‰à¤•à¥à¤¸à¥ .\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "सॅपल कॅशे आकार: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "सरà¥à¤µà¤° माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1745,12 +1775,12 @@ msgstr ""
"मà¥à¤²à¤­à¥‚त सà¥à¤¤à¥à¤°à¥‹à¤¤: %s\n"
"कà¥à¤•à¥€à¤œ: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "sink माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1789,12 +1819,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tसंकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tसकà¥à¤°à¥€à¤¯ संकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1833,20 +1873,20 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "विभाग माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1863,12 +1903,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "कà¥à¤²à¤¾à¤à¤‚ट माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1883,12 +1923,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "कारà¥à¤¡ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1905,22 +1945,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tसंकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tसकà¥à¤°à¥€à¤¯ संकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "सिंक इनपà¥à¤Ÿ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1957,12 +1997,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ आऊटपà¥à¤Ÿ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1991,12 +2031,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "सॅमà¥à¤ªà¤² माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2027,23 +2067,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "अपयशी: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "सॅमà¥à¤ªà¤² अपलोड करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "फाइलची अयोगà¥à¤¯ समापà¥à¤¤à¥€\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2058,6 +2097,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2089,7 +2130,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2100,48 +2141,44 @@ msgstr ""
"libpulse %s सह कंपाईल केले\n"
"libpulse %s सह जà¥à¤³à¤²à¥‡\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "कृपया दाखल करणà¥à¤¯à¤¾à¤œà¥‹à¤—ी तातà¥à¤ªà¥‚रà¥à¤¤à¥€ फाइल निशà¥à¤šà¤¿à¤¤ करा\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "आवाज फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® सॅमà¥à¤ªà¤² संयोजना '%s' शी उघडत आहे.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "चालविणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "काढूण टाकणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सिंक इनपà¥à¤Ÿ निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क व सिंक निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ आऊट इनडेकà¥à¤¸ सà¥à¤¤à¥à¤°à¥‹à¤¤ व सà¥à¤¤à¥à¤°à¥‹à¤¤ निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विभागाचे नाव व बाब निशà¥à¤šà¤¿à¤¤ करावे लागेल.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विभाग निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2149,8 +2186,7 @@ msgstr ""
"तà¥à¤®à¥à¤¹à¥€ à¤à¤•à¤¾à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ सिंक निशà¥à¤šà¤¿à¤¤ करू शकत नाही. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ बूलीयन मूलà¥à¤¯ निशà¥à¤šà¤¿à¤¤ करावे "
"लागेल.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2158,17 +2194,25 @@ msgstr ""
"तà¥à¤®à¥à¤¹à¥€ à¤à¤•à¤¾à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ सà¥à¤¤à¥à¤°à¥‹à¤¤ निशà¥à¤šà¤¿à¤¤ करू शकत नाही. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ बूलीयन मूलà¥à¤¯ निशà¥à¤šà¤¿à¤¤ करावे "
"लागेल.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ कारà¥à¤¡ नाव/निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क व संकà¥à¤·à¤¿à¤ªà¥à¤¤ नाव निशà¥à¤šà¤¿à¤¤ करावे\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ कारà¥à¤¡ नाव/निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क व संकà¥à¤·à¤¿à¤ªà¥à¤¤ नाव निशà¥à¤šà¤¿à¤¤ करावे\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ कारà¥à¤¡ नाव/निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क व संकà¥à¤·à¤¿à¤ªà¥à¤¤ नाव निशà¥à¤šà¤¿à¤¤ करावे\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "वैध आदेश निशà¥à¤šà¤¿à¤¤ केले नाही.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() अपयशी: %s"
@@ -2252,129 +2296,48 @@ msgstr "कà¥à¤•à¥€ डेटा दाखल करणà¥à¤¯à¤¾à¤¸ अपयà¤
msgid "Not yet implemented.\n"
msgstr "अजूनही लागू केले नाही.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio डिमन पूरà¥à¤£à¤ªà¤£à¥‡ नषà¥à¤Ÿ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "डिमन पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦ देत नाही."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ बनवले\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¥€: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "जà¥à¤³à¤µà¤£à¥€ सà¥à¤¥à¤¾à¤ªà¥€à¤¤.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"%s शी कंपाई केले\n"
-"libpulse %s शी जà¥à¤³à¤²à¥‡\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "अवैध वाहिनी नकाशा\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "फाइल '%s' उघडणà¥à¤¯à¤¾à¤¸ अपयशी\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "वाहिनी नकाशा फाइलशी जà¥à¤³à¤¤ नाही.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ spec '%s' वापरत आहे\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn कà¥à¤²à¥‚प करीता पà¥à¤°à¤µà¥‡à¤¶ पà¥à¤°à¤¾à¤ªà¥à¤¯ अशकà¥à¤¯."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2389,7 +2352,7 @@ msgstr ""
"POLLOUT दà¥à¤µà¤¾à¤°à¥‡ सजà¥à¤œ होणे शकà¥à¤¯ आहे -- तरी परसà¥à¤ªà¤° snd_pcm_avail() ने 0 पूरविले किंवा इतर "
"मूलà¥à¤¯ < min_avail असावे."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2404,34 +2367,130 @@ msgstr ""
"POLLIN दà¥à¤µà¤¾à¤°à¥‡ सजà¥à¤œ होणे शकà¥à¤¯ आहे -- तरी परसà¥à¤ªà¤° snd_pcm_avail() ने 0 पूरविले किंवा इतर "
"मूलà¥à¤¯ < min_avail असावे."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "आऊटपà¥à¤Ÿ %s + इनपà¥à¤Ÿ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "आऊटपà¥à¤Ÿ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "इनपà¥à¤Ÿ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "बंद करा"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio आवाज सरà¥à¤µà¤°"
+
+#~ msgid "Analog Mono"
+#~ msgstr "à¤à¤¨à¤²à¥‰à¤— मोनो"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "à¤à¤¨à¤²à¥‰à¤— सà¥à¤Ÿà¤¿à¤°à¥€à¤“"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "डिजीटल सà¥à¤Ÿà¤¿à¤°à¥€à¤“ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "डिजीटल सà¥à¤Ÿà¤¿à¤°à¥€à¤“ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "डिजीटल सराऊनà¥à¤¡ 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "डिजीटल सराऊनà¥à¤¡ 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "à¤à¤¨à¤²à¥‰à¤— सराऊनà¥à¤¡ 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "आऊटपà¥à¤Ÿ %s + इनपà¥à¤Ÿ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "आऊटपà¥à¤Ÿ %s"
+
+#~ msgid "Input %s"
+#~ msgstr "इनपà¥à¤Ÿ %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ बनवले\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¥€: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "जà¥à¤³à¤µà¤£à¥€ सà¥à¤¥à¤¾à¤ªà¥€à¤¤.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "%s शी कंपाई केले\n"
+#~ "libpulse %s शी जà¥à¤³à¤²à¥‡\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "अवैध वाहिनी नकाशा\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "फाइल '%s' उघडणà¥à¤¯à¤¾à¤¸ अपयशी\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "वाहिनी नकाशा फाइलशी जà¥à¤³à¤¤ नाही.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ spec '%s' वापरत आहे\n"
diff --git a/po/nl.po b/po/nl.po
index 4b086a1c..a75efed0 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-15 21:04+0200\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
"Language-Team: Dutch <nl@li.org>\n"
@@ -17,51 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analoog mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analoog stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Digitaal stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Digitaal stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analoog surround 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digitaal surround 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analoog surround 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analoog surround 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analoog surround 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digitaal surround 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analoog surround 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -74,7 +30,7 @@ msgstr ""
"Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit "
"probleem a.u.b. aan de ALSA ontwikkelaars."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +43,7 @@ msgstr ""
"Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit "
"probleem a.u.b. aan de ALSA ontwikkelaars."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +56,24 @@ msgstr ""
"Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit "
"probleem a.u.b aan de ALSA ontwikkelaars."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Intern geluid"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Modem"
@@ -174,104 +143,104 @@ msgstr "Kan geen authorisatie krijgen: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit antwoordde met '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Ontving signaal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Afsluiten."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Kon gebruiker '%s' niet vinden."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Kon groep '%s' niet vinden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Gebruiker '%s' (UID %lu) en groep '%s' (GID %lu) gevonden."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID van gebruiker '%s' en van groep '%s' passen niet bij elkaar."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Persoonlijke map van gebruiker '%s' is niet '%s', negeer het."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Aanmaken van '%s': %s mislukte"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Veranderen van groeps lijst: '%s' mislukte"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Veranderen van GID: %s mislukte"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Veranderen van UID: %s mislukte"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root rechten met succes laten vervallen."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Systeem brede mode wordt op dit platform niet ondersteund."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) mislukte: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Analyseren van de commandoregel mislukte."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Wij zijn in de groep '%s', wat plannen met hoge prioriteit toestaat."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Wij zijn in de groep '%s', war real-time planning toestaat."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit kent ons acquire-high-priority rechten toe."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit weigert ons acquire-high-priority rechten."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit kent ons acquire-real-time rechten toe."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit weigert ons acquire-real-time rechten."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -292,48 +261,48 @@ msgstr ""
"PolicyKit privileges hebben, of lid van '%s\" worden, of de RLIMIT_NICE/"
"RLIMIT_RTPRIO limieten voor deze gebruiker verhogen."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Hoge prioriteit inplannen is aangezet in de configuratie maar niet "
"toegestaan door de richtlijnen."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO met succes verhoogd"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO mislukte: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Opgeven CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Real-time inplannen is aangezet in de configuratie maar niet toegestaan door "
"de richtlijnen."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Daemon draait niet"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon draait met PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Afschieten mislukt van daemon: '%s'"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -341,159 +310,169 @@ msgstr ""
"Dit programma is niet bedoeld om als root gedraaid te worden (behalve als --"
"system is opgegeven)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root rechten vereisd"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start wordt niet ondersteund voor systeem instances"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Draaiend in systeem mode, maar --disallow-exit is niet gezet!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Draaiend in systeem mode, maar --disallow-module-loading is niet gezet!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Draaiend in systeem mode, geforceerd uitzetten van SHM mode!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "Draaiend in systeem mode, geforceerd uitzetten van exit idle time!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Verkrijgen van stdio mislukte."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe mislukte: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() mislukte: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() mislukte: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Daemon opstarten mislukte."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Daemon met succes opgestart."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dit is PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Compilatie host: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilatie CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Draaiend op host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU's gevonden."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Pagina grootte is %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Gecompileerd met Valgrind ondersteuning: ja"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Gecompileerd met Valgrind ondersteuning: nee"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Draaiend in valgrind mode: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimaal gebouwd: ja"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimaak gebouwd: nee"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG gedefinieerd, alle verklaringen uitgezet."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH gedefinieerd, alleen snel pad verklaringen uitgezet."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Alle verklaringen aangezet."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Machine ID verkrijgen mislukte"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "Machine ID is: %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "Machine ID is: %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Gebruik van runtime map %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Verbruik van state map %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Draaiend in systeem mode: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() mislukte."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -501,31 +480,31 @@ msgstr ""
"Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met "
"aangezette high-resolution timers!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() mislukte."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Initialiseren van de daemon mislukte."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon opgestart zonder geladen modules, dat werkt niet."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Daemon opstarten is klaar."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Daemon afsluiten is begonnen."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Daemon is afgesloten."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -678,15 +657,15 @@ msgstr ""
" -n Laad het standaard script bestand "
"niet\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -694,52 +673,52 @@ msgstr ""
"--log-level verwacht een log level argument (numeriek uit de reeks 0..4 of "
"een van type debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit verwacht een bolean argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Ongeldig log doel: gebruik een van 'syslog', 'stderr', 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Ongeldige resample methode '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm verwacht een boolean argument"
@@ -778,77 +757,82 @@ msgstr "Gebruik: %s\n"
msgid "Load Once: %s\n"
msgstr "Laad eenmaal: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Pad: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -893,237 +877,237 @@ msgstr ""
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Voor midden"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Voor links"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Voor rechts"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Achter midden"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Achter links"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Achter rechta"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Lage frequentie zender"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Voor links-van-het-midden"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Voor rechts-van-het-midden"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Zijkant links"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Zijkant rechts"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Auxiliary 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Auxiliary 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Auxiliary 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Auxiliary 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Auxiliary 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Auxiliary 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Auxiliary 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Auxiliary 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Auxiliary 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Auxiliary 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Auxiliary 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Auxiliary 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Auxiliary 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Auxiliary 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Auxiliary 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Auxiliary· 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Auxiliary 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Auxiliary 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Auxiliary 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Auxiliary 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Auxiliary 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Auxiliary 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Auxiliary 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Auxiliary 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Auxiliary 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Auxiliary 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Auxiliary 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Auxiliary 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Auxiliary 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Auxiliary 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Auxiliary 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Auxiliary 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Boven midden"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Boven voor midden"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Boven voor links"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Boven voor rechts"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Boven achter midden"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "boven achter links"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "boven achter rechts"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(ongeldig)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1284,172 +1268,167 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr ""
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr ""
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr ""
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr ""
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr ""
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1476,8 +1455,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1500,9 +1481,14 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1510,88 +1496,131 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Ongeldige resample methode '%s'."
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Ongeldige resample methode '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ongeldige resample methode '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
-msgid "Channel map doesn't match sample specification\n"
+msgid "open(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:912
#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+msgid "dup2(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "recording"
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "playback"
+#: ../src/utils/pacat.c:930
+msgid "Failed to generate sample specification for file.\n"
msgstr ""
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Analyseren van de commandoregel mislukte."
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
msgstr ""
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+msgid "Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
msgstr ""
-#: ../src/utils/pacat.c:751
+#: ../src/utils/pacat.c:1005
#, c-format
-msgid "Too many arguments.\n"
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
msgstr ""
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_core_new() mislukte."
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr ""
@@ -1621,8 +1650,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1644,7 +1672,7 @@ msgid ""
"\n"
msgstr ""
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1652,32 +1680,32 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1691,12 +1719,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1718,12 +1746,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, c-format
+msgid "\tPorts:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "Auteur: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1745,20 +1783,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1769,12 +1807,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1784,12 +1822,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1800,22 +1838,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1836,12 +1874,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1858,12 +1896,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -1881,22 +1919,21 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1912,6 +1949,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1922,7 +1961,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -1930,71 +1969,71 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr ""
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1084
+msgid "You have to specify a source name/index and a port name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr ""
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr ""
@@ -2071,109 +2110,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr ""
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr ""
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2184,7 +2162,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2195,34 +2173,52 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
+
+#~ msgid "Analog Mono"
+#~ msgstr "Analoog mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analoog stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digitaal stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digitaal stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analoog surround 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digitaal surround 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analoog surround 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analoog surround 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analoog surround 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digitaal surround 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analoog surround 7.1"
diff --git a/po/or.po b/po/or.po
index a42bb7ce..1fcf836e 100644
--- a/po/or.po
+++ b/po/or.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-09 13:16+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
@@ -23,51 +23,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "ଅନà­à¬°à­‚ପ ମୋନୋ"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "ଅନà­à¬°à­‚ପ ଷà­à¬Ÿà­‡à¬°à¬¿à¬“"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "ସାଂଖିକ ଷà­à¬Ÿà­‡à¬°à¬¿à¬“ (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "ସାଂଖିକ ଷà­à¬Ÿà­‡à¬°à¬¿à¬“ (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "ସାଂଖିକ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "ସାଂଖିକ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -80,7 +36,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -93,7 +49,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -106,11 +62,24 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "ଆଭà­à­Ÿà¬¨à­à¬¤à¬°à­€à¬£ ଧà­à­±à¬¨à¬¿"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "ମଡେମ"
@@ -180,104 +149,104 @@ msgstr "auth ପାଇଲା ନାହିà¬: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit '%s' ସହିତ ଉତà­à¬¤à¬° ଦେଇଥିଲା"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "ସଂକେତ %s ପାଇଲା।"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ଉତà­à¬¤à­‡à¬œà¬¿à¬¤ କରà­à¬…ଛି।"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "ଚାଳକ '%s' କୠଖୋଜିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "ସମୂହ '%s' କୠଖୋଜି ପାଇବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ଚାଳକ '%s' (UID %lu) à¬à¬¬à¬‚ ସମୂହ '%s' (GID %lu) ମିଳିଲା।"
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ଚାଳକ '%s' à¬à¬¬à¬‚ ସମୂହ '%s' ର GID ମେଳଖାà¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ଚାଳକ '%s' ର ମୂଖà­à­Ÿ ଡିରେକà­à¬Ÿà­‹à¬°à­€à¬Ÿà¬¿ '%s' ନà­à¬¹à¬, ଅଗà­à¬°à¬¾à¬¹à­à­Ÿ କରà­à¬…ଛି।"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ନିରà­à¬®à¬¾à¬£ କରିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "ସମୂହ ତାଲିକାକୠପରିବରà­à¬¤à­à¬¤à¬¨ କରିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID କୠପରିବରà­à¬¤à­à¬¤à¬¨ କରିବାରେ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID କୠପରିବରà­à¬¤à­à¬¤à¬¨ କରିବାରେ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ମୂଖà­à­Ÿ ଚାଳକ ଅଧିକାରକୠସଫଳତାର ସହିତ ପକାଯାଇଛି।"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "ତନà­à¬¤à­à¬°à¬®à­Ÿ ଧାରା à¬à¬¹à¬¿ ପà­à¬²à¬¾à¬Ÿà¬«à¬°à­à¬®à¬°à­‡ ଅସମରà­à¬¥à¬¿à¬¤à¥¤"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "ପାଠà­à­Ÿ ନିରà­à¬¦à­à¬¦à­‡à¬¶à¬•à­ ବିଶà­à¬³à­‡à¬·à¬£ କରିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "ଆମେ ମାନେ ଶà­à¬°à­‡à¬£à­€ '%s'ରେ ଅଛà­, ଉଚà­à¬š-ପà­à¬°à¬¾à¬¥à¬®à¬¿à¬•à¬¤à¬¾ ଯୋଜନାକୠଅନà­à¬®à¬¤à¬¿ ଦେଇ।"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "ଆମେ ମାନେ ଶà­à¬°à­‡à¬£à­€ '%s'ରେ ଅଛà­, ପà­à¬°à¬•à­ƒà¬¤- ସମୟ ଯୋଜନାକୠଅନà­à¬®à¬¤à¬¿ ଦେଇ।"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ଆମକୠacquire-high-priority ଅଧିକାର ଦେଇଥାà¬à¥¤"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit acquire-high-priority ଅଧିକାରକୠବାରଣ କରିଥାà¬à¥¤"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit ଆମକୠacquire-real-time ଅଧିକାର ଦେଇଥାà¬à¥¤"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time ଅଧିକାରକୠବାରଣ କରିଥାà¬à¥¤"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -298,44 +267,44 @@ msgstr ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "ଉଚà­à¬š-ପà­à¬°à¬¾à¬¥à¬®à¬¿à¬• ଯୋଜନା ବିନà­à­Ÿà¬¾à¬¸à¬°à­‡ ସକà­à¬°à¬¿à­Ÿ କିନà­à¬¤à­ ନୀତି ଦà­à­±à¬¾à¬°à¬¾ ଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à¬à¥¤"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO କୠସଫଳତାର ସହିତ ବୃଦà­à¬§à¬¿à¬•à¬°à¬¿à¬¥à¬¾à¬"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE କୠତà­à­Ÿà¬¾à¬— କରିଥାà¬"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Real-time ଯୋଜନା ବିନà­à­Ÿà¬¾à¬¸ ଫାଇଲରେ ସକà­à¬°à¬¿à­Ÿ ହୋଇଥାଠକିନà­à¬¤à­ ନିତୀ ଦà­à­±à¬¾à¬°à¬¾ ଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à¬à¥¤"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ଡେମନ ଚାଲà­à¬¨à¬¾à¬¹à¬¿à¬"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "ଡେମନ PID %u ପରି ଚାଲà­à¬…ଛି"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ଡେମନକୠବନà­à¬¦ କରିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -343,158 +312,168 @@ msgstr ""
"à¬à¬¹à¬¿ ପà­à¬°à¬—à­à¬°à¬¾à¬®à¬Ÿà¬¿ ମୂଖà­à­Ÿ ଚାଳକ ଭାବରେ ଚଲାଇବା ପାଇଠନିରà­à¬¦à­à¬¦à¬¿à¬·à­à¬Ÿ ହୋଇନାହିଠ(unless --system is "
"specified)।"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ମୂଖà­à­Ÿ ଚାଳକ ଅଧିକାର ଆବଶà­à­Ÿà¬•à¥¤"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start ତନà­à¬¤à­à¬° ସà­à¬¥à¬¿à¬¤à¬¿ ପାଇଠସମରà­à¬¥à¬¿à¬¤ ନà­à¬¹à¬à¥¤"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, କିନà­à¬¤à­ --disallow-exit କୠସେଟ କରାଯାଇନାହିà¬!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, କିନà­à¬¤à­ --disallow-module-loading କୠସେଟ କରାଯାଇନାହିà¬!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, SHM ଧାରାକୠବାଧà­à¬¯à¬¤à¬¾à¬®à­à¬³à¬• ଭାବରେ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରିଥାà¬!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, ପà­à¬°à¬¸à­à¬¥à¬¾à¬¨ ସà­à¬¥à¬¿à¬° ସମୟକୠବାଧà­à¬¯à¬¤à¬¾à¬®à­à¬³à¬• ଭାବରେ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରିଥାà¬!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio କୠଅଧିକାର କରିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "ପାଇପ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ଡେମନ ଆରମà­à¬­ ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "ଡେମନ ଆରମà­à¬­ ସଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¬à¬¹à¬¾ ହେଉଛି PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "ସଂକଳନ ଆଧାର: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ସଂକଳନ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "ଆଧାରରେ ଚାଲà­à¬…ଛି: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs ମିଳିଛି।"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "ପୃଷà­à¬ à¬¾ ଆକାରଟି ହେଉଛି %lu ବାଇଟ"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ସମରà­à¬¥à¬¨ ସହିତ ସଂକଳନ ହୋଇଛି: yes"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ସମରà­à¬¥à¬¨ ସହିତ ସଂକଳନ ହୋଇଛି: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind ଧାରାରେ ଚାଲà­à¬…ଛି: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "ଉପଯà­à¬•à­à¬¤ ନିରà­à¬®à¬¾à¬£: yes"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "ଉପଯà­à¬•à­à¬¤ ନିରà­à¬®à¬¾à¬£: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG କୠବà­à­Ÿà¬¾à¬–à­à­Ÿà¬¾ କରାଯାଇଛି, ସମସà­à¬¤ ନିଶà­à¬šà­Ÿà¬•à­ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH କୠବà­à­Ÿà¬¾à¬–à­à­Ÿà¬¾ କରାଯାଇଛି, କେବଳ ତୀବà­à¬° ପଥ ନିଶà­à¬šà­Ÿà¬•à­ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "ସମସà­à¬¤ ନିଶà­à¬šà­Ÿà¬•à­ ସକà­à¬°à¬¿à­Ÿ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "ଯନà­à¬¤à­à¬° ID ପାଇବାରେ ବିଫଳ"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ଯନà­à¬¤à­à¬° ID ଟି ହେଉଛି %s।"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ଯନà­à¬¤à­à¬° ID ଟି ହେଉଛି %s।"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ପà­à¬°à¬šà¬³à¬¿à¬¤ ଡିରେକà­à¬Ÿà­‹à¬°à­€ %s କୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରà­à¬…ଛି।"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "ସà­à¬¥à¬¿à¬¤à¬¿ ଡିରେକà­à¬Ÿà­‹à¬°à­€ %s କୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି।"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ସତେଜ ଉଚà­à¬š-ବିଭେଦନ ସମୟ ମାପକ ଉପଲବà­à¬§! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -502,31 +481,31 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "ଡେମନକୠଆରମà­à¬­ କରିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ଧାରଣ ହୋଇଥିବା à¬à¬•à¬•à¬¾à¬‚ଶଗà­à¬¡à¬¼à¬¿à¬• ବିନା ଡେମନ ଆରମà­à¬­ ହୋଇଛି, କାରà­à¬¯à­à­Ÿ କରିବାକୠବାରଣ କରà­à¬…ଛି।"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "ଡେମନ ଆରମà­à¬­ ସମà­à¬ªà­‚ରà­à¬£à­à¬£ ହୋଇଛି।"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "ଡେମନ ବନà­à¬¦à¬•à­ ଆରମà­à¬­ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "ଡେମନକୠସମାପà­à¬¤ କରାଯାଇଛି।"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -668,15 +647,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -684,52 +663,52 @@ msgstr ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "ଅବୈଧ ଲଗ ଲକà­à¬·à­à¬¯à¬¸à­à¬¥à¬³: 'syslog', 'stderr' କିମà­à¬¬à¬¾ 'auto' କୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­à¥¤"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "ଅବୈଧ ପà­à¬¨à¬ƒ ପà­à¬°à¬¤à¬¿à¬¦à¬°à­à¬¶à¬¨ ଧାରା '%s'।"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm ବà­à¬²à¬¿à¬†à¬¨ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬° ଆଶା କରà­à¬…ଛି"
@@ -768,77 +747,82 @@ msgstr "ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ବିଧି: %s\n"
msgid "Load Once: %s\n"
msgstr "ଥରେ ଧାରଣ କରନà­à¬¤à­: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ପଥ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକà­à¬·à­à¬¯à¬¸à­à¬¥à¬³ '%s'।"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ସà­à¬¤à¬°%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ଅବୈଧ ପà­à¬¨à¬ƒ ମିଶà­à¬°à¬£ ଧାରା '%s'।"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ଅବୈଧ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à¬à¬¹à¬¿ ପà­à¬²à¬¾à¬Ÿà¬«à¬°à­à¬®à¬°à­‡ ସମରà­à¬¥à¬¿à¬¤ ନà­à¬¹à¬à¥¤"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମà­à¬¨à¬¾ ଶୈଳୀ '%s'।"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମà­à¬¨à¬¾ ହାର '%s'।"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମà­à¬¨à¬¾ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² '%s'।"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ଅବୈଧ ସଂଖà­à­Ÿà¬• ଖଣà­à¬¡à¬—à­à¬¡à¬¼à¬¿à¬• '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ଅବୈଧ ଖଣà­à¬¡ ଆକାର '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ଅବୈଧ ସà­à¬¨à­à¬¦à¬° ସà­à¬¤à¬° '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ବିନà­à­Ÿà¬¾à¬¸ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -885,237 +869,237 @@ msgstr "ତନà­à¬¤à­à¬° ନୀତି PulseAudio କୠଉଚà­à¬š-ପà­à¬°
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr "ତନà­à¬¤à­à¬° ନୀତି PulseAudio କୠପà­à¬°à¬•à­ƒà¬¤-ସମୟ ଯୋଜନାକୠଗà­à¬°à¬¹à¬£ କରିବାରୠଅଟକାଇଥାà¬à¥¤"
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "ମୋନୋ"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "ସାମà­à¬¨à¬¾ ପାଖ କେନà­à¬¦à­à¬°"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "ସାମà­à¬¨à¬¾ ବାମ ପାଖ"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "ସାମà­à¬¨à¬¾ ଡ଼ାହାଣ ପାଖ"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "ପଛ ପାଖ କେନà­à¬¦à­à¬°"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "ପଛ ବାମ ପାଖ"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "ପଛ ଡ଼ାହାଣ ପାଖ"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "ନିମà­à¬¨ ଆବୃତà­à¬¤à¬¿ ପରିତà­à­Ÿà¬¾à¬— କାରୀ"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "ସାମà­à¬¨à¬¾ କେନà­à¬¦à­à¬°-ର-ବାମ ପାଖ"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "ସାମà­à¬¨à¬¾ କେନà­à¬¦à­à¬°-ର-ଡ଼ାହାଣ ପାଖ"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "ବାମ ପାରà­à¬¶à­à­±"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "ଡ଼ାହାଣ ପାରà­à¬¶à­à­±"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "ସହାୟକ 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "ସହାୟକ 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "ସହାୟକ 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "ସହାୟକ 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "ସହାୟକ 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "ସହାୟକ 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "ସହାୟକ 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "ସହାୟକ 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "ସହାୟକ 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "ସହାୟକ 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "ସହାୟକ 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "ସହାୟକ 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "ସହାୟକ 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "ସହାୟକ 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "ସହାୟକ 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "ସହାୟକ 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "ସହାୟକ 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "ସହାୟକ 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "ସହାୟକ 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "ସହାୟକ 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "ସହାୟକ 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "ସହାୟକ 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "ସହାୟକ 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "ସହାୟକ 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "ସହାୟକ 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "ସହାୟକ 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "ସହାୟକ 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "ସହାୟକ 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "ସହାୟକ 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "ସହାୟକ 28"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "ସହାୟକ 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "ସହାୟକ 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "ଉପର କେନà­à¬¦à­à¬°"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "ଉପର ସମà­à¬¨à¬¾ ପାଖ କେନà­à¬¦à­à¬°"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "ଉପର ସାମà­à¬¨à¬¾ ବାମ ପାଖ"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "ଉପର ସାମà­à¬¨à¬¾ ଡ଼ାହାଣ ପାଖ"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "ଉପର ପଛ ପାଖ କେନà­à¬¦à­à¬°"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "ଉପର ପଛ ବାମ ପାଖ"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "ଉପର ପଛ ଡ଼ାହାଣ ପାଖ"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(ଅବୈଧ)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "ଷà­à¬Ÿà­‡à¬°à¬¿à¬“"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 7.1"
@@ -1276,173 +1260,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "ଅଜଣା ଅନà­à¬²à¬—à­à¬¨ '%s' ପାଇଠସନà­à¬¦à­‡à¬¶ ଗà­à¬°à¬¹à¬£ କରିଅଛି"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ଧାରାକୠବାହାର କରିବାରେ ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "ପଛଚଲା ଧାରାକୠବାହାର କରାଯାଇଛି।\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "ସରà­à¬­à¬° ପà­à¬°à¬¤à¬¿ ଡà­à¬°à­‡à¬¨à¬¿à¬™à­à¬— ସଂଯୋଗ।\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ଧାରା ସଫଳତାର ସହିତ ନିରà­à¬®à¬¾à¬£ ହୋଇଛି।\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "ବଫର ମେଟà­à¬°à¬¿à¬•à¬¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "ବଫର ମେଟà­à¬°à¬¿à¬•à¬¸: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ନମà­à¬¨à¬¾ spec '%s' ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି, ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'।\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ଉପକରଣ %s ସହିତ ସଂଯà­à¬•à­à¬¤ ହୋଇଛି (%u, %ssuspended)।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ଧାରା ତà­à¬°à­à¬Ÿà¬¿: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ଧାରା ଉପକରଣ ନିଲମà­à¬¬à¬¿à¬¤ ହୋଇଛି।%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ଧାରା ଉପକରଣ ପà­à¬¨à¬ƒ ଚଳନ ହୋଇଛି।%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ଧାରା underrun.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ଧାରା overrun.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ଧାରା ଆରମà­à¬­ ହୋଇଛି।%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ଧାରା ଉପକରଣ %sକୠଗତି କରିଛି (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ଧାରା ବଫର ଗà­à¬£à¬—à­à¬¡à¬¼à¬¿à¬• ପରିବରà­à¬¤à­à¬¤à¬¨ ହୋଇଛି।%s\n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "ସଂଯୋଗ ସà­à¬¥à¬¾à¬ªà¬¿à¬¤ ହୋଇଛି।%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ଧାରାକୠବାହାର କରିବାରେ ବିଫଳ ହୋଇଛି: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "ପଛଚଲା ଧାରାକୠବାହାର କରାଯାଇଛି।\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "ସରà­à¬­à¬° ପà­à¬°à¬¤à¬¿ ଡà­à¬°à­‡à¬¨à¬¿à¬™à­à¬— ସଂଯୋଗ।\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF ପାଇଅଛି।\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "ସଂକେତ ପାଇଲା, ପà­à¬°à¬¸à­à¬¥à¬¾à¬¨ କରà­à¬…ଛି।\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "ବିଳମà­à¬¬à¬¤à¬¾ ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ସମୟ: %0.3f sec; ବିଳମà­à¬¬à¬¤à¬¾: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() ବିଫଳ ହୋଇଛି: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1468,8 +1447,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1492,6 +1473,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1539,7 +1525,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1550,88 +1536,133 @@ msgstr ""
"libpulse %s ସହିତ ସଂକଳିତ\n"
"libpulse %s ସହିତ ସଂଯà­à¬•à­à¬¤\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "ଅବୈଧ ପà­à¬¨à¬ƒ ପà­à¬°à¬¤à¬¿à¬¦à¬°à­à¬¶à¬¨ ଧାରା '%s'।"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "ଅବୈଧ ବିଳମà­à¬¬à¬¤à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "ଅବୈଧ ପଦà­à¬§à¬¤à¬¿ ସମୟ ବିଶେଷ ଲକà­à¬·à¬£ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "ଅବୈଧ ପà­à¬¨à¬ƒ ପà­à¬°à¬¤à¬¿à¬¦à¬°à­à¬¶à¬¨ ଧାରା '%s'।"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "ଅବୈଧ ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "ଅତà­à­Ÿà¬§à¬¿à¬• ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬°à¥¤\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "ନମà­à¬¨à¬¾ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ଧà­à­±à¬¨à¬¿ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "ନମà­à¬¨à¬¾ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ ସହିତ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª ମେଳ ଖାଉନାହିà¬\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s' ସହିତ ଗୋଟିଠ%s ଧାରାକୠଖୋଲà­à¬…ଛି।\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "ଅନà­à¬²à¬¿à¬ªà¬¿ କରà­à¬…ଛି"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "ପଛଚଲା"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "ଅତà­à­Ÿà¬§à¬¿à¬• ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬°à¥¤\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() ବିଫଳ ହୋଇଛି।\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() ବିଫଳ ହୋଇଛି।\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() ବିଫଳ ହୋଇଛି।\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() ବିଫଳ ହୋଇଛି।\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() ବିଫଳ ହୋଇଛି।\n"
@@ -1661,8 +1692,7 @@ msgstr "ପà­à¬¨à¬ƒ ଚଳନ କରିବାରେ ବିଫଳ: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "WARNING: ଧà­à­±à¬¨à¬¿ ସରà­à¬­à¬°à¬Ÿà¬¿ ସà­à¬¥à¬¾à¬¨à­€à­Ÿ ନà­à¬¹à¬, ନିଲମà­à¬¬à¬¿à¬¤ କରà­à¬¨à¬¾à¬¹à¬¿à¬à¥¤\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ପାଇଛି, ଉତà­à¬¸à¬¾à¬¹à¬¿à¬¤ କରà­à¬…ଛି।\n"
@@ -1690,7 +1720,7 @@ msgstr ""
" -s, --server=SERVER ସଂଯୋଗ କରିବା ପାଇଠସରà­à¬­à¬°à¬° ନାମ\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1701,32 +1731,32 @@ msgstr ""
"libpulse %s ସହିତ ସଂକଳିତ\n"
"libpulse %s ସହିତ ସଂଯà­à¬•à­à¬¤\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "ପରିସଂଖà­à­Ÿà¬¾à¬¨ ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ବରà­à¬¤à­à¬¤à¬®à¬¾à¬¨ ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬°à­‡ ଅଛି: %u ବà­à¬²à¬• ସମà­à¬¦à¬¾à­Ÿ %s ବାଇଟ ଧାରଣ କରିଥାà¬à¥¤\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "ସମଗà­à¬° ଜୀବନରେ ବଣà­à¬Ÿà¬¿à¬¤ ହୋଇଥାà¬: %u ବà­à¬²à¬• ସମà­à¬¦à¬¾à­Ÿ %s ବାଇଟ ଧାରଣ କରିଥାà¬à¥¤\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ନମà­à¬¨à¬¾ କà­à­Ÿà¬¾à¬¶à­‡ ଆକାର: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "ସରà­à¬­à¬° ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1749,12 +1779,12 @@ msgstr ""
"ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ଉତà­à¬¸: %s\n"
"କà­à¬•à¬¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "ସିଙà­à¬• ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1793,12 +1823,22 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tରୂପରେଖଗà­à¬¡à¬¼à¬¿à¬•:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tସକà­à¬°à¬¿à­Ÿ ରୂପରେଖା: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "ଉତà­à¬¸ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1837,20 +1877,20 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "à¬à¬•à¬•à¬¾à¬‚ଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1867,12 +1907,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "ଗà­à¬°à¬¾à¬¹à¬• ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1887,12 +1927,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "କାରà­à¬¡ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1909,22 +1949,22 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tରୂପରେଖଗà­à¬¡à¬¼à¬¿à¬•:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tସକà­à¬°à¬¿à­Ÿ ରୂପରେଖା: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "ସିଙà­à¬• ନିବେଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1961,12 +2001,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "ଉତà­à¬¸ ଫଳାଫଳ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1995,12 +2035,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "ନମà­à¬¨à¬¾ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2031,23 +2071,22 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "ବିଫଳତା: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ନମà­à¬¨à¬¾à¬•à­ ଧାରଣ କରିବାରେ ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "ଫାଇଲର ସମୟ ପୂରà­à¬¬ ସମାପà­à¬¤à¬¿\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2062,6 +2101,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2093,7 +2134,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2104,48 +2145,44 @@ msgstr ""
"libpulse %s ସହିତ ସଂକଳିତ\n"
"libpulse %s ସହିତ ସଂଯà­à¬•à­à¬¤\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "ଧାରଣ କରିବା ପାଇଠଗୋଟିଠନà­à¬®à¬¨à¬¾ ଫାଇଲ ଉଲà­à¬²à­‡à¬– କରନà­à¬¤à­\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "ଧà­à­±à¬¨à¬¿ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s' ସହିତ ଗୋଟିଠ%s ଧାରାକୠଖୋଲà­à¬…ଛି।\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "ଚଲାଇବା ପାଇଠଆପଣଙà­à¬•à­ ଗୋଟିଠନମà­à¬¨à¬¾ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "କାଢ଼ିବା ପାଇଠଆପଣଙà­à¬•à­ ଗୋଟିଠନମà­à¬¨à¬¾ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନିବେଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠଉତà­à¬¸ ନିରà­à¬—ମ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠଉତà­à¬¸ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠà¬à¬•à¬•à¬¾à¬‚ଶ ନାମ à¬à¬¬à¬‚ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬°à¬—à­à¬¡à¬¼à¬¿à¬•à­ ଉଲà­à¬²à­‡à¬– କରିବା ଉଚିତ।\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠà¬à¬•à¬•à¬¾à¬‚ଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾à¬•à­ ଉଲà­à¬²à­‡à¬– କରିବା ଉଚିତ ନà­à¬¹à¬\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2153,8 +2190,7 @@ msgstr ""
"ଆପଣଙà­à¬•à­ ଗୋଟିà¬à¬°à­ ଅଧିକ ସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠପଡ଼ିନପାରେ। ଆପଣଙà­à¬•à­ ଗୋଟିଠବà­à¬²à¬¿à¬†à¬¨ ମୂଲà­à­Ÿ ଉଲà­à¬²à­‡à¬– କରିବାକୠ"
"ହେବ।\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2162,17 +2198,25 @@ msgstr ""
"ଆପଣଙà­à¬•à­ ଗୋଟିà¬à¬°à­ ଅଧିକ ଉତà­à¬¸ ଉଲà­à¬²à­‡à¬– କରିବାକୠପଡ଼ିନପାରେ। ଆପଣଙà­à¬•à­ ଗୋଟିଠବà­à¬²à¬¿à¬†à¬¨ ମୂଲà­à­Ÿ ଉଲà­à¬²à­‡à¬– କରିବାକୠ"
"ହେବ।\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠକାରà­à¬¡ ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ରୂପରେଖା ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠକାରà­à¬¡ ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ରୂପରେଖା ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠକାରà­à¬¡ ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ରୂପରେଖା ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "କୌଣସି ବୈଧ ନିରà­à¬¦à­à¬¦à­‡à¬¶ ଉଲà­à¬²à­‡à¬– କରାଯାଇନାହିà¬à¥¤\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() ବିଫଳ ହୋଇଛି: %s"
@@ -2255,126 +2299,48 @@ msgstr "କà­à¬•à¬¿ ତଥà­à­Ÿ ଧାରଣ କରିବାରେ ବିଫà¬
msgid "Not yet implemented.\n"
msgstr "ଅପରà­à¬¯à­à­Ÿà¬¨à­à¬¤ କାରà­à¬¯à­à­Ÿà¬•à¬¾à¬°à­€ ହୋଇନାହିà¬à¥¤\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ସକେଟ(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "ସଂଯୋଗ କରନà­à¬¤à­(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ଡେମନକୠବନà­à¬¦ କରିବାରେ ବିଫଳ।"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ଡେମନ ଉତà­à¬¤à¬° ଦେଉନାହିà¬à¥¤"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "ବାଛନà­à¬¤à­(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "ପଢ଼ନà­à¬¤à­(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "ଲେଖନà­à¬¤à­(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ଧାରା ସଫଳତାର ସହିତ ନିରà­à¬®à¬¿à¬¤ ହୋଇଛି\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ଧାରା ତà­à¬°à­à¬Ÿà¬¿: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "ସଂଯୋଗ ସà­à¬¥à¬¾à¬ªà¬¿à¬¤ ହୋଇସାରିଛି।\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help à¬à¬¹à¬¿ ସହାୟତା ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­\n"
-" --version ସଂସà­à¬•à¬°à¬£ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­\n"
-"\n"
-" -v, --verbose verbose ପà­à¬°à­Ÿà­‹à¬—କୠସକà­à¬°à¬¿à­Ÿ କରନà­à¬¤à­\n"
-"\n"
-" -s, --server=SERVER ସଂଯୋଗ କରିବା ପାଇଠସରà­à¬­à¬°à¬° ନାମ\n"
-" -d, --device=DEVICE ସଂଯୋଗ କରିବା ପାଇଠସିଙà­à¬•à¬° ନାମ\n"
-" -n, --client-name=NAME ସରà­à¬­à¬° ଉପରେ à¬à¬¹à¬¿ ଗà­à¬°à¬¾à¬¹à¬•à¬™à­à¬•à­ କିପରି ଡ଼ାକିବେ\n"
-" --stream-name=NAME ସରà­à¬­à¬° ଉପରେ à¬à¬¹à¬¿ ଧାରାକୠକିପରି ଡ଼ାକିବେ\n"
-" --volume=VOLUME ପà­à¬°à¬¾à¬°à¬®à­à¬­à¬¿à¬• (ସିଧା) ଆକାରକୠସୀମା 0...65536 "
-"ମଧà­à¬¯à¬°à­‡ ଉଲà­à¬²à­‡à¬– କରନà­à¬¤à­\n"
-" --channel-map=CHANNELMAP ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ପାଇଠଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ªà¬•à­ ସେଟ କରନà­à¬¤à­\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse %s ସହିତ ସଂକଳିତ\n"
-"libpulse %s ସହିତ ସଂଯà­à¬•à­à¬¤\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ଫାଇଲ '%s' କୠଖୋଲିବାରେ ବିଫଳ\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª ଫାଇଲ ସହିତ ମେଳ ଖାଉନାହିà¬à¥¤\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ନମà­à¬¨à¬¾ spec '%s' ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn ଅପରିବରà­à¬¤à­à¬¤à¬¨à­€à­Ÿà¬¤à¬¾à¬•à­ ଅଭିଗମà­à­Ÿ କରିହେଉ ନାହିà¬"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2391,7 +2357,7 @@ msgstr ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2408,34 +2374,126 @@ msgstr ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "ଫଳାଫଳ %s + ନିବେଶ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "ଫଳାଫଳ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "ନିବେଶ %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "ଅଫ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "ଉଚà­à¬š ଫିଡିଲିଟି ପଛଚଲା (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "ଟେଲିଫୋନି ଡà­à­Ÿà­à¬ªà­à¬²à­‡à¬•à­à¬¸ (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio ଧà­à­±à¬¨à¬¿ ସରà­à¬­à¬°"
+
+#~ msgid "Analog Mono"
+#~ msgstr "ଅନà­à¬°à­‚ପ ମୋନୋ"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "ଅନà­à¬°à­‚ପ ଷà­à¬Ÿà­‡à¬°à¬¿à¬“"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "ସାଂଖିକ ଷà­à¬Ÿà­‡à¬°à¬¿à¬“ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "ସାଂଖିକ ଷà­à¬Ÿà­‡à¬°à¬¿à¬“ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "ସାଂଖିକ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "ସାଂଖିକ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "ଅନà­à¬°à­‚ପ ଚତà­à¬°à­à¬ªà¬¾à¬°à­à¬¶à­à­± 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "ଫଳାଫଳ %s + ନିବେଶ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "ଫଳାଫଳ %s"
+
+#~ msgid "Input %s"
+#~ msgstr "ନିବେଶ %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "ଧାରା ସଫଳତାର ସହିତ ନିରà­à¬®à¬¿à¬¤ ହୋଇଛି\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "ଧାରା ତà­à¬°à­à¬Ÿà¬¿: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "ସଂଯୋଗ ସà­à¬¥à¬¾à¬ªà¬¿à¬¤ ହୋଇସାରିଛି।\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help à¬à¬¹à¬¿ ସହାୟତା ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­\n"
+#~ " --version ସଂସà­à¬•à¬°à¬£ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­\n"
+#~ "\n"
+#~ " -v, --verbose verbose ପà­à¬°à­Ÿà­‹à¬—କୠସକà­à¬°à¬¿à­Ÿ କରନà­à¬¤à­\n"
+#~ "\n"
+#~ " -s, --server=SERVER ସଂଯୋଗ କରିବା ପାଇଠସରà­à¬­à¬°à¬° ନାମ\n"
+#~ " -d, --device=DEVICE ସଂଯୋଗ କରିବା ପାଇଠସିଙà­à¬•à¬° ନାମ\n"
+#~ " -n, --client-name=NAME ସରà­à¬­à¬° ଉପରେ à¬à¬¹à¬¿ ଗà­à¬°à¬¾à¬¹à¬•à¬™à­à¬•à­ କିପରି ଡ଼ାକିବେ\n"
+#~ " --stream-name=NAME ସରà­à¬­à¬° ଉପରେ à¬à¬¹à¬¿ ଧାରାକୠକିପରି ଡ଼ାକିବେ\n"
+#~ " --volume=VOLUME ପà­à¬°à¬¾à¬°à¬®à­à¬­à¬¿à¬• (ସିଧା) ଆକାରକୠସୀମା "
+#~ "0...65536 ମଧà­à¬¯à¬°à­‡ ଉଲà­à¬²à­‡à¬– କରନà­à¬¤à­\n"
+#~ " --channel-map=CHANNELMAP ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ପାଇଠଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ªà¬•à­ ସେଟ କରନà­à¬¤à­\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "libpulse %s ସହିତ ସଂକଳିତ\n"
+#~ "libpulse %s ସହିତ ସଂଯà­à¬•à­à¬¤\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "ଫାଇଲ '%s' କୠଖୋଲିବାରେ ବିଫଳ\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª ଫାଇଲ ସହିତ ମେଳ ଖାଉନାହିà¬à¥¤\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "ନମà­à¬¨à¬¾ spec '%s' ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି\n"
diff --git a/po/pa.po b/po/pa.po
index eabd2175..5f5585e0 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -1,67 +1,25 @@
-# translation of pulseaudio.master-tx.po to Punjabi
+# translation of pulseaudio.master-tx.pa.po to Punjabi
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Amanpreet Singh Alam <aalam@users.sf.net>, 2008.
+# Jaswinder Singh <jsingh@redhat.com>, 2009.
+# A S Alam <aalam@users.sf.net>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio.master-tx\n"
+"Project-Id-Version: pulseaudio.master-tx.pa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
-"PO-Revision-Date: 2008-12-24 09:37+0530\n"
-"Last-Translator: Amanpreet Singh Alam <aalam@users.sf.net>\n"
-"Language-Team: Punjabi <punjabi-l10n@users.sf.net>\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: 2009-06-06 07:38+0530\n"
+"Last-Translator: A S Alam <aalam@users.sf.net>\n"
+"Language-Team: American English <punjabi-users@lists.sf.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
+"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,8 +27,10 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_avail() ਤੋਂ ਇੱਕ ਮà©à©±à¨² ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹà©à¨¤ ਵੱਡਾ ਹੈ: %lu ਬਾਈਟ (%lu ms)।\n"
+"ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮà©à©±à¨¦à©‡ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।"
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -78,8 +38,10 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_delay() ਤੋਂ ਇੱਕ ਮà©à©±à¨² ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹà©à¨¤ ਵੱਡਾ ਹੈ: %li ਬਾਈਟ (%s%lu ms)।\n"
+"ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮà©à©±à¨¦à©‡ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।"
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -87,181 +49,194 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_mmap_begin() ਤੋਂ ਇੱਕ ਮà©à©±à¨² ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹà©à¨¤ ਵੱਡਾ ਹੈ: %lu ਬਾਈਟ (%lu ms)।\n"
+"ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮà©à©±à¨¦à©‡ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।"
-#: ../src/pulsecore/sink.c:2141
-#, fuzzy
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
-msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ"
+msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
-msgstr ""
+msgstr "ਮਾਡਮ"
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
-msgstr ""
+msgstr "ਅਸਲੀ lt_dlopen ਲੋਡਰ ਲੱਭਣ ਵਿੱਚ ਫੇਲà©à¨¹ ਹੋਇਆ।"
#: ../src/daemon/ltdl-bind-now.c:129
-#, fuzzy
msgid "Failed to allocate new dl loader."
-msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲà©à¨¹ ਹੈ।\n"
+msgstr "ਨਵਾਂ dl ਲੋਡਰ ਦੇਣ ਲਈ ਫੇਲà©à¨¹à¥¤"
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
-msgstr ""
+msgstr "ਬਾਈਂਡ-ਨਾਓ-ਲੋਡਰ ਜੋੜਨ ਵਿੱਚ ਫੇਲà©à¨¹ ਹੋਇਆ।"
#: ../src/daemon/polkit.c:55
#, c-format
msgid "Cannot connect to system bus: %s"
-msgstr ""
+msgstr "ਸਿਸਟਮ ਬੱਸ ਨਾਲ ਜà©à©œà¨¨ ਨਹੀਂ ਸਕਿਆ: %s"
#: ../src/daemon/polkit.c:65
#, c-format
msgid "Cannot get caller from PID: %s"
-msgstr ""
+msgstr "PID ਤੋਂ ਕਾਲਰ ਪà©à¨°à¨¾à¨ªà¨¤ ਨਹੀਂ ਕਰ ਸਕਿਆ: %s"
#: ../src/daemon/polkit.c:77
msgid "Cannot set UID on caller object."
-msgstr ""
+msgstr "ਕਾਲਰ à¨à¨¬à¨œà©ˆà¨•à¨Ÿ ਤੇ UID ਸੈੱਟ ਨਹੀਂ ਕਰ ਸਕਿਆ।"
#: ../src/daemon/polkit.c:82
msgid "Failed to get CK session."
-msgstr ""
+msgstr "CK ਸ਼ੈਸ਼ਨ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲ।"
#: ../src/daemon/polkit.c:90
msgid "Cannot set UID on session object."
-msgstr ""
+msgstr "ਸ਼ੈਸ਼ਨ ਆਬਜੈਕਟ ਤੇ UID ਸੈੱਟ ਨਹੀਂ ਕਰ ਸਕਿਆ।"
#: ../src/daemon/polkit.c:95
msgid "Cannot allocate PolKitAction."
-msgstr ""
+msgstr "PolKitAction ਨਹੀਂ ਦੇ ਸਕਿਆ।"
#: ../src/daemon/polkit.c:100
msgid "Cannot set action_id"
-msgstr ""
+msgstr "action_id ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"
#: ../src/daemon/polkit.c:105
msgid "Cannot allocate PolKitContext."
-msgstr ""
+msgstr "PolKitContext ਜਾਰੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"
#: ../src/daemon/polkit.c:110
#, c-format
msgid "Cannot initialize PolKitContext: %s"
-msgstr ""
+msgstr "PolKitContext ਨੂੰ ਸ਼à©à¨°à©‚ ਨਹੀਂ ਕਰ ਸਕਿਆ: %s"
#: ../src/daemon/polkit.c:119
#, c-format
msgid "Could not determine whether caller is authorized: %s"
-msgstr ""
+msgstr "ਪਤਾ ਨਹੀਂ ਕਰ ਸਕਿਆ ਕਿ ਕੀ ਕਾਲਰ ਪਰਮਾਣਿਤ ਹੈ: %s"
#: ../src/daemon/polkit.c:139
#, c-format
msgid "Cannot obtain auth: %s"
-msgstr ""
+msgstr "ਪਰਮਾਣਕਿਤਾ ਨਹੀਂ ਲੈ ਸਕਦਾ: %s"
#: ../src/daemon/polkit.c:148
#, c-format
msgid "PolicyKit responded with '%s'"
-msgstr ""
+msgstr "PolicyKit ਦੇ ਜਵਾਬ ਵਜੋਂ '%s' ਮਿਲਿਆ ਹੈ"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
-msgstr ""
+msgstr "%s ਸਿਗਨਲ ਮਿਲਿਆ ਹੈ।"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
-msgstr ""
+msgstr "'%s' ਯੂਜ਼ਰ ਲੱਭਣ ਵਿੱਚ ਫੇਲà©à¨¹ ਹੋਇਆ ਹੈ।"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
-msgstr ""
+msgstr "'%s' ਗਰà©à©±à¨ª ਲੱਭਣ ਵਿੱਚ ਫੇਲ ਹੋਇਆ ਹੈ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
-msgstr ""
+msgstr "ਯੂਜ਼ਰ '%s' (UID %lu) ਅਤੇ ਗਰà©à©±à¨ª '%s' (GID %lu) ਲੱਭੇ ਹਨ।"
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
-msgstr ""
+msgstr "ਯੂਜ਼ੂ '%s' ਅਤੇ ਗਰà©à©±à¨ª '%s' ਦਾ GID ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ।"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
-msgstr ""
+msgstr "ਯੂਜ਼ੂ '%s' ਦੀ ਘਰ ਡਾਇਰੈਕਟਰੀ '%s' ਨਹੀਂ, ਅਣਡਿੱਠਾ ਕਰ ਰਿਹਾ।"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
-msgstr ""
+msgstr "'%s' ਬਣਾਉਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
-msgstr ""
+msgstr "ਗਰà©à©±à¨ª ਲਿਸਟ ਬਦਲਣ ਲਈ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
-msgstr ""
+msgstr "GID ਬਦਲਣ ਲਈ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
-msgstr ""
+msgstr "UID ਬਦਲਣ ਲਈ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
-msgstr ""
+msgstr "ਰੂਟ ਅਧਿਕਾਰ ਸਫਲਤਾਪੂਰਕ ਹਟਾਠਗà¨à¥¤"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
-msgstr ""
+msgstr "ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਿਸਟਮ ਸੰਬੰਧੀ ਮੋਡ ਨੂੰ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
-msgstr ""
+msgstr "setrlimit(%s, (%u, %u)) ਫੇਲà©à¨¹ ਹੋਇਆ: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
-msgstr ""
+msgstr "ਕਮਾਂਡ ਲਾਈਨ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹à¥¤"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
-msgstr ""
+msgstr "ਅਸੀਂ ਗਰà©à©±à¨ª '%s' ਵਿੱਚ ਹਾਂ, ਜਿਸ ਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ ਤਹਿ ਕੀਤਾ ਗਿਆ ਹੈ।"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
-msgstr ""
+msgstr "ਅਸੀਂ ਗਰà©à©±à¨ª '%s' ਵਿੱਚ ਹਾਂ, ਜਿਸ ਨੂੰ ਰੀਅਲ-ਟਾਈਮ ਤਹਿ ਕੀਤਾ ਗਿਆ ਹੈ।"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr ""
+msgstr "PolicyKit ਸਾਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ-ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਅਧਿਕਾਰ ਦਿੰਦੀ ਹੈ।"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr ""
+msgstr "PolicyKit ਵਧੇਰੇ-ਤਰਜੀਹ-ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਅਧਿਕਾਰ ਹਟਾਉਂਦੀ ਹੈ।"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr ""
+msgstr "PolicyKit ਸਾਨੂੰ ਰੀਅਲ-ਟਾਈਮ-ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਅਧਿਕਾਰ ਦਿੰਦੀ ਹੈ।"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr ""
+msgstr "PolicyKit ਰੀਅਲ-ਟਾਈਮ-ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਅਧਿਕਾਰ ਹਟਾਉਂਦੀ ਹੈ।"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -273,233 +248,251 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
-msgstr ""
+msgstr "ਸੰਰਚਨਾ ਵਿੱਚ ਵਧੇਰੇ-ਤਰਜੀਹ ਯੋਗ ਕੀਤੀ ਗਈ ਹੈ, ਪਰ ਪਾਲਸੀ ਵਲੋਂ ਮਨਜ਼ੂਰ ਨਹੀਂ ਕੀਤੀ।"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr ""
+msgstr "RLIMIT_RTPRIO ਨੂੰ ਸਫਲਤਾਪੂਰਕ ਵਧਾਇਆ ਗਿਆ"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
-msgstr ""
+msgstr "CAP_NICE ਨੂੰ ਹਟਾ ਰਿਹਾ ਹੈ"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
-msgstr ""
+msgstr "ਰੀਅਲ-ਟਾਈਮ ਤਹਿ ਨੂੰ ਸੰਰਚਨਾ ਵਿੱਚ ਯੋਗ ਕਰਨ ਨਾਲ, ਪਰ ਪਾਲਸੀ ਵਲੋਂ ਮਨਜੂਰ ਨਹੀਂ ਕੀਤੀ।"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
-msgstr ""
+msgstr "ਡੈਮਨ ਚੱਲ ਨਹੀਂ ਰਿਹਾ"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
-msgstr ""
+msgstr "ਡੈਮਨ PID %u ਤੌਰ ਤੇ ਚੱਲ ਰਿਹਾ ਹੈ"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
-msgstr ""
+msgstr "ਡੈਮਨ ਖਤਮ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
-msgstr ""
+msgstr "ਇਹ ਪਰੋਗਰਾਮ ਰੂਟ ਦੇ ਤੌਰ ਤੇ ਚਲਾਉਣ ਲਈ ਨਹੀਂ ਹੈ (ਜਦੋਂ ਤੱਕ --system ਦਿੱਤਾ ਨਹੀਂ ਜਾਂਦਾ)।"
-#: ../src/daemon/main.c:720
-#, fuzzy
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ਰੂਟ ਅਧਿਕਾਰਾਂ ਦੀ ਲੋੜ ਹੈ।"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
-msgstr ""
+msgstr "--start ਨੂੰ ਸਿਸਟਮ ਮੌਕਿਆਂ ਲਈ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
-msgstr ""
+msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਪਰ --disallow-exit ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
-msgstr ""
+msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਪਰ --disallow-module-loading ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
-msgstr ""
+msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਜ਼ਬਰਦਸਤੀ SHM ਮੋਡ ਨੂੰ ਅਯੋਗ ਕਰ ਰਿਹਾ ਹੈ!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
-msgstr ""
+msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਜ਼ਬਰਦਸਤੀ idle ਟਾਈਲ ਬੰਦ ਨੂੰ ਅਯੋਗ ਕਰ ਰਿਹਾ ਹੈ!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
-msgstr ""
+msgstr "ਸਟੂਡੀਓ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹à¥¤"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
-msgstr "pipe failed: %s"
+msgstr "pipe ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
-msgstr ""
+msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਫੇਲà©à¨¹ ਹੋਈ।"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
-msgstr ""
+msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਸਫ਼ਲ ਹੋਈ।"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
-msgstr ""
+msgstr "ਇਹ ਪਲਸਆਡੀਓ %s ਹੈ"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
-msgstr ""
+msgstr "ਕੰਪਾਈਲੇਸ਼ਨ ਹੋਸਟ: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
-msgstr ""
+msgstr "ਕੰਪਾਈਲੇਸ਼ਨ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
-msgstr ""
+msgstr "ਹੋਸਟ ਤੇ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
-msgstr ""
+msgstr "%u CPUs ਲੱਭੇ।"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
-msgstr ""
+msgstr "ਪੇਜ਼ ਸਾਈਜ਼ %lu ਬਾਈਟ ਹੈ"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
-msgstr ""
+msgstr "Valgrind ਸਹਿਯੋਗ ਨਾਲ ਕੰਪਾਈਲ: ਹਾਂ"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
-msgstr ""
+msgstr "Valgrind ਸਹਿਯੋਗ ਨਾਲ ਕੰਪਾਈਲ: ਨਹੀਂ"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
-msgstr ""
+msgstr "Valgrind ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
-msgstr ""
+msgstr "ਓਪਟੀਮਾਈਜ਼ਡ ਬਿਲਡ: ਹਾਂ"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
-msgstr ""
+msgstr "ਓਪਟੀਮਾਈਜ਼ਡ ਬਿਲਡ: ਨਹੀਂ"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
-msgstr ""
+msgstr "NDEBUG ਪਰਿਭਾਸ਼ਤ, ਸਭ asserts ਅਯੋਗ ਹਨ।"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
-msgstr ""
+msgstr "FASTPATH ਪਰਿਭਾਸ਼ਤ, ਸਿਰਫ ਫਾਸਟ ਪਾਥ asserts ਅਯੋਗ ਹਨ।"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
-msgstr ""
+msgstr "ਸਭ asserts ਯੋਗ ਕੀਤੇ ਹਨ।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
-msgstr ""
+msgstr "ਮਸ਼ੀਨ ID ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
-msgstr ""
+msgstr "ਮਸ਼ੀਨ ID %s ਹੈ।"
-#: ../src/daemon/main.c:913
-#, c-format
+#: ../src/daemon/main.c:917
+#, fuzzy, c-format
msgid "Session ID is %s."
-msgstr ""
+msgstr "ਮਸ਼ੀਨ ID %s ਹੈ।"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
-msgstr ""
+msgstr "ਰਨਟਾਈਮ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
-msgstr ""
+msgstr "ਸਟੇਟ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
+msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
+
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
-msgstr ""
+msgstr "ਤਾਜ਼ੀ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਉਪਲੱਬਧ ਹੈ! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
+"ਮਿੱਤਰਾ, ਤੇਰਾ ਕਰਨਲ ਪà©à¨°à¨¾à¨£à¨¾ ਹੈ! ਚੀਫ ਦੀ ਅੱਜ ਦੀ ਸਿਫਾਰਸ਼ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਯੋਗ ਨਾਲ ਲੀਨਕਸ ਹੈ!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
-msgstr ""
+msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹à¥¤"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
-msgstr ""
+msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਬਿਨਾਂ ਕਿਸੇ ਲੋਡ ਕੀਤੇ ਮੈਡਿਊਲ, ਕੰਮ ਕਰਨ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
-msgstr ""
+msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਮà©à¨•à©°à¨®à¨²à¥¤"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
-msgstr ""
+msgstr "ਡੈਮਨ ਬੰਦ ਕਰਨਾ ਸ਼à©à¨°à©‚ ਹੋ ਗਿਆ।"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
-msgstr ""
+msgstr "ਡੈਮਨ ਬੰਦ ਹੋ ਗਿਆ।"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -572,69 +565,140 @@ msgid ""
"\n"
" -n Don't load default script file\n"
msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
-msgstr ""
+msgstr "--daemonize ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
-msgstr ""
+msgstr "--fail ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
msgstr ""
+"--log-level ਨੂੰ ਲਾਗ ਲੈਵਲ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ (ਜਾਂ ਤਾਂ ਅੰਕੀ ਰੇਂਜ 0..4 ਜਾਂ debug, info, "
+"notice, warn, error ਵਿੱਚੋਂ ਇੱਕ)।"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
-msgstr ""
+msgstr "--high-priority ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
-msgstr ""
+msgstr "--realtime ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
-msgstr ""
+msgstr "--disallow-module-loading ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
-msgstr ""
+msgstr "--disallow-exit ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
-msgstr ""
+msgstr "--use-pid-file ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
-msgstr ""
+msgstr "ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ: 'syslog', 'stderr' ਜਾਂ 'auto' ਵਰਤੋਂ।"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
-msgstr ""
+msgstr "--log-time ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
-msgstr ""
+msgstr "--log-meta ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
-msgstr ""
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
-msgstr ""
+msgstr "--system ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
-msgstr ""
+msgstr "--no-cpu-limit ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
-msgstr ""
+msgstr "--disable-shm ਨੂੰ ਬà©à¨²à©€à¨…ਨ ਆਰਗੂਮੈਂਟ ਦੀ ਲੋੜ ਹੈ"
#: ../src/daemon/dumpmodules.c:60
#, c-format
@@ -644,7 +708,7 @@ msgstr "ਨਾਂ: %s\n"
#: ../src/daemon/dumpmodules.c:63
#, c-format
msgid "No module information available\n"
-msgstr ""
+msgstr "ਕੋਈ ਮੋਡੀਊਲ ਜਾਣਕਾਰੀ ਉਪਲੱਬਧ ਨਹੀਂ\n"
#: ../src/daemon/dumpmodules.c:66
#, c-format
@@ -669,356 +733,361 @@ msgstr "ਵਰਤੋਂ: %s\n"
#: ../src/daemon/dumpmodules.c:73
#, c-format
msgid "Load Once: %s\n"
+msgstr "ਇੱਕ ਵਾਰ ਲੋਡ ਕਰੋ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
msgstr ""
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ਪਾਥ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
-msgstr ""
+msgstr "[%s:%u] ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
-msgstr ""
+msgstr "[%s:%u] ਗਲਤੀ ਲਾਗ ਲੈਵਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
-msgstr ""
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà©€à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
-msgstr ""
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà©€à¨‚ rlimit '%s'।"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
-msgstr ""
+msgstr "[%s:%u] rlimit ਨੂੰ ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
-msgstr ""
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਫਾਰਮੈਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
-msgstr ""
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਰੇਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
-msgstr ""
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਚੈਨਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#: ../src/daemon/daemon-conf.c:354
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "ਗਲਤ ਚੈਨਲ ਮੈਪ\n"
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਚੈਨਲ ਮੈਪ '%s'।"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
-msgstr ""
+msgstr "[%s:%u] ਫਰੈਗਮੈਂਟਾਂ ਦਾ ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਨੰਬਰ '%s'।"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
-msgstr ""
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਫਰੈਗਮੈਂਟ ਅਕਾਰ '%s'।"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
-msgstr ""
+msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ nice ਲੈਵਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
-msgstr ""
+msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
-msgstr ""
+msgstr "ਦਿੱਤੇ ਡਿਫਾਲਟ ਚੈਨਲ ਮੈਪ ਦੀ ਦਿੱਤੇਤ ਚੈਨਲ ਗਿਣਤੀ ਨਾਲੋਂ ਇੱਕ ਵੱਖਰੀ ਚੈਨਲ ਗਿਣਤੀ ਹੈ।"
#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
-msgstr ""
+msgstr "### ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚੋਂ ਪੜਿਆ: %s ###\n"
#: ../src/daemon/caps.c:63
msgid "Dropping root privileges."
-msgstr ""
+msgstr "ਰੂਟ ਅਧਿਕਾਰ ਹਟਾ ਰਿਹਾ ਹੈ।"
#: ../src/daemon/caps.c:103
msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr ""
+msgstr "CAP_SYS_NICE ਨੂੰ ਸਫਲਤਾਪੂਰਕ ਸੀਮਿਤ ਸਮੱਰਥਾ।"
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "ਪਲਸਆਡੀਓ ਸਾਊਂਡ ਸਿਸਟਮ"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "ਪਲਸਆਡੀਓ ਸਾਊਂਡ ਸਿਸਟਮ ਚਲਾਓ"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
+msgstr "ਪਲਸਆਡੀਓ ਡੈਮਨ ਲਈ ਵਧੇਰੇ-ਤਰਜੀਹ ਸੈਡਿਊਲ (ਨਾਂ-ਵਾਚਕ ਯੂਨੈਕਸ ਨਾਈਸ ਲੈਵਲ)"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr ""
+msgstr "ਪਲਸਆਡੀਓ ਡੈਮਨ ਰੀਅਲ-ਟਾਈਮ ਸੈਡਿਊਲ"
#: ../src/daemon/org.pulseaudio.policy.in.h:3
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
+msgstr "ਸਿਸਟਮ ਪਾਲਸੀ ਪਲਸਆਡੀਓ ਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ ਸੈਡਿਊਲ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਤੋਂ ਰੋਕਦੀ ਹੈ।"
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
+msgstr "ਸਿਸਟਮ ਪਾਲਸੀ ਪਲਸਆਡੀਓ ਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ ਰੀਅਲ-ਟਾਈਮ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਤੋਂ ਰੋਕਦੀ ਹੈ।"
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "ਮੋਨੋ"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
-msgstr "ਫਰੰਟ ਸੈਂਟਰ"
+msgstr "ਅੱਗੇ ਸੈਂਟਰ"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
-msgstr ""
+msgstr "ਅੱਗੇ ਖੱਬੇ"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
-msgstr ""
+msgstr "ਅੱਗੇ ਸੱਜਾ"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
-msgstr ""
+msgstr "ਪਿੱਛੇ ਸੈਂਟਰ"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
-msgstr ""
+msgstr "ਪਿੱਛੇ ਖੱਬਾ"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
-msgstr ""
+msgstr "ਪਿੱਛੇ ਸੱਜਾ"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
-msgstr ""
+msgstr "ਘੱਟ ਫਰੀਕਿਊਂਸੀ ਇੱਮਟਰ"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
-msgstr ""
+msgstr "ਅੱਗੇ ਸੈਂਟਰ ਦਾ ਖੱਬੇ"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
-msgstr ""
+msgstr "ਅੱਗੇ ਸੈਂਟਰ ਦਾ ਸੱਜਾ"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
-msgstr ""
+msgstr "ਖੱਬੇ ਪਾਸੇ"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
-msgstr ""
+msgstr "ਸੱਜੇ ਪਾਸੇ"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "à¨à¨—ਜਿਲਰੀ 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "à¨à¨—ਜਿਲਰੀ 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "à¨à¨—ਜਿਲਰੀ 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "à¨à¨—ਜਿਲਰੀ 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "à¨à¨—ਜਿਲਰੀ 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "à¨à¨—ਜਿਲਰੀ 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "à¨à¨—ਜਿਲਰੀ 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "à¨à¨—ਜਿਲਰੀ 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "à¨à¨—ਜਿਲਰੀ 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "à¨à¨—ਜਿਲਰੀ 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "à¨à¨—ਜਿਲਰੀ 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "à¨à¨—ਜਿਲਰੀ 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "à¨à¨—ਜਿਲਰੀ 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "à¨à¨—ਜਿਲਰੀ 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "à¨à¨—ਜਿਲਰੀ 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "à¨à¨—ਜਿਲਰੀ 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "à¨à¨—ਜਿਲਰੀ 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "à¨à¨—ਜਿਲਰੀ 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "à¨à¨—ਜਿਲਰੀ 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "à¨à¨—ਜਿਲਰੀ 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "à¨à¨—ਜਿਲਰੀ 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "à¨à¨—ਜਿਲਰੀ 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "à¨à¨—ਜਿਲਰੀ 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "à¨à¨—ਜਿਲਰੀ 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "à¨à¨—ਜਿਲਰੀ 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "à¨à¨—ਜਿਲਰੀ 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "à¨à¨—ਜਿਲਰੀ 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "à¨à¨—ਜਿਲਰੀ 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "à¨à¨—ਜਿਲਰੀ 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "à¨à¨—ਜਿਲਰੀ 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "à¨à¨—ਜਿਲਰੀ 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "à¨à¨—ਜਿਲਰੀ 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "ਉੱਤੇ ਕੇਂਦਰੀ"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
-msgstr ""
+msgstr "ਉੱਤੇ ਅੱਗੇ ਸੈਂਟਰ"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
-msgstr ""
+msgstr "ਉੱਤੇ ਅੱਗੇ ਖੱਬੇ"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
-msgstr ""
+msgstr "ਉੱਤੇ ਅੱਗੇ ਸੱਜੇ"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
-msgstr ""
+msgstr "ਉੱਤੇ ਪਿੱਛੇ ਸੈਂਟਰ"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
-msgstr ""
+msgstr "ਉੱਤੇ ਪਿੱਛੇ ਖੱਬੇ"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
-msgstr ""
+msgstr "ਉੱਤੇ ਪਿੱਛੇ ਸੱਜੇ"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
-msgstr "(ਗਲਤ)"
+msgstr "(ਅਢà©à©±à¨•à¨µà¨¾à¨‚)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
-msgstr ""
+msgstr "ਸਟੀਰੀਓ"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
-msgstr ""
+msgstr "ਸਰਾਊਂਡਿੰਗ 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
-msgstr ""
+msgstr "ਸਰਾਊਂਡਿੰਗ 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
-msgstr ""
+msgstr "ਸਰਾਊਂਡਿੰਗ 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
-msgstr ""
+msgstr "ਸਰਾਊਂਡਿੰਗ 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
-msgstr ""
+msgstr "ਸਰਾਊਂਡਿੰਗ 7.1"
#: ../src/pulse/error.c:43
msgid "OK"
@@ -1034,15 +1103,15 @@ msgstr "ਅਣਜਾਣ ਕਮਾਂਡ"
#: ../src/pulse/error.c:46
msgid "Invalid argument"
-msgstr ""
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਆਰਗੂਮੈਂਟ"
#: ../src/pulse/error.c:47
msgid "Entity exists"
-msgstr ""
+msgstr "à¨à¨‚ਟਟੀ ਮੌਜੂਦ ਹੈ"
#: ../src/pulse/error.c:48
msgid "No such entity"
-msgstr ""
+msgstr "ਕੋਈ à¨à¨‚ਟਟੀ ਨਹੀਂ"
#: ../src/pulse/error.c:49
msgid "Connection refused"
@@ -1054,11 +1123,11 @@ msgstr "ਪਰੋਟੋਕਾਲ ਗਲਤੀ"
#: ../src/pulse/error.c:51
msgid "Timeout"
-msgstr "ਸਮਾਂ ਅੰਤਰਾਲ"
+msgstr "ਸਮਾਂ-ਸਮਾਪਤ"
#: ../src/pulse/error.c:52
msgid "No authorization key"
-msgstr ""
+msgstr "ਕੋਈ ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਕà©à©°à¨œà©€ ਨਹੀਂ"
#: ../src/pulse/error.c:53
msgid "Internal error"
@@ -1066,19 +1135,19 @@ msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ"
#: ../src/pulse/error.c:54
msgid "Connection terminated"
-msgstr ""
+msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਖਤਮ ਕੀਤਾ"
#: ../src/pulse/error.c:55
msgid "Entity killed"
-msgstr ""
+msgstr "à¨à¨‚ਟਟੀ ਖਤਮ ਹੋ ਗਈ"
#: ../src/pulse/error.c:56
msgid "Invalid server"
-msgstr ""
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸਰਵਰ"
#: ../src/pulse/error.c:57
msgid "Module initalization failed"
-msgstr ""
+msgstr "ਮੋਡੀਊਲ ਸ਼à©à¨°à©‚ ਕਰਨਾ ਫੇਲà©à¨¹"
#: ../src/pulse/error.c:58
msgid "Bad state"
@@ -1090,7 +1159,7 @@ msgstr "ਕੋਈ ਡਾਟਾ ਨਹੀਂ"
#: ../src/pulse/error.c:60
msgid "Incompatible protocol version"
-msgstr ""
+msgstr "ਨਾ-ਅਨà©à¨•à©‚ਲ ਪਰੋਟੋਕਾਲ ਵਰਜਨ"
#: ../src/pulse/error.c:61
msgid "Too large"
@@ -1106,44 +1175,44 @@ msgstr "ਅਣਜਾਣ ਗਲਤੀ ਕੋਡ"
#: ../src/pulse/error.c:64
msgid "No such extension"
-msgstr ""
+msgstr "ਕੋਈ ਅਜਿਹੀ ਇਕਸਟੈਂਸ਼ਨ ਨਹੀਂ"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "ਛੱਡੀ ਗਈ ਫੰਕਸ਼ਨੈਲਿਟੀ"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "ਗੈਰ-ਮੌਜੂਦ ਨਿਰਧਾਰਨ"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "ਕਲਾਇਟ ਅੱਡ ਕੀਤਾ"
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:181
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:183
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:187
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
@@ -1151,16 +1220,16 @@ msgstr "XOpenDisplay() ਫੇਲà©à¨¹ ਹੈ"
#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
-msgstr ""
+msgstr "ਕੂਕੀ ਡਾਟਾ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹"
#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
-msgstr ""
+msgstr "ਸੰਰਚਨਾ ਫਾਇਲ '%s' ਨੂੰ ਖੋਲà©à¨¹à¨£ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
-msgstr ""
+msgstr "ਕੋਈ ਕੂਕੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ। ਇਸ ਤੋਂ ਬਿਨਾਂ ਕà©à¨¨à©ˆà¨•à¨Ÿ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
#: ../src/pulse/context.c:676
#, c-format
@@ -1175,175 +1244,170 @@ msgstr "waitpid(): %s"
#: ../src/pulse/context.c:1403
#, c-format
msgid "Received message for unknown extension '%s'"
-msgstr ""
+msgstr "ਅਣਜਾਣੀ ਇਕਸਟੈਂਸ਼ਨ '%s' ਲਈ ਸà©à¨¨à©‡à¨¹à¨¾ ਮਿਲਿਆ ਹੈ"
+
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ਸਟਰੀਮ ਡਰੇਨ ਫੇਲà©à¨¹ ਹੋਇਆ: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "ਪਲੇਬੈਕ ਸਟਰੀਮ ਡਰੇਨ ਕੀਤੀ।\n"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "ਸਰਵਰ ਨਾਲ ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਡਰੇਨ ਹੋ ਰਿਹਾ ਹੈ।\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
-msgstr ""
+msgstr "ਸਟਰੀਮ ਸਫਲਤਾਪੂਰਕ ਬਣ ਗਈ ਹੈ।\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr ""
+msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr ""
+msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr ""
+msgstr "ਸਧਾਰਨ spec '%s', ਚੈਨਲ ਮੈਪ '%s' ਦੀ ਵਰਤੋਂ।\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr ""
+msgstr "%s ਜੰਤਰ ਨਾਲ ਕà©à¨¨à¨•à©ˆà¨Ÿ ਕੀਤਾ (%u, %ssuspended)।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
-msgstr ""
+msgstr "ਸਟਰੀਮ ਜੰਤਰ ਸਸਪੈਂਡ ਕੀਤਾ ਹੈ।%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
-msgstr ""
+msgstr "ਸਟਰੀਮ ਜੰਤਰ ਮà©à©œ-ਪà©à¨°à¨¾à¨ªà¨¤ ਕੀਤਾ।%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
-msgstr ""
+msgstr "ਸਟਰੀਮ ਅੰਡਰਰਨ।%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
-msgstr ""
+msgstr "ਸਟਰੀਮ ਓਵਰਰਨ।%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
-msgstr "ਸਟਰੀਮ ਸ਼à©à¨°à©‚। %s\n"
+msgstr "ਸਟਰੀਮ ਸ਼à©à¨°à©‚ ਕੀਤੀ। %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr ""
+msgstr "ਸਟਰੀਮ ਨੂੰ ਜੰਤਰ %s ਤੋਂ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ ਹੈ (%u, %ssuspended)।%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "ਨਹੀਂ "
-#: ../src/utils/pacat.c:245
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:378
+#, c-format
msgid "Stream buffer attributes changed.%s \n"
-msgstr "ਸਟਰੀਮ ਸ਼à©à¨°à©‚। %s\n"
+msgstr "ਸਟਰੀਮ ਬਫਰ à¨à¨Ÿà¨°à©€à¨¬à¨¿à¨Šà¨Ÿ ਤਬਦੀਲ ਕੀਤੇ ਗà¨à¥¤%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
-msgstr ""
+msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਬਣ ਗਿਆ।%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
+msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਫੇਲ: %s\n"
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF ਮਿਲਿਆ।\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
-msgstr ""
+msgstr "ਸਿਗਨਲ ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
-msgstr ""
+msgstr "ਵਕਫਾ ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲ ਹੋਈ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr ""
+msgstr "ਸਮਾਂ: %0.3f ਸਕਿੰਟ; ਵਕਫਾ: %0.0f usec। \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1369,6 +1433,62 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
" float32be, ulaw, alaw, s32le, s32be "
"(defaults to s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
@@ -1393,98 +1513,145 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-msgstr ""
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pacat %s\n"
+"libpulse %s ਦੇ ਕੰਪਾਇਲ\n"
+"libpulse %s ਨਾਲ ਲਿੰਕ ਕੀਤਾ\n"
+
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਚੈਨਲ ਮੈਪ '%s'\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
-msgstr ""
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਚੈਨਲ ਮੈਪ '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
-msgstr ""
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਵਕਫਾ ਹਦਾਇਤ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
-msgstr ""
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਪਰੋਸੈੱਸ ਟਾਈਮ ਹਦਾਇਤ '%s'\n"
-#: ../src/utils/pacat.c:716
-#, c-format
-msgid "Invalid sample specification\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:721
-#, c-format
-msgid "Channel map doesn't match sample specification\n"
-msgstr ""
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:878
#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "recording"
-msgstr "ਰਿਕਾਰਡਿੰਗ"
-
-#: ../src/utils/pacat.c:728
-msgid "playback"
-msgstr "ਪਲੇਅਬੈਕ"
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਹਦਾਇਤ\n"
-#: ../src/utils/pacat.c:736
+#: ../src/utils/pacat.c:907
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:741
+#: ../src/utils/pacat.c:912
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:751
-#, c-format
+#: ../src/utils/pacat.c:919
msgid "Too many arguments.\n"
+msgstr "ਬਹà©à¨¤ ਵੱਧ ਆਰਗੂਮੈਂਟ।\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲà©à¨¹ ਹੈ।\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr "ਚੈਨਲ ਮੈਪ ਸੈਂਪਲ ਹਦਾਇਤ ਨਾਲ ਨਹੀਂ ਮਿਲਦਾ\n"
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
msgstr ""
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।\n"
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr "ਰਿਕਾਰਡਿੰਗ"
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
+msgstr "ਪਲੇਅਬੈਕ"
+
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() ਫੇਲà©à¨¹ ਹੈ।\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() ਫੇਲà©à¨¹ ਹੈ।\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() ਫੇਲà©à¨¹ ਹੈ।\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() ਫੇਲà©à¨¹ ਹੈ।\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() ਫੇਲà©à¨¹ ਹੈ।\n"
@@ -1502,28 +1669,27 @@ msgstr "execvp(): %s\n"
#: ../src/utils/pasuspender.c:109
#, c-format
msgid "Failure to suspend: %s\n"
-msgstr ""
+msgstr "ਸਸਪੈਂਡ ਕਰਨ ਵਿੱਚ ਫੇਲ: %s\n"
#: ../src/utils/pasuspender.c:124
#, c-format
msgid "Failure to resume: %s\n"
-msgstr ""
+msgstr "ਮà©à©œ-ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲ: %s\n"
#: ../src/utils/pasuspender.c:147
#, c-format
msgid "WARNING: Sound server is not local, not suspending.\n"
-msgstr ""
+msgstr "ਚੇਤਾਵਨੀ: ਸਾਊਂਡ ਸਰਵਰ ਲੋਕਲ ਨਹੀਂ ਹੈ, ਸਸਪੈਂਡ ਨਹੀਂ ਹੋ ਰਿਹਾ।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
-msgstr ""
+msgstr "SIGINT ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।\n"
#: ../src/utils/pasuspender.c:194
#, c-format
msgid "WARNING: Child process terminated by signal %u\n"
-msgstr ""
+msgstr "ਚੇਤਾਵਨੀ: ਚਲਾਈਡ ਪਰੋਸੈੱਸ ਨੂੰ ਸਿਗਨਲ %u ਵਲੋਂ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ\n"
#: ../src/utils/pasuspender.c:212
#, c-format
@@ -1536,41 +1702,51 @@ msgid ""
"to\n"
"\n"
msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pasuspender %s\n"
+"libpulse %s ਨਾਲ ਕੰਪਾਇਲ\n"
+"libpulse %s ਨਾਲ ਲਿੰਕ\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
-msgstr ""
+msgstr "ਅੰਕੜੇ ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲà©à¨¹: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
-msgstr ""
+msgstr "ਹà©à¨£ ਵਰਤੋਂ ਵਿੱਚ ਹੈ: %u ਬਲਾਕ ਵਿੱਚ ਕà©à©±à¨² %s ਬਾਈਟ ਹਨ।\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
-msgstr ""
+msgstr "ਪੂਰੇ ਲਾਈਫਟਾਈਮ ਵਿੱਚ ਜਾਰੀ ਕੀਤਾ ਗਿਆ: %u ਬਲਾਕ ਵਿੱਚ ਕà©à©±à¨² %s ਬਾਈਟ ਹਨ।\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ਸੈਂਪਲ ਕੈਸ਼ ਸਾਈਜ਼: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
-msgstr ""
+msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲ ਹੋਇਆ: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1583,13 +1759,22 @@ msgid ""
"Default Source: %s\n"
"Cookie: %08x\n"
msgstr ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
-msgstr ""
+msgstr "ਸਿੰਕ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1610,13 +1795,40 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tਪਰੋਫਾਈਲ:\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tਸਰਗਰਮ ਪਰੋਫਾਈਲ: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
-msgstr ""
+msgstr "ਸਰੋਤ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1637,21 +1849,38 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
-msgstr "n/a"
+msgstr "ਉਪਲੱਬਧ ਨਹੀਂ"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
-msgstr ""
+msgstr "ਮੋਡੀਊਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1661,13 +1890,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
-msgstr ""
+msgstr "ਕਲਾਇਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1676,13 +1911,18 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
-msgstr ""
+msgstr "ਕਾਰਡ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1692,23 +1932,29 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tਪਰੋਫਾਈਲ:\n"
-#: ../src/utils/pactl.c:434
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:478
+#, c-format
msgid "\tActive Profile: %s\n"
-msgstr "pipe failed: %s"
+msgstr "\tਸਰਗਰਮ ਪਰੋਫਾਈਲ: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
-msgstr ""
+msgstr "ਇੰਪà©à©±à¨Ÿ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1728,13 +1974,29 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
-msgstr ""
+msgstr "ਸਰੋਤ ਆਉਟਪà©à©±à¨Ÿ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1750,13 +2012,25 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
-msgstr ""
+msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -1773,24 +2047,36 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "ਫੇਲà©à¨¹: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
-msgstr ""
+msgstr "ਸੈਂਪਲ ਅੱਪਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
-msgstr ""
+msgstr "ਫਾਇਲ ਦਾ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਅੰਤ\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -1805,6 +2091,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1814,80 +2102,107 @@ msgid ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸੈਂਪਲ ਫਾਇਲ ਦਿਓ\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲà©à¨¹ ਹੈ।\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
-msgstr ""
+msgstr "ਖੇਡਣ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
-msgstr ""
+msgstr "ਹਟਾਉਣ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
-msgstr ""
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੰਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
-msgstr ""
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਸਰੋਤ ਆਉਟਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਰੋਤ ਦੇਣਾ ਪਵੇਗਾ\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
-msgstr ""
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਮੋਡੀਊਲ ਨਾਂ ਅਤੇ ਆਰਗੂਮੈਂਟ ਦੇਣਾ ਪਵੇਗਾ।\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
-msgstr ""
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਮੈਡੀਊਲ ਲਿਸਟ ਦੇਣੀ ਪਵੇਗੀ\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
-msgstr ""
+msgstr "ਤà©à¨¸à©€à¨‚ ਇੱਕ ਤੋਂ ਵੱਧ ਸਿੰਕ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਬà©à¨²à©€à¨…ਨ ਮà©à©±à¨² ਦੇਣਾ ਪਵੇਗਾ।\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
-msgstr ""
+msgstr "ਤà©à¨¸à©€à¨‚ ਇੱਕ ਤੋਂ ਵੱਧ ਸਰੋਤ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤà©à¨¹à¨¾à¨¨à©‚à©° ਬà©à¨²à©€à¨…ਨ ਮà©à©±à¨² ਦੇਣਾ ਪਵੇਗਾ।\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
-msgstr ""
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
-msgstr ""
+msgstr "ਕੋਈ ਯੋਗ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ।\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() ਫੇਲà©à¨¹ ਹੈ: %s"
@@ -1903,11 +2218,18 @@ msgid ""
"variables and cookie file.\n"
" -r Remove PulseAudio data from X11 display\n"
msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
#: ../src/utils/pax11publish.c:94
#, c-format
msgid "Failed to parse command line.\n"
-msgstr ""
+msgstr "ਕਮਾਂਡ ਲਾਈਨ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹à¥¤\n"
#: ../src/utils/pax11publish.c:108
#, c-format
@@ -1922,7 +2244,7 @@ msgstr "ਸਰੋਤ: %s\n"
#: ../src/utils/pax11publish.c:112
#, c-format
msgid "Sink: %s\n"
-msgstr ""
+msgstr "ਸਿੰਕ: %s\n"
#: ../src/utils/pax11publish.c:114
#, c-format
@@ -1932,141 +2254,80 @@ msgstr "ਕੂਕੀਜ਼: %s\n"
#: ../src/utils/pax11publish.c:132
#, c-format
msgid "Failed to parse cookie data\n"
-msgstr ""
+msgstr "ਕੂਕੀ ਡਾਟਾ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਫੇਲ\n"
#: ../src/utils/pax11publish.c:137
#, c-format
msgid "Failed to save cookie data\n"
-msgstr ""
+msgstr "ਕੂਕੀ ਡਾਟਾ ਸੰਭਾਲਣ ਵਿੱਚ ਫੇਲ\n"
#: ../src/utils/pax11publish.c:152
#, c-format
msgid "Failed to load client configuration file.\n"
-msgstr ""
+msgstr "ਕਲਾਇਟ ਸੰਰਚਨਾ ਫਾਇਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ।\n"
#: ../src/utils/pax11publish.c:157
#, c-format
msgid "Failed to read environment configuration data.\n"
-msgstr ""
+msgstr "ਇੰਵਾਇਰਨਮੈਂਟ ਸੰਰਚਨਾ ਡਾਟਾ ਪੜà©à¨¹à¨¨ ਵਿੱਚ ਫੇਲà©à¨¹à¥¤\n"
#: ../src/utils/pax11publish.c:174
#, c-format
msgid "Failed to get FQDN.\n"
-msgstr ""
+msgstr "FQDN ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲ।\n"
#: ../src/utils/pax11publish.c:194
#, c-format
msgid "Failed to load cookie data\n"
-msgstr ""
+msgstr "ਕੂਕੀ ਡਾਟਾ ਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ\n"
#: ../src/utils/pax11publish.c:211
#, c-format
msgid "Not yet implemented.\n"
msgstr "ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ।\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
-msgstr ""
+msgstr "ਪਲਸਆਡੀਓ ਡੈਮਨ ਬੰਦ ਕਰਨ ਵਿੱਚ ਫੇਲ।"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ਡੈਮਨ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਹੀ।"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ਸਟਰੀਮ ਠੀਕ ਤਰà©à¨¹à¨¾à¨‚ ਬਣਾਈ ਗਈ।\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "ਕà©à¨¨à©ˆà¨•à¨¸à¨¼à¨¨ ਬਣਾਇਆ ਗਿਆ।\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "ਗਲਤ ਚੈਨਲ ਮੈਪ\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr ""
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
-msgstr ""
+msgstr "autospawn ਲਾਕ ਵਰਤ ਨਹੀਂ ਸਕਦਾ।"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2076,8 +2337,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2087,44 +2354,137 @@ msgid ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
-msgstr ""
+msgstr "ਬੰਦ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "ਹਾਈ ਫਡੈਲਿਟੀ ਪਲੇਅਬੈਕ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "ਟੈਲੀਫੋਨੀ ਡà©à¨ªà¨²à©ˆà¨•à¨¸ (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
-msgstr ""
-
-#~ msgid "pa_stream_drop() failed: %s\n"
-#~ msgstr "pa_stream_drop() ਫੇਲà©à¨¹ ਹੈ: %s\n"
-
-#~ msgid "muted"
-#~ msgstr "ਚà©à©±à¨ª"
-
-#~ msgid "source"
-#~ msgstr "ਸਰੋਤ"
+msgstr "ਪਲਸਆਡੀਓ ਸਾਊਂਡ ਡਰਾਇਵਰ"
+
+#~ msgid "Analog Mono"
+#~ msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨— ਮੋਨੋ"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨— ਸਟੀਰੀਓ"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "ਡਿਜ਼ੀਟਲ ਸਟੀਰੀਓ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "ਡਿਜ਼ਿਟਲ ਸਟੀਰੀਓ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨— ਸਰਾਊਂਡਿੰਗ 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "ਡਿਜ਼ਿਟਲ ਸਰਾਊਂਡਿੰਗ 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨— ਸਰਾਊਂਡਿੰਗ 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨— ਸਰਾਊਂਡਿੰਗ 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨— ਸਰਾਊਂਡਿੰਗ 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "ਡਿਜ਼ਿਟਲ ਸਰਾਊਂਡਿੰਗ 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨— ਸਰਾਊਂਡਿੰਗ 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "ਆਉਟਪà©à©±à¨Ÿ %s + ਇੰਪà©à©±à¨Ÿ %s"
+
+#~ msgid "Output %s"
+#~ msgstr "ਆਉਟਪà©à©±à¨Ÿ %s"
+
+#~ msgid "Input %s"
+#~ msgstr "ਇੰਪà©à©±à¨Ÿ %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "ਸਟਰੀਮ ਠੀਕ ਤਰà©à¨¹à¨¾à¨‚ ਬਣਾਈ ਗਈ।\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "ਕà©à¨¨à©ˆà¨•à¨¸à¨¼à¨¨ ਬਣਾਇਆ ਗਿਆ।\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "ਗਲਤ ਚੈਨਲ ਮੈਪ\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "ਫਾਇਲ '%s' ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲ\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "ਚੈਨਲ ਮੈਪ ਫਾਇਲ ਨਾਲ ਨਹੀਂ ਮਿਲਦਾ।\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "ਸੈਂਪਲ spec '%s' ਦੀ ਵਰਤੋਂ\n"
diff --git a/po/pl.po b/po/pl.po
index 13516d24..df526062 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,59 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
-"PO-Revision-Date: 2009-04-14 16:45+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: 2009-06-09 00:03+0200\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analogowe mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analogowe stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Cyfrowe stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Cyfrowe stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analogowe surround 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Cyfrowe surround 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analogowe surround 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analogowe surround 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analogowe surround 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Cyfrowe surround 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analogowe surround 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,7 +25,7 @@ msgstr ""
"Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -81,7 +37,7 @@ msgstr ""
"Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -93,11 +49,24 @@ msgstr ""
"Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten "
"problem programistom ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Wewnętrzny dźwięk"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Modem"
@@ -168,106 +137,106 @@ msgstr "Nie można uzyskać upoważnienia: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit zwróciło \"%s\""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Otrzymano sygnał %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Wyłączanie."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Znalezienie użytkownika \"%s\" nie powiodło się."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Znalezienie grupy \"%s\" nie powiodło się."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Znaleziono użytkownika \"%s\" (UID %lu) i grupę \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID użytkownika \"%s\" i grupy \"%s\" nie zgadzają się."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Folder domowy użytkownika \"%s\" nie jest \"%s\", ignorowanie."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Utworzenie \"%s\" nie powiodło się: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Zmiana listy grup nie powiodła się: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Zmiana GID nie powiodła się: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Zmiana UID nie powiodła się: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Pomyślnie porzucono uprawnienia roota."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Tryb systemowy nie jest obsługiwany na tej platformie."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nie powiodło się: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Analiza wiersza poleceń nie powiodła się."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Jesteśmy w grupie \"%s\", co umożliwia szeregowanie o wysokim priorytecie."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Jesteśmy w grupie \"%s\", co umożliwia szeregowanie w czasie rzeczywistym."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nadał uprawnienie \"acquire-high-priority\"."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit odmówił nadania uprawnienia \"acquire-high-priority\"."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nadał uprawnienie \"acquire-real-time\"."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit odmówił nadania uprawnienia \"acquire-real-time\"."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -288,48 +257,48 @@ msgstr ""
"\" lub zwiększyć ograniczenia zasobów RLIMIT_NICE/RLIMIT_RTPRIO dla tego "
"użytkownika."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie o wysokim priorytecie jest włączone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ™."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Pomyślnie zwiększono RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO nie powiodło się: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Oddawanie CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie w czasie rzeczywistym jest włączone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ™."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Demon nie jest uruchomiony"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon jest uruchomiony jako PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zniszczenie demona nie powiodło się: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -337,163 +306,173 @@ msgstr ""
"Ten program nie powinien być uruchomiany jako root (chyba, że podano --"
"system)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Wymagane sÄ… uprawnienia roota."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nie jest obsługiwane przy uruchamianiu systemowym."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Uruchamianie w trybie systemowym, ale --disallow-exit nie jest ustawione!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Uruchamianie w trybie systemowym, ale --disallow-module-loading nie jest "
"ustawione!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Uruchamianie w trybie systemowym, wymuszanie wyłączenia trybu SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Uruchamianie w trybie systemowym, wymuszanie wyłączenia czasu oczekiwania na "
"zakończenie!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Uzyskanie standardowego wejścia/wyjścia nie powiodło się."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "potok nie powiódł się: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() nie powiodło się: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() nie powiodło się: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Uruchomienie demona nie powiodło się."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Pomyślnie uruchomiono demona."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "To jest PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Komputer kompilacji: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompilacji: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Uruchamianie na komputerze: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Znaleziono %u procesorów."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Rozmiar strony to %lu bajtów"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Skompilowano z obsługą Valgrind: tak"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Skompilowano z obsługą Valgrind: nie"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Uruchamianie w trybie Valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Budowanie optymalizowane: tak"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Budowanie optymalizowane: nie"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "Podano NDEBUG, wszystkie asercje zostały wyłączone."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "Podano FASTPATH, tylko szybkie asercje ścieżek zostały wyłączone."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Wszystkie asercje są włączone."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Uzyskanie identyfikatora komputera nie powiodło się"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "Identyfikator komputera to %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, c-format
msgid "Session ID is %s."
msgstr "Identyfikator sesji to %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Używanie folderu wykonywania %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodło się."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Świeże zegary o wysokiej rozdzielczości! Smacznego!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -501,31 +480,31 @@ msgstr ""
"Koleś, twoje jądro śmierdzi! Szef kuchni poleca dzisiaj Linuksa w włączonymi "
"zegarami o wysokiej rozdzielczości!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodło się."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodło się."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych modułów, odmawianie pracy."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Zakończono uruchamianie demona."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyłączenie demona."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Demon został zniszczony."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -675,15 +654,15 @@ msgstr ""
" -n Nie wczytuje domyślnego pliku\n"
" skryptu\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize oczekuje parametru w postaci zmiennej logicznej"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail oczekuje parametru w postaci zmiennej logicznej"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -691,54 +670,54 @@ msgstr ""
"--log-level oczekuje parametru poziomu dziennika (numeryczny w zakresie 0..4 "
"lub jeden z debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Nieprawidłowy dziennik docelowy: należy użyć \"syslog\", \"stderr\" lub "
"\"auto\"."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Nieprawidłowa metoda resamplingu \"%s\"."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm oczekuje parametru zmiennej logicznej"
@@ -777,77 +756,82 @@ msgstr "Użycie: %s\n"
msgid "Load Once: %s\n"
msgstr "Wczytanie jednorazowe: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr "OSTRZEÅ»ENIE O PRZESTARZAÅOÅšCI: %s\n"
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Ścieżka: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Nieprawidłowy dziennik docelowy \"%s\"."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom dziennika \"%s\"."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Nieprawidłowa metoda resamplingu \"%s\"."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Nieprawidłowy rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nie jest obsługiwany na tej platformie."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Nieprawidłowy format próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Nieprawidłowa częstotliwość próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Nieprawidłowe kanały próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Nieprawidłowa mapa kanałów \"%s\"."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nieprawidłowa liczba fragmentów \"%s\"."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Nieprawidłowy rozmiar fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodło się: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -900,237 +884,237 @@ msgstr ""
"Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania w czasie "
"rzeczywistym."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Przedni środkowy"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Przedni lewy"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Przedni prawy"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Tylny środkowy"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Tylny lewy"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Tylny prawy"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Subwoofer"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Przedni lewy po środku"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Przedni prawy po środku"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Boczny lewy"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Boczny prawy"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Pomocnicze 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Pomocnicze 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Pomocnicze 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Pomocnicze 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Pomocnicze 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Pomocnicze 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Pomocnicze 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Pomocnicze 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Pomocnicze 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Pomocnicze 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Pomocnicze 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Pomocnicze 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Pomocnicze 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Pomocnicze 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Pomocnicze 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Pomocnicze 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Pomocnicze 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Pomocnicze 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Pomocnicze 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Pomocnicze 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Pomocnicze 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Pomocnicze 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Pomocnicze 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Pomocnicze 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Pomocnicze 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Pomocnicze 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Pomocnicze 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Pomocnicze 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Pomocnicze 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Pomocnicze 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Pomocnicze 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Pomocnicze 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Górny środkowy"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Górny przedni środkowy"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Górny przedni lewy"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Górny przedni prawy"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Górny tylny środkowy"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Górny tylny lewy"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Górny tylny prawy"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(nieprawidłowe)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1291,172 +1275,167 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Otrzymano komunikat z nieznanego powodu \"%s\""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Opróżnienie strumienia nie powiodło się: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Opróżniono strumień odtwarzania.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Opróżnianie połączenia z serwerem.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Pomyślnie utworzono strumień.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metryka bufora: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metryka bufora: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Używanie przykładowej specyfikacji \"%s\", mapa kanałów \"%s\".\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Połączono się z urządzeniem %s (%u, %swstrzymane).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "BÅ‚Ä…d strumienia: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Wstrzymano urzÄ…dzenie strumienia.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Wznowiono urzÄ…dzenie strumienia.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Niedopełniono strumień.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Przepełniono strumień.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Utworzono strumień.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Strumień został przeniesiony do urządzenia %s (%u, %swstrzymane).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nie "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Zmieniono atrybuty bufora strumienia.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Ustanowiono połączenie.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Połączenie nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Opróżnienie strumienia nie powiodło się: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Opróżniono strumień odtwarzania.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Opróżnianie połączenia z serwerem.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Otrzymano EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Otrzymano sygnał, wyłączanie.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Uzyskanie opóźnienia nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Czas: %0.3f sekundy; opóźnienie: %0.0f usekundy. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1483,8 +1462,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1507,6 +1488,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opcje]\n"
"\n"
@@ -1516,47 +1502,55 @@ msgstr ""
" -r, --record Tworzy połączenie do nagrywania\n"
" -p, --playback Tworzy połączenie do odtwarzania\n"
"\n"
-" -v, --verbose Wyświetla więcej informacji o "
-"działaniu\n"
+" -v, --verbose Wyświetla więcej informacji o\n"
+" działaniu\n"
"\n"
" -s, --server=SERWER Nazwa serwera do połączenia się\n"
-" -d, --device=URZĄDZENIE Nazwa odpływu/źródła do połączenia "
-"siÄ™ z\n"
-" -n, --client-name=NAZWA Jak nazywać tego klienta na "
-"serwerze\n"
+" -d, --device=URZĄDZENIE Nazwa odpływu/źródła do połączenia\n"
+" siÄ™\n"
+" -n, --client-name=NAZWA Jak nazywać tego klienta na\n"
+" serwerze\n"
" --stream-name=NAZWA Jak nazwać ten strumień na serwerze\n"
-" --volume=POZIOMGÅOÅšNOÅšCI OkreÅ›la poczÄ…tkowy (liniowy) poziom "
-"głośności z zakresie 0...65536\n"
-" --rate=CZĘSTOTLIWOŚĆPRÓBKI Częstotliwość próbki w Hz (domyślnie "
-"44100)\n"
-" --format=FORMATPRÓBKI Typ próbki, jeden z s16le, s16be, "
-"u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(domyślnie s16ne)\n"
-" --channels=KANAÅY Liczba kanałów, 1 dla mono, 2 dla "
-"stereo\n"
+" --volume=POZIOMGÅOÅšNOÅšCI OkreÅ›la poczÄ…tkowy (liniowy)\n"
+" poziom głośności z zakresie\n"
+" 0...65536\n"
+" --rate=CZĘSTOTLIWOŚĆPRÓBKI Częstotliwość próbki w Hz\n"
+" (domyślnie 44100)\n"
+" --format=FORMATPRÓBKI Typ próbki, jeden z s16le, s16be,\n"
+" u8, float32le, float32be, ulaw,\n"
+" alaw, s32le, s32be, s24le, s24be,\n"
+" s24-32le, s24-32be (domyślnie\n"
+" s16ne)\n"
+" --channels=KANAÅY Liczba kanałów, 1 dla mono, 2 dla\n"
+" stereo\n"
" (domyślnie 2)\n"
-" --channel-map=MAPAKANAÅÓW Mapa kanałów używa zamiast "
-"domyślnej\n"
-" --fix-format Pobiera format próbki z odpływu, z "
-"jakim\n"
-" połączony jest strumień.\n"
-" --fix-rate Pobiera częstotliwość sampli z "
-"odpływu, z\n"
+" --channel-map=MAPAKANAÅÓW Mapa kanałów używa zamiast\n"
+" domyślnej\n"
+" --fix-format Pobiera format próbki z odpływu, z\n"
" jakim połączony jest strumień.\n"
-" --fix-channels Pobiera liczbę kanałów i mapę "
-"kanałów z odpływu,\n"
-" z jakim połączony jest strumień.\n"
-" --no-remix Nie miesza kanałów w górę lub w "
-"dół.\n"
-" --no-remap Mapuje kanały przez indeks zamiast "
-"przez nazwÄ™.\n"
-" --latency=BAJTY Żąda określonego opóźnienia w "
-"bajtach.\n"
-" --process-time=BAJTY Żąda określonego czasu procesu na "
-"żądanie w bajtach.\n"
-
-#: ../src/utils/pacat.c:612
+" --fix-rate Pobiera częstotliwość sampli z\n"
+" odpływu, z jakim połączony jest\n"
+" strumień.\n"
+" --fix-channels Pobiera liczbę kanałów i mapę\n"
+" kanałów z odpływu, z jakim\n"
+" połączony jest strumień.\n"
+" --no-remix Nie miesza kanałów w górę lub w\n"
+" dół.\n"
+" --no-remap Mapuje kanały przez indeks zamiast\n"
+" przez nazwÄ™.\n"
+" --latency=BAJTY Żąda określonego opóźnienia w\n"
+" bajtach.\n"
+" --process-time=BAJTY Żąda określonego czasu procesu na\n"
+" żądanie w bajtach.\n"
+" --property=WÅASNOŚĆ=WARTOŚĆ Ustawia podanÄ… wÅ‚asność na podanÄ…\n"
+" wartość.\n"
+" --raw Nagrywa/odtwarza surowe dane PCM.\n"
+" --file-format=FFORMAT Nagrywa/odtwarza sformatowane dane\n"
+" PCM.\n"
+" --list-file-formats Wyświetla listę dostępnych formatów\n"
+" plików.\n"
+
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1567,88 +1561,134 @@ msgstr ""
"Skompilowane za pomocÄ… libpulse %s\n"
"Skonsolidowane za pomocÄ… libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Nieprawidłowa nazwa klienta \"%s\"\n"
+
+#: ../src/utils/pacat.c:776
+#, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Nieprawidłowa nazwa strumienia \"%s\"\n"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Nieprawidłowa mapa kanałów \"%s\"\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Nieprawidłowe określenie opóźnienia \"%s\"\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Nieprawidłowe określenie czasu procesu \"%s\"\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
#, c-format
-msgid "Invalid sample specification\n"
-msgstr "Nieprawidłowe określenie próbki\n"
+msgid "Invalid property '%s'\n"
+msgstr "Nieprawidłowa własność \"%s\"\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:878
#, c-format
-msgid "Channel map doesn't match sample specification\n"
-msgstr "Mapa kanałów nie zgadza się z określeniem próbki\n"
-
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
-msgstr "Otwieranie strumienia %s za pomocą określenie próbki \"%s\".\n"
+msgid "Unknown file format %s."
+msgstr "Nieznany format pliku %s."
-#: ../src/utils/pacat.c:728
-msgid "recording"
-msgstr "nagrywanie"
-
-#: ../src/utils/pacat.c:728
-msgid "playback"
-msgstr "odtwarzanie"
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
+msgstr "Nieprawidłowe określenie próbki\n"
-#: ../src/utils/pacat.c:736
+#: ../src/utils/pacat.c:907
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:741
+#: ../src/utils/pacat.c:912
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:751
-#, c-format
+#: ../src/utils/pacat.c:919
msgid "Too many arguments.\n"
msgstr "Za dużo parametrów.\n"
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:930
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Utworzenie określenia próbki dla pliku nie powiodło się.\n"
+
+#: ../src/utils/pacat.c:950
+msgid "Failed to open audio file.\n"
+msgstr "Otwarcie pliku dźwiękowego nie powiodło się.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+"Ostrzeżenie: podane określenie próbki zostanie zastąpione przez określenie z "
+"pliku.\n"
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Ustalenie określenia próbki z pliku nie powiodło się.\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr "Ostrzeżenie: ustalenie mapy kanałów z pliku nie powiodło się.\n"
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr "Mapa kanałów nie zgadza się z określeniem próbki\n"
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr "Ostrzeżenie: zapisanie mapy kanałów do pliku nie powiodło się.\n"
+
+#: ../src/utils/pacat.c:1005
+#, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+"Otwieranie strumienia %s za pomocą określenie próbki \"%s\" i mapy kanałów "
+"\"%s\".\n"
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr "nagrywanie"
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
+msgstr "odtwarzanie"
+
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() nie powiodło się.\n"
@@ -1679,8 +1719,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"OSTRZEŻENIE: serwer dźwięku nie jest lokalny, nie zostanie wstrzymany.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Otrzymano SIGINT, wyłączanie.\n"
@@ -1708,7 +1747,7 @@ msgstr ""
" -s, --server=SERWER Nazwa serwera do połączenia się\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1719,34 +1758,34 @@ msgstr ""
"Skompilowane za pomocÄ… libpulse %s\n"
"Skonsolidowane za pomocÄ… libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Uzyskanie statystyk nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Obecnie używane: %u bloków zawierających razem %s bajtów.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Przydzielono podczas całego czasu uruchomienia: %u bloków zawierających "
"razem %s bajtów.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Rozmiar pamięci podręcznej próbek: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Uzyskanie informacji o serwerze nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1769,12 +1808,12 @@ msgstr ""
"Domyślne źródło: %s\n"
"Ciasteczko: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Uzyskanie informacji o odpływie nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1813,12 +1852,22 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfile:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tAktywny profil: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Uzyskanie informacji o źródle nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1857,20 +1906,20 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "nie dotyczy"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Uzyskanie informacji o module nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1887,12 +1936,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Uzyskanie informacji o kliencie nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1907,12 +1956,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Uzyskanie informacji o karcie nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1929,22 +1978,22 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktywny profil: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Uzyskanie informacji o wejściu odpływu nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1981,12 +2030,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Uzyskanie informacji o wyjściu źródła nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2015,12 +2064,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
-msgstr "Uzyskanie informacji o przykładzie nie powiodło się: %s\n"
+msgstr "Uzyskanie informacji o próbce nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2051,23 +2100,22 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Niepowodzenie: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Usunięcie próbki nie powiodło się: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Przedwczesny koniec pliku\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2082,6 +2130,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2111,7 +2161,7 @@ msgstr ""
" -s, --server=SERWER Nazwa serwera do połączenia się\n"
" -n, --client-name=NAZWA Jak nazwać tego klienta na serwerze\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2122,73 +2172,75 @@ msgstr ""
"Skompilowane za pomocÄ… libpulse %s\n"
"Skonsolidowane za pomocÄ… libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Proszę podać plik próbki do wczytania\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Otwarcie pliku dźwiękowego nie powiodło się.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Ostrzeżenie: ustalenie określenia próbki z pliku nie powiodło się.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Należy podać nazwę próbki do odtworzenia\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Należy podać nazwę próbki do usunięcia\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Należy podać indeks odpływu wejścia i odpływ\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "Należy podać indeks źródła wyjścia i źródło\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Należy podać nazwę modułu i parametry.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Należy podać indeks modułu\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"Nie można podać więcej niż jednego odpływu. Należy podać wartość logiczną.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"Nie można podać więcej niż jednego źródła. Należy podać wartość logiczną.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Należy podać nazwę karty/indeks i nazwę profilu\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Należy podać nazwę karty/indeks i nazwę profilu\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Należy podać nazwę karty/indeks i nazwę profilu\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Nie podano prawidłowego polecenia.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() nie powiodło się: %s"
@@ -2208,8 +2260,8 @@ msgstr ""
"\n"
" -d Wyświetla dane PulseAudio dołączone do ekranu X11 (domyślne)\n"
" -e Eksportuje lokalne dane PulseAudio na ekran X11\n"
-" -i Importuje dane PulseAudio z ekranu X11 do lokalnych zmiennych "
-"środowiskowych i pliku ciasteczka.\n"
+" -i Importuje dane PulseAudio z ekranu X11 do lokalnych zmiennych\n"
+" środowiskowych i pliku ciasteczka.\n"
" -r Usuwa dane PulseAudio z ekranu X11\n"
#: ../src/utils/pax11publish.c:94
@@ -2272,127 +2324,50 @@ msgstr "Wczytanie danych ciasteczka nie powiodło się\n"
msgid "Not yet implemented.\n"
msgstr "Niezaimplementowane.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+"Demon PulseAudio nie jest uruchomiony, lub nie jest uruchomiony jako demon "
+"sesji."
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "gniazdo(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Zniszczenie demona PulseAudio nie powiodło się."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Demon nie odpowiada."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Pomyślnie utworzono strumień\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "BÅ‚Ä…d strumienia: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Ustanowiono połączenie.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [opcje] [PLIK]\n"
-"\n"
-" -h, --help Wyświetla tę pomoc\n"
-" --version Wyświetla wersję\n"
-"\n"
-" -v, --verbose Wyświetla więcej informacji o "
-"działaniach\n"
-"\n"
-" -s, --server=SERWER Nazwa serwera do połączenia się\n"
-" -d, --device=URZĄDZENIE Nazwa odpływu do połączenia się\n"
-" -n, --client-name=NAZWA Jak nazwać tego klienta na serwerze\n"
-" --stream-name=NAZWA Jak nazwać ten strumień na serwerze\n"
-" --volume=POZIOMGÅOÅšNOÅšCI OkreÅ›la poczÄ…tkowy (liniowy) poziom "
-"głośności w zakresie 0...65536\n"
-" --channel-map=MAPAKANAÅÓW Ustawia używanÄ… mapÄ™ kanałów\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Skompilowane za pomocÄ… libpulse %s\n"
-"Skonsolidowane za pomocÄ… libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Nieprawidłowa mapa kanałów\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Otwarcie pliku \"%s\" nie powiodło się\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Mapa kanałów nie zgadza się z plikiem.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Używanie przykładowej specyfikacji \"%s\"\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Nie można uzyskać dostępu do blokady automatycznego wznawiania."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2409,7 +2384,7 @@ msgstr ""
"Wybudzono za pomocą ustawienia POLLOUT - ale jednoczesne wywołanie "
"snd_pcm_avail() zwróciło zero lub inną wartość < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2426,34 +2401,61 @@ msgstr ""
"Wybudzono za pomocą ustawienia POLLIN - ale jednoczesne wywołanie "
"snd_pcm_avail() zwróciło zero lub inną wartość < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Wyjście %s + wejście %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Wyjście %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Wejście %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "Wyłącz"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "Odtwarzanie o wysokiej dokładności (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplex telefoniczny (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Serwer dźwięku PulseAudio"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Analogowe mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analogowe stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Cyfrowe stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Cyfrowe stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analogowe surround 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Cyfrowe surround 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analogowe surround 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analogowe surround 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analogowe surround 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Cyfrowe surround 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analogowe surround 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Wyjście %s + wejście %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Wyjście %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Wejście %s"
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 00000000..b44d622d
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,2282 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Rui Gouveia <rui.gouveia@globaltek.pt>\n"
+"Language-Team: pt <fedora-trans-pt@redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Portuguese\n"
+"X-Poedit-Country: PORTUGAL\n"
+
+#: ../src/modules/alsa/alsa-util.c:1015
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() retornou um valor excepcionalmente elevado: %lu bytes (%lu "
+"ms).\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA."
+
+#: ../src/modules/alsa/alsa-util.c:1056
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() retornou um valor excepcionalmente elevado: %li bytes (%s%lu "
+"ms).\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA."
+
+#: ../src/modules/alsa/alsa-util.c:1103
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() retornou um valor excepcionalmente elevado: %lu bytes (%"
+"lu ms).\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA."
+
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
+msgid "Internal Audio"
+msgstr "Ãudio Interno"
+
+#: ../src/pulsecore/sink.c:2400
+msgid "Modem"
+msgstr "Modem"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "Não foi possível encontrar o carregador \"lt_dlopen\"."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "Não foi possível alocar o novo carregador \"dl\"."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "Não foi possível adicionar \"bind-now-loader\"."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "Incapaz de se ligar ao bus de sistema: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "Não foi possível obter chamador a partir do PID: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "Não foi possível definir o UID no objecto chamador."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "Falha ao obter sessão CK."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "Não foi possível definir o UID no objecto da sessão."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "Não é possível alocar PolKitAction."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "impossível definir action_id"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "Não é possível alocar contexto PolKitContext."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "Incapaz de inicializar o PolKitContext: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "Não foi possível determinar se o chamador está autorizado: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "Não foi possível obter autenticação: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit respondeu com '%s'"
+
+#: ../src/daemon/main.c:142
+#, c-format
+msgid "Got signal %s."
+msgstr "Foi obtido o sinal %s."
+
+#: ../src/daemon/main.c:169
+msgid "Exiting."
+msgstr "A sair."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "Falha ao procurar o utilizador '%s'."
+
+#: ../src/daemon/main.c:192
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "Falha ao procurar o grupo '%s'."
+
+#: ../src/daemon/main.c:196
+#, c-format
+msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
+msgstr "Foi encontrado utilizador '%s' (UID %lu) e grupo '%s' (GID %lu)."
+
+#: ../src/daemon/main.c:201
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "GID do utilizador '%s' e do grupo '%s' não coincidem."
+
+#: ../src/daemon/main.c:206
+#, c-format
+msgid "Home directory of user '%s' is not '%s', ignoring."
+msgstr "Directório pessoal do utilizador '%s' não é '%s'. A ignorar."
+
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "Falha ao criar o '%s': %s"
+
+#: ../src/daemon/main.c:221
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "Falhou a alteração da lista de grupos: %s"
+
+#: ../src/daemon/main.c:237
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "Não foi possível mudar o GID: %s"
+
+#: ../src/daemon/main.c:253
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "Não foi possível mudar o UID: %s"
+
+#: ../src/daemon/main.c:267
+msgid "Successfully dropped root privileges."
+msgstr "Privilégios de root cedidos com sucesso."
+
+#: ../src/daemon/main.c:275
+msgid "System wide mode unsupported on this platform."
+msgstr "Modo de sistema não suportado nesta plataforma."
+
+#: ../src/daemon/main.c:293
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
+
+#: ../src/daemon/main.c:481
+msgid "Failed to parse command line."
+msgstr "Não foi possível processar linha de comando."
+
+#: ../src/daemon/main.c:505
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "Estamos no grupo '%s', permitindo escalonamento de alta-prioridade."
+
+#: ../src/daemon/main.c:512
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
+
+#: ../src/daemon/main.c:520
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr ""
+"O PolicyKit permite-nos o privilégio \"acquire-high-priority\" (adquirir "
+"alta prioridade)."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr ""
+"O PolicyKit recusa-nos o privilégio \"acquire-high-priority\" (adquirir alta "
+"prioridade)."
+
+#: ../src/daemon/main.c:528
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr ""
+"O PolicyKit permite-nos o privilégio \"acquire-real-time\" (adquirir tempo "
+"real)."
+
+#: ../src/daemon/main.c:531
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr ""
+"O PolicyKit recusa-nos o privilégio \"acquire-real-time\" (adquirir tempo "
+"real)."
+
+#: ../src/daemon/main.c:560
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+
+#: ../src/daemon/main.c:585
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"Escalonamento de alta prioridade activo na configuração, mas não permitido "
+"pela politica."
+
+#: ../src/daemon/main.c:614
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "RLIMIT_RTPRIO aumentado com sucesso"
+
+#: ../src/daemon/main.c:617
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO falhou: %s"
+
+#: ../src/daemon/main.c:624
+msgid "Giving up CAP_NICE"
+msgstr "A desistir de CAP_NICE"
+
+#: ../src/daemon/main.c:631
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"Escalonamento em tempo real activo na configuração, mas não permitido pela "
+"politica."
+
+#: ../src/daemon/main.c:692
+msgid "Daemon not running"
+msgstr "Serviço não está a executar"
+
+#: ../src/daemon/main.c:694
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "Serviço a executar como PID %u"
+
+#: ../src/daemon/main.c:704
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "Tentativa de matar serviço falhou: %s"
+
+#: ../src/daemon/main.c:722
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"Este programa não pretende ser executado como root (a não ser que a opção --"
+"system seja especificada)."
+
+#: ../src/daemon/main.c:724
+msgid "Root privileges required."
+msgstr "São necessários privilégios de root."
+
+#: ../src/daemon/main.c:729
+msgid "--start not supported for system instances."
+msgstr "--start não é suportado para instâncias do sistema."
+
+#: ../src/daemon/main.c:734
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "A executar em modo de sistema, mas --disallow-exit não está definido!"
+
+#: ../src/daemon/main.c:737
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+"A executar em modo de sistema, mas --disallow-module-loading não está "
+"definido!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "A executar em modo de sistema, a forçar a desactivação do modo SHM!"
+
+#: ../src/daemon/main.c:745
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+"A executar em modo de sistema, a forçar a desactivação da saída por "
+"inactividade!"
+
+#: ../src/daemon/main.c:772
+msgid "Failed to acquire stdio."
+msgstr "Não foi possível adquirir o stdio."
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "pipe failed: %s"
+msgstr "pipe falhou: %s"
+
+#: ../src/daemon/main.c:783
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() falhou: %s"
+
+#: ../src/daemon/main.c:797
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() falhou: %s"
+
+#: ../src/daemon/main.c:803
+msgid "Daemon startup failed."
+msgstr "Arranque do serviço falhou."
+
+#: ../src/daemon/main.c:805
+msgid "Daemon startup successful."
+msgstr "Arranque do serviço sucedeu."
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "Isto é PulseAudio %s"
+
+#: ../src/daemon/main.c:876
+#, c-format
+msgid "Compilation host: %s"
+msgstr "Máquina de compilação: %s"
+
+#: ../src/daemon/main.c:877
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "CFLAGS utilizadas na compilação: %s"
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Running on host: %s"
+msgstr "A executar na máquina: %s"
+
+#: ../src/daemon/main.c:883
+#, c-format
+msgid "Found %u CPUs."
+msgstr "Foram encontrados %u CPUs."
+
+#: ../src/daemon/main.c:885
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "Tamanho da página é %lu bytes"
+
+#: ../src/daemon/main.c:888
+msgid "Compiled with Valgrind support: yes"
+msgstr "Compilado com suporte para Valgrind: sim"
+
+#: ../src/daemon/main.c:890
+msgid "Compiled with Valgrind support: no"
+msgstr "Compilado com suporte para Valgrind: não"
+
+#: ../src/daemon/main.c:893
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "A executar em modo \"valgrind\": %s"
+
+#: ../src/daemon/main.c:896
+msgid "Optimized build: yes"
+msgstr "Optimizado: sim"
+
+#: ../src/daemon/main.c:898
+msgid "Optimized build: no"
+msgstr "Compilação optimizada: não"
+
+#: ../src/daemon/main.c:902
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG definido, todas as declarações desactivadas."
+
+#: ../src/daemon/main.c:904
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH definido, apenas as declarações \"fast path\" desactivadas."
+
+#: ../src/daemon/main.c:906
+msgid "All asserts enabled."
+msgstr "Todas as declarações desactivadas."
+
+#: ../src/daemon/main.c:910
+msgid "Failed to get machine ID"
+msgstr "A tentativa de ler o ID da máquina falhou"
+
+#: ../src/daemon/main.c:913
+#, c-format
+msgid "Machine ID is %s."
+msgstr "O ID da máquina é %s."
+
+#: ../src/daemon/main.c:917
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "O ID da máquina é %s."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "Execução a utilizar o directório %s"
+
+#: ../src/daemon/main.c:928
+#, c-format
+msgid "Using state directory %s."
+msgstr "A manter o estado no directório %s."
+
+#: ../src/daemon/main.c:931
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "Execução em modo de sistema: %s"
+
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() falhou."
+
+#: ../src/daemon/main.c:961
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "Timer \"frescos\" de alta resolução disponíveis. Bom apetite!"
+
+#: ../src/daemon/main.c:963
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com "
+"timers de alta resolução activos!"
+
+#: ../src/daemon/main.c:988
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() falhou."
+
+#: ../src/daemon/main.c:1050
+msgid "Failed to initialize daemon."
+msgstr "Falha ao inicializar serviço."
+
+#: ../src/daemon/main.c:1055
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "Serviço arrancou sem módulos carregados. A recusar trabalhar."
+
+#: ../src/daemon/main.c:1072
+msgid "Daemon startup complete."
+msgstr "Arranque do serviço completo."
+
+#: ../src/daemon/main.c:1078
+msgid "Daemon shutdown initiated."
+msgstr "Encerramento do serviço iniciado."
+
+#: ../src/daemon/main.c:1100
+msgid "Daemon terminated."
+msgstr "Serviço terminado."
+
+#: ../src/daemon/cmdline.c:115
+#, fuzzy, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [opções]\n"
+"\n"
+"COMANDOS:\n"
+" -h, --help Mostra esta ajuda\n"
+" --version Mostra versão\n"
+" --dump-conf Despeja configuração por omissão\n"
+" --dump-modules Despeja lista de módulos "
+"disponíveis\n"
+" --dump-resample-methods Despeja métodos \"resample\" "
+"disponíveis\n"
+" --cleanup-shm Limpar segmentos de memória "
+"partilhados encravados\n"
+" --start Inicia o serviço, se ainda não "
+"estiver a executar\n"
+" -k --kill Termina o serviço, se estiver a "
+"executar \n"
+" --check Verifica se o serviço está a "
+"executar (apenas retorna um código de saída)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Executa em modo de sistema\n"
+" -D, --daemonize[=BOOL] Passa serviço depois de executar\n"
+" --fail[=BOOL] Termina quando o arranque falha\n"
+" --high-priority[=BOOL] Tenta definir um alto nível de "
+"execução\n"
+" (apenas disponível como root, quando "
+"é SUID ou\n"
+" com níveis elevados de RLIMIT_NICE)\n"
+" --realtime[=BOOL] Tenta activar escalonamento em tempo "
+"real\n"
+" (apenas disponível como root, quando "
+"é SUID ou\n"
+" com níveis elevados de "
+"RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Desautoriza o carregamento/"
+"descarregamento\n"
+" de módulos, pelo utilizador, depois "
+"do arranque\n"
+" --disallow-exit[=BOOL] Desautoriza pedidos de saída do "
+"utilizador\n"
+" --exit-idle-time=SECS Termina o serviço quando inactivo e "
+"já passou\n"
+" este tempo\n"
+" --module-idle-time=SECS Descarregar módulos de carregamento "
+"automático quando inactivo e\n"
+" passou este tempo\n"
+" --scache-idle-time=SECS Descarregar amostras de carregamento "
+"automático quando inactivas e\n"
+" passou este tempo\n"
+" --log-level[=LEVEL] Aumenta ou define o nível de "
+"verbosidade\n"
+" -v Aumenta o nível de verbosidade\n"
+" --log-target={auto,syslog,stderr} Especifica o ficheiro de registo\n"
+" --log-meta[=BOOL] Inclui código de localização na "
+"mensagem de registo\n"
+" --log-time[=BOOL] Inclui tempo na mensagem de registo\n"
+" --log-backtrace=FRAMES Inclui informação de tracagem na "
+"mensagem de registo\n"
+" -p, --dl-search-path=PATH Define o caminho de procura para os "
+"plugins partilhados dinâmicos\n"
+" --resample-method=METHOD Utilizar o método de \"resampling\" "
+"especificado\n"
+" (Ver --dump-resample-methods para\n"
+" possíveis valores)\n"
+" --use-pid-file[=BOOL] Criar um ficheiro com o PID\n"
+" --no-cpu-limit[=BOOL] Não instala limitadores de load no "
+"CPU em\n"
+" plataformas que o suportam.\n"
+" --disable-shm[=BOOL] Desactivar suporte para memória "
+"partilhada.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+
+#: ../src/daemon/cmdline.c:247
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:254
+msgid "--fail expects boolean argument"
+msgstr "--fail espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:264
+msgid ""
+"--log-level expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+msgstr ""
+"--log-level espera um argumento para o nível de log (numérico no intervalo "
+"0..4 ou um dos seguintes: debug, info, notice, warn, error)."
+
+#: ../src/daemon/cmdline.c:276
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:283
+msgid "--realtime expects boolean argument"
+msgstr "--realtime espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:290
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:297
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:304
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:321
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr ""
+"Destino de ficheiro de registo inválido: utilize 'syslog', 'stderr' ou "
+"'auto'."
+
+#: ../src/daemon/cmdline.c:328
+msgid "--log-time expects boolean argument"
+msgstr "--log-time espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:335
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:354
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "Método de resample inválido '%s'."
+
+#: ../src/daemon/cmdline.c:361
+msgid "--system expects boolean argument"
+msgstr "--system espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:368
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit espera argumento booleano"
+
+#: ../src/daemon/cmdline.c:375
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm espera argumento booleano"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nome: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "Nenhuma informação de módulo disponível\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "Versão: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "Descrição: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "Autor: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "Utilização: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "Carregar Uma Vez: %s\n"
+
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
+#, c-format
+msgid "Path: %s\n"
+msgstr "Caminho: %s\n"
+
+#: ../src/daemon/daemon-conf.c:216
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] ficheiro registo de destino inválido '%s'."
+
+#: ../src/daemon/daemon-conf.c:232
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] Nível do ficheiro de registo inválido '%s'."
+
+#: ../src/daemon/daemon-conf.c:248
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:271
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] rlimit inválido '%s'."
+
+#: ../src/daemon/daemon-conf.c:278
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit não é suportado nesta plataforma."
+
+#: ../src/daemon/daemon-conf.c:294
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] Formato da amostra inválido '%s'."
+
+#: ../src/daemon/daemon-conf.c:312
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:336
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:354
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:372
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] Número inválido de fragmentos '%s'."
+
+#: ../src/daemon/daemon-conf.c:390
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] Tamanho do fragmento inválido '%s'."
+
+#: ../src/daemon/daemon-conf.c:408
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] nível nice inválido '%s'."
+
+#: ../src/daemon/daemon-conf.c:524
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "Falha ao abrir ficheiro de configuração: %s"
+
+#: ../src/daemon/daemon-conf.c:540
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### Ler configuração a partir do ficheiro: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "A largar privilégios de root."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "Sistema de Som PulseAudio"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "Inciar o Sistema de Som PulseAudio"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+msgid "Mono"
+msgstr "Mono"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Center"
+msgstr "Frontal Central"
+
+#: ../src/pulse/channelmap.c:108
+msgid "Front Left"
+msgstr "Frontal Esquerda"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Front Right"
+msgstr "Frontal Direita"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Center"
+msgstr "Traseira Central"
+
+#: ../src/pulse/channelmap.c:112
+msgid "Rear Left"
+msgstr "Traseira Esquerda"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Rear Right"
+msgstr "Traseira Direita"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Low Frequency Emmiter"
+msgstr "Emissor de Baixa Frequência"
+
+#: ../src/pulse/channelmap.c:117
+msgid "Front Left-of-center"
+msgstr "Central Centro-Esquerda"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Front Right-of-center"
+msgstr "Central Centro-Direita"
+
+#: ../src/pulse/channelmap.c:120
+msgid "Side Left"
+msgstr "Lateral Esquerda"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Side Right"
+msgstr "Lateral Direita"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 0"
+msgstr "Auxiliar 0"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 1"
+msgstr "Auxiliar 1"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 2"
+msgstr "Auxiliar 2"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 3"
+msgstr "Auxiliar 3"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 4"
+msgstr "Auxiliar 4"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 5"
+msgstr "Auxiliar 5"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 6"
+msgstr "Auxiliar 6"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 7"
+msgstr "Auxiliar 7"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 8"
+msgstr "Auxiliar 8"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 9"
+msgstr "Auxiliar 9"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 10"
+msgstr "Auxiliar 10"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 11"
+msgstr "Auxiliar 11"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 12"
+msgstr "Auxiliar 12"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 13"
+msgstr "Auxiliar 13"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 14"
+msgstr "Auxiliar 14"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 15"
+msgstr "Auxiliar 15"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 16"
+msgstr "Auxiliar 16"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 17"
+msgstr "Auxiliar 17"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 18"
+msgstr "Auxiliar 18"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 19"
+msgstr "Auxiliar 19"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 20"
+msgstr "Auxiliar 20"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 21"
+msgstr "Auxiliar 21"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 22"
+msgstr "Auxiliar 22"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 23"
+msgstr "Auxiliar 23"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 24"
+msgstr "Auxiliar 24"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 25"
+msgstr "Auxiliar 25"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 26"
+msgstr "Auxiliar 26"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 27"
+msgstr "Auxiliar 27"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 28"
+msgstr "Auxiliar 28"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 29"
+msgstr "Auxiliar 29"
+
+#: ../src/pulse/channelmap.c:153
+msgid "Auxiliary 30"
+msgstr "Auxiliar 30"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Auxiliary 31"
+msgstr "Auxiliar 31"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Center"
+msgstr "Topo Centro"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Center"
+msgstr "Topo Central Centro"
+
+#: ../src/pulse/channelmap.c:159
+msgid "Top Front Left"
+msgstr "Topo Frontal Esquerda"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Front Right"
+msgstr "Topo Frontal Direita"
+
+#: ../src/pulse/channelmap.c:162
+msgid "Top Rear Center"
+msgstr "Topo Traseira Centro"
+
+#: ../src/pulse/channelmap.c:163
+msgid "Top Rear Left"
+msgstr "Topo Traseira Esquerda"
+
+#: ../src/pulse/channelmap.c:164
+msgid "Top Rear Right"
+msgstr "Topo Traseira Direita"
+
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+msgid "(invalid)"
+msgstr "(inválido)"
+
+#: ../src/pulse/channelmap.c:751
+msgid "Stereo"
+msgstr "Estéreo"
+
+#: ../src/pulse/channelmap.c:756
+msgid "Surround 4.0"
+msgstr "Surround 4.0"
+
+#: ../src/pulse/channelmap.c:762
+msgid "Surround 4.1"
+msgstr "Surround 4.1"
+
+#: ../src/pulse/channelmap.c:768
+msgid "Surround 5.0"
+msgstr "Surround 5.0"
+
+#: ../src/pulse/channelmap.c:774
+msgid "Surround 5.1"
+msgstr "Surround 5.1"
+
+#: ../src/pulse/channelmap.c:781
+msgid "Surround 7.1"
+msgstr "Surround 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "OK"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "Acesso negado"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "Comando desconhecido"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "Argumento inválido"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "Entidade existe! "
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "Entidade não existe"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "Ligação recusada"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "Erro de protocolo"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "Tempo expirou"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "Sem chave de autorização"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "Erro interno"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "Ligação terminou"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "Entidade terminada"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "Servidor Inválido"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "Inicialização do módulo falhou"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "Mau estado"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "Nenhuns dados"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "Versão de protocolo incompatível"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "Demasiado Grande"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "Não suportado"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "Código de erro desconhecido"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "Extensão não existe"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "Funcionalidade obsoleta"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "Implementação em falta"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "Cliente efectuou um fork"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() falhou"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "Não foi possível processar dados da cookie"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "Falha ao abrir ficheiro de configuração '%s': %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "Nenhuma cookie carregada. A tentar ligar sem cookie."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1403
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "Recebida mensagem para extensão desconhecida '%s'"
+
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Falhou ao esvaziar fluxo: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() falhou: %s\n"
+
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() falhou: %s\n"
+
+#: ../src/utils/pacat.c:302
+msgid "Stream successfully created.\n"
+msgstr "Fluxo criado com sucesso.\n"
+
+#: ../src/utils/pacat.c:305
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() falhou: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgstr "Métricas do Buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+
+#: ../src/utils/pacat.c:312
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "Métricas do Buffer: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:316
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:320
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "Ligado ao dispositivo %s (%u, %ssuspended).\n"
+
+#: ../src/utils/pacat.c:330
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "Erro de fluxo: %s\n"
+
+#: ../src/utils/pacat.c:340
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:342
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:350
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "Fluxo com falta de dados.%s \n"
+
+#: ../src/utils/pacat.c:357
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "Fluxo com excesso de dados.%s \n"
+
+#: ../src/utils/pacat.c:364
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "Fluxo iniciado.%s \n"
+
+#: ../src/utils/pacat.c:371
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:371
+msgid "not "
+msgstr "negação"
+
+#: ../src/utils/pacat.c:378
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:411
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "Ligação Estabelecida.%s \n"
+
+#: ../src/utils/pacat.c:414
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() falhou: %s\n"
+
+#: ../src/utils/pacat.c:442
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() falhou: %s\n"
+
+#: ../src/utils/pacat.c:448
+#, c-format
+msgid "pa_stream_connect_record() failed: %s\n"
+msgstr "pa_stream_connect_record() falhou: %s\n"
+
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Ligação falhou: %s\n"
+
+#: ../src/utils/pacat.c:495
+msgid "Got EOF.\n"
+msgstr "Obtive EOF.\n"
+
+#: ../src/utils/pacat.c:500
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() falhou: %s\n"
+
+#: ../src/utils/pacat.c:532
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() falhou: %s\n"
+
+#: ../src/utils/pacat.c:553
+msgid "Got signal, exiting.\n"
+msgstr "Recebido sinal, a sair.\n"
+
+#: ../src/utils/pacat.c:567
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "Falhou a obtenção da latência: %s\n"
+
+#: ../src/utils/pacat.c:572
+#, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgstr "Tempo: %0.3f sec; Latency: %0.0f usec. \r"
+
+#: ../src/utils/pacat.c:592
+#, c-format
+msgid "pa_stream_update_timing_info() failed: %s\n"
+msgstr "pa_stream_update_timing_info() falhou: %s\n"
+
+#: ../src/utils/pacat.c:605
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:727
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Método de resample inválido '%s'."
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Método de resample inválido '%s'."
+
+#: ../src/utils/pacat.c:813
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:842
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "Especificação da latência inválida '%s'\n"
+
+#: ../src/utils/pacat.c:849
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Método de resample inválido '%s'."
+
+#: ../src/utils/pacat.c:878
+#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
+msgstr "Especificação da amostra inválida\n"
+
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "demasiados argumentos.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "não foi possível obter informações da amostra: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Falha ao abrir ficheiro de som.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "não foi possível obter informações da amostra: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr "a gravar"
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
+msgstr "reprodução"
+
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() falhou.\n"
+
+#: ../src/utils/pacat.c:1051
+msgid "io_new() failed.\n"
+msgstr "io_new() falhou.\n"
+
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() falhou.\n"
+
+#: ../src/utils/pacat.c:1066
+#, fuzzy, c-format
+msgid "pa_context_connect() failed: %s\n"
+msgstr "pa_context_connect() falhou: %s"
+
+#: ../src/utils/pacat.c:1077
+msgid "time_new() failed.\n"
+msgstr "time_new() falhou.\n"
+
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() falhou.\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "Falhou ao suspender: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "Falhou ao restaurar: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "Atenção: Servidor de Som não local, suspender ignorado.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "Obtido SIGINT, a sair.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "Atenção: Processo filho terminado por sinal %u\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:248
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:128
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "Falhou a obtenção de estatísticas: %s\n"
+
+#: ../src/utils/pactl.c:134
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:140
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "Tamanho cache da amostra: %s\n"
+
+#: ../src/utils/pactl.c:149
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "Não foi possível obter informações do servidor: %s\n"
+
+#: ../src/utils/pactl.c:157
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:198
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "não foi possível obter informações do depósito: %s\n"
+
+#: ../src/utils/pactl.c:214
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tPrefis:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tPerfil Activo: %s\n"
+
+#: ../src/utils/pactl.c:290
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "não foi possível obter informações da fonte: %s\n"
+
+#: ../src/utils/pactl.c:306
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
+msgid "n/a"
+msgstr "n/d"
+
+#: ../src/utils/pactl.c:368
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "não foi possível obter informações do módulo: %s\n"
+
+#: ../src/utils/pactl.c:386
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:405
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "não foi possível obter informações do cliente: %s\n"
+
+#: ../src/utils/pactl.c:423
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:440
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "não foi possível obter informações da carta: %s\n"
+
+#: ../src/utils/pactl.c:458
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:472
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tPrefis:\n"
+
+#: ../src/utils/pactl.c:478
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tPerfil Activo: %s\n"
+
+#: ../src/utils/pactl.c:489
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:508
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:547
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:567
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:598
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "não foi possível obter informações da amostra: %s\n"
+
+#: ../src/utils/pactl.c:616
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#, c-format
+msgid "Failure: %s\n"
+msgstr "Falhou: %s\n"
+
+#: ../src/utils/pactl.c:680
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "Não foi possível enviar amostra: %s\n"
+
+#: ../src/utils/pactl.c:697
+msgid "Premature end of file\n"
+msgstr "Fim prematuro de ficheiro\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:880
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"Compilado com libpulse %s\n"
+"Linkado com libpulse %s\n"
+
+#: ../src/utils/pactl.c:926
+msgid "Please specify a sample file to load\n"
+msgstr "Por favor, especifique um ficheiro de amostra para carregar\n"
+
+#: ../src/utils/pactl.c:939
+msgid "Failed to open sound file.\n"
+msgstr "Falha ao abrir ficheiro de som.\n"
+
+#: ../src/utils/pactl.c:951
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:961
+msgid "You have to specify a sample name to play\n"
+msgstr "Tem de especificar um nome de amostra para reproduzir\n"
+
+#: ../src/utils/pactl.c:973
+msgid "You have to specify a sample name to remove\n"
+msgstr "Tem de especificar um nome de amostra para remover\n"
+
+#: ../src/utils/pactl.c:982
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "Tem de especificar um índice de entrada de depósito e um depósito\n"
+
+#: ../src/utils/pactl.c:992
+msgid "You have to specify a source output index and a source\n"
+msgstr "Tem de especificar um índice de saída de fonte e uma fonte\n"
+
+#: ../src/utils/pactl.c:1007
+msgid "You have to specify a module name and arguments.\n"
+msgstr "Tem de especificar um nome de módulo e argumentos.\n"
+
+#: ../src/utils/pactl.c:1027
+msgid "You have to specify a module index\n"
+msgstr "Tem de especificar um índice de módulo\n"
+
+#: ../src/utils/pactl.c:1037
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Não pode especificar mais do que um depósito. Tem de especificar um valor "
+"booleano.\n"
+
+#: ../src/utils/pactl.c:1050
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Não pode especificar mais do que uma fonte. Tem de especificar um valor "
+"booleano.\n"
+
+#: ../src/utils/pactl.c:1062
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
+
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
+
+#: ../src/utils/pactl.c:1099
+msgid "No valid command specified.\n"
+msgstr "O comando especificado é inválido.\n"
+
+#: ../src/utils/pactl.c:1122
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() falhou: %s"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "Não foi possível processar a linha de comando.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "Servidor: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "Fonte: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "Sink: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "Cookie: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "Não foi possível processar os dados da cookie\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "Não foi possível gravar os dados da cookie\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "Não foi possível carregar o ficheiro de configuração do cliente\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "Não foi possível ler os dados de configuração do ambiente\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "Falhou ao obter FQDN.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "Não foi possível carregar os dados da cookie\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "Ainda não implementado.\n"
+
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:83
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:91
+msgid "Failed to kill PulseAudio daemon."
+msgstr "Não foi possível terminar o serviço PulseAudio."
+
+#: ../src/utils/pacmd.c:99
+msgid "Daemon not responding."
+msgstr "Serviço não responde."
+
+#: ../src/utils/pacmd.c:146
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#, c-format
+msgid "write(): %s"
+msgstr "write(): %s"
+
+#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+msgid "Cannot access autospawn lock."
+msgstr "Impossível aceder ao lock \"autospawn\"."
+
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA acordou-nos para escrever novos dados para o dispositivo, mas não havia "
+"nada para escrever!\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA.\n"
+"Fomos acordados pelo conjunto POLLOUT -- contudo uma chamada a seguir de "
+"snd_pcm_avail() retornou 0 ou outro valor < min_avail."
+
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA acordou-nos para ler novos dados do dispositivo, mas não havia nada "
+"para ler!\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA.\n"
+"Fomos acordados pelo conjunto POLLIN -- contudo uma chamada a seguir de "
+"snd_pcm_avail() retornou 0 ou outro valor < min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+msgid "Off"
+msgstr "Desligado"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+msgid "High Fidelity Playback (A2DP)"
+msgstr "Reprodução Alta Fidelidade (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Telefonia Duplex (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:151
+msgid "PulseAudio Sound Server"
+msgstr "Servidor de Som PulseAudio"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Mono Analógico"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Estéreo Analógico"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Estéreo Digital (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Estéreo Digital (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analog Surround 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Surround Digital 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analog Surround 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analog Surround 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analog Surround 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Surround Digital 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analog Surround 7.1"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Fluxo criado com sucesso\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Erro de fluxo: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Ligação Estabelecida.\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilado com libpulse %s\n"
+#~ "Linkado com libpulse %s\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Falha ao abrir o ficheiro '%s'\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Utilizando especificação da amostra '%s'\n"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Saída %s + Entrada %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Saída %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Entrada %s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index c9249a68..fd4f5391 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2008-11-21 01:21-0300\n"
"Last-Translator: Henrique (LonelySpooky) Junior <lspooky@fedoraproject.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br@redhat.com>\n"
@@ -18,51 +18,7 @@ msgstr ""
"X-Poedit-Language: Brazilian Portuguese\n"
"X-Poedit-Country: Brazil\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -71,7 +27,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -80,7 +36,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -89,12 +45,25 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
#, fuzzy
msgid "Internal Audio"
msgstr "Erro interno"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr ""
@@ -166,104 +135,104 @@ msgstr "Não foi possível obter auth: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit respondeu com '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Sinal %s recebido."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Saindo."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falha em encontrar o usuário '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falha em encontrar o grupo '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Usuário '%s' (UID %lu) e grupo '%s' (GID %lu) encontrados."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "O GID do usuário'%s' e do grupo '%s' não combinam."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "O diretório Home do usuário '%s' não é '%s', ignorando."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falha em criar '%s': %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falha em alterar a lista de grupos: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falha em mudar o GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falha em mudar o UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Os privilégios do root foram retirados com sucesso."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "O modo ampliado do sistema não tem suporte nessa plataforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Falha em interpretar a linha de comando."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -276,48 +245,48 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de alta prioridade foi habilitado para esta configuração, "
"mas não é permitida pela política."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO aumentado com sucesso"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO falhou: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de tempo real foi habilitado pela configuração, mas não é "
"permitido pela política."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "O daemon não está em execução"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon executando como PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Falha em encerrar o daemon: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -325,161 +294,171 @@ msgstr ""
"Este programa não é para ser executado como root (a não ser que --system "
"seja especificado)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
#, fuzzy
msgid "Root privileges required."
msgstr "Privilégios de rot são requeridos."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start não tem suporte para instâncias de sistemas."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Executando em no modo system, mas --disallow-exit não foi configurado!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Executando no modo system, mas --disallow-module-loading não foi configurado!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Executando no modo system, desabilitando forçadamente o exit idle time!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Falha em adquirir o stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "O pipe falhou: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "O fork() falhou: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "A operação read() falhou: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Falha na partida do daemon."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Os daemons foram iniciados com sucesso."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Este é o PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilação: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilação CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Executando no host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "O tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte do Valgrind: sim"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte do Valgrind: não"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Executando em modo valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Build otimizado: sim"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Build otimizado: não"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Falha em obter o ID da máquina"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Usando o diretório de runtime %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponíveis! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -487,32 +466,32 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Daemon terminado."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -660,15 +639,15 @@ msgstr ""
" -n Não carrega o arquivo de script "
"padrão\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize espera argumento booleano"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail espera argumento booleano"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -676,55 +655,55 @@ msgstr ""
"--log-level espera um argumento em nível de log (seja numérico na faixa de "
"0..4 seja algum entre debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority espera um argumento booleano"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime espera um argumento booleano"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera um argumento booleano"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
#, fuzzy
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit argumento booleano"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file espera argumento booleano"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Log target inválido: use 'syslog', 'stderr' ou 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
#, fuzzy
msgid "--log-time expects boolean argument"
msgstr "--realtime espera um argumento booleano"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
#, fuzzy
msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit argumento booleano"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Método de reamostragem inválido '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system espera argumento booleano"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit espera argumento booleano"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm espera argumento booleano"
@@ -763,77 +742,82 @@ msgstr "Uso: %s\n"
msgid "Load Once: %s\n"
msgstr "Carrega uma vez: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Alvo do log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nível de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de reamostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não tem suporte nessa plataforma."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de amostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taxa de amostragem inválida '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Números de fragmentos inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -881,237 +865,237 @@ msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Fronto-cental"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Frontal esquerdo"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Frontal direito"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Posterior central"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Posterior esquerdo"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Posterior direito"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Emissor de baixa freqüência"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Frontal Esquerdo do centro"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Frontal Direito do centro"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Lateral esquedo"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Lateral direito"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Auxiliar 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Auxiliar 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Auxiliar 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Auxiliar 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Auxiliar 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Auxiliar 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Auxiliar 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Auxiliar 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Auxiliar 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Auxiliar 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Auxiliar 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Auxiliar 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Auxiliar 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Auxiliar13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Auxiliar 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Auxiliar 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Auxiliar 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Auxiliar 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Auxiliar 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Auxiliar 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Auxiliar 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Auxiliar 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Auxiliar 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Auxiliar 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Auxiliar 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Auxiliar 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Auxiliar 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Auxiliar 26"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Auxiliar 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Auxiliar 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Auxiliar 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Auxiliar 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Central Superior"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Central Frontal Superior"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Frontal Superior Esquerdo"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Fontal Superior Direito"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Central Superior Posterior"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Posterior Superior Esquerdo"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Posterior Superior Direito"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(Inválido)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr ""
@@ -1272,173 +1256,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Foi recebida uma mensagem para uma extensão desconhecida '%s'"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Falha em drenar o fluxo: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Drenado o fluxo de playback.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Drenando a conexão par ao servidor.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() falhou: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() falhou: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "O fluxo (stream) foi criado com sucesso.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() falhou: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metrica do buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Métrica do buffer: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Usando a espeficifação de amostragem '%s', mapa do canal '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Conectado ao dispositivo %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Erro de fluxo: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Dispositivo de fluxo suspenso.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Dispositivo de fluxo prosseguiu.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Extravazamento do fluxo. %s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "O fluxo extravazou.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "O fluxo iniciou: %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "O fluxo foi movido para o dispositivo %s (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "não"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, fuzzy, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Extravazamento do fluxo. %s\n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Conexão estabelecida.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() falhou: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() falhou: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falhou: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Falha na conexão: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Falha em drenar o fluxo: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Drenado o fluxo de playback.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Drenando a conexão par ao servidor.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Atingiu EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() falhou: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() falhou: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Sinal recebido, saindo (exiting).\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Falhou em obter a latência: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tempo: %0.3f s; Latência: %0.0f us. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Falha em pa_stream_update_timing_info(): %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1464,8 +1443,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1488,6 +1469,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opções]\n"
"\n"
@@ -1534,7 +1520,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1545,88 +1531,133 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mapa de canal inválido '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Método de reamostragem inválido '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canal inválido '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificação de latência inválida '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificação do tempo do processo inválida '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Método de reamostragem inválido '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Especificação de amostragem inválida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Argumentos em excesso.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Falha em obter informações sobre a amostragem: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Falha em abrir o arquivo de som.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Falha em obter informações sobre a amostragem: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "O mapeamento do canal não casa com a especificação da amostragem\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "gravando"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "playback"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Argumentos em excesso.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falhou.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() falhou.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falhou.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() falhou: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() falhou.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falhou.\n"
@@ -1658,8 +1689,7 @@ msgstr ""
"AVISO: O servidor de som não é local, Sound server is not local, não está em "
"suspenso.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Recebido o SIGINT, saindo.\n"
@@ -1687,7 +1717,7 @@ msgstr ""
" -s, --server=SERVER Nome do servidor a ser conectado\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1698,32 +1728,32 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Falha em obter as estatísticas: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Em uso no momento: %u blocos contendo %s bytes no total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Alocado por todo o tempo: %u blocos contendo %s bytes no total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Tamanho do cache para amostragem: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Falha em obter a informação do servidor: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, fuzzy, c-format
msgid ""
"User name: %s\n"
@@ -1745,12 +1775,12 @@ msgstr ""
"Fonte padrão %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Falha em obter a informação do destino: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, fuzzy, c-format
msgid ""
"Sink #%u\n"
@@ -1784,12 +1814,22 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, c-format
+msgid "\tPorts:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "O pipe falhou: %s"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Falha em obter a informação da fonte: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, fuzzy, c-format
msgid ""
"Source #%u\n"
@@ -1823,20 +1863,20 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Falha em obter a informação do módulo: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, fuzzy, c-format
msgid ""
"Module #%u\n"
@@ -1852,12 +1892,12 @@ msgstr ""
"Contador de uso: %s\n"
"Auto descarregar: %s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Falhou ao obter a informação do cliente: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, fuzzy, c-format
msgid ""
"Client #%u\n"
@@ -1872,12 +1912,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Falha em obter a informação do autoload: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, fuzzy, c-format
msgid ""
"Card #%u\n"
@@ -1893,22 +1933,22 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "O pipe falhou: %s"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Falha na obtenção da informação de entrada do destino: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, fuzzy, c-format
msgid ""
"Sink Input #%u\n"
@@ -1942,12 +1982,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Falha em obter informações sobre a saída da fonte: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, fuzzy, c-format
msgid ""
"Source Output #%u\n"
@@ -1976,12 +2016,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Falha em obter informações sobre a amostragem: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, fuzzy, c-format
msgid ""
"Sample #%u\n"
@@ -2010,22 +2050,21 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Falha: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Falha em carregar a amostra: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Fim prematuro do arquivo\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:826
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2041,6 +2080,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2070,7 +2111,7 @@ msgstr ""
" -n, --client-name=NAME Como chamar este cliente no "
"servidor \n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2081,49 +2122,46 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Por favor, especifique o arquivo de amostra a ser carregado\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Falha em abrir o arquivo de som.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Você deve especificar um nome da amostra para ser executada\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Você deve especificar um nome da amostra para ser removida\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "Você tem que especificar um índice de saída da fonte e uma fonte\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Você deve especificar um nome do módulo e seus argumentos\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Você deve especificar um índice de um módulo\n"
-#: ../src/utils/pactl.c:972
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1037
+#, fuzzy
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2131,8 +2169,8 @@ msgstr ""
"Você não pode especificar mais de um destino. Pelo menos um valor booleano "
"deve ser especificado.\n"
-#: ../src/utils/pactl.c:985
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1050
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2140,18 +2178,29 @@ msgstr ""
"Você não pode especificar mais de uma fonte. Pelo menos um valor booleano "
"deve ser especificado.\n"
-#: ../src/utils/pactl.c:997
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1062
+#, fuzzy
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr ""
+"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr ""
+"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Nenhum comando válido especificado.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() falhou: %s"
@@ -2236,127 +2285,48 @@ msgstr "Falha em carregar os dados do cookie\n"
msgid "Not yet implemented.\n"
msgstr "Ainda não implementado.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Falha em cancelar o daemon do PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Daemon não responde."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Fluxo criado com sucesso\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Erro de fluxo: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Conexão estabelecida.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Mostra essa ajuda\n"
-" --version Mostra a versão\n"
-"\n"
-" -v, --verbose Habilida a operação detalhada\n"
-"\n"
-" -s, --server=SERVER O nome do servidor a ser conectado\n"
-" -d, --device=DEVICE O nome do destino a ser conectado\n"
-" -n, --client-name=NAME Como chamar este cliente no "
-"servidor\n"
-" --stream-name=NAME Como chamar este fluxo no servidor\n"
-" --volume=VOLUME Especifica o volume inicial (linear) "
-"no intervalo 0...65536\n"
-" --channel-map=CHANNELMAP Define o mapa do canal para uso\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilado com libpulse %s\n"
-"Linkado com libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mapa de canais inválido\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Falha ao abrir o arquivo '%s'\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "O mapa dos canais não coincide com o arquivo.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Usando a especificação da amostragem '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Não foi possível acessar a trava de autogeração."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2367,7 +2337,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2378,38 +2348,92 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Fluxo criado com sucesso\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Erro de fluxo: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Conexão estabelecida.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Mostra essa ajuda\n"
+#~ " --version Mostra a versão\n"
+#~ "\n"
+#~ " -v, --verbose Habilida a operação detalhada\n"
+#~ "\n"
+#~ " -s, --server=SERVER O nome do servidor a ser "
+#~ "conectado\n"
+#~ " -d, --device=DEVICE O nome do destino a ser "
+#~ "conectado\n"
+#~ " -n, --client-name=NAME Como chamar este cliente no "
+#~ "servidor\n"
+#~ " --stream-name=NAME Como chamar este fluxo no "
+#~ "servidor\n"
+#~ " --volume=VOLUME Especifica o volume inicial "
+#~ "(linear) no intervalo 0...65536\n"
+#~ " --channel-map=CHANNELMAP Define o mapa do canal para uso\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilado com libpulse %s\n"
+#~ "Linkado com libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mapa de canais inválido\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Falha ao abrir o arquivo '%s'\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "O mapa dos canais não coincide com o arquivo.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Usando a especificação da amostragem '%s'\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/sr.po b/po/sr.po
index 3cf0977e..b8c861fe 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: MiloÅ¡ KomarÄević <kmilos@gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
@@ -19,52 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Ðналогни моно"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Ðналогни Ñтерео"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Дигитални Ñтерео (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Дигитални Ñтерео (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Ðналогни окружујући 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Дигитални окружујући 4.0 (IEC958/AC3)"
-
-# Surround можемо превеÑти амбијентални или окружни или можда чак и Ñараунд? -- Игор
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Ðналогни окружујући 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Ðналогни окружујући 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Ðналогни окружујући 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Дигитални окружујући 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Ðналогни окружујући 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +32,7 @@ msgstr ""
"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
"овај проблем ALSA програмерима."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -90,7 +45,7 @@ msgstr ""
"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
"овај проблем ALSA програмерима."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -103,11 +58,24 @@ msgstr ""
"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
"овај проблем ALSA програмерима."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Унутрашњи звук"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Модем"
@@ -177,107 +145,107 @@ msgstr "Ðе могу добити овлашћење: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit је одговорио Ñа „%s“"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Добих Ñигнал %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Ðапуштам."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе могу наћи кориÑника „%s“."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе могу наћи групу „%s“."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Ðађени Ñу кориÑник „%s“ (UID %lu) и група „%s“ (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID кориÑника „%s“ Ñе не поклапа Ñа групом „%s“."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Лични директоријум кориÑника „%s“ није „%s“, занемарујем."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "ÐеуÑпешно прављење „%s“: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "ÐеуÑпешна промена групног ÑпиÑка: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "ÐеуÑпешна промена GID-а: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "ÐеуÑпешна промена UID-а: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "УÑпешно одбачена root овлашћења."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Режим за читав ÑиÑтем није подржан на овој платформи."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) није уÑпело: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "ÐеуÑпешно тумачење командне линије."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Ðалазимо Ñе у групи „%s“ која дозвољава виÑокоприоритетно раÑпоређивање."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Ðалазимо Ñе у групи „%s“ која дозвољава ÑтварновременÑко раÑпоређивање."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit нам је дао овлашћење за добијање виÑоког приоритета."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit одбија овлашћење за добијање виÑоког приоритета."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit нам је дао овлашћење за добијање рада у Ñтварном времену."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit одбија овлашћење за добијање рада у Ñтварном времену."
#
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -297,48 +265,48 @@ msgstr ""
"или повећати ограничења за RLIMIT_NICE/RLIMIT_RTPRIO ÑредÑтва овог кориÑника "
"како би омогућили ÑтварновременÑко или виÑокоприоритетно раÑпоређивање."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ВиÑокоприоритетно раÑпоређивање је омогућено у подешавањима, али политика то "
"не дозвољава."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "УÑпешно повећано RLIMIT_RTPRIO ограничење"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "ÐеуÑпешно поÑтављање RLIMIT_RTPRIO-а:%s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "ОдуÑтајем од CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"СтварновременÑко раÑпоређивање је омогућено у подешавањима, али политика то "
"не дозвољава."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Демон није покренут"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Демон је покренут Ñа PID-ом %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ÐеуÑпешно убијање демона: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -346,161 +314,171 @@ msgstr ""
"Ðије намеравано да Ñе овај програм покреће из root налога (оÑим у Ñлучају "
"када је --system наведено)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Потребна Ñу root овлашћења."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start није подржано за ÑиÑтемÑке примерке."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Покренуто у ÑиÑтемÑком режиму, али --disallow-exit није поÑтављено!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Покренуто у ÑиÑтемÑком режиму, али --disallow-module-loading није поÑтављено!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Покренуто у ÑиÑтемÑком режиму, приÑилно онемогућујем SHM режим!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Покренуто у ÑиÑтемÑком режиму, приÑилно онемогућујем гашење поÑле одређеног "
"времена мировања!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "ÐеуÑпешно проналажење Ñтандардног улаза/излаза."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "ÐеуÑпешно пуштање података кроз цев: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "ÐеуÑпела функција fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "ÐеуÑпела функција read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ÐеуÑпешно покретање демона."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Демон уÑпешно покренут."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ово је PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Домаћин компајлирања: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS компајлирања: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Покренут на домаћину: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Ðашао %u процеÑор(а)"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Величина Ñтранице је %lu бајтова"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Компајлирано Ñа подршком за Valgrind: да"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Компајлирано Ñа подршком за Valgrind: не"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Покренут у Valgrind режиму: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Оптимизована изградња: да"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Оптимизована изградња: не"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG дефиниÑан, Ñва обавештења иÑкључена."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH дефиниÑан, Ñамо обавештења брзе путање иÑкључена."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Сва обавештења омогућена."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "ÐеуÑпешно добављање ИБ машине"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ИБ машине је %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ИБ машине је %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "КориÑти Ñе %s извршни директоријум."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "КориÑти Ñе %s директоријум Ñтања."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Покренуто у ÑиÑтемÑком режиму: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "ÐеуÑпела функција pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ДоÑтупни Ñу нови бројачи виÑоке резолуције! Пријатно!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -508,31 +486,31 @@ msgstr ""
"Ваше језгро није добро подешено за pulseaudio! Препоручује Вам Ñе да "
"кориÑтите Linux језгро Ñа омогућеним бројачима виÑоке резолуције."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "ÐеуÑпела функција pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "ÐеуÑпешно покретање демона."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Демон је покренут без иједног учитаног модула, одбија да ради."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Покретање демона уÑпешно."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Покренуто гашење демона."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Рад демона је прекинут."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -683,15 +661,15 @@ msgstr ""
" -n Ðе учитавај подразумевану датотеку "
"Ñкрипте.\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -699,53 +677,53 @@ msgstr ""
"--log-level очекује параметар за ниво опширноÑти (нумеричка вредноÑÑ‚ између "
"0 и 4 или једно од: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"ÐеиÑправан циљни дневник: кориÑтите једно од „syslog“, „stderr“ или „auto“."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "ÐеиÑправан начин диÑкретизације „%s“."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit очекује логичку вредноÑÑ‚"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm очекује логичку вредноÑÑ‚"
@@ -784,77 +762,82 @@ msgstr "Употреба: %s\n"
msgid "Load Once: %s\n"
msgstr "Учитај једном: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Путања: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ÐеиÑправан циљни дневник „%s“."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ÐеиÑправан ниво опширноÑти у дневнику „%s“."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ÐеиÑправан начин диÑкретизације „%s“."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ÐеиÑправан rlimit „%s“."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit није подржан на овој платформи."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ÐеиÑправан формат узорка „%s“."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ÐеиÑправна учеÑтаноÑÑ‚ диÑкретизације „%s“."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ÐеиÑправни канали узорка „%s“."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ÐеиÑправна мапа канала „%s“."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ÐеиÑправан број одломака „%s“."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ÐеиÑправна величина одломка „%s“."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ÐеиÑправан ниво приоритета „%s“."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ÐеуÑпело отварање датотеке подешавања: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -907,237 +890,237 @@ msgstr ""
"СиÑтемÑка политика Ñпречава PulseAudio-у да добије ÑтварновременÑко "
"раÑпоређивање."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Моно"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Предњи централни"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Предњи леви"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Предњи деÑни"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "ПозадинÑки централни"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "ПозадинÑки леви"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "ПозадинÑки деÑни"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Звучник за ниÑке фреквенције"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Предњи лево од центра"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Предњи деÑно од центра"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Лева Ñтрана"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "ДеÑна Ñтрана"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Споредни 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Споредни 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Споредни 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Споредни 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Споредни 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Споредни 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Споредни 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Споредни 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Споредни 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Споредни 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Споредни 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Споредни 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Споредни 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Споредни 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Споредни 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Споредни 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Споредни 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Споредни 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Споредни 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Споредни 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Споредни 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Споредни 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Споредни 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Споредни 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Споредни 024"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Споредни 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Споредни 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Споредни 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Споредни 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Споредни 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Споредни 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Споредни 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Горњи централни"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Горњи предњи централни"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Горњи предњи леви"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Горњи предњи деÑни"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Горњи позадинÑки централни"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Горњи позадинÑки леви"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Горњи позадинÑки деÑни"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(неиÑправно)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Стерео"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Окружујући 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Окружујући 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Окружујући 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Окружујући 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Окружујући 7.1"
@@ -1299,174 +1282,169 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Примио поруку за непознати локал „%s“"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ÐеуÑпешно иÑушивање тока: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Репродукциони ток иÑушен.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Веза до Ñервера Ñе иÑушује.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "ÐеуÑпела функција pa_stream_write(): %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "ÐеуÑпела функција pa_stream_peek(): %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Ток уÑпешно направљен.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "ÐеуÑпешно pa_stream_get_buffer_attr(): %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Метрике бафера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Метрике бафера: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "КориÑтим Ñледеће параметре узорка „%s“ и мапу канала „%s“.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Прикључен на уређај %s (%u, %s обуÑтављено).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Грешка тока: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Уређај тока обуÑтављен.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Уређај тока наÑтављен.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Ток није попуњен. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Ток Ñе прелива.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Ток покренут. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Ток пребачен на уређај %s (%u, %s обуÑтављено). %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "није"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Параметри бафера тока Ñу промењени. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Веза уÑпоÑтављена.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "ÐеуÑпела функција pa_stream_new() : %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "ÐеуÑпела функција pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "ÐеуÑпела функција pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "ÐеуÑпешно повезивање: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ÐеуÑпешно иÑушивање тока: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Репродукциони ток иÑушен.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Веза до Ñервера Ñе иÑушује.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Дошао до краја датотеке.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "ÐеуÑпела функција read(): %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "ÐеуÑпела функција write(): %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Добио Ñигнал, излазим.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Ðемогу добити вредноÑÑ‚ кашњења: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Време: %0.3f s. Кашњење: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "ÐеуÑпела функција pa_stream_update_timing_info(): %s\n"
# Шта да радимо Ñа downmix и upmix. ПреÑликај навише и преÑликај наниже? -- Игор
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1492,8 +1470,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1516,6 +1496,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s[опције]\n"
"\n"
@@ -1562,7 +1547,7 @@ msgstr ""
" --process-time=БÐЈТОВРТражи наведено време процеÑа по "
"захтеву у бајтовима.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1573,88 +1558,133 @@ msgstr ""
"Компајлирано Ñа libpulse %s\n"
"Повезано Ñа libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "ÐеиÑправна мапа канала „%s“\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "ÐеиÑправан начин диÑкретизације „%s“."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "ÐеиÑправна мапа канала „%s“\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "ÐеиÑправан параметар кашњења „%s“\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "ÐеиÑправан параметар за време процеÑа „%s“\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "ÐеиÑправан начин диÑкретизације „%s“."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "ÐеиÑправни параметри узорка\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Превише параметара.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Ðије уÑпело добављање података о узорку: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ðије уÑпело отварање звучне датотеке.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Ðије уÑпело добављање података о узорку: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Мапа канала Ñе не поклапа Ñа параметрима узорка\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Отварам ток %s Ñа Ñледећим параметрима узорка „%s“.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "Ñнима"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "пушта"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Превише параметара.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "ÐеуÑпела функција pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "ÐеуÑпела функција io_new() \n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "ÐеуÑпела функција pa_context_new().\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "ÐеуÑпела функција pa_context_connect(): %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "ÐеуÑпела функција time_new() \n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "ÐеуÑпела функција pa_mainloop_run().\n"
@@ -1684,8 +1714,7 @@ msgstr "ÐеуÑпешно наÑтављање: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "УПОЗОРЕЊЕ: Звучни Ñервер није локални, не зауÑтављам.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Добих SIGINT, излазим.\n"
@@ -1713,7 +1742,7 @@ msgstr ""
" -s, --server=СЕРВЕР Име Ñервера Ñа којим Ñе повезује\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1724,32 +1753,32 @@ msgstr ""
"Компајлирано Ñа libpulse %s\n"
"Повезано Ñа libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "ÐеуÑпешно добављање ÑтатиÑтике: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Тренутно у употреби: %u блокова Ñадржи укупно %s бајтова.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Смештено од покретања: %u блокова Ñадржи укупно %s бајтова.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Величина кеш меморије узорка: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "ÐеуÑпешно добијање података о Ñерверу: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1772,12 +1801,12 @@ msgstr ""
"Подразумевани извор: %s\n"
"Колачић: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "ÐеуÑпешно добијање података о Ñливнику: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1816,12 +1845,22 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tПрофили:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tÐктивни профил: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Ðије уÑпело добављање података о извору: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1860,20 +1899,20 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "непознато"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "ÐеуÑпешно добијање података о модулу: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1890,12 +1929,12 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "ÐеуÑпешно добијање података о клијенту: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1910,12 +1949,12 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "ÐеуÑпешно добијање података о картици: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1932,22 +1971,22 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tПрофили:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tÐктивни профил: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Ðије уÑпело добијање података о улазу Ñливника: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1984,12 +2023,12 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Ðије уÑпело добијање података о излазу извора: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2018,12 +2057,12 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Ðије уÑпело добављање података о узорку: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2054,23 +2093,22 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "ÐеуÑпех: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Ðије уÑпело учитавање узорка: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Прерани крај датотеке\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2085,6 +2123,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2116,7 +2156,7 @@ msgstr ""
" -n, --client-name=ИМЕ Како назвати овог клијента на "
"Ñерверу\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2127,71 +2167,74 @@ msgstr ""
"Компајлирано Ñа libpulse %s\n"
"Повезано Ñа libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Ðаведите датотеку узорка коју треба учитати\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Ðије уÑпело отварање звучне датотеке.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Отварам ток %s Ñа Ñледећим параметрима узорка „%s“.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Морате навеÑти име узорка којег желите пуÑтити\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Морате навеÑти име узорка којег желите уклонити\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ ÑƒÐ»Ð°Ð·Ð° у Ñливнику и Ñливник\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð·Ð»Ð°Ð·Ð° у извору и извор\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Морате навеÑти име и параметре модула.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "Можете навеÑти Ñамо један Ñливник. Морате навеÑти логичку вредноÑÑ‚.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "Можете навеÑти Ñамо један извор. Морате навеÑти логичку вредноÑÑ‚.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸Ñ†Ðµ и име профила\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸Ñ†Ðµ и име профила\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸Ñ†Ðµ и име профила\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Ðи једна иÑправна наредба није наведена.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "ÐеуÑпела функција pa_context_connect(): %s"
@@ -2277,129 +2320,49 @@ msgstr "ÐеуÑпешно учитавање датотека колачића\
msgid "Not yet implemented.\n"
msgstr "Ðије још имплементирано.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Ðије уÑпело убијање PulseAudio демона."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Демон Ñе не одазива."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Ток уÑпешно направљен\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Грешка тока: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Веза уÑтановљена.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [опције] [ДÐТОТЕКÐ]\n"
-"\n"
-" -h, --help Прикажи ову помоћ\n"
-" --version Прикажи верзију\n"
-"\n"
-" -v, --verbose Омогући опширни Ð¾Ð¿Ð¸Ñ Ñ€Ð°Ð´ÑšÐ¸\n"
-"\n"
-" -s, --server=СЕРВЕР Име Ñервера на који Ñе повезује\n"
-" -d, --device=УРЕЂÐЈ Име Ñливника на које Ñе повезује\n"
-" -n, --client-name=ИМЕ Како назвати овог клијента на "
-"Ñерверу\n"
-" --stream-name=ИМЕ Како назвати овај ток на Ñерверу\n"
-" --volume=ГЛÐСÐОСТ Ðаведи почетну (линеарну) јачину "
-"звука из опÑега 0...65536\n"
-" --channel-map=ÐœÐПÐКÐÐÐЛРПоÑтави мапу канала која ће Ñе "
-"кориÑтити\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Компајлирано Ñа libpulse %s\n"
-"Повезано Ñа libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "ÐеиÑправна мапа канала\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ÐеуÑпело отварање датотеке „%s“\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Мапа канала Ñе не поклапа Ñа датотеком.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "КориÑте Ñе Ñледећи параметри узорка „%s“\n"
-
# Како превеÑти autospawn (могућноÑÑ‚ прављења или покретања процеÑа из иÑтог) -- Игор
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Ðије могуће приÑтупити датотеци закључавања за Ñамоумножавање."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2416,7 +2379,7 @@ msgstr ""
"Пробуђени Ñмо Ñа поÑтављеним POLLOUT-ом -- али Ñледећи snd_pcm_avail() је "
"вратио 0 или неку другу вредноÑÑ‚ мању од min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2433,34 +2396,129 @@ msgstr ""
"Пробуђени Ñмо Ñа поÑтављеним POLLIN-ом -- али Ñледећи snd_pcm_avail() је "
"вратио 0 или неку другу вредноÑÑ‚ мању од min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Излаз %s + улаз %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Излаз %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Улаз %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "ИÑкључено"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "Репродукција виÑоке тачноÑти (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "ДвоÑтрано телефонирање (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio звучни ÑиÑтем"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Ðналогни моно"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Ðналогни Ñтерео"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Дигитални Ñтерео (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Дигитални Ñтерео (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Ðналогни окружујући 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Дигитални окружујући 4.0 (IEC958/AC3)"
+
+# Surround можемо превеÑти амбијентални или окружни или можда чак и Ñараунд? -- Игор
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Ðналогни окружујући 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Ðналогни окружујући 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Ðналогни окружујући 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Дигитални окружујући 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Ðналогни окружујући 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Излаз %s + улаз %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Излаз %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Улаз %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Ток уÑпешно направљен\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Грешка тока: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Веза уÑтановљена.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [опције] [ДÐТОТЕКÐ]\n"
+#~ "\n"
+#~ " -h, --help Прикажи ову помоћ\n"
+#~ " --version Прикажи верзију\n"
+#~ "\n"
+#~ " -v, --verbose Омогући опширни Ð¾Ð¿Ð¸Ñ Ñ€Ð°Ð´ÑšÐ¸\n"
+#~ "\n"
+#~ " -s, --server=СЕРВЕР Име Ñервера на који Ñе повезује\n"
+#~ " -d, --device=УРЕЂÐЈ Име Ñливника на које Ñе повезује\n"
+#~ " -n, --client-name=ИМЕ Како назвати овог клијента на "
+#~ "Ñерверу\n"
+#~ " --stream-name=ИМЕ Како назвати овај ток на Ñерверу\n"
+#~ " --volume=ГЛÐСÐОСТ Ðаведи почетну (линеарну) јачину "
+#~ "звука из опÑега 0...65536\n"
+#~ " --channel-map=ÐœÐПÐКÐÐÐЛРПоÑтави мапу канала која ће Ñе "
+#~ "кориÑтити\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Компајлирано Ñа libpulse %s\n"
+#~ "Повезано Ñа libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "ÐеиÑправна мапа канала\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "ÐеуÑпело отварање датотеке „%s“\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Мапа канала Ñе не поклапа Ñа датотеком.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "КориÑте Ñе Ñледећи параметри узорка „%s“\n"
diff --git a/po/sr@latin.po b/po/sr@latin.po
index 4ffaad20..e5b0f7b1 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: MiloÅ¡ KomarÄević <kmilos@gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
@@ -19,52 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analogni mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analogni stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Digitalni stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Digitalni stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analogni okružujući 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digitalni okružujući 4.0 (IEC958/AC3)"
-
-# Surround možemo prevesti ambijentalni ili okružni ili možda Äak i saraund? -- Igor
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analogni okružujući 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analogni okružujući 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analogni okružujući 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digitalni okružujući 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analogni okružujući 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +32,7 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u „%s“ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -90,7 +45,7 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u „%s“ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -103,11 +58,24 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u „%s“ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Unutrašnji zvuk"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Modem"
@@ -177,107 +145,107 @@ msgstr "Ne mogu dobiti ovlašćenje: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit je odgovorio sa „%s“"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Dobih signal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Napuštam."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ne mogu naći korisnika „%s“."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ne mogu naći grupu „%s“."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Nađeni su korisnik „%s“ (UID %lu) i grupa „%s“ (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID korisnika „%s“ se ne poklapa sa grupom „%s“."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "LiÄni direktorijum korisnika „%s“ nije „%s“, zanemarujem."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Neuspešno pravljenje „%s“: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Neuspešna promena grupnog spiska: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Neuspešna promena GID-a: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Neuspešna promena UID-a: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "UspeÅ¡no odbaÄena root ovlašćenja."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Režim za Äitav sistem nije podržan na ovoj platformi."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nije uspelo: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "NeuspeÅ¡no tumaÄenje komandne linije."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Nalazimo se u grupi „%s“ koja dozvoljava visokoprioritetno raspoređivanje."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Nalazimo se u grupi „%s“ koja dozvoljava stvarnovremensko raspoređivanje."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nam je dao ovlašćenje za dobijanje visokog prioriteta."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit odbija ovlašćenje za dobijanje visokog prioriteta."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nam je dao ovlašćenje za dobijanje rada u stvarnom vremenu."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit odbija ovlašćenje za dobijanje rada u stvarnom vremenu."
#
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -298,48 +266,48 @@ msgstr ""
"korisnika kako bi omogućili stvarnovremensko ili visokoprioritetno "
"raspoređivanje."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Visokoprioritetno raspoređivanje je omogućeno u podešavanjima, ali politika "
"to ne dozvoljava."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "UspeÅ¡no povećano RLIMIT_RTPRIO ograniÄenje"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Neuspešno postavljanje RLIMIT_RTPRIO-a:%s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Odustajem od CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Stvarnovremensko raspoređivanje je omogućeno u podešavanjima, ali politika "
"to ne dozvoljava."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Demon nije pokrenut"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon je pokrenut sa PID-om %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Neuspešno ubijanje demona: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -347,162 +315,172 @@ msgstr ""
"Nije nameravano da se ovaj program pokreće iz root naloga (osim u sluÄaju "
"kada je --system navedeno)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Potrebna su root ovlašćenja."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nije podržano za sistemske primerke."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Pokrenuto u sistemskom režimu, ali --disallow-exit nije postavljeno!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Pokrenuto u sistemskom režimu, ali --disallow-module-loading nije "
"postavljeno!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Pokrenuto u sistemskom režimu, prisilno onemogućujem SHM režim!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Pokrenuto u sistemskom režimu, prisilno onemogućujem gašenje posle određenog "
"vremena mirovanja!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Neuspešno pronalaženje standardnog ulaza/izlaza."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Neuspešno puštanje podataka kroz cev: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Neuspela funkcija fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Neuspela funkcija read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Demon uspešno pokrenut."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ovo je PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Domaćin kompajliranja: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompajliranja: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Pokrenut na domaćinu: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Našao %u procesor(a)"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "VeliÄina stranice je %lu bajtova"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Kompajlirano sa podrškom za Valgrind: da"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Kompajlirano sa podrškom za Valgrind: ne"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Pokrenut u Valgrind režimu: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimizovana izgradnja: da"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimizovana izgradnja: ne"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definisan, sva obaveÅ¡tenja iskljuÄena."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definisan, samo obaveÅ¡tenja brze putanje iskljuÄena."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Sva obaveštenja omogućena."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Neuspešno dobavljanje IB mašine"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "IB mašine je %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "IB mašine je %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Koristi se %s izvršni direktorijum."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Koristi se %s direktorijum stanja."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Pokrenuto u sistemskom režimu: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "Neuspela funkcija pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Dostupni su novi brojaÄi visoke rezolucije! Prijatno!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -510,31 +488,31 @@ msgstr ""
"VaÅ¡e jezgro nije dobro podeÅ¡eno za pulseaudio! PreporuÄuje Vam se da "
"koristite Linux jezgro sa omogućenim brojaÄima visoke rezolucije."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "Neuspela funkcija pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Demon je pokrenut bez ijednog uÄitanog modula, odbija da radi."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "Pokretanje demona uspešno."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Pokrenuto gašenje demona."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Rad demona je prekinut."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -685,15 +663,15 @@ msgstr ""
" -n Ne uÄitavaj podrazumevanu datoteku "
"skripte.\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -701,53 +679,53 @@ msgstr ""
"--log-level oÄekuje parametar za nivo opÅ¡irnosti (numeriÄka vrednost izmeÄ‘u "
"0 i 4 ili jedno od: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Neispravan ciljni dnevnik: koristite jedno od „syslog“, „stderr“ ili „auto“."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Neispravan naÄin diskretizacije „%s“."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm oÄekuje logiÄku vrednost"
@@ -786,77 +764,82 @@ msgstr "Upotreba: %s\n"
msgid "Load Once: %s\n"
msgstr "UÄitaj jednom: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Putanja: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neispravan nivo opširnosti u dnevniku „%s“."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neispravan naÄin diskretizacije „%s“."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neispravan rlimit „%s“."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nije podržan na ovoj platformi."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neispravan format uzorka „%s“."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neispravna uÄestanost diskretizacije „%s“."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neispravni kanali uzorka „%s“."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neispravna mapa kanala „%s“."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neispravan broj odlomaka „%s“."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neispravna veliÄina odlomka „%s“."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neispravan nivo prioriteta „%s“."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Neuspelo otvaranje datoteke podešavanja: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -909,237 +892,237 @@ msgstr ""
"Sistemska politika spreÄava PulseAudiu da dobije stvarnovremensko "
"raspoređivanje."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Prednji centralni"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Prednji levi"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Prednji desni"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Pozadinski centralni"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Pozadinski levi"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Pozadinski desni"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "ZvuÄnik za niske frekvencije"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Prednji levo od centra"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Prednji desno od centra"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Leva strana"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Desna strana"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Sporedni 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Sporedni 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Sporedni 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Sporedni 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Sporedni 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Sporedni 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Sporedni 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Sporedni 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Sporedni 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Sporedni 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Sporedni 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Sporedni 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Sporedni 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Sporedni 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Sporedni 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Sporedni 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Sporedni 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Sporedni 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Sporedni 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Sporedni 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Sporedni 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Sporedni 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Sporedni 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Sporedni 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Sporedni 024"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Sporedni 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Sporedni 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Sporedni 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Sporedni 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Sporedni 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Sporedni 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Sporedni 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Gornji centralni"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Gornji prednji centralni"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Gornji prednji levi"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Gornji prednji desni"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Gornji pozadinski centralni"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Gornji pozadinski levi"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Gornji pozadinski desni"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(neispravno)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Okružujući 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Okružujući 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Okružujući 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Okružujući 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Okružujući 7.1"
@@ -1301,174 +1284,169 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Primio poruku za nepoznati lokal „%s“"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Neuspešno isušivanje toka: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Reprodukcioni tok isušen.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Veza do servera se isušuje.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_write(): %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_peek(): %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Tok uspešno napravljen.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "Neuspešno pa_stream_get_buffer_attr(): %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metrike bafera: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metrike bafera: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Koristim sledeće parametre uzorka „%s“ i mapu kanala „%s“.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "PrikljuÄen na ureÄ‘aj %s (%u, %s obustavljeno).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Greška toka: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Uređaj toka obustavljen.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Uređaj toka nastavljen.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Tok nije popunjen. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Tok se preliva.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Tok pokrenut. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Tok prebaÄen na ureÄ‘aj %s (%u, %s obustavljeno). %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nije"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Parametri bafera toka su promenjeni. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Veza uspostavljena.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_new() : %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Neuspešno povezivanje: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Neuspešno isušivanje toka: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Reprodukcioni tok isušen.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Veza do servera se isušuje.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Došao do kraja datoteke.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "Neuspela funkcija read(): %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "Neuspela funkcija write(): %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Dobio signal, izlazim.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Nemogu dobiti vrednost kašnjenja: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Vreme: %0.3f s. Kašnjenje: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_update_timing_info(): %s\n"
# Šta da radimo sa downmix i upmix. Preslikaj naviše i preslikaj naniže? -- Igor
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1494,8 +1472,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1518,6 +1498,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s[opcije]\n"
"\n"
@@ -1565,7 +1550,7 @@ msgstr ""
" --process-time=BAJTOVA Traži navedeno vreme procesa po "
"zahtevu u bajtovima.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1576,88 +1561,133 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Neispravna mapa kanala „%s“\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Neispravan naÄin diskretizacije „%s“."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Neispravna mapa kanala „%s“\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Neispravan parametar kašnjenja „%s“\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Neispravan parametar za vreme procesa „%s“\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Neispravan naÄin diskretizacije „%s“."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Neispravni parametri uzorka\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Previše parametara.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Nije uspelo otvaranje zvuÄne datoteke.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Mapa kanala se ne poklapa sa parametrima uzorka\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Otvaram tok %s sa sledećim parametrima uzorka „%s“.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "snima"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "pušta"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Previše parametara.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Neuspela funkcija pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "Neuspela funkcija io_new() \n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Neuspela funkcija pa_context_new().\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "Neuspela funkcija pa_context_connect(): %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "Neuspela funkcija time_new() \n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Neuspela funkcija pa_mainloop_run().\n"
@@ -1687,8 +1717,7 @@ msgstr "Neuspešno nastavljanje: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "UPOZORENJE: ZvuÄni server nije lokalni, ne zaustavljam.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Dobih SIGINT, izlazim.\n"
@@ -1716,7 +1745,7 @@ msgstr ""
" -s, --server=SERVER Ime servera sa kojim se povezuje\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1727,32 +1756,32 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Neuspešno dobavljanje statistike: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Trenutno u upotrebi: %u blokova sadrži ukupno %s bajtova.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Smešteno od pokretanja: %u blokova sadrži ukupno %s bajtova.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "VeliÄina keÅ¡ memorije uzorka: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Neuspešno dobijanje podataka o serveru: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1775,12 +1804,12 @@ msgstr ""
"Podrazumevani izvor: %s\n"
"KolaÄić: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Neuspešno dobijanje podataka o slivniku: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1819,12 +1848,22 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfili:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tAktivni profil: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Nije uspelo dobavljanje podataka o izvoru: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1863,20 +1902,20 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "nepoznato"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Neuspešno dobijanje podataka o modulu: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1893,12 +1932,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Neuspešno dobijanje podataka o klijentu: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1913,12 +1952,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Neuspešno dobijanje podataka o kartici: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1935,22 +1974,22 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfili:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktivni profil: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Nije uspelo dobijanje podataka o ulazu slivnika: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1987,12 +2026,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Nije uspelo dobijanje podataka o izlazu izvora: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2021,12 +2060,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2057,23 +2096,22 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Neuspeh: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Nije uspelo uÄitavanje uzorka: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "Prerani kraj datoteke\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2088,6 +2126,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2119,7 +2159,7 @@ msgstr ""
" -n, --client-name=IME Kako nazvati ovog klijenta na "
"serveru\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2130,71 +2170,74 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Navedite datoteku uzorka koju treba uÄitati\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Nije uspelo otvaranje zvuÄne datoteke.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Otvaram tok %s sa sledećim parametrima uzorka „%s“.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Morate navesti ime uzorka kojeg želite pustiti\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Morate navesti ime uzorka kojeg želite ukloniti\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Morate navesti indeks ulaza u slivniku i slivnik\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "Morate navesti indeks izlaza u izvoru i izvor\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Morate navesti ime i parametre modula.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Morate navesti indeks modula\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "Možete navesti samo jedan slivnik. Morate navesti logiÄku vrednost.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "Možete navesti samo jedan izvor. Morate navesti logiÄku vrednost.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Morate navesti ime/indeks kartice i ime profila\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Morate navesti ime/indeks kartice i ime profila\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Morate navesti ime/indeks kartice i ime profila\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Ni jedna ispravna naredba nije navedena.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Neuspela funkcija pa_context_connect(): %s"
@@ -2280,129 +2323,49 @@ msgstr "NeuspeÅ¡no uÄitavanje datoteka kolaÄića\n"
msgid "Not yet implemented.\n"
msgstr "Nije još implementirano.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Nije uspelo ubijanje PulseAudio demona."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Demon se ne odaziva."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Tok uspešno napravljen\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Greška toka: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Veza ustanovljena.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [opcije] [DATOTEKA]\n"
-"\n"
-" -h, --help Prikaži ovu pomoć\n"
-" --version Prikaži verziju\n"
-"\n"
-" -v, --verbose Omogući opširni opis radnji\n"
-"\n"
-" -s, --server=SERVER Ime servera na koji se povezuje\n"
-" -d, --device=UREÄAJ Ime slivnika na koje se povezuje\n"
-" -n, --client-name=IME Kako nazvati ovog klijenta na "
-"serveru\n"
-" --stream-name=IME Kako nazvati ovaj tok na serveru\n"
-" --volume=GLASNOST Navedi poÄetnu (linearnu) jaÄinu "
-"zvuka iz opsega 0...65536\n"
-" --channel-map=MAPAKANALA Postavi mapu kanala koja će se "
-"koristiti\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompajlirano sa libpulse %s\n"
-"Povezano sa libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Neispravna mapa kanala\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Neuspelo otvaranje datoteke „%s“\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Mapa kanala se ne poklapa sa datotekom.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Koriste se sledeći parametri uzorka „%s“\n"
-
# Kako prevesti autospawn (mogućnost pravljenja ili pokretanja procesa iz istog) -- Igor
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Nije moguće pristupiti datoteci zakljuÄavanja za samoumnožavanje."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2419,7 +2382,7 @@ msgstr ""
"Probuđeni smo sa postavljenim POLLOUT-om -- ali sledeći snd_pcm_avail() je "
"vratio 0 ili neku drugu vrednost manju od min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2436,34 +2399,129 @@ msgstr ""
"Probuđeni smo sa postavljenim POLLIN-om -- ali sledeći snd_pcm_avail() je "
"vratio 0 ili neku drugu vrednost manju od min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "Izlaz %s + ulaz %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "Izlaz %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "Ulaz %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "IskljuÄeno"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodukcija visoke taÄnosti (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Dvostrano telefoniranje (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio zvuÄni sistem"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Analogni mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analogni stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digitalni stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digitalni stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analogni okružujući 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digitalni okružujući 4.0 (IEC958/AC3)"
+
+# Surround možemo prevesti ambijentalni ili okružni ili možda Äak i saraund? -- Igor
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analogni okružujući 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analogni okružujući 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analogni okružujući 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digitalni okružujući 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analogni okružujući 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "Izlaz %s + ulaz %s"
+
+#~ msgid "Output %s"
+#~ msgstr "Izlaz %s"
+
+#~ msgid "Input %s"
+#~ msgstr "Ulaz %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Tok uspešno napravljen\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Greška toka: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Veza ustanovljena.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [opcije] [DATOTEKA]\n"
+#~ "\n"
+#~ " -h, --help Prikaži ovu pomoć\n"
+#~ " --version Prikaži verziju\n"
+#~ "\n"
+#~ " -v, --verbose Omogući opširni opis radnji\n"
+#~ "\n"
+#~ " -s, --server=SERVER Ime servera na koji se povezuje\n"
+#~ " -d, --device=UREÄAJ Ime slivnika na koje se povezuje\n"
+#~ " -n, --client-name=IME Kako nazvati ovog klijenta na "
+#~ "serveru\n"
+#~ " --stream-name=IME Kako nazvati ovaj tok na serveru\n"
+#~ " --volume=GLASNOST Navedi poÄetnu (linearnu) jaÄinu "
+#~ "zvuka iz opsega 0...65536\n"
+#~ " --channel-map=MAPAKANALA Postavi mapu kanala koja će se "
+#~ "koristiti\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Kompajlirano sa libpulse %s\n"
+#~ "Povezano sa libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Neispravna mapa kanala\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Neuspelo otvaranje datoteke „%s“\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Mapa kanala se ne poklapa sa datotekom.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Koriste se sledeći parametri uzorka „%s“\n"
diff --git a/po/sv.po b/po/sv.po
index 4eb1c2db..3f91c9ae 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2008-09-05 18:24+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -15,51 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr ""
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -68,7 +24,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -77,7 +33,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -86,12 +42,25 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
#, fuzzy
msgid "Internal Audio"
msgstr "Internt fel"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr ""
@@ -162,104 +131,104 @@ msgstr ""
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit svarade med \"%s\""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Fick signal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Avslutar."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Misslyckades med att hitta användaren \"%s\"."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Misslyckades med att hitta gruppen \"%s\"."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Hemkatalogen för användaren \"%s\" är inte \"%s\", ignorerar."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Misslyckades med att skapa \"%s\": %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -272,44 +241,44 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO misslyckades: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -317,189 +286,199 @@ msgstr ""
"Detta program är inte tänkt att köras som root (såvida inte --system har "
"angivits)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
#, fuzzy
msgid "Root privileges required."
msgstr "Root-behörighet krävs."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start stöds inte för systeminstanser."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe misslyckades: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() misslyckades: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() misslyckades: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Detta är PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr ""
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -573,69 +552,69 @@ msgid ""
" -n Don't load default script file\n"
msgstr ""
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
msgstr ""
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
#, fuzzy
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit booleskt argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
#, fuzzy
msgid "--log-time expects boolean argument"
msgstr "--realtime förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
#, fuzzy
msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit booleskt argument"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm förväntar sig ett booleskt argument"
@@ -674,77 +653,82 @@ msgstr "Användning: %s\n"
msgid "Load Once: %s\n"
msgstr ""
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Sökväg: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -790,238 +774,238 @@ msgstr ""
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Center fram"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Vänster fram"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Höger fram"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Center bak"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Vänster bak"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Höger bak"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr ""
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Vänster-om-center fram"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Höger-om-center fram"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Vänster sida"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Höger sida"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr ""
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr ""
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr ""
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr ""
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr ""
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr ""
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr ""
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr ""
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr ""
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr ""
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr ""
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr ""
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr ""
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr ""
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr ""
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr ""
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr ""
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr ""
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr ""
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr ""
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr ""
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr ""
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr ""
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr ""
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr ""
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr ""
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr ""
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr ""
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr ""
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr ""
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr ""
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr ""
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr ""
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr ""
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr ""
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr ""
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr ""
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr ""
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr ""
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
#, fuzzy
msgid "(invalid)"
msgstr "Ogiltig"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr ""
@@ -1182,172 +1166,167 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() misslyckades: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() misslyckades: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr ""
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() misslyckades: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr ""
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Strömfel: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "inte "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() misslyckades: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() misslyckades: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() misslyckades: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Anslutningsfel: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Fick filslut.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() misslyckades: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() misslyckades: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tid: %0.3f sec; Latens: %0.0f ms \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() misslyckades: %s\n"
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1374,8 +1353,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1398,9 +1379,14 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1408,88 +1394,132 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
#, c-format
-msgid "Invalid channel map '%s'\n"
+msgid "Invalid client name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:776
#, c-format
-msgid "Invalid latency specification '%s'\n"
+msgid "Invalid stream name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:813
#, c-format
-msgid "Invalid process time specification '%s'\n"
+msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:842
#, c-format
-msgid "Invalid sample specification\n"
+msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:849
#, c-format
-msgid "Channel map doesn't match sample specification\n"
+msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
-msgstr ""
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ogiltig server"
-#: ../src/utils/pacat.c:728
-msgid "recording"
+#: ../src/utils/pacat.c:878
+#, c-format
+msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "playback"
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:736
+#: ../src/utils/pacat.c:907
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:741
+#: ../src/utils/pacat.c:912
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:751
-#, c-format
+#: ../src/utils/pacat.c:919
msgid "Too many arguments.\n"
msgstr "För många argument.\n"
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Misslyckades med att få modulinformation: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Misslyckades med att öppna ljudfil.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+msgid "Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
+msgstr ""
+
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() misslyckades.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() misslyckades.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() misslyckades.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() misslyckades.\n"
@@ -1519,8 +1549,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1542,7 +1571,7 @@ msgid ""
"\n"
msgstr ""
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1553,32 +1582,32 @@ msgstr ""
"Kompilerad med libpulse %s\n"
"Länkad med libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Misslyckades med att få statistik: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1592,12 +1621,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1619,12 +1648,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, c-format
+msgid "\tPorts:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "pipe misslyckades: %s"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1646,20 +1685,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1670,12 +1709,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Misslyckades med att få klientinformation: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1685,12 +1724,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1701,22 +1740,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "pipe misslyckades: %s"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1737,12 +1776,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1759,12 +1798,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -1782,22 +1821,21 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Fel: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1813,6 +1851,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1823,7 +1863,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -1834,71 +1874,71 @@ msgstr ""
"Kompilerad med libpulse %s\n"
"Länkad med libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Misslyckades med att öppna ljudfil.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1084
+msgid "You have to specify a source name/index and a port name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr ""
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() misslyckades.\n"
@@ -1975,112 +2015,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr "Ännu inte implementerad.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Anslutning etablerad.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompilerad med libpulse %s\n"
-"Länkad med libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Misslyckades med att öppna filen \"%s\"\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr ""
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2091,7 +2067,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2102,38 +2078,38 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
+#~ msgid "Connection established.\n"
+#~ msgstr "Anslutning etablerad.\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Kompilerad med libpulse %s\n"
+#~ "Länkad med libpulse %s\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Misslyckades med att öppna filen \"%s\"\n"
+
#, fuzzy
#~ msgid "--log-time boolean argument"
#~ msgstr "--disallow-exit booleskt argument"
diff --git a/po/ta.po b/po/ta.po
index b47fd63c..a10b0168 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-12 05:02+0530\n"
"Last-Translator: I. Felix <ifelix@redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
@@ -34,51 +34,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Analog Mono"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Analog Stereo"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Digital Stereo (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Digital Stereo (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Analog Surround 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Digital Surround 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Analog Surround 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Analog Surround 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Analog Surround 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Digital Surround 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Analog Surround 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -91,7 +47,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -104,7 +60,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -117,11 +73,24 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "உடà¯à®ªà¯à®± ஆடியோ"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "மாதிரி"
@@ -191,106 +160,106 @@ msgstr "auth஠பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
msgid "PolicyKit responded with '%s'"
msgstr "'%s'உடன௠பாலிஸிகிட௠ஒதà¯à®¤à¯à®ªà¯‹à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "%sகà¯à®•à¯ சிகà¯à®©à®²à¯ கிடைதà¯à®¤à¯à®µà®¿à®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "வெளியேறà¯à®¤à®²à¯."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' பயனரை கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' கà¯à®´à¯à®µà¯ˆ கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "'%s'பயனர௠கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¾à®°à¯ (UID %lu) மறà¯à®±à¯à®®à¯ கà¯à®´à¯ '%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID ன௠பயனர௠'%s' மறà¯à®±à¯à®®à¯ '%s' கà¯à®´à¯à®µà¯à®Ÿà®©à¯ ஒதà¯à®¤à¯ போகவிலà¯à®²à¯ˆ."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "à®®à¯à®•à®ªà¯à®ªà¯ அடைவ௠பயனரான'%s' '%s'ஆலà¯, பà¯à®±à®•à¯à®•à®£à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s'஠உரà¯à®µà®¾à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "கà¯à®´à¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GIDகà¯à®•à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UIDகà¯à®•à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ரூட௠மà¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• விடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "இநà¯à®¤ தளதà¯à®¤à®¿à®²à¯ கணினியின௠திறநà¯à®¤ à®®à¯à®±à¯ˆà®®à¯ˆ தà¯à®£à¯ˆà®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "கடà¯à®Ÿà®³à¯ˆ வரியை மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"நாம௠கà¯à®´à¯ '%s'ல௠இரà¯à®¨à¯à®¤ போத௠, உயரà¯à®¨à¯à®¤ à®®à¯à®¤à®©à¯à®®à¯ˆ அடà¯à®Ÿà®µà®£à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤ அனà¯à®®à®¤à®¿ "
"அளிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¿à®°à¯à®¨à¯à®¤à®¤à¯."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "கà¯à®´à¯ '%s'இல௠இரà¯à®•à¯à®•à®¿à®±à¯‹à®®à¯, நிகழà¯à®¨à¯‡à®° திடà¯à®Ÿà®®à®¿à®Ÿà¯à®¤à®²à¯ˆ அனà¯à®®à®¤à®¿à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "நமகà¯à®•à®¾à®• PolicyKit உயரà¯à®¨à¯à®¤ à®®à¯à®•à¯à®•à®¿à®¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®¯à¯ˆ வழஙà¯à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit உயரà¯à®¨à¯à®¤ à®®à¯à®•à¯à®•à®¿à®¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®¯à¯ˆ மறà¯à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ˆ கொடà¯à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ˆ நிராகரிகà¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -311,207 +280,217 @@ msgstr ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"உயரà¯à®¨à¯à®¤ சலà¯à®•à¯ˆà®•à®³à®¿à®©à¯ அடà¯à®Ÿà®µà®£à¯ˆà®¯à¯ˆ கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà®¿à®²à¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ ஆனால௠பாலிசியால௠"
"அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "வெறà¯à®±à®¿à®•à®°à®®à®¾à®• அதிகரிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr ""
"CAP_NICE஠மேலே கொடà¯à®•à¯à®•à®¿à®±à®¤à¯ (_N\n"
")"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"நிகழà¯à®¨à¯‡à®° திடà¯à®Ÿà®®à®¿à®Ÿà¯à®¤à®²à¯ கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà®¿à®²à¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ ஆனால௠கொளà¯à®•à¯ˆà®¯à®¾à®²à¯ அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®µà®¤à®¿à®²à¯à®²à¯ˆ"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "டோமோன௠இயஙà¯à®•à®µà®¿à®²à¯à®²à¯ˆ"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %uவாக டோமோன௠இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "டோமோனà¯à®•à¯à®•à¯ à®®à¯à®Ÿà®¿à®µà¯ கடà¯à®Ÿà¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "இநà¯à®¤ நிரல௠ரூடà¯à®Ÿà®¾à®• இயஙà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ (--system கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®¾à®¤ வரை)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ரூட௠மà¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ தேவைபà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start கணினி நிகழà¯à®µà®¿à®²à¯ தà¯à®£à¯ˆà®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, ஆனால௠--disallow-exit அமைகà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, ஆனால௠--disallow-module-loading அமைகà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, SHM à®®à¯à®±à¯ˆà®®à¯ˆ செயலà¯à®¨à¯€à®•à¯à®•à¯à®¤à®²à¯ கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, வெறà¯à®®à¯ˆ நேரதà¯à®¤à¯ˆ செயலà¯à®¨à¯€à®•à¯à®• கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio஠பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "பைப௠தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "வாசிபà¯à®ªà®¤à®¿à®²à¯() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "டோமோனை தà¯à®µà®•à¯à®•à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "டோமோனை வெறà¯à®±à®¿à®•à®°à®®à®¾à®• தà¯à®µà®•à¯à®•à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "இத௠தான௠பளà¯à®¸à¯ ஆடியோ %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "தொகà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ பà¯à®°à®µà®²à®©à¯: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "தொகà¯à®ªà¯à®ªà¯ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "பà¯à®°à®µà®²à®©à®¾à®• இயஙà¯à®•à¯à®•à®¿à®±à®¤: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "CPUs %uவில௠காணபà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯ ."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "பகà¯à®• அளவà¯à®•à®³à¯ %lu பைடà¯à®¸à¯"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compiled with Valgrind support: yes"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compiled with Valgrind support: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimized build: yes"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "சà¯à®°à¯à®•à¯à®•à®®à®¾à®© உரà¯à®µà®¾à®•à¯à®•à®®à¯: இலà¯à®²à¯ˆ"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "கணினி கà¯à®±à®¿à®¯à¯€à®Ÿà¯ˆ பெறà¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "கணினி கà¯à®±à®¿à®¯à¯€à®Ÿà¯ %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "கணினி கà¯à®±à®¿à®¯à¯€à®Ÿà¯ %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ஓடà¯à®®à¯à®¨à¯‡à®°à®®à¯ %s அடைவை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "%s நிலை அடைவினை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "கணினியின௠மà¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "உயரà¯à®¨à¯à®¤ திரைதà¯à®¤à®¿à®±à®©à¯ நேரமà¯à®•à®¾à®Ÿà¯à®Ÿà®¿ கிடைகà¯à®•à®¿à®³à®¤à¯! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -519,31 +498,31 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "டோமோனை ஆரமà¯à®ªà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "டீமான௠தà¯à®µà®•à¯à®•à®®à¯ எநà¯à®¤ தொகà¯à®¤à®¿à®•à®³à¯à®®à¯ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà®¾à®®à®²à¯, வேலையை நிராகரிகà¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "டோமோன௠தà¯à®µà®•à¯à®•à¯à®µà®¤à¯ à®®à¯à®Ÿà®¿à®µà®Ÿà¯ˆà®¨à¯à®¤à®¤à¯."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "டோமோன௠பணிநிறà¯à®¤à¯à®¤à®®à¯ à®®à¯à®©à¯ˆà®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "டோமோன௠நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®¤à¯."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -686,15 +665,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -702,52 +681,52 @@ msgstr ""
"--log-level பதிவ௠நிலை அளவà¯à®°à¯à®µà¯ˆ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯ (எண௠0..4 அலà¯à®²à®¤à¯ debug, info, "
"notice, warn, errorஇல௠ஒனà¯à®±à¯)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "தவறான பதிவ௠இலகà¯à®•à¯: 'syslog', 'stderr' அலà¯à®²à®¤à¯ 'auto'஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ˆ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm பூலியன௠அளவà¯à®°à¯ எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•à®¿à®±à®¤à¯"
@@ -786,77 +765,82 @@ msgstr "பயனà¯à®ªà®¾à®Ÿà¯: %s\n"
msgid "Load Once: %s\n"
msgstr "à®’à®°à¯à®®à¯à®±à¯ˆ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "பாதை: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] தவறான பதிவ௠இலகà¯à®•à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] தவறான பதிவ௠இலகà¯à®•à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ˆ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] தவறான rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit இநà¯à®¤ தளதà¯à®¤à®¿à®²à¯ தà¯à®£à¯ˆà®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] தவறான மாதிரி à®®à¯à®±à¯ˆ '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] தவறான மாதிரி விலை '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] தவறான மாதிரி சேனலà¯à®•à®³à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] தவறான சேனல௠படம௠'%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] பகà¯à®ªà¯à®ªà¯ '%s'கà¯à®•à¯ தவறான எணà¯"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] தவறான பகà¯à®ªà¯à®ªà¯ அளவ௠'%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] தவறான நலà¯à®² நிலை '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "கடà¯à®Ÿà®®à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¿à®©à¯ˆ திறபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -905,237 +889,237 @@ msgstr ""
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr "கணினி கொளà¯à®•à¯ˆ PulseAudio ஠நிகழà¯à®¨à¯‡à®° திடà¯à®Ÿà®®à®¿à®Ÿà¯à®¤à®²à¯ˆ எடà¯à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "மோனோ"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "à®®à¯à®©à¯ நடà¯à®µà®¿à®²à¯"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "à®®à¯à®©à¯ இடதà¯"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "à®®à¯à®©à¯ வலதà¯"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "பின௠நடà¯à®µà®¿à®²à¯"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "பின௠இடதà¯"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "பின௠வலதà¯"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "கà¯à®±à¯ˆà®¨à¯à®¤ அலைவரிசை எமà¯à®®à®¿à®Ÿà¯à®Ÿà®°à¯"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "à®®à¯à®©à¯ இடத௠பகà¯à®•à®¤à¯à®¤à®¿à®©à¯ நடà¯à®µà®¿à®²à¯"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "à®®à¯à®©à¯ வலத௠பகà¯à®•à®¤à¯à®¤à®¿à®©à¯ நடà¯à®µà®¿à®²à¯"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "இடத௠பகà¯à®•à®®à¯"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "வலத௠பகà¯à®•à®®à¯"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Auxiliary 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Auxiliary 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Auxiliary 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Auxiliary 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Auxiliary 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Auxiliary 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Auxiliary 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Auxiliary 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Auxiliary 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Auxiliary 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Auxiliary 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Auxiliary 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Auxiliary 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Auxiliary 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Auxiliary 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Auxiliary 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Auxiliary 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Auxiliary 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Auxiliary 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Auxiliary 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Auxiliary 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Auxiliary 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Auxiliary 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Auxiliary 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Auxiliary 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Auxiliary 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Auxiliary 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Auxiliary 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Auxiliary 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Auxiliary 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Auxiliary 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Auxiliary 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "மேல௠நடà¯à®µà®¿à®²"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "மேலை à®®à¯à®©à¯ நடà¯à®µà®¿à®²à¯"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "மேலே à®®à¯à®©à¯ இடதà¯"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "மேலே à®®à¯à®©à¯ வலதà¯"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "மேலே பின௠நடà¯à®µà®¿à®²à¯"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "மேலே பின௠இடதà¯"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "மேலே பின௠வலதà¯"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(தவறான)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "ஸà¯à®Ÿà®¿à®°à®¿à®¯à¯‹"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1296,173 +1280,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "தெரியாத தொடரிசà¯à®šà®¿à®¯à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ '%s'கà¯à®•à¯ செயà¯à®¤à®¿à®•à®³à¯ பெறபà¯à®ªà®Ÿà¯à®Ÿà®©"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ˆ டà¯à®°à¯ˆà®©à¯ செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "டà¯à®°à¯ˆà®©à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ ஸà¯à®Ÿà¯€à®°à®¿à®®à¯.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "டà¯à®°à¯ˆà®©à¯ செயà¯à®¯à¯à®®à¯ இணைபà¯à®ªà¯ சேவையகதà¯à®¤à®¿à®±à¯à®•à¯.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ கà¯à®±à®¿à®ªà¯à®ªà¯ '%s', சேனல௠மேப௠'%s'஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "%s சாதனதà¯à®¤à¯à®Ÿà®©à¯ இணைகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ பிழை: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ சாதனம௠இடைநீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ சாதனம௠தொடரà¯à®•à®¿à®±à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ அதிகளவ௠இயஙà¯à®•à®¿à®¯à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ %s தà¯à®µà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ %s இயகà¯à®•à®¿à®•à¯à®•à¯ நகரà¯à®¨à¯à®¤à®¤à¯ (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "இலà¯à®²à¯ˆ"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, fuzzy, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "இணைபà¯à®ªà¯ தà¯à®µà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "இணைபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ˆ டà¯à®°à¯ˆà®©à¯ செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "டà¯à®°à¯ˆà®©à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ ஸà¯à®Ÿà¯€à®°à®¿à®®à¯.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "டà¯à®°à¯ˆà®©à¯ செயà¯à®¯à¯à®®à¯ இணைபà¯à®ªà¯ சேவையகதà¯à®¤à®¿à®±à¯à®•à¯.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF கிடைகà¯à®•à®ªà¯ பெறà¯à®±à®¤à¯\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "வாசிபà¯à®ªà®¤à®¿à®²à¯ () தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "எழà¯à®¤à¯à®µà®¤à®¿à®²à¯ () தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "சிகà¯à®©à®²à¯ கிடைதà¯à®¤à®¤à¯, வெளியேறà¯à®•à®¿à®±à®¤à¯.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "லடனà¯à®šà®¿à®¯à¯ˆ பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Time: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() தோலà¯à®µà®¿: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1488,8 +1467,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1512,6 +1493,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1562,7 +1548,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1573,88 +1559,133 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "தவறான சேனல௠வரைபடம௠'%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ˆ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "தவறான சேனல௠வரைபடம௠'%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "தவறான லேடனà¯à®šà®¿ கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "தவறான செயல௠நேர கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ˆ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "தவறான மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "நிறைய விவாதஙà¯à®•à®³à¯.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "மாதிரி தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ஒலி கோபà¯à®ªà®¿à®©à¯ˆ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "மாதிரி தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "சேனல௠மேப௠மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯à®Ÿà¯à®Ÿà®©à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "ஒர௠%s ஸà¯à®Ÿà¯€à®°à®®à¯ˆ மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'உடன௠திறகà¯à®•à®¿à®±à®¤à¯.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "ஒலிபà¯à®ªà®¤à®¿à®µà¯"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "பிணà¯à®£à®©à®¿"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "நிறைய விவாதஙà¯à®•à®³à¯.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() தோலà¯à®µà®¿.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_பà¯à®¤à®¿à®¯() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯.(_n) \n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() தோலà¯à®µà®¿.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() தோலà¯à®µà®¿: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() தோலà¯à®µà®¿.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() தோலà¯à®µà®¿.\n"
@@ -1684,8 +1715,7 @@ msgstr "தொடர à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: ஒலி சேவையம௠உளà¯à®³à®®à¯ˆà®µà®¾à®• இலà¯à®²à¯ˆ, இடைநிறà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT பெறபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, வெளியேறà¯à®•à®¿à®±à®¤à¯.\n"
@@ -1713,7 +1743,7 @@ msgstr ""
" -s, --சேவையகமà¯=SERVER பெயரிடபà¯à®ªà®Ÿà¯à®Ÿ சேவையகம௠இணைகà¯à®•à®ªà¯à®ªà®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1724,33 +1754,33 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "பà¯à®³à¯à®³à®¿à®µà®¿à®µà®°à®¤à¯à®¤à¯ˆ பெற இயலாதà¯: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "தறà¯à®ªà¯‹à®¤à¯ பயனிலà¯à®³à¯à®³à®¤à¯: %u தொகà¯à®¤à®¿à®•à®³à¯ %s பைடà¯à®•à®³à¯ˆ மொதà¯à®¤à®®à®¾à®• கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"வாழà¯à®•à¯à®•à¯ˆ à®®à¯à®´à¯à®µà®¤à¯à®®à¯ ஒதà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: %u தொகà¯à®¤à®¿à®•à®³à¯ %s பைடà¯à®•à®³à¯ˆ மொதà¯à®¤à®®à®¾à®• கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "மாதிரி இடையக அளவà¯: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "சேவையகதà¯à®¤à®¿à®©à¯ தகவலை பெற இயலவிலà¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1773,12 +1803,12 @@ msgstr ""
"à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ மூலஙà¯à®•à®³à¯: %s\n"
"கூகà¯à®•à®¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "சà¯à®°à¯à®•à¯à®•à®®à®¾à®© தகவலை பெற௠மà¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1817,12 +1847,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tவிவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tசெயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯à®³à¯à®³ விவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "மூலதà¯à®¤à®¿à®©à¯ தகவலை பெற இயலவிலà¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1861,20 +1901,20 @@ msgstr ""
"\tபணà¯à®ªà¯à®•à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "தொகà¯à®¤à®¿ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1891,12 +1931,12 @@ msgstr ""
"\tபணà¯à®ªà¯à®•à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "கிளையனà¯à®Ÿà¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1911,12 +1951,12 @@ msgstr ""
"\tபணà¯à®ªà¯à®•à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "அடà¯à®Ÿà¯ˆ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1933,22 +1973,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tவிவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tசெயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯à®³à¯à®³ விவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "சிஙà¯à®•à¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1985,12 +2025,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "மூல வெளிபà¯à®ªà®¾à®Ÿà¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2019,12 +2059,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "மாதிரி தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2055,23 +2095,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "தோலà¯à®µà®¿: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "மாதிரியை மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "à®®à¯à®©à¯à®©à®¾à®• கோபà¯à®ªà¯ à®®à¯à®Ÿà®¿à®¤à¯à®¤à®²à¯\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2086,6 +2125,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2117,7 +2158,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2128,56 +2169,51 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "à®à®±à¯à®±à¯à®µà®¤à®±à¯à®•à¯ ஒர௠மாதிரி கோபà¯à®ªà®¿à®©à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà¯à®®à¯\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "ஒலி கோபà¯à®ªà®¿à®©à¯ˆ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "ஒர௠%s ஸà¯à®Ÿà¯€à®°à®®à¯ˆ மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'உடன௠திறகà¯à®•à®¿à®±à®¤à¯.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "இயகà¯à®•à®¿à®µà®¤à®±à¯à®•à¯ நீஙà¯à®•à®³à¯ ஒர௠மாதிரி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯ நீஙà¯à®•à®³à¯ ஒர௠மாதிரி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ உளà¯à®³à¯€à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠சிஙà¯à®•à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "நீஙà¯à®•à®³à¯ ஒர௠மூல வெளிபà¯à®ªà®¾à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠மூலதà¯à®¤à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "தொகà¯à®¤à®¿ பெயர௠மறà¯à®±à¯à®®à¯ விவாதஙà¯à®•à®³à¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯. \n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "தொகà¯à®¤à®¿ அடà¯à®Ÿà®µà®£à¯ˆà®¯à¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"ஒர௠சிஙà¯à®•à®¿à®±à¯à®•à¯ மேல௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®•à¯ கூடாதà¯. பூலியன௠மதிபà¯à®ªà¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2185,18 +2221,28 @@ msgstr ""
"ஒர௠மூலதà¯à®¤à®¿à®±à¯à®•à¯ மேல௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®•à¯ கூடாதà¯. பூலியன௠மதிபà¯à®ªà¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ "
"வேணà¯à®Ÿà¯à®®à¯.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"ஒர௠அடà¯à®Ÿà¯ˆ பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠விவரசà¯à®šà¯€à®Ÿà¯à®Ÿà¯ பெயர௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯ \n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr ""
+"ஒர௠அடà¯à®Ÿà¯ˆ பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠விவரசà¯à®šà¯€à®Ÿà¯à®Ÿà¯ பெயர௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯ \n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr ""
+"ஒர௠அடà¯à®Ÿà¯ˆ பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠விவரசà¯à®šà¯€à®Ÿà¯à®Ÿà¯ பெயர௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯ \n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "சரியான கடà¯à®Ÿà®³à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ \n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() தோலà¯à®µà®¿: %s"
@@ -2280,129 +2326,48 @@ msgstr "கà¯à®•à¯à®•à¯€ தரவை à®à®±à¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯
msgid "Not yet implemented.\n"
msgstr "இனà¯à®©à¯à®®à¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio daemon஠நிறà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "டோமோன௠பதிலளிகà¯à®• மறà¯à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ பிழை: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "இணைபà¯à®ªà®¿à®©à¯ˆ à®à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "தவறான சேனல௠வரைபடம௠\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "கோபà¯à®ªà¯ '%s'஠திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "சேனல௠வரைபடம௠கோபà¯à®ªà¯à®Ÿà®©à¯ ஒதà¯à®¤à¯à®ªà¯ பொகவிலà¯à®²à¯ˆ.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn பூடà¯à®Ÿà¯ˆ அணà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2413,7 +2378,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2424,35 +2389,122 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
#, fuzzy
msgid "PulseAudio Sound Server"
msgstr "பளà¯à®¸à¯ ஆடியோ ஒலி கணினி"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Analog Mono"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Analog Stereo"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Digital Stereo (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Digital Stereo (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Analog Surround 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Digital Surround 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Analog Surround 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Analog Surround 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Analog Surround 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Digital Surround 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Analog Surround 7.1"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ பிழை: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "இணைபà¯à®ªà®¿à®©à¯ˆ à®à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "தவறான சேனல௠வரைபடம௠\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "கோபà¯à®ªà¯ '%s'஠திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "சேனல௠வரைபடம௠கோபà¯à®ªà¯à®Ÿà®©à¯ ஒதà¯à®¤à¯à®ªà¯ பொகவிலà¯à®²à¯ˆ.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿\n"
diff --git a/po/te.po b/po/te.po
index b91c6b83..d4f79e06 100644
--- a/po/te.po
+++ b/po/te.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.te\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-08 18:21+0530\n"
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\n"
@@ -21,51 +21,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "ఎనలాగౠమోనో"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "ఎనలాగౠసà±à°Ÿà±€à°°à°¿à°¯à±‹"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "డిజటలౠసà±à°Ÿà±€à°°à°¿à°¯à±‹ (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "డిజిటలౠసà±à°Ÿà±€à°°à°¿à°¯à±‹ (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "ఎనలాగౠసరౌండౠ4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "డిజిటలౠసరౌండౠ4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "ఎనలాగౠసరౌండౠ4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "ఎనలాగౠసరౌండౠ5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "ఎనలాగౠసరౌండౠ5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "డిజిటలౠసరౌండౠ5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "ఎనలాగౠసరౌండౠ7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +33,7 @@ msgstr ""
"సాదారణంగా యిది ALSA à°¡à±à°°à±ˆà°µà°°à± '%s' నందలి బగౠకావచà±à°šà±à°¨à±. దయచేసి దీనిని ALSA అభివృదà±à°¦à°¿ కారà±à°²à°•à± "
"నివేదించà±à°®à±."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -89,7 +45,7 @@ msgstr ""
"సాదారణంగా యిది ALSA à°¡à±à°°à±ˆà°µà°°à± '%s' నందౠబగౠకావచà±à°šà±à°¨à± . దయచేసి దీనిని ALSA అభివృదà±à°¦à°¿à°•à°¾à°°à±à°²à°• "
"నివేదించà±à°®à±."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +56,24 @@ msgstr ""
"snd_pcm_mmap_begin() à°…à°¨à±à°¨à°¦à°¿ పెదà±à°¦ విలà±à°µà°¨à± యిచà±à°šà°¿à°¨à°¦à°¿: %lu bytes (%lu ms).\n"
"సాదారణంగా యిది ALSA à°¡à±à°°à±ˆà°µà°°à± '%s'నందలి బగౠకావచà±à°šà±à°¨à±. దయచేసి దీనిని ALSA అభివృదà±à°¦à°¿à°•à°¾à°°à±à°²à°¨à± నివేదించండి."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "అంతరà±à°—à°¤ ఆడియో"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "మోడెమà±"
@@ -174,104 +143,104 @@ msgstr "దృవీకరణ పొందలేక పోయింది: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit à°¸à±à°ªà°‚దిచినది దీనితో '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "సంకేతమౠ%s పొందినది."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "వినియోగదారి '%s'నౠకనà±à°—ొనà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "సమూహం '%s' à°•à°¨à±à°—ొనà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "వినియోగదారి '%s' (UID %lu) మరియౠసమూహమౠ'%s' (GID %lu) కనబడినవి."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "వినియోగదారి '%s' మరియౠసమూహమౠ'%s' యొకà±à°• GID సరితూగలేదà±."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "వినియోగదారి '%s' యొకà±à°• నివాస డైరెకà±à°Ÿà°°à±€ '%s' కాదà±, వదిలివేయà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' సృషà±à°Ÿà°¿à°‚à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "సమూహ జాబితా మారà±à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID మారà±à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID మారà±à°šà°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "root à°…à°¨à±à°®à°¤à±à°²à± విజయవంతంగా తిసివేయబడినాయి."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à°ˆ à°ªà±à°²à°¾à°Ÿà±â€Œà°«à°¾à°‚ నందౠసిసà±à°Ÿà°®à± తరహా రీతి మదà±à°¦à°¤à±€à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) విఫలమైంది: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "ఆదేశ వరà±à°¸à°¨à± పారà±à°¶à± చేయà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "మనమౠసమూహమౠ'%s' నందౠవà±à°¨à±à°¨à°¾à°®à±, అదిక-à°ªà±à°°à°¾à°®à±à°–à±à°¯à°¤à°¾ పణాళికనౠఅనà±à°®à°¤à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "మనమౠసమూహమౠ'%s' నందౠవà±à°¨à±à°¨à°¾à°®à±, వాసà±à°¤à°µ-సమయ à°ªà±à°°à°£à°¾à°³à°¿à°•à°¨à± à°…à°¨à±à°®à°¤à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit మనకౠacquire-high-priority à°…à°¨à±à°®à°¤à°¿à°¨à°¿ యిచà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit à°…à°¨à±à°¨à°¦à°¿ acquire-high-priority à°…à°¨à±à°®à°¤à°¿à°¨à°¿ తిరసà±à°•à°°à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit మనకౠacquire-real-time à°…à°¨à±à°®à°¤à°¿à°¨à°¿ యిచà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time à°…à°¨à±à°®à°¤à°¿à°¨à°¿ తిరసà±à°•à°°à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -291,231 +260,241 @@ msgstr ""
"లేదా '%s' యొకà±à°• సభà±à°¯à±à°¨à°¿à°µà°¿ à°•à°®à±à°®à±, లేదా à°ˆ వినియోగదారికి RLIMIT_NICE/RLIMIT_RTPRIO వనరౠ"
"పరిమితà±à°²à°¨à± పెంచà±à°®à±."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "అధిక-à°ªà±à°°à°¾à°®à±à°–à±à°¯à°¤à°¾ à°ªà±à°°à°£à°¾à°³à°¿à°• ఆకృతీకరణనందౠచేతనమà±à°šà±‡à°¯à°¬à°¡à°¿à°‚ది కాని విధానమౠదà±à°µà°¾à°°à°¾ à°…à°¨à±à°®à°¤à°¿à°‚చబడింది."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "సమరà±à°§à°µà°‚తంగా RLIMIT_RTPRIOనౠపెంచినది"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO విఫలమైంది: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE యిసà±à°¤à±‹à°‚ది"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "వాసà±à°¤à°µ-సమయ à°ªà±à°°à°£à°¾à°³à°¿à°• ఆకృతీకరణనందౠచేతనంచేయబడింది కాని విధానమౠదà±à°µà°¾à°°à°¾ à°…à°¨à±à°®à°¤à°¿à°‚చబడలేదà±."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "డెమోనౠనడà±à°šà±à°Ÿ లేదà±"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "డెమోనౠPID %u వలె నడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "డెమోనౠచంపà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à°ˆ à°ªà±à°°à±‹à°—à±à°°à°¾à°®à± root లా నడà±à°ªà°µà°²à°¸à°¿à°‚ది కాదౠ(--system తెలిపితే తపà±à°ª)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root à°…à°¨à±à°®à°¤à±à°²à± అవసరమà±."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start సిసà±à°Ÿà°®à± సంభవాల à°¦à±à°µà°¾à°°à°¾ మదà±à°¦à°¤à±€à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "సిసà±à°Ÿà°®à± మోడౠనందౠనడà±à°ªà±à°¤à±‹à°‚ది, అయితే --disallow-exit అమరà±à°šà°²à±‡à°¦à±!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠనడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿, అయితే --disallow-module-loading అమరà±à°šà°²à±‡à°¦à±!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠనడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿, బలవంతంగా SHM రీతిని అచేతనమౠచేసà±à°¤à±‹à°‚ది!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠనడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿, బలవంతంగా నిషà±à°•à±à°°à°®à°£ వృధా సమయానà±à°¨à°¿ అచేతనమౠచేయà±à°šà±à°¨à±à°¨à°¦à°¿!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio పొందà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "పైరౠవిఫలమైంది: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() విఫలమైంది: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() విఫలమైంది: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "డెమోనౠపà±à°°à°¾à°°à°‚à°­à°‚ విఫలమైంది."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "డెమోనౠపà±à°°à°¾à°°à°‚భమౠసఫలమైంది."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "ఇది PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ హోసà±à°Ÿà±: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "హోసà±à°Ÿà±à°¨à± నడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUలనౠకనà±à°—ొనà±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "పేజీ పరిమాణమౠ%lu బైటà±à°²à±"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à±‹ నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది: à°…à°µà±à°¨à±"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à±‹ నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది: లేదà±"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind రీతినందౠనడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "ఆపà±à°Ÿà°¿à°®à±ˆà°œà±à°¡à± à°¬à±à°²à±à°¡à±: à°…à°µà±à°¨à±"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "ఆపà±à°Ÿà°¿à°®à±ˆà°œà±à°¡à± à°¬à±à°²à±à°¡à±: కాదà±"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG నిరà±à°µà°šà°¿à°‚చబడింది, à°…à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± అచేతనమైనవి."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH నిరà±à°µà°šà°¿à°‚చబడింది, ఫాసà±à°Ÿà± పాతౠసà±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± మాతà±à°°à°®à±‡ అచేతనమైనవి."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "à°…à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± చేతనమైనవి."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "మిషనౠID పొందà±à°Ÿà°•à± విఫలమైంది"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "మిషనౠID %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "మిషనౠID %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "à°°à°¨à±â€Œà°Ÿà±ˆà°®à± డైరెకà±à°Ÿà°°à±€à°¨à± à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "à°¸à±à°¥à°¿à°¤à°¿ డైరెకà±à°Ÿà°°à±€à°¨à± à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠవà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() విఫలమైంది."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "తాజా అధిక-తీవà±à°°à°¤ కాలసూచికలౠఅందà±à°¬à°¾à°Ÿà±à°²à±‹ à°µà±à°¨à±à°¨à°¾à°¯à°¿! బానౠఎపటైటà±!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "మితà±à°°à°®à°¾, నీ కెరà±à°¨à°²à± చెడిపోయింది! అధిక-తీవà±à°°à°¤ కాలసూచకిలనౠచేతనమౠచేయమని సూచించడమైనది!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new() విఫలమైంది."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "డెమోనౠసిదà±à°¦à°®à±à°šà±‡à°¯à±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "à°à°µà°¿à°§à°®à±ˆà°¨ మాడà±à°¯à±‚à°³à±à°³à± లోడవకà±à°‚à°¡à°¾ డెమోనౠపà±à°°à°¾à°°à°‚à°­à°®à±, పనిచేయà±à°Ÿà°•à± తిరసà±à°•à°°à°¿à°‚చబడింది."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "డెమోనౠపà±à°°à°¾à°°à°‚భమౠపూరà±à°¤à±ˆà°¨à°¦à°¿."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "డెమోనౠమూసివేత సిదà±à°¦à°®à±à°šà±‡à°¯à°¬à°¡à°¿à°‚ది."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "డెమోనౠఅంతమà±à°šà±‡à°¯à°¬à°¡à°¿à°‚ది."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -658,15 +637,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -674,52 +653,52 @@ msgstr ""
"--log-level లాగౠసà±à°¥à°¾à°¯à°¿ ఆరà±à°—à±à°®à±†à°‚à°Ÿà±â€Œà°¨à± కోరà±à°•à±à°‚టోంది (సహజసంఖà±à°¯à°¨à± 0..4 విసà±à°¤à±ƒà°¤à°¿à°²à±‹ కాని లేదా డీబగà±â€Œ, "
"సమాచారమà±, నోటీసà±, హెచà±à°šà°°à°¿à°•, దోషమౠవీటిలో వొకటికాని)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "చెలà±à°²à°¨à°¿ లాగౠటారà±à°—ెటà±: 'syslog', 'stderr' లేదా 'auto' à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°®à±."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°¨à°ƒà°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm బూలియనౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°¨à± కోరà±à°•à±à°‚à°Ÿà±à°‚ది"
@@ -758,77 +737,82 @@ msgstr "వాడà±à°•: %s\n"
msgid "Load Once: %s\n"
msgstr "ఒకసారి లోడà±à°šà±‡à°¯à±à°®à±: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "పాతà±: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ లాగౠలకà±à°·à±à°¯à°®à± '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ లాగౠసà±à°¥à°¾à°¯à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ à°ªà±à°¨à°ƒà°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à°…à°¨à±à°¨à°¦à°¿ à°ˆ à°ªà±à°²à°¾à°Ÿà±â€Œà°«à°¾à°‚ నందౠమదà±à°¦à°¤à°¿à°µà±à°µà°¬à°¡à°¦à±."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ మాదిరి ఫారà±à°®à°¾à°Ÿà± '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ మాదిరి రేటౠ'%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ మాదిరి చానళà±à°³à± '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ ఛానలౠమాపౠ'%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ à°®à±à°•à±à°•à°²à± సంఖà±à°¯ '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ à°®à±à°•à±à°• పరిమాణమౠ'%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ సాదా à°¸à±à°¥à°¾à°¯à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ఆకృతీకరణ దసà±à°¤à±à°°à°®à±à°¨à± తెరà±à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -875,237 +859,237 @@ msgstr "సిసà±à°Ÿà°®à± విధానమౠPulseAudio అధిక-à°ªà
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr "సిసà±à°Ÿà°®à± విధానమౠPulseAudio వాసà±à°¤à°µ-సమయ à°ªà±à°°à°£à°¾à°³à°¿à°•à°¨à± పొందకà±à°‚à°¡à°¾ నిరోధిసà±à°¤à±‹à°‚ది."
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "మోనో"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "à°®à±à°‚దౠమధà±à°¯à°¨"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "à°®à±à°‚దౠఎడమవైపà±"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "à°®à±à°‚దౠకà±à°¡à°¿à°µà±ˆà°ªà±"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "వెనà±à°• మధà±à°¯à°¨"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "వెనà±à°• ఎడమవైపà±"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "వెనà±à°• à°•à±à°¡à°¿à°µà±ˆà°ªà±"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "తకà±à°•à±à°µ తరచà±à°¦à°¨à°‚ వెలà±à°µà°°à°¿à°‚à°šà±à°¨à°¦à°¿"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "à°®à±à°‚దౠఎడమ-మధà±à°¯"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "à°®à±à°‚దౠకà±à°¡à°¿-మధà±à°¯"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "à°Žà°¡à°® à°ªà±à°°à°•à±à°•"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "à°•à±à°¡à°¿ à°ªà±à°°à°•à±à°•"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "ఆకà±à°¸à°¿à°²à°°à°¿ 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "పై మధà±à°¯à°¨"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "పైన à°®à±à°‚దౠమధà±à°¯à°¨"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "పైన à°®à±à°‚దౠఎడమవైపà±"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "పైన à°®à±à°‚దౠకà±à°¡à°¿à°µà±ˆà°ªà±"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "పైన వెనà±à°• మధà±à°¯à°¨"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "పైన వెనà±à°• ఎడమవైపà±"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "పైన వెనà±à°• à°•à±à°¡à°¿à°µà±ˆà°ªà±à°¨"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(చెలà±à°²à°¨à°¿)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "à°¸à±à°Ÿà±€à°°à°¿à°¯à±‹"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "సరౌండౠ4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "సరౌండౠ4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "సరౌండౠ5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "సరౌండౠ5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "సరౌండౠ7.1"
@@ -1266,173 +1250,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "తెలియని పొడిగింపౠకొరకౠసందేశమౠసà±à°µà±€à°•à°°à°¿à°‚చింది '%s'"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± à°Žà°‚à°¡à°—à°Ÿà±à°Ÿà±à°Ÿà°•à± విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "à°ªà±à°²à±‡à°¬à±à°¯à°¾à°•à± à°¸à±à°Ÿà±à°°à±€à°®à± à°Žà°‚à°¡à°—à°Ÿà±à°Ÿà°¿à°¨à°¦à°¿.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "సేవికకౠఅనà±à°¸à°‚ధానమà±à°¨à± నశింపచేసà±à°¤à±‹à°‚ది.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± సమరà±à°§à°µà°‚తంగా సృషà±à°Ÿà°¿à°‚చబడింది.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "సాదారణ విశదీకరణ(à°¸à±à°ªà±†à°•à±) '%s' à°µà±à°ªà°¯à±‹à°—à°¿à°¸à±à°¤à±‹à°‚ది, à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°—à°‚ మాపౠ'%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "పరికరమౠ%s (%u, %ssuspended) à°•à± à°…à°¨à±à°¸à°‚ధానించబడింది.\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± దోషమà±: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠఅరà±à°¦à°¾à°‚తరమà±à°—à°¾ నిలిపివేయి.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠతిరిగికొనసాగించబడింది.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± తకà±à°•à±à°µà°—ానడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± మించినడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± à°ªà±à°°à°¾à°°à°‚భమైంది.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠ%s (%u, %ssuspended) à°•à± à°•à°¦à±à°ªà°¬à°¡à°¿à°‚ది.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "కాదౠ"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± బఫరౠయాటà±à°°à°¿à°¬à±à°¯à±‚à°Ÿà±à°²à± మారà±à°šà°¬à°¡à°¿à°¨à°µà°¿.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "à°…à°¨à±à°¸à°‚ధానమౠà°à°°à±à°ªà°¡à°¿à°¨à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "à°…à°¨à±à°¸à°‚ధానమౠవైఫలà±à°¯à°®à±: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± à°Žà°‚à°¡à°—à°Ÿà±à°Ÿà±à°Ÿà°•à± విఫలమైంది: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "à°ªà±à°²à±‡à°¬à±à°¯à°¾à°•à± à°¸à±à°Ÿà±à°°à±€à°®à± à°Žà°‚à°¡à°—à°Ÿà±à°Ÿà°¿à°¨à°¦à°¿.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "సేవికకౠఅనà±à°¸à°‚ధానమà±à°¨à± నశింపచేసà±à°¤à±‹à°‚ది.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF పొందింది.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "సంకేతమౠపొందినది, నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "à°•à±à°°à°¿à°¯à°¾à°¹à±€à°¨à°¤à°¨à± పొందà±à°Ÿà°²à±‹ విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "సమయం: %0.3f sec; à°•à±à°°à°¿à°¯à°¾à°¹à±€à°¨à°¤: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() విఫలమైంది: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1458,8 +1437,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1482,6 +1463,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1532,7 +1518,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1543,88 +1529,133 @@ msgstr ""
"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది %s\n"
"libpulse లింకైనది %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠ'%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°¨à°ƒà°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠ'%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "చెలà±à°²à°¨à°¿ à°•à±à°°à°¿à°¯à°¾à°¹à±€à°¨ విశదీకరణమౠ'%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "చెలà±à°²à°¨à°¿ కారà±à°¯à°•à±à°°à°®à°®à± సమయ విశదీకరణ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°¨à°ƒà°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "చెలà±à°²à°¨à°Ÿà±à°µà°‚à°Ÿà°¿ మాదిరి విశదీకరణ\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "చాలా యెకà±à°•à±à°µ ఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°²à±.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "మాదిరి సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "శబà±à°¦à°ªà± దసà±à°¤à±à°°à°®à±à°¨à± తెరà±à°µà±à°Ÿà°•à± విఫలమైంది.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "మాదిరి సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠమాదిరి విశదీకరణితో సరిపోలà±à°Ÿà°²à±‡à°¦à±\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "%s à°¸à±à°Ÿà±à°°à±€à°®à±â€Œà°¨à± మాదిరి విశదీకరణి '%s'తో తెరà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "రికారà±à°¡à°¿à°‚à°—à±"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "à°ªà±à°²à±‡à°¬à°¾à°•à±"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "చాలా యెకà±à°•à±à°µ ఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°²à±.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() విఫలమైంది.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() విఫలమైంది.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() విఫలమైంది.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() విఫలమైంది.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() విఫలమైంది.\n"
@@ -1654,8 +1685,7 @@ msgstr "తిరిగికొనసాగింపౠవైఫలà±à°¯à°®à±
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "హెచà±à°šà°°à°¿à°•: శబà±à°§à°ªà± సేవిక à°¸à±à°¥à°¾à°¨à°¿à°•à°‚ కాదà±, à°…à°°à±à°§à°¾à°‚తరనిలà±à°ªà±à°¦à°² కావడంలేదà±.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT పొందింది, నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
@@ -1684,7 +1714,7 @@ msgstr ""
"to\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1695,32 +1725,32 @@ msgstr ""
"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది %s\n"
"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "గణాంకాలనౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ à°µà±à°ªà°¯à±‹à°—ంలోవà±à°‚ది: %u à°¬à±à°²à°¾à°•à±â€Œà°²à± %s బైటà±à°²à°¨à± మొతà±à°¤à°‚à°—à°¾ కలిగి à°µà±à°¨à±à°¨à°¾à°¯à°¿.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "మొతà±à°¤à°‚ లైఫà±â€Œà°Ÿà±ˆà°®à±à°²à±‹ కేటాయించబడింది: %u à°¬à±à°²à°¾à°•à±à°²à± %s బైటà±à°²à°¨à± మొతà±à°¤à°‚à°—à°¾ కలిగివà±à°¨à±à°¨à°¾à°¯à°¿.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "మాదిరి à°•à±à°¯à°¾à°šà°¿ పరిమాణమà±: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "సేవిక సమాచారమà±à°¨à± పొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1743,12 +1773,12 @@ msgstr ""
"à°…à°ªà±à°°à°®à±‡à°¯ మూలమà±: %s\n"
"à°•à±à°•à±€: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "సింకౠసమాచారమà±à°¨à± పొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1787,12 +1817,22 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tà°ªà±à°°à±‹à°«à±ˆà°²à±à°¸à±:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tà°•à±à°°à°¿à°¯à°¾à°¶à±€à°² à°ªà±à°°à±Šà°«à±ˆà°²à±: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "మూలమౠసమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1831,20 +1871,20 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "వరà±à°¤à°¿à°‚à°šà°¦à±"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "మాడà±à°¯à±‚లౠసమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1861,12 +1901,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à°•à°•à±à°·à°¿à°¦à°¾à°°à°¿ సమాచారమౠపొందà±à°Ÿà°²à±‹ విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1881,12 +1921,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "కారà±à°¡à± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1903,22 +1943,22 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tà°ªà±à°°à±‹à°«à±ˆà°²à±à°¸à±:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tà°•à±à°°à°¿à°¯à°¾à°¶à±€à°² à°ªà±à°°à±Šà°«à±ˆà°²à±: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "సింకౠఇనà±à°ªà±à°Ÿà± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1955,12 +1995,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "మూలపౠఅవà±à°Ÿà±à°ªà±à°Ÿà± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1989,12 +2029,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "మాదిరి సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2025,23 +2065,22 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "విఫైలà±à°¯à°®à±: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "మాదిరి à°…à°ªà±â€Œà°²à±‹à°¡à± చేయà±à°Ÿà°•à± విఫలమైంది: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "దసà±à°¤à±à°°à°®à± యొకà±à°• అపరిపకà±à°µ à°®à±à°—à°¿à°‚à°ªà±\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2056,6 +2095,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2087,7 +2128,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2098,73 +2139,76 @@ msgstr ""
"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది%s\n"
"libpulse తో లింకà±à°šà±‡à°¯à°¬à°¡à°¿à°‚ది %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "లోడà±à°µà±à°µà±à°Ÿà°•à± దయచేసి మాదిరి దసà±à°¤à±à°°à°®à±à°¨à± తెలà±à°ªà±à°®à±\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "శబà±à°¦à°ªà± దసà±à°¤à±à°°à°®à±à°¨à± తెరà±à°µà±à°Ÿà°•à± విఫలమైంది.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "%s à°¸à±à°Ÿà±à°°à±€à°®à±â€Œà°¨à± మాదిరి విశదీకరణి '%s'తో తెరà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "à°ªà±à°²à±‡ చేయà±à°Ÿà°•à± మీరౠమాదిరి నామమà±à°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "తొలగించà±à°Ÿà°•à± మీరౠమాదిరి నామమà±à°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "మీరౠసింకౠఇనà±à°ªà±à°Ÿà± విషయసూచిక మరియౠసింకౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "మీరౠమూలమౠఅవà±à°Ÿà±à°ªà±à°Ÿà± విషయసూచిక మరియౠమూలమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "మీరౠమాడà±à°¯à±‚లౠనామమౠమరియౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°²à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "మీరౠమాడà±à°¯à±‚లౠవిషయసూచిక తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"మీరౠవొక సింకౠకనà±à°¨à°¾ యెకà±à°•à±à°µ తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚డకపోవచà±à°šà±. మీరౠబూలియనౠవిలà±à°µà°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"మీరౠవొక మూలమౠకనà±à°¨à°¾ యెకà±à°•à±à°µ తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚డకపోవచà±à°šà±. మీరౠబూలియనౠవిలà±à°µà°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "మీరౠకారà±à°¡à± నామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "మీరౠకారà±à°¡à± నామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "మీరౠకారà±à°¡à± నామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "à°Žà°Ÿà±à°µà°‚à°Ÿà°¿ విలà±à°µà±ˆà°¨ ఆదేశమౠతెలà±à°ªà°²à±‡à°¦à±.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() విఫలమైంది: %s"
@@ -2248,129 +2292,48 @@ msgstr "à°•à±à°•à±€ డాటా లోడౠచేయà±à°Ÿà°•à± విఫà°
msgid "Not yet implemented.\n"
msgstr "ఇంకా యింపà±à°²à°¿à°®à±†à°‚టౠచేయలేదà±\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio డెమోనౠనాశనం చేయà±à°Ÿà°²à±‹ విఫలమైంది."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "డెమోనౠసà±à°ªà°‚దించà±à°Ÿà°²à±‡à°¦à±."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± సమరà±à°¦à°µà°‚తంగా సృషà±à°Ÿà°¿à°‚చబడింది\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± దోషమà±: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "à°…à°¨à±à°¸à°‚ధానమౠà°à°°à±à°ªà°¡à°²à±‡à°¦à±.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది%s\n"
-"libpulse తో లింకైనది %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°° మారà±à°—à°®à±\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "దసà±à°¤à±à°°à°®à± '%s' తెరà±à°šà±à°Ÿà°•à± విఫలమైంది\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°—à°‚ మాపౠఅనà±à°¨à°¦à°¿ దసà±à°¤à±à°°à°®à±à°¤à±‹ సరిపోలà±à°šà°¡à°‚లేదà±.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "మాదిరి విశదీకరణనౠవà±à°ªà°¯à±‹à°—à°¿à°¸à±à°¤à±‹à°‚ది '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "ఆటోసà±à°ªà°¾à°¨à± తాళంనౠయాకà±à°¸à°¿à°¸à± చేయలేదà±."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2386,7 +2349,7 @@ msgstr ""
"మనమౠPOLLOUT అమరà±à°ªà± à°¦à±à°µà°¾à°°à°¾ జాగరూక పరచబడినామౠ-- à°à°®à±ˆà°¨à°ªà±à°ªà°Ÿà°¿à°•à°¿ snd_pcm_avail() à°…à°¨à±à°¨à°¦à°¿ 0 నౠ"
"యిసà±à°¤à±à°‚ది లేదా వేరొక విలà±à°µ < min_avail యిసà±à°¤à±à°‚ది."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2402,34 +2365,130 @@ msgstr ""
"మనమౠPOLLOUT అమరà±à°ªà± à°¦à±à°µà°¾à°°à°¾ జాగరూక పరచబడినామౠ-- à°à°®à±ˆà°¨à°ªà±à°ªà°Ÿà°¿à°•à°¿ snd_pcm_avail() à°…à°¨à±à°¨à°¦à°¿ 0 నౠ"
"యిసà±à°¤à±à°‚ది లేదా వేరొక విలà±à°µ < min_avail యిసà±à°¤à±à°‚ది."
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "à°…à°µà±à°Ÿà±à°ªà±à°Ÿà± %s + ఇనà±à°ªà±à°Ÿà± %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "à°…à°µà±à°Ÿà±à°ªà±à°Ÿà± %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "ఇనà±à°ªà±à°Ÿà± %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "ఆఫà±"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "హై ఫెడిలిటి à°ªà±à°²à±‡à°¬à±à°¯à°¾à°•à± (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "టెలిఫోనీ డూపà±à°²à±†à°•à±à°¸à± (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "పలà±à°¸à± ఆడియో సౌండౠసేవిక"
+
+#~ msgid "Analog Mono"
+#~ msgstr "ఎనలాగౠమోనో"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "ఎనలాగౠసà±à°Ÿà±€à°°à°¿à°¯à±‹"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "డిజటలౠసà±à°Ÿà±€à°°à°¿à°¯à±‹ (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "డిజిటలౠసà±à°Ÿà±€à°°à°¿à°¯à±‹ (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "ఎనలాగౠసరౌండౠ4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "డిజిటలౠసరౌండౠ4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "ఎనలాగౠసరౌండౠ4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "ఎనలాగౠసరౌండౠ5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "ఎనలాగౠసరౌండౠ5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "డిజిటలౠసరౌండౠ5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "ఎనలాగౠసరౌండౠ7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "à°…à°µà±à°Ÿà±à°ªà±à°Ÿà± %s + ఇనà±à°ªà±à°Ÿà± %s"
+
+#~ msgid "Output %s"
+#~ msgstr "à°…à°µà±à°Ÿà±à°ªà±à°Ÿà± %s"
+
+#~ msgid "Input %s"
+#~ msgstr "ఇనà±à°ªà±à°Ÿà± %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± సమరà±à°¦à°µà°‚తంగా సృషà±à°Ÿà°¿à°‚చబడింది\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± దోషమà±: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "à°…à°¨à±à°¸à°‚ధానమౠà°à°°à±à°ªà°¡à°²à±‡à°¦à±.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది%s\n"
+#~ "libpulse తో లింకైనది %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°° మారà±à°—à°®à±\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "దసà±à°¤à±à°°à°®à± '%s' తెరà±à°šà±à°Ÿà°•à± విఫలమైంది\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°—à°‚ మాపౠఅనà±à°¨à°¦à°¿ దసà±à°¤à±à°°à°®à±à°¤à±‹ సరిపోలà±à°šà°¡à°‚లేదà±.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "మాదిరి విశదీకరణనౠవà±à°ªà°¯à±‹à°—à°¿à°¸à±à°¤à±‹à°‚ది '%s'\n"
diff --git a/po/uk.po b/po/uk.po
index 0da3ff2c..c8b21c37 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-18 11:13+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
@@ -17,51 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "Ðналоговий моно"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "Ðналоговий Ñтерео"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "Цифровий Ñтерео (IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "Цифровий Ñтерео (HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "Ðналоговий об’ємний 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "Цифровий об’ємний 4.0 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "Ðналоговий об’ємний 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "Ðналоговий об’ємний 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "Ðналоговий об’ємний 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "Цифровий об’ємний 5.1 (IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "Ðналоговий об’ємний 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -74,7 +30,7 @@ msgstr ""
"Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь лаÑка, повідомте "
"про цю ваду розробникам ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +43,7 @@ msgstr ""
"Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь лаÑка, повідомте "
"про цю ваду розробникам ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +56,24 @@ msgstr ""
"Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь лаÑка, повідомте "
"про цю ваду розробникам ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "Вбудоване аудіо"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "Модем"
@@ -177,107 +146,107 @@ msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ уповноваженнÑ: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit надіÑлала відповідь: «%s»"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Отримано Ñигнал %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ кориÑтувача «%s»."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ групу «%s»."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Знайдено кориÑтувача «%s» (UID %lu) Ñ– групу «%s» (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID кориÑтувача «%s» Ñ– групи «%s» не збігаютьÑÑ."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Домашнім каталогом кориÑтувача «%s» не Ñ” «%s», дані проігноровано."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Ðе вдалоÑÑ Ñтворити «%s»: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ ÑпиÑок груп: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Програма уÑпішно позбулаÑÑ Ð¿Ñ€Ð°Ð² доÑтупу кориÑтувача root."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "ЗагальноÑиÑтемний режим не підтримуєтьÑÑ Ð½Ð° цій платформі."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "Спроба виконати setrlimit(%s, (%u, %u)) була невдалою: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Ðе вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ€Ñдок команди."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Ми перебуваємо у групі «%s», що надає змогу Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð· виÑоким пріоритетом."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Ми перебуваємо у групі «%s», що надає змогу Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ режимі реального "
"чаÑу."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit надала нам права доÑтупу acquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit відмовила у наданні прав доÑтупу acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit надала нам права доÑтупу acquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit відмовила у наданні прав доÑтупу acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -300,48 +269,48 @@ msgstr ""
"Ñтаньте учаÑником групи «%s» або збільшіть діапазон реÑурÑу RLIMIT_NICE/"
"RLIMIT_RTPRIO Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ кориÑтувача."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ÐŸÐ»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð· виÑоким пріоритетом увімкнено у налаштуваннÑÑ…, але не дозволене "
"правилами безпеки."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "УÑпішно підвищено RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби підвищити RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "ПозбуваємоÑÑ CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ÐŸÐ»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ режимі реального чаÑу увімкнено у налаштуваннÑÑ…, але не "
"дозволене правилами безпеки."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Фонову Ñлужбу не запущено"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Фонову Ñлужбу запущено Ñк PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚Ð¸ роботу фонової Ñлужби: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -349,164 +318,174 @@ msgstr ""
"Цю програму не призначено Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку від імені кориÑтувача root (Ñкщо не "
"вказано параметра --system)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Потрібні права доÑтупу кориÑтувача root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr ""
"Параметр --start не підтримуєтьÑÑ Ð´Ð»Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑиÑтемних екземплÑрів програми."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ЗапуÑк у загальноÑиÑтемному режимі, але не вÑтановлено --disallow-exit!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ЗапуÑк у загальноÑиÑтемному режимі, але не вÑтановлено --disallow-module-"
"loading!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ЗапуÑк у загальноÑиÑтемному режимі, примуÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ЗапуÑк у загальноÑиÑтемному режимі, примуÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ параметрів "
"чаÑу виходу за відÑутноÑÑ‚Ñ– активноÑÑ‚Ñ–!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Спроба ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ fork() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ read() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Спроба запуÑку фонової Ñлужби завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Фонову Ñлужбу уÑпішно запущено."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Це PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Вузол збираннÑ: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS збираннÑ: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Запущено на вузлі: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Знайдено %u процеÑорів."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Розмір Ñторінки дорівнює %lu байтам"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Зібрано з підтримкою Valgrind: так"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Зібрано з підтримкою Valgrind: ні"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "ЗапуÑк у режимі valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Зібрано з оптимізацією: так"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Зібрано з оптимізацією: ні"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Спроба отримати ідентифікатор ÑиÑтеми завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "Ідентифікатор ÑиÑтеми %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "Ідентифікатор ÑиÑтеми %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Каталог запуÑку: %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Каталог Ñтану: %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ЗапуÑку у загальноÑиÑтемному режимі: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_pid_file_create() зазнала невдачі."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ДоÑтупні Ñвіжі виÑокоточні таймери! Смачного!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -514,33 +493,33 @@ msgstr ""
"Чувак, твоє Ñдро — лайно! Круті пацани рекомендують Linux з увімкненими "
"виÑокоточними таймерами!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_core_new() зазнала невдачі."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ фонову Ñлужбу."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"ЗапуÑк фонової Ñлужби без жодного завантаженого модулÑ, Ñлужба не буде "
"працездатною."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "ЗапуÑк фонової Ñлужби завершено."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "Ініційовано Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ фонової Ñлужби."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ñ— Ñлужби перервано."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -698,15 +677,15 @@ msgstr ""
" -n Ðе завантажувати типовий файл "
"Ñкрипту\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --daemonize Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --fail Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -715,53 +694,53 @@ msgstr ""
"(чиÑлове у діапазоні 0..4 або одне зі значень debug, info, notice, warn, "
"error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --high-priority Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --realtime Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr ""
"Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --disallow-module-loading Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --disallow-exit Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --use-pid-file Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Журнал вказано неправильно: можливі варіанти «syslog», «stderr» і «auto»."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --log-time Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --log-meta Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Ðекоректний метод зміни чаÑтотних характериÑтик «%s»."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --system Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --no-cpu-limit Ñлід вказувати булівÑький аргумент"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° --disable-shm Ñлід вказувати булівÑький аргумент"
@@ -800,77 +779,82 @@ msgstr "ВикориÑтаннÑ: %s\n"
msgid "Load Once: %s\n"
msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ШлÑÑ…: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ðекоректний журнал «%s»."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ðекоректний рівень Ð¶ÑƒÑ€Ð½Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Â«%s»."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ðекоректний метод зміни чаÑтотних характериÑтик «%s»."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ rlimit «%s»."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit не підтримуєтьÑÑ Ð½Ð° цій платформі."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ðекоректний формат фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ðекоректна чаÑтота вибірки «%s»."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ðекоректні канали фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ðекоректна карта каналів «%s»'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ðекоректна кількіÑÑ‚ÑŒ фрагментів «%s»."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ðекоректний розмір фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ðекоректний рівень nice «%s»."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл налаштувань: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -921,237 +905,237 @@ msgstr ""
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "Моно"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "Передній центральний"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "Передній лівий"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "Передній правий"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "Задній центральний"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "Задній лівий"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "Задній правий"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "Джерело низьких чаÑтот"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "Передній лівоцентральний"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "Передній правоцентральний"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "Боковий лівий"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "Боковий правий"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "Допоміжний 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "Допоміжний 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "Допоміжний 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "Допоміжний 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "Допоміжний 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "Допоміжний 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "Допоміжний 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "Допоміжний 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "Допоміжний 8"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "Допоміжний 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "Допоміжний 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "Допоміжний 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "Допоміжний 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "Допоміжний 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "Допоміжний 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "Допоміжний 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "Допоміжний 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "Допоміжний 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "Допоміжний 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "Допоміжний 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "Допоміжний 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "Допоміжний 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "Допоміжний 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "Допоміжний 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "Допоміжний 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "Допоміжний 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "Допоміжний 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "Допоміжний 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "Допоміжний 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "Допоміжний 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "Допоміжний 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "Допоміжний 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "Верхній центральний"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "Верхній передній центральний"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "Верхній передній лівий"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "Верхній передній правий"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "Верхній задній центральний"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "Верхній задній лівий"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "Верхній задній правий"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(некоректний)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "Стерео"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "Об'ємний 4.0"
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "Об'ємний 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "Об'ємний 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "Об'ємний 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "Об'ємний 7.1"
@@ -1313,174 +1297,169 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Отримано Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ невідомий додаток «%s»"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Ðе вдалоÑÑ Ñтворити тунель Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Потік Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚ÑƒÐ½ÐµÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¾.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Тунельне Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñервером.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_write() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_peek() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Потік було уÑпішно Ñтворено.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_get_buffer_attr() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Метрика буфера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Метрика буфера: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð°Ñтотної Ñпецифікації «%s», карта каналів «%s».\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "З’єднано з приÑтроєм %s (%u, %s призупинено).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Помилка потоку: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Призупинено приÑтрій потоку. %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Відновлено приÑтрій потоку. %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ÐÐµÐ´Ð¾Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ÐŸÐµÑ€ÐµÐ²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Потік запущено. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Потік переÑунуто на приÑтрій %s (%u, %s призупинено). %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "не "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, fuzzy, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ÐÐµÐ´Ð¾Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Ð’Ñтановлено з’єднаннÑ. %s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_new() зазнала невдачі: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_playback() зазнала невдачі: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_record() зазнала невдачі: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Спроба вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð° невдачі: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Ðе вдалоÑÑ Ñтворити тунель Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Потік Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚ÑƒÐ½ÐµÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¾.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Тунельне Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñервером.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Отримано EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ read() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ write() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Отримано Ñигнал, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ латентніÑÑ‚ÑŒ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ЧаÑ: %0.3f Ñек.; ЛатентніÑÑ‚ÑŒ: %0.0f мкÑ. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr ""
"Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_update_timing_info() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1506,8 +1485,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1530,6 +1511,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [параметри]\n"
"\n"
@@ -1578,7 +1564,7 @@ msgstr ""
" --process-time=БÐЙТИ ÐадіÑлати запит щодо вказаного чаÑу "
"обробки на запит у байтах.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1589,88 +1575,133 @@ msgstr ""
"Зібрано з libpulse %s\n"
"З’єднано з libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Ðекоректна карта каналів «%s»\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Ðекоректний метод зміни чаÑтотних характериÑтик «%s»."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Ðекоректна карта каналів «%s»\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Ðекоректна ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð»Ð°Ñ‚ÐµÐ½Ñ‚Ð½Ð¾ÑÑ‚Ñ– «%s»\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Ðекоректна чаÑова ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Â«%s»\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ðекоректний метод зміни чаÑтотних характериÑтик «%s»."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Ðекоректна чаÑтотна ÑпецифікаціÑ\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Забагато аргументів.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо фрагмента: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ звуковий файл.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо фрагмента: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Карта каналі не відповідає чаÑтотній Ñпецифікації\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ %s з чаÑтотною Ñпецифікацією «%s».\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "запиÑ"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "відтвореннÑ"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Забагато аргументів.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ io_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_connect() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ time_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_run() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
@@ -1701,8 +1732,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"ПОПЕРЕДЖЕÐÐЯ: звуковий Ñервер не Ñ” локальним, його не можна призупинити.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Отримано Ñигнал SIGINT, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n"
@@ -1732,7 +1762,7 @@ msgstr ""
"з’єднатиÑÑ\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1743,33 +1773,33 @@ msgstr ""
"Зібрано з libpulse %s\n"
"З’єднано з libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Зараз викориÑтано: %u блоків, що міÑÑ‚ÑÑ‚ÑŒ загалом %s байтів.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Виділено протÑгом Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼: %u блоків, що міÑÑ‚ÑÑ‚ÑŒ %s байтів.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Розмір кешу фрагментів: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо Ñервера: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1792,12 +1822,12 @@ msgstr ""
"Типове джерело: %s\n"
"Кука: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо приймача: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1836,12 +1866,22 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tПрофілі:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tÐктивний профіль: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо джерела: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1880,20 +1920,20 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "н/д"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо модулÑ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1910,12 +1950,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо клієнта: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1930,12 +1970,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо карти: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1952,22 +1992,22 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tПрофілі:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tÐктивний профіль: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ відомоÑтей щодо приймача: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2004,12 +2044,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð°: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2038,12 +2078,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо фрагмента: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -2074,23 +2114,22 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Помилка: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ зразок: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "ПередчаÑне Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2105,6 +2144,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2135,7 +2176,7 @@ msgstr ""
"з’єднатиÑÑ\n"
" -n, --client-name=ÐÐЗВРСпоÑіб виклику клієнта на Ñервері\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2146,48 +2187,44 @@ msgstr ""
"Зібрано з libpulse %s\n"
"З’єднано з libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "Будь лаÑка, вкажіть зразковий файл Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ звуковий файл.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ %s з чаÑтотною Ñпецифікацією «%s».\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "Вам Ñлід вказати назву зразкового файла, Ñкий Ñлід відтворити\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "Вам Ñлід вказати назву зразкового файла, Ñкий Ñлід вилучити\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° даних Ñ– приймач\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ– джерело\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "Вам Ñлід вказати назву Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ– аргументи.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð´ÑƒÐ»Ñ\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2195,8 +2232,7 @@ msgstr ""
"Ðе можна вказувати більше одного приймача. Вам Ñлід вказати булівÑьке "
"значеннÑ.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2204,17 +2240,25 @@ msgstr ""
"Ðе можна вказувати більше одного джерела. Вам Ñлід вказати булівÑьке "
"значеннÑ.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸ Ñ– назву профілю\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸ Ñ– назву профілю\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸ Ñ– назву профілю\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "Ðе вказано коректної команди.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_connect() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
@@ -2300,130 +2344,49 @@ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ дані куки\n"
msgid "Not yet implemented.\n"
msgstr "Ще не реалізовано.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
"Спроба Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ фонової Ñлужби PulseAudio завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Фонова Ñлужба не відповідає."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Потік було уÑпішно Ñтворено\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Помилка потоку: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Ð—â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ñтановлено.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [параметри] [ФÐЙЛ]\n"
-"\n"
-" -h, --help Показати цю довідку\n"
-" --version Показати дані щодо верÑÑ–Ñ—\n"
-"\n"
-" -v, --verbose Увімкнути докладний режим дій\n"
-"\n"
-" -s, --server=СЕРВЕР Ðазва Ñервера, з Ñким Ñлід "
-"вÑтановити Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ to\n"
-" -d, --device=ПРИСТРІЙ Ðазва приймача, з Ñким Ñлід "
-"з’єднатиÑÑ\n"
-" -n, --client-name=ÐÐЗВРСпоÑіб виклику клієнта на Ñервері\n"
-" --stream-name=ÐÐЗВРСпоÑіб виклику потоку на Ñервері\n"
-" --volume=ГУЧÐІСТЬ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— (лінійної) "
-"гучноÑÑ‚Ñ– у діапазоні 0..65536\n"
-" --channel-map=КÐРТÐ_КÐÐÐЛІВ Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸ каналів, Ñкою Ñлід "
-"ÑкориÑтатиÑÑ\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Зібрано з libpulse %s\n"
-"З’єднано з libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Ðекоректна карта каналів\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл «%s»\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Карта каналів не відповідає файлові.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð°Ñтотної Ñпецифікації «%s»\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ñти Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ розгалуженнÑ."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2434,7 +2397,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2445,35 +2408,122 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr ""
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
#, fuzzy
msgid "PulseAudio Sound Server"
msgstr "Звукова ÑиÑтема PulseAudio"
+
+#~ msgid "Analog Mono"
+#~ msgstr "Ðналоговий моно"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "Ðналоговий Ñтерео"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "Цифровий Ñтерео (IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "Цифровий Ñтерео (HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "Ðналоговий об’ємний 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "Цифровий об’ємний 4.0 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "Ðналоговий об’ємний 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "Ðналоговий об’ємний 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "Ðналоговий об’ємний 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "Цифровий об’ємний 5.1 (IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "Ðналоговий об’ємний 7.1"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Потік було уÑпішно Ñтворено\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Помилка потоку: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Ð—â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ñтановлено.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [параметри] [ФÐЙЛ]\n"
+#~ "\n"
+#~ " -h, --help Показати цю довідку\n"
+#~ " --version Показати дані щодо верÑÑ–Ñ—\n"
+#~ "\n"
+#~ " -v, --verbose Увімкнути докладний режим дій\n"
+#~ "\n"
+#~ " -s, --server=СЕРВЕР Ðазва Ñервера, з Ñким Ñлід "
+#~ "вÑтановити Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ to\n"
+#~ " -d, --device=ПРИСТРІЙ Ðазва приймача, з Ñким Ñлід "
+#~ "з’єднатиÑÑ\n"
+#~ " -n, --client-name=ÐÐЗВРСпоÑіб виклику клієнта на "
+#~ "Ñервері\n"
+#~ " --stream-name=ÐÐЗВРСпоÑіб виклику потоку на Ñервері\n"
+#~ " --volume=ГУЧÐІСТЬ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— (лінійної) "
+#~ "гучноÑÑ‚Ñ– у діапазоні 0..65536\n"
+#~ " --channel-map=КÐРТÐ_КÐÐÐЛІВ Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸ каналів, Ñкою "
+#~ "Ñлід ÑкориÑтатиÑÑ\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Зібрано з libpulse %s\n"
+#~ "З’єднано з libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Ðекоректна карта каналів\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл «%s»\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Карта каналів не відповідає файлові.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð°Ñтотної Ñпецифікації «%s»\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 03becccf..2da73fe8 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-17 23:42+0200\n"
"PO-Revision-Date: 2009-04-06 10:26+1000\n"
"Last-Translator: Leah Liu <lliu@redhat.com>\n"
"Language-Team: Simplified Chinese <zh@li.org>\n"
@@ -20,51 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../src/modules/alsa/alsa-util.c:532
-msgid "Analog Mono"
-msgstr "模拟å•å£°é“"
-
-#: ../src/modules/alsa/alsa-util.c:540
-msgid "Analog Stereo"
-msgstr "模拟立体声"
-
-#: ../src/modules/alsa/alsa-util.c:548
-msgid "Digital Stereo (IEC958)"
-msgstr "数字立体声(IEC958)"
-
-#: ../src/modules/alsa/alsa-util.c:556
-msgid "Digital Stereo (HDMI)"
-msgstr "数字立体声(HDMI)"
-
-#: ../src/modules/alsa/alsa-util.c:565
-msgid "Analog Surround 4.0"
-msgstr "模拟环绕 4.0"
-
-#: ../src/modules/alsa/alsa-util.c:574
-msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr "数字环绕 4.0(IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:584
-msgid "Analog Surround 4.1"
-msgstr "模拟环绕 4.1"
-
-#: ../src/modules/alsa/alsa-util.c:594
-msgid "Analog Surround 5.0"
-msgstr "模拟环绕 5.0"
-
-#: ../src/modules/alsa/alsa-util.c:604
-msgid "Analog Surround 5.1"
-msgstr "模拟环绕 5.1"
-
-#: ../src/modules/alsa/alsa-util.c:614
-msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr "数字环绕 5.1(IEC958/AC3)"
-
-#: ../src/modules/alsa/alsa-util.c:625
-msgid "Analog Surround 7.1"
-msgstr "模拟环绕 7.1"
-
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1015
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -75,7 +31,7 @@ msgstr ""
"snd_pcm_avail() 返回的值éžå¸¸å¤§ï¼š%lu 字节(%lu ms)。\n"
"很å¯èƒ½æ˜¯ ALSA é©±åŠ¨ç¨‹åº '%s' 中的 bugã€‚è¯·å‘ ALSA å¼€å‘者举报这个问题。"
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1056
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -86,7 +42,7 @@ msgstr ""
"snd_pcm_delay() 返回的值éžå¸¸å¤§ï¼š%li 字节(%s%lu ms)。\n"
"很å¯èƒ½æ˜¯ ALSA é©±åŠ¨ç¨‹åº '%s' 中的 bugã€‚è¯·å‘ ALSA å¼€å‘者举报这个问题。"
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1103
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +53,24 @@ msgstr ""
"snd_pcm_mmap_begin() 返回的值éžå¸¸å¤§ï¼š%lu 字节(%lu ms)。\n"
"很å¯èƒ½æ˜¯ ALSA é©±åŠ¨ç¨‹åº '%s' 中的 bugã€‚è¯·å‘ ALSA å¼€å‘者举报这个问题。"
-#: ../src/pulsecore/sink.c:2141
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr ""
+
+#: ../src/modules/module-ladspa-sink.c:53
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2394
msgid "Internal Audio"
msgstr "内部音频"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2400
msgid "Modem"
msgstr "调制解调器"
@@ -171,104 +140,104 @@ msgstr "无法获å–授æƒ: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit回å¤'%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "获得信å·%s"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "退出"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "找ä¸åˆ°ç”¨æˆ· `%s' "
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "找ä¸åˆ°ç”¨æˆ·ç»„ `%s'"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "å‘现用户'%s' (UID %lu)和组'%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "用户'%s'与组'%s'çš„GIDä¸åŒ¹é…."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "用户'%s'的主文件夹ä¸æ˜¯'%s',忽略。"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "创建'%s'失败: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "更改组列表失败:%s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "更改GID失败:%s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "更改UID失败:%s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "æˆåŠŸæ”¾å¼ƒrootæƒé™ã€‚"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "此平å°ä¸æ”¯æŒsystem-wide模å¼ã€‚"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) 失败:%s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "分æžå‘½ä»¤è¡Œå¤±è´¥ã€‚"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "我们在'%s'组中,å…许高优先级调度。"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "我们在'%s'组中,å…许实时调度。"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit授予我们“获å–高优先级â€æƒé™ã€‚"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKitæ‹’ç»â€œèŽ·å–高优先级â€æƒé™ã€‚"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit授予我们“获å–实时â€æƒé™ã€‚"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKitæ‹’ç»æˆ‘们“获å–实时â€æƒé™ã€‚"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -286,231 +255,241 @@ msgstr ""
"è¦å¯ç”¨å®žæ—¶/高优先调度,请获得适当的 PolicyKit 特æƒï¼Œæˆ–者æˆä¸º '%s' æˆå‘˜ï¼Œä¹Ÿå¯"
"以为这个用户增加 RLIMIT_NICE/RLIMIT_RTPRIO 资æºé™åˆ¶ã€‚"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "é…置中已å¯ç”¨é«˜ä¼˜å…ˆçº§è°ƒåº¦ï¼Œä½†ç­–略未å…许。"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "æ高RLIMIT_RTPRIOæˆåŠŸã€‚"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO失败:%s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "正在放弃CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "é…置中已å¯ç”¨å®žæ—¶è°ƒåº¦ï¼Œä½†ç­–略未å…许。"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "åŽå°ç¨‹åºæ²¡æœ‰è¿è¡Œ"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "åŽå°ç¨‹åºæ­£åœ¨è¿è¡Œï¼ŒPID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "æ€æ­»åŽå°ç¨‹åºå¤±è´¥ï¼š%s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "ä¸åº”以root身份è¿è¡Œæœ¬ç¨‹åºï¼ˆé™¤éžæŒ‡å®š --system)。"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "éœ€è¦ root æƒé™ã€‚"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "系统实例ä¸æ”¯æŒ --start。"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œä½†æ˜¯ --disallow-exit 未设定ï¼"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œä½†æ˜¯ --disallow-module-loading 未设定ï¼"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œå¼ºåˆ¶ç¦ç”¨SHM模å¼ï¼"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œå¼ºåˆ¶ç¦ç”¨é€€å‡ºç©ºé—²æ—¶é—´ï¼"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "获å–stdio失败。"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "管é“失败:%s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork()失败:%s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read()失败:%s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "åŽå°ç¨‹åºå¯åŠ¨å¤±è´¥ã€‚"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "åŽå°ç¨‹åºå¯åŠ¨æˆåŠŸã€‚"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "这是 PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "编译主机:%s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "编译CFLAGS:%s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "正在主机上è¿è¡Œï¼š%s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "找到 %u CPU。"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "页é¢å¤§å°ä¸º%lu字节"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "编译å¯ç”¨Valgrind支æŒï¼šæ˜¯"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "编译å¯ç”¨Valgrind支æŒï¼šå¦"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "正在以valgrind模å¼è¿è¡Œï¼š%s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "优化生æˆï¼šæ˜¯"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "优化生æˆï¼šå¦"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "æ‹’ç» NDEBUG,ç¦ç”¨æ‰€æœ‰ assert"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "æ‹’ç» FASTPATH,åªç¦ç”¨å¿«é€Ÿè·¯å¾„ assert。"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "å¯ç”¨æ‰€æœ‰ assert。"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "获å–machine ID失败"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "machine ID是%s。"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "machine ID是%s。"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "正在使用è¿è¡Œæ—¶æ–‡ä»¶å¤¹%s。"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "正在使用状æ€æ–‡ä»¶å¤¹%s。"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "正在以系统模å¼è¿è¡Œï¼š%s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:934
+msgid ""
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
+msgstr ""
+
+#: ../src/daemon/main.c:951
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败。"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:961
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "新鲜的高分辨率计时器开锅了ï¼åƒä¸ªé¥±ï¼"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:963
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "è€å…„,你的内核真臭ï¼çŽ°åœ¨æµè¡Œçš„是å¯ç”¨äº†é«˜åˆ†è¾©çŽ‡è®¡åˆ†å™¨çš„Linuxï¼"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:988
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败。"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1050
msgid "Failed to initialize daemon."
msgstr "åŽå°ç¨‹åºåˆå§‹åŒ–失败。"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1055
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "åŽå°ç¨‹åºå¯åŠ¨æœªåŠ è½½ä»»ä½•æ¨¡å—,拒ç»å·¥ä½œã€‚"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1072
msgid "Daemon startup complete."
msgstr "åŽå°ç¨‹åºå¯åŠ¨å®Œæˆã€‚"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1078
msgid "Daemon shutdown initiated."
msgstr "开始关闭åŽå°ç¨‹åºã€‚"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1100
msgid "Daemon terminated."
msgstr "åŽå°ç¨‹åºå·²ç»ˆæ­¢ã€‚"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -637,15 +616,15 @@ msgstr ""
"\n"
" -n ä¸åŠ è½½é»˜è®¤çš„脚本文件\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -653,52 +632,52 @@ msgstr ""
"--log-level 期待日志级别å‚数(å¯ä»¥æ˜¯æ•°å­—0~4或者debug,info,notice,warn,"
"error中的一个)"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit 需è¦å¸ƒå°”值å‚æ•°"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "无效的日志目标:从syslog,stderrå’Œauto中选å–一个"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time 需è¦å¸ƒå°”值å‚æ•°"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta 需è¦å¸ƒå°”值å‚æ•°"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "无效的é‡é‡‡æ ·æ–¹æ³•'%s'。"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit 期待布尔å‚æ•°"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm 期待布尔å‚æ•°"
@@ -737,77 +716,82 @@ msgstr "用法:%s\n"
msgid "Load Once: %s\n"
msgstr "加载一次:%s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "路径:%s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] 无效的日志目标'%s'。"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] 无效的日志级别'%s'。"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] 无效的é‡é‡‡æ ·æ–¹æ³•'%s'。"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] 无效的rlimit '%s'。"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] 此平å°ä¸æ”¯æŒrlimit。"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] 无效的样å“æ ¼å¼'%s'。"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] 无效的样å“率'%s'。"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] 无效的样å“通é“'%s'。"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] 无效频é“地图 '%s'。"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] 无效的分段数'%s'。"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] 无效的分段大å°'%s'。"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] 无效的nice level '%s'。"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "打开é…置文件失败:%s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -852,237 +836,237 @@ msgstr "系统策略防止 PulseAudio 获得高优先调度。"
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr "系统策略防止 PulseAudio 获得实时调度。"
-#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
msgid "Mono"
msgstr "å•å£°é“"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:107
msgid "Front Center"
msgstr "中å‰"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:108
msgid "Front Left"
msgstr "å·¦å‰"
-#: ../src/pulse/channelmap.c:107
+#: ../src/pulse/channelmap.c:109
msgid "Front Right"
msgstr "å³å‰"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:111
msgid "Rear Center"
msgstr "中åŽ"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:112
msgid "Rear Left"
msgstr "å·¦åŽ"
-#: ../src/pulse/channelmap.c:111
+#: ../src/pulse/channelmap.c:113
msgid "Rear Right"
msgstr "å³åŽ"
-#: ../src/pulse/channelmap.c:113
+#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
msgstr "低频脉冲"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
msgstr "å‰å·¦ä¸­å¤®"
-#: ../src/pulse/channelmap.c:116
+#: ../src/pulse/channelmap.c:118
msgid "Front Right-of-center"
msgstr "å‰å³ä¸­å¤®"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:120
msgid "Side Left"
msgstr "左侧"
-#: ../src/pulse/channelmap.c:119
+#: ../src/pulse/channelmap.c:121
msgid "Side Right"
msgstr "å³ä¾§"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 0"
msgstr "辅助 0"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 1"
msgstr "辅助 1"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 2"
msgstr "辅助 2"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 3"
msgstr "辅助 3"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 4"
msgstr "辅助 4"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 5"
msgstr "辅助 5"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 6"
msgstr "辅助 6"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 7"
msgstr "辅助 7"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 8"
msgstr "辅助 7"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 9"
msgstr "辅助 9"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 10"
msgstr "辅助 10"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 11"
msgstr "辅助 11"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 12"
msgstr "辅助 12"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 13"
msgstr "辅助 13"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 14"
msgstr "辅助 14"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 15"
msgstr "辅助 15"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 16"
msgstr "辅助 16"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 17"
msgstr "辅助 17"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 18"
msgstr "辅助 18"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 19"
msgstr "辅助 19"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 20"
msgstr "辅助 20"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 21"
msgstr "辅助 21"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 22"
msgstr "辅助 22"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 23"
msgstr "辅助 23"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 24"
msgstr "辅助 24"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 25"
msgstr "辅助 25"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 26"
msgstr "辅助 26"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 27"
msgstr "辅助 27"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 28"
msgstr "辅助 28"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 29"
msgstr "辅助 29"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:153
msgid "Auxiliary 30"
msgstr "辅助 30"
-#: ../src/pulse/channelmap.c:152
+#: ../src/pulse/channelmap.c:154
msgid "Auxiliary 31"
msgstr "辅助 31"
-#: ../src/pulse/channelmap.c:154
+#: ../src/pulse/channelmap.c:156
msgid "Top Center"
msgstr "上中"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Center"
msgstr "上中å‰"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:159
msgid "Top Front Left"
msgstr "上左å‰"
-#: ../src/pulse/channelmap.c:158
+#: ../src/pulse/channelmap.c:160
msgid "Top Front Right"
msgstr "上å³å‰"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Center"
msgstr "上中åŽ"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:163
msgid "Top Rear Left"
msgstr "上左åŽ"
-#: ../src/pulse/channelmap.c:162
+#: ../src/pulse/channelmap.c:164
msgid "Top Rear Right"
msgstr "上å³åŽ"
-#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
msgid "(invalid)"
msgstr "(无效)"
-#: ../src/pulse/channelmap.c:808
+#: ../src/pulse/channelmap.c:751
msgid "Stereo"
msgstr "立体声"
-#: ../src/pulse/channelmap.c:813
+#: ../src/pulse/channelmap.c:756
msgid "Surround 4.0"
msgstr "环绕 4.0 "
-#: ../src/pulse/channelmap.c:819
+#: ../src/pulse/channelmap.c:762
msgid "Surround 4.1"
msgstr "环绕 4.1"
-#: ../src/pulse/channelmap.c:825
+#: ../src/pulse/channelmap.c:768
msgid "Surround 5.0"
msgstr "环绕 5.0"
-#: ../src/pulse/channelmap.c:831
+#: ../src/pulse/channelmap.c:774
msgid "Surround 5.1"
msgstr "环绕 5.1"
-#: ../src/pulse/channelmap.c:838
+#: ../src/pulse/channelmap.c:781
msgid "Surround 7.1"
msgstr "环绕 7.1"
@@ -1243,173 +1227,168 @@ msgstr "waitpid():%s"
msgid "Received message for unknown extension '%s'"
msgstr "收到未知扩展'%s'çš„ä¿¡æ¯"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "排出æµå¤±è´¥ï¼š%s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "æµæ’­æ”¾å®Œæ¯•ã€‚\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Draining 连接到æœåŠ¡å™¨ã€‚\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain():%s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write()失败:%s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek()失败:%s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "æµåˆ›å»ºæˆåŠŸã€‚\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr()失败:%s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "缓冲计é‡ï¼šmaxlength=%u,tlength=%u,prebuf=%u,minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "缓冲计é‡ï¼šmaxlength=%u,fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "正在使用样å“规格'%s',通é“映射'%s'。\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "已连接至设备%s (%u,%s挂起)。\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "æµé”™è¯¯ï¼š%s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "æµè®¾å¤‡æŒ‚起。%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "æµè®¾å¤‡æ¢å¤ã€‚%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "æµæ¬ è½½è¿è¡Œã€‚%s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "æµè¶…é™è¿è¡Œã€‚%s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "æµå·²å¯åŠ¨ã€‚%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "æµç§»è‡³è®¾å¤‡%s (%u,%s挂起)。%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "更改æµæ¢å‡ºå±žæ€§ã€‚%s\n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "连接已建立。%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new()失败:%s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback()失败:%s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_playback()失败:%s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "连接失败:%s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "排出æµå¤±è´¥ï¼š%s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "æµæ’­æ”¾å®Œæ¯•ã€‚\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Draining 连接到æœåŠ¡å™¨ã€‚\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "收到EOF。\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain():%s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read()失败:%s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write()失败:%s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "收到信å·ï¼Œæ­£åœ¨é€€å‡ºã€‚\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "获å–传输延迟失败:%s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "时间:%0.3f秒;延迟:%0.0f 微秒。 \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info()失败:%s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1435,8 +1414,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1459,6 +1440,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1493,7 +1479,7 @@ msgstr ""
" --latency=BYTES 请求指定字节数的延迟。\n"
" --process-time=BYTES æ¯æ¬¡è¯·æ±‚指定字节数的处ç†æ—¶é—´ã€‚\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1504,88 +1490,133 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "无效的通é“映射æè¿°'%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "无效的é‡é‡‡æ ·æ–¹æ³•'%s'。"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "无效的通é“映射æè¿°'%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "无效的延迟规格æè¿° %s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "无效的处ç†æ—¶é—´æè¿° '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "无效的é‡é‡‡æ ·æ–¹æ³•'%s'。"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "无效的采样æè¿°\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open():%s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2():%s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "å‚数过多。\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "获å–采样信æ¯å¤±è´¥ï¼š%s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "打开声音文件失败。\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "获å–采样信æ¯å¤±è´¥ï¼š%s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "通é“映射与采样æè¿°ä¸åŒ¹é…\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "以采样规格'%s'打开%sæµã€‚\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "正在录制"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "回放"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open():%s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2():%s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "å‚数过多。\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new()失败。\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new()失败。\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new()失败。\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect()失败:%s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new()失败。\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run()失败。\n"
@@ -1615,8 +1646,7 @@ msgstr "æ¢å¤å¤±è´¥ï¼š%s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "警告:éžæœ¬åœ°å£°éŸ³æœåŠ¡å™¨ï¼Œä¸ä¼šæŒ‚起。\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "收到SIGINT,正在退出。\n"
@@ -1644,7 +1674,7 @@ msgstr ""
" -s, --server=SERVER è¦è¿žæŽ¥çš„æœåŠ¡å™¨å\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1655,32 +1685,32 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:128
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "获å–统计数æ®å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "当å‰ä½¿ç”¨ï¼š%uå—,总共%s字节。\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "整个生命周期所得分é…:%uå—,总共%s字节。\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:140
#, c-format
msgid "Sample cache size: %s\n"
msgstr "采样缓存大å°ï¼š%s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:149
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "获å–æœåŠ¡å™¨ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:157
#, c-format
msgid ""
"User name: %s\n"
@@ -1703,12 +1733,12 @@ msgstr ""
"默认æºï¼š %s\n"
"Cookie:%08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:198
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "获å–音频出å£ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:214
#, c-format
msgid ""
"Sink #%u\n"
@@ -1747,12 +1777,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#, fuzzy, c-format
+msgid "\tPorts:\n"
+msgstr "\tProfiles:\n"
+
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#, fuzzy, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tActive Profile: %s\n"
+
+#: ../src/utils/pactl.c:290
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "获å–音频入å£ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:306
#, c-format
msgid ""
"Source #%u\n"
@@ -1791,20 +1831,20 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:368
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "获å–模å—ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:386
#, c-format
msgid ""
"Module #%u\n"
@@ -1821,12 +1861,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:405
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "获å–客户端信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:423
#, c-format
msgid ""
"Client #%u\n"
@@ -1841,12 +1881,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:440
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "获å–声å¡ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:458
#, c-format
msgid ""
"Card #%u\n"
@@ -1863,22 +1903,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:472
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiles:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:478
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tActive Profile: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:489
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "获å–音频出å£è¾“入信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:508
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1915,12 +1955,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "获å–音频入å£è¾“出信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:567
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1949,12 +1989,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:598
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "获å–采样信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:616
#, c-format
msgid ""
"Sample #%u\n"
@@ -1985,23 +2025,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "失败:%s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:680
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "上传采样失败:%s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:697
msgid "Premature end of file\n"
msgstr "文件过早结æŸ\n"
-#: ../src/utils/pactl.c:774
-#, c-format
+#: ../src/utils/pactl.c:826
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2016,6 +2055,8 @@ msgid ""
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"%s [options] set-sink-port [SINK] [PORT] \n"
+"%s [options] set-source-port [SOURCE] [PORT] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2047,7 +2088,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:880
#, c-format
msgid ""
"pactl %s\n"
@@ -2058,71 +2099,74 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:926
msgid "Please specify a sample file to load\n"
msgstr "请指定è¦åŠ è½½çš„采样文件\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:939
msgid "Failed to open sound file.\n"
msgstr "打开声音文件失败。\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:951
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "以采样规格'%s'打开%sæµã€‚\n"
+
+#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
msgstr "你必须指定è¦æ’­æ”¾çš„采样å\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:973
msgid "You have to specify a sample name to remove\n"
msgstr "你必须指定è¦åˆ é™¤çš„采样å\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
msgstr "你必须指定音频出å£ç´¢å¼•å’ŒéŸ³é¢‘出å£\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
msgstr "你必须指定音频入å£è¾“出索引和音频入å£\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
msgstr "必须指定模å—åå’Œå‚数。\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:1027
msgid "You have to specify a module index\n"
msgstr "必须指定模å—索引\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:1037
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "ä¸å¯æŒ‡å®šå¤šä¸ªéŸ³é¢‘出å£ã€‚必须指定一个布尔值。\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1050
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "ä¸å¯æŒ‡å®šå¤šä¸ªæºã€‚必须指定一个布尔值。\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
msgstr "你必须指定声å¡å称/索引和侧写å称\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1073
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name\n"
+msgstr "你必须指定声å¡å称/索引和侧写å称\n"
+
+#: ../src/utils/pactl.c:1084
+#, fuzzy
+msgid "You have to specify a source name/index and a port name\n"
+msgstr "你必须指定声å¡å称/索引和侧写å称\n"
+
+#: ../src/utils/pactl.c:1099
msgid "No valid command specified.\n"
msgstr "未指定有效的命令。\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect()失败:%s"
@@ -2205,126 +2249,48 @@ msgstr "加载cookieæ•°æ®å¤±è´¥\n"
msgid "Not yet implemented.\n"
msgstr "尚未实现。\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0):%s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect():%s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "æ€æ­»PulseAudioåŽå°ç¨‹åºå¤±è´¥ã€‚"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "åŽå°ç¨‹åºæœªå“应。"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select():%s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read():%s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write():%s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "æˆåŠŸåˆ›å»ºæµ\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "æµé”™è¯¯ï¼š%s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "连接已建立。\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help 显示此帮助\n"
-" --version 显示版本\n"
-"\n"
-" -v, --verbose å¯ç”¨è¯¦è¿°æ“作\n"
-"\n"
-" -s, --server=SERVER è¦è¿žæŽ¥çš„æœåŠ¡å™¨å\n"
-" -d, --device=DEVICE è¦è¿žæŽ¥çš„音频出å£å\n"
-" -n, --client-name=NAME 此客户端在æœåŠ¡å™¨ä¸Šçš„å称\n"
-" --stream-name=NAME æ­¤æµåœ¨æœåŠ¡å™¨ä¸Šçš„å称\n"
-" --volume=VOLUME 指定åˆå§‹ï¼ˆçº¿æ€§ï¼‰éŸ³é‡ï¼Œå–值在0...65536"
-"之间\n"
-" --channel-map=CHANNELMAP 设定使用的通é“映射表\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "无效的通é“映射表\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "打开文件'%s'失败\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "通é“映射表与文件ä¸åŒ¹é…。\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "正在使用采样规格'%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "ä¸èƒ½è®¿é—®autospawné”。"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2340,7 +2306,7 @@ msgstr ""
"æ醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者å¦ä¸€ä¸ªå°äºŽæœ€å°å¯"
"用值的数值。"
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2356,34 +2322,126 @@ msgstr ""
"æ醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者å¦ä¸€ä¸ªå°äºŽæœ€å°å¯"
"用值的数值。"
-#: ../src/modules/alsa/module-alsa-card.c:114
-#, c-format
-msgid "Output %s + Input %s"
-msgstr "输出 %s + 输入 %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:117
-#, c-format
-msgid "Output %s"
-msgstr "输出 %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:121
-#, c-format
-msgid "Input %s"
-msgstr "输入 %s"
-
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
msgid "Off"
msgstr "关闭"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
msgid "High Fidelity Playback (A2DP)"
msgstr "高ä¿çœŸå›žæ”¾ï¼ˆA2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
msgid "Telephony Duplex (HSP/HFP)"
msgstr "åŒå·¥ç”µè¯ï¼ˆHSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio 声音æœåŠ¡å™¨"
+
+#~ msgid "Analog Mono"
+#~ msgstr "模拟å•å£°é“"
+
+#~ msgid "Analog Stereo"
+#~ msgstr "模拟立体声"
+
+#~ msgid "Digital Stereo (IEC958)"
+#~ msgstr "数字立体声(IEC958)"
+
+#~ msgid "Digital Stereo (HDMI)"
+#~ msgstr "数字立体声(HDMI)"
+
+#~ msgid "Analog Surround 4.0"
+#~ msgstr "模拟环绕 4.0"
+
+#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
+#~ msgstr "数字环绕 4.0(IEC958/AC3)"
+
+#~ msgid "Analog Surround 4.1"
+#~ msgstr "模拟环绕 4.1"
+
+#~ msgid "Analog Surround 5.0"
+#~ msgstr "模拟环绕 5.0"
+
+#~ msgid "Analog Surround 5.1"
+#~ msgstr "模拟环绕 5.1"
+
+#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
+#~ msgstr "数字环绕 5.1(IEC958/AC3)"
+
+#~ msgid "Analog Surround 7.1"
+#~ msgstr "模拟环绕 7.1"
+
+#~ msgid "Output %s + Input %s"
+#~ msgstr "输出 %s + 输入 %s"
+
+#~ msgid "Output %s"
+#~ msgstr "输出 %s"
+
+#~ msgid "Input %s"
+#~ msgstr "输入 %s"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "æˆåŠŸåˆ›å»ºæµ\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "æµé”™è¯¯ï¼š%s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "连接已建立。\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help 显示此帮助\n"
+#~ " --version 显示版本\n"
+#~ "\n"
+#~ " -v, --verbose å¯ç”¨è¯¦è¿°æ“作\n"
+#~ "\n"
+#~ " -s, --server=SERVER è¦è¿žæŽ¥çš„æœåŠ¡å™¨å\n"
+#~ " -d, --device=DEVICE è¦è¿žæŽ¥çš„音频出å£å\n"
+#~ " -n, --client-name=NAME 此客户端在æœåŠ¡å™¨ä¸Šçš„å称\n"
+#~ " --stream-name=NAME æ­¤æµåœ¨æœåŠ¡å™¨ä¸Šçš„å称\n"
+#~ " --volume=VOLUME 指定åˆå§‹ï¼ˆçº¿æ€§ï¼‰éŸ³é‡ï¼Œå–值在"
+#~ "0...65536之间\n"
+#~ " --channel-map=CHANNELMAP 设定使用的通é“映射表\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "无效的通é“映射表\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "打开文件'%s'失败\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "通é“映射表与文件ä¸åŒ¹é…。\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "正在使用采样规格'%s'\n"
diff --git a/shave-libtool.in b/shave-libtool.in
deleted file mode 100644
index 1f3a720c..00000000
--- a/shave-libtool.in
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-
-# we need sed
-SED=@SED@
-if test -z "$SED" ; then
-SED=sed
-fi
-
-lt_unmangle ()
-{
- last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
-}
-
-# the real libtool to use
-LIBTOOL="$1"
-shift
-
-# if 1, don't print anything, the underlaying wrapper will do it
-pass_though=0
-
-# scan the arguments, keep the right ones for libtool, and discover the mode
-preserved_args=
-while test "$#" -gt 0; do
- opt="$1"
- shift
-
- case $opt in
- --mode=*)
- mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
- preserved_args="$preserved_args $opt"
- ;;
- -o)
- lt_output="$1"
- preserved_args="$preserved_args $opt"
- ;;
- *)
- preserved_args="$preserved_args $opt"
- ;;
- esac
-done
-
-case "$mode" in
-compile)
- # shave will be called and print the actual CC/CXX/LINK line
- preserved_args="$preserved_args --shave-mode=$mode"
- pass_though=1
- ;;
-link)
- preserved_args="$preserved_args --shave-mode=$mode"
- Q=" LINK "
- ;;
-*)
- # let's u
- # echo "*** libtool: Unimplemented mode: $mode, fill a bug report"
- ;;
-esac
-
-lt_unmangle "$lt_output"
-output=$last_result
-
-if test -z $V; then
- if test $pass_though -eq 0; then
- echo "$Q$output"
- fi
- $LIBTOOL --silent $preserved_args
-else
- echo $LIBTOOL $preserved_args
- $LIBTOOL $preserved_args
-fi
diff --git a/shave.in b/shave.in
deleted file mode 100644
index 5c16f27a..00000000
--- a/shave.in
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-
-# we need sed
-SED=@SED@
-if test -z "$SED" ; then
-SED=sed
-fi
-
-lt_unmangle ()
-{
- last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
-}
-
-# the tool to wrap (cc, cxx, ar, ranlib, ..)
-tool="$1"
-shift
-
-# the reel tool (to call)
-REEL_TOOL="$1"
-shift
-
-pass_through=0
-preserved_args=
-while test "$#" -gt 0; do
- opt="$1"
- shift
-
- case $opt in
- --shave-mode=*)
- mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
- ;;
- -o)
- lt_output="$1"
- preserved_args="$preserved_args $opt"
- ;;
- *)
- preserved_args="$preserved_args $opt"
- ;;
- esac
-done
-
-# mode=link is handled in the libtool wrapper
-case "$mode,$tool" in
-link,*)
- pass_through=1
- ;;
-*,cxx)
- Q=" CXX "
- ;;
-*,cc)
- Q=" CC "
- ;;
-*,fc)
- Q=" FC "
- ;;
-*,f77)
- Q=" F77 "
- ;;
-*,objc)
- Q=" OBJC "
- ;;
-*,*)
- # should not happen
- Q=" CC "
- ;;
-esac
-
-lt_unmangle "$lt_output"
-output=$last_result
-
-if test -z $V; then
- if test $pass_through -eq 0; then
- echo "$Q$output"
- fi
- $REEL_TOOL $preserved_args
-else
- echo $REEL_TOOL $preserved_args
- $REEL_TOOL $preserved_args
-fi
diff --git a/src/Makefile.am b/src/Makefile.am
index d28ffa1e..b1bc4976 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -29,6 +29,9 @@ pulsecoreincludedir=$(includedir)/pulsecore
pulseconfdir=$(sysconfdir)/pulse
pulselibexecdir=$(libexecdir)/pulse
xdgautostartdir=$(sysconfdir)/xdg/autostart
+alsaprofilesetsdir=$(datadir)/pulseaudio/alsa-mixer/profile-sets
+alsapathsdir=$(datadir)/pulseaudio/alsa-mixer/paths
+udevrulesdir=/lib/udev/rules.d
###################################
# Defines #
@@ -61,6 +64,11 @@ AM_CFLAGS = \
-I$(top_srcdir)/src/modules/alsa \
-I$(top_builddir)/src/modules/alsa \
-I$(top_srcdir)/src/modules/raop \
+ -I$(top_builddir)/src/modules/raop \
+ -I$(top_srcdir)/src/modules/x11 \
+ -I$(top_builddir)/src/modules/x11 \
+ -I$(top_srcdir)/src/modules/jack \
+ -I$(top_builddir)/src/modules/jack \
$(PTHREAD_CFLAGS) -D_POSIX_PTHREAD_SEMANTICS \
$(LIBSAMPLERATE_CFLAGS) \
$(LIBSNDFILE_CFLAGS) \
@@ -73,7 +81,9 @@ AM_CFLAGS = \
-DPA_SYSTEM_STATE_PATH=\"$(PA_SYSTEM_STATE_PATH)\" \
-DAO_REQUIRE_CAS \
-DPULSE_LOCALEDIR=\"$(pulselocaledir)\" \
- -DPA_MACHINE_ID=\"$(localstatedir)/lib/dbus/machine-id\"
+ -DPA_MACHINE_ID=\"$(localstatedir)/lib/dbus/machine-id\" \
+ -DPA_ALSA_PATHS_DIR=\"$(alsapathsdir)\" \
+ -DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\"
AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS)
AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
@@ -109,7 +119,25 @@ EXTRA_DIST = \
modules/module-defs.h.m4 \
daemon/pulseaudio.desktop.in \
map-file \
- daemon/org.pulseaudio.policy.in
+ modules/alsa/mixer/profile-sets/default.conf \
+ modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf \
+ modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf \
+ modules/alsa/mixer/profile-sets/90-pulseaudio.rules \
+ modules/alsa/mixer/paths/analog-input-aux.conf \
+ modules/alsa/mixer/paths/analog-input.conf \
+ modules/alsa/mixer/paths/analog-input.conf.common \
+ modules/alsa/mixer/paths/analog-input-fm.conf \
+ modules/alsa/mixer/paths/analog-input-linein.conf \
+ modules/alsa/mixer/paths/analog-input-mic.conf \
+ modules/alsa/mixer/paths/analog-input-mic.conf.common \
+ modules/alsa/mixer/paths/analog-input-mic-line.conf \
+ modules/alsa/mixer/paths/analog-input-tvtuner.conf \
+ modules/alsa/mixer/paths/analog-input-video.conf \
+ modules/alsa/mixer/paths/analog-output.conf \
+ modules/alsa/mixer/paths/analog-output.conf.common \
+ modules/alsa/mixer/paths/analog-output-headphones.conf \
+ modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf \
+ modules/alsa/mixer/paths/analog-output-mono.conf
pulseconf_DATA = \
default.pa \
@@ -161,16 +189,6 @@ else
pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
endif
-if HAVE_POLKIT
-policy_in_files = daemon/org.pulseaudio.policy.in
-policy_DATA = $(policy_in_files:.policy.in=.policy)
-@INTLTOOL_POLICY_RULE@
-
-pulseaudio_SOURCES += daemon/polkit.c daemon/polkit.h
-pulseaudio_CFLAGS += $(POLKIT_CFLAGS)
-pulseaudio_LDADD += $(POLKIT_LIBS)
-endif
-
###################################
# Utility programs #
###################################
@@ -549,7 +567,9 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/authkey.c pulsecore/authkey.h \
pulsecore/conf-parser.c pulsecore/conf-parser.h \
pulsecore/core-error.c pulsecore/core-error.h \
+ pulsecore/core-rtclock.c pulsecore/core-rtclock.h \
pulsecore/core-util.c pulsecore/core-util.h \
+ pulsecore/rtkit.c pulsecore/rtkit.h \
pulsecore/creds.h \
pulsecore/dynarray.c pulsecore/dynarray.h \
pulsecore/endianmacros.h \
@@ -587,7 +607,6 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/queue.c pulsecore/queue.h \
pulsecore/random.c pulsecore/random.h \
pulsecore/refcnt.h \
- pulsecore/rtclock.c pulsecore/rtclock.h \
pulsecore/shm.c pulsecore/shm.h \
pulsecore/bitset.c pulsecore/bitset.h \
pulsecore/socket-client.c pulsecore/socket-client.h \
@@ -665,6 +684,7 @@ pulseinclude_HEADERS = \
pulse/operation.h \
pulse/proplist.h \
pulse/pulseaudio.h \
+ pulse/rtclock.h \
pulse/sample.h \
pulse/scache.h \
pulse/simple.h \
@@ -715,6 +735,7 @@ libpulse_la_SOURCES = \
pulse/operation.c pulse/operation.h \
pulse/proplist.c pulse/proplist.h \
pulse/pulseaudio.h \
+ pulse/rtclock.c pulse/rtclock.h \
pulse/sample.c pulse/sample.h \
pulse/scache.c pulse/scache.h \
pulse/stream.c pulse/stream.h \
@@ -799,7 +820,6 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/protocol-dbus.h \
pulsecore/resampler.c pulsecore/resampler.h \
pulsecore/rtpoll.c pulsecore/rtpoll.h \
- pulsecore/rtsig.c pulsecore/rtsig.h \
pulsecore/sample-util.c pulsecore/sample-util.h \
pulsecore/sconv-s16be.c pulsecore/sconv-s16be.h \
pulsecore/sconv-s16le.c pulsecore/sconv-s16le.h \
@@ -955,6 +975,7 @@ modlibexec_LTLIBRARIES += \
module-default-device-restore.la \
module-always-sink.la \
module-rescue-streams.la \
+ module-intended-roles.la \
module-suspend-on-idle.la \
module-http-protocol-tcp.la \
module-sine.la \
@@ -1027,6 +1048,32 @@ modlibexec_LTLIBRARIES += \
module-alsa-sink.la \
module-alsa-source.la \
module-alsa-card.la
+
+alsaprofilesets_DATA = \
+ modules/alsa/mixer/profile-sets/default.conf \
+ modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf \
+ modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf
+
+udevrules_DATA = \
+ modules/alsa/mixer/profile-sets/90-pulseaudio.rules
+
+alsapaths_DATA = \
+ modules/alsa/mixer/paths/analog-input-aux.conf \
+ modules/alsa/mixer/paths/analog-input.conf \
+ modules/alsa/mixer/paths/analog-input.conf.common \
+ modules/alsa/mixer/paths/analog-input-fm.conf \
+ modules/alsa/mixer/paths/analog-input-linein.conf \
+ modules/alsa/mixer/paths/analog-input-mic.conf \
+ modules/alsa/mixer/paths/analog-input-mic.conf.common \
+ modules/alsa/mixer/paths/analog-input-mic-line.conf \
+ modules/alsa/mixer/paths/analog-input-tvtuner.conf \
+ modules/alsa/mixer/paths/analog-input-video.conf \
+ modules/alsa/mixer/paths/analog-output.conf \
+ modules/alsa/mixer/paths/analog-output.conf.common \
+ modules/alsa/mixer/paths/analog-output-headphones.conf \
+ modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf \
+ modules/alsa/mixer/paths/analog-output-mono.conf
+
endif
if HAVE_SOLARIS
@@ -1074,6 +1121,11 @@ modlibexec_LTLIBRARIES += \
module-hal-detect.la
endif
+if HAVE_UDEV
+modlibexec_LTLIBRARIES += \
+ module-udev-detect.la
+endif
+
if HAVE_DBUS
modlibexec_LTLIBRARIES += \
module-rygel-media-server.la \
@@ -1158,13 +1210,15 @@ SYMDEF_FILES = \
modules/module-default-device-restore-symdef.h \
modules/module-always-sink-symdef.h \
modules/module-rescue-streams-symdef.h \
+ modules/module-intended-roles-symdef.h \
modules/module-suspend-on-idle-symdef.h \
modules/module-hal-detect-symdef.h \
+ modules/module-udev-detect-symdef.h \
modules/bluetooth/module-bluetooth-proximity-symdef.h \
modules/bluetooth/module-bluetooth-discover-symdef.h \
modules/bluetooth/module-bluetooth-device-symdef.h \
- modules/module-raop-sink-symdef.h \
- modules/module-raop-discover-symdef.h \
+ modules/raop/module-raop-sink-symdef.h \
+ modules/raop/module-raop-discover-symdef.h \
modules/gconf/module-gconf-symdef.h \
modules/module-position-event-sounds-symdef.h \
modules/module-augment-properties-symdef.h \
@@ -1355,7 +1409,7 @@ module_oss_la_LIBADD = $(AM_LIBADD) liboss-util.la libpulsecore-@PA_MAJORMINORMI
# ALSA
-libalsa_util_la_SOURCES = modules/alsa/alsa-util.c modules/alsa/alsa-util.h modules/alsa/alsa-sink.c modules/alsa/alsa-sink.h modules/alsa/alsa-source.c modules/alsa/alsa-source.h modules/reserve-wrap.c modules/reserve-wrap.h
+libalsa_util_la_SOURCES = modules/alsa/alsa-util.c modules/alsa/alsa-util.h modules/alsa/alsa-mixer.c modules/alsa/alsa-mixer.h modules/alsa/alsa-sink.c modules/alsa/alsa-sink.h modules/alsa/alsa-source.c modules/alsa/alsa-source.h modules/reserve-wrap.c modules/reserve-wrap.h
libalsa_util_la_LDFLAGS = -avoid-version
libalsa_util_la_LIBADD = $(AM_LIBADD) $(ASOUNDLIB_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
libalsa_util_la_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS)
@@ -1373,7 +1427,7 @@ libalsa_util_la_CFLAGS += $(UDEV_CFLAGS)
endif
if HAVE_DBUS
-libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c
+libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c modules/reserve-monitor.h modules/reserve-monitor.c
libalsa_util_la_LIBADD += $(DBUS_LIBS)
libalsa_util_la_CFLAGS += $(DBUS_CFLAGS)
endif
@@ -1499,6 +1553,12 @@ module_rescue_streams_la_LDFLAGS = $(MODULE_LDFLAGS)
module_rescue_streams_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_rescue_streams_la_CFLAGS = $(AM_CFLAGS)
+# Automatically move streams to devices that are intended for their roles
+module_intended_roles_la_SOURCES = modules/module-intended-roles.c
+module_intended_roles_la_LDFLAGS = $(MODULE_LDFLAGS)
+module_intended_roles_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_intended_roles_la_CFLAGS = $(AM_CFLAGS)
+
# Suspend-on-idle module
module_suspend_on_idle_la_SOURCES = modules/module-suspend-on-idle.c
module_suspend_on_idle_la_LDFLAGS = $(MODULE_LDFLAGS)
@@ -1533,6 +1593,11 @@ module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_hal_detect_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS)
+module_udev_detect_la_SOURCES = modules/module-udev-detect.c
+module_udev_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
+module_udev_detect_la_LIBADD = $(AM_LIBADD) $(UDEV_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_udev_detect_la_CFLAGS = $(AM_CFLAGS) $(UDEV_CFLAGS)
+
module_console_kit_la_SOURCES = modules/module-console-kit.c
module_console_kit_la_LDFLAGS = $(MODULE_LDFLAGS)
module_console_kit_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
@@ -1589,11 +1654,11 @@ module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_M
module_bluetooth_device_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# Apple Airtunes/RAOP
-module_raop_sink_la_SOURCES = modules/module-raop-sink.c
+module_raop_sink_la_SOURCES = modules/raop/module-raop-sink.c
module_raop_sink_la_LDFLAGS = $(MODULE_LDFLAGS)
module_raop_sink_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la librtp.la libraop.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
-module_raop_discover_la_SOURCES = modules/module-raop-discover.c
+module_raop_discover_la_SOURCES = modules/raop/module-raop-discover.c
module_raop_discover_la_LDFLAGS = $(MODULE_LDFLAGS)
module_raop_discover_la_LIBADD = $(AM_LIBADD) $(AVAHI_LIBS) libavahi-wrap.la libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_raop_discover_la_CFLAGS = $(AM_CFLAGS) $(AVAHI_CFLAGS)
@@ -1608,11 +1673,7 @@ module_rygel_media_server_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# Some minor stuff #
###################################
-suid: pulseaudio .libs/lt-pulseaudio
- chown root $^
- chmod u+s $^
-
-CLEANFILES = esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11 daemon/pulseaudio.desktop daemon/org.pulseaudio.policy
+CLEANFILES = esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11 daemon/pulseaudio.desktop
esdcompat: daemon/esdcompat.in Makefile
sed -e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
@@ -1650,7 +1711,6 @@ daemon.conf: daemon/daemon.conf.in Makefile
install-exec-hook:
chown root $(DESTDIR)$(bindir)/pulseaudio ; true
- chmod u+s $(DESTDIR)$(bindir)/pulseaudio
-chmod u+s $(DESTDIR)$(pulselibexecdir)/proximity-helper
ln -sf pacat $(DESTDIR)$(bindir)/parec
ln -sf pacat $(DESTDIR)$(bindir)/pamon
@@ -1685,10 +1745,15 @@ update-sbc:
done
update-reserve:
- for i in reserve.c reserve.h ; do \
+ for i in reserve.c reserve.h reserve-monitor.c reserve-monitor.h ; do \
wget -O modules/$$i http://git.0pointer.de/\?p=reserve.git\;a=blob_plain\;f=$$i\;hb=master ; \
done
+update-rtkit:
+ for i in rtkit.c rtkit.h ; do \
+ wget -O pulsecore/$$i http://git.0pointer.de/\?p=rtkit.git\;a=blob_plain\;f=$$i\;hb=master ; \
+ done
+
# Automatically generate linker version script. We use the same one for all public .sos
update-map-file:
( echo "PULSE_0 {" ; \
diff --git a/src/daemon/caps.c b/src/daemon/caps.c
index d2ae8d0e..294be494 100644
--- a/src/daemon/caps.c
+++ b/src/daemon/caps.c
@@ -39,6 +39,7 @@
#ifdef HAVE_SYS_CAPABILITY_H
#include <sys/capability.h>
#endif
+
#ifdef HAVE_SYS_PRCTL_H
#include <sys/prctl.h>
#endif
@@ -51,12 +52,13 @@ int setresgid(gid_t r, gid_t e, gid_t s);
int setresuid(uid_t r, uid_t e, uid_t s);
#endif
-#ifdef HAVE_GETUID
-
/* Drop root rights when called SUID root */
void pa_drop_root(void) {
- uid_t uid = getuid();
+#ifdef HAVE_GETUID
+ uid_t uid;
+
+ uid = getuid();
if (uid == 0 || geteuid() != 0)
return;
@@ -73,90 +75,19 @@ void pa_drop_root(void) {
pa_assert_se(getuid() == uid);
pa_assert_se(geteuid() == uid);
-}
-
-#else
-
-void pa_drop_root(void) {
-}
-
-#endif
-
-#if defined(HAVE_SYS_CAPABILITY_H) && defined(HAVE_SYS_PRCTL_H)
-
-/* Limit permitted capabilities set to CAPSYS_NICE */
-void pa_limit_caps(void) {
- cap_t caps;
- cap_value_t nice_cap = CAP_SYS_NICE;
-
- pa_assert_se(caps = cap_init());
- pa_assert_se(cap_clear(caps) == 0);
- pa_assert_se(cap_set_flag(caps, CAP_EFFECTIVE, 1, &nice_cap, CAP_SET) == 0);
- pa_assert_se(cap_set_flag(caps, CAP_PERMITTED, 1, &nice_cap, CAP_SET) == 0);
-
- if (cap_set_proc(caps) < 0)
- /* Hmm, so we couldn't limit our caps, which probably means we
- * hadn't any in the first place, so let's just make sure of
- * that */
- pa_drop_caps();
- else
- pa_log_info(_("Limited capabilities successfully to CAP_SYS_NICE."));
-
- pa_assert_se(cap_free(caps) == 0);
-
- pa_assert_se(prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == 0);
-}
-
-/* Drop all capabilities, effectively becoming a normal user */
-void pa_drop_caps(void) {
- cap_t caps;
-
-#ifndef __OPTIMIZE__
- /* Valgrind doesn't not know set_caps, so we bypass it here -- but
- * only in development builds.*/
-
- if (pa_in_valgrind() && !pa_have_caps())
- return;
#endif
+#ifdef HAVE_SYS_PRCTL_H
pa_assert_se(prctl(PR_SET_KEEPCAPS, 0, 0, 0, 0) == 0);
-
- pa_assert_se(caps = cap_init());
- pa_assert_se(cap_clear(caps) == 0);
- pa_assert_se(cap_set_proc(caps) == 0);
- pa_assert_se(cap_free(caps) == 0);
-
- pa_assert_se(!pa_have_caps());
-}
-
-pa_bool_t pa_have_caps(void) {
- cap_t caps;
- cap_flag_value_t flag = CAP_CLEAR;
-
-#ifdef __OPTIMIZE__
- pa_assert_se(caps = cap_get_proc());
-#else
- if (!(caps = cap_get_proc()))
- return FALSE;
#endif
- pa_assert_se(cap_get_flag(caps, CAP_SYS_NICE, CAP_EFFECTIVE, &flag) >= 0);
- pa_assert_se(cap_free(caps) == 0);
-
- return flag == CAP_SET;
-}
-
-#else
-
-/* NOOPs in case capabilities are not available. */
-void pa_limit_caps(void) {
-}
-
-void pa_drop_caps(void) {
- pa_drop_root();
-}
-
-pa_bool_t pa_have_caps(void) {
- return FALSE;
-}
+#ifdef HAVE_SYS_CAPABILITY_H
+ {
+ cap_t caps;
+ pa_assert_se(caps = cap_init());
+ pa_assert_se(cap_clear(caps) == 0);
+ pa_assert_se(cap_set_proc(caps) == 0);
+ pa_assert_se(cap_free(caps) == 0);
+ }
#endif
+}
diff --git a/src/daemon/caps.h b/src/daemon/caps.h
index 94241a9a..5d0ee62e 100644
--- a/src/daemon/caps.h
+++ b/src/daemon/caps.h
@@ -25,8 +25,5 @@
#include <pulsecore/macro.h>
void pa_drop_root(void);
-void pa_drop_caps(void);
-void pa_limit_caps(void);
-pa_bool_t pa_have_caps(void);
#endif
diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c
index d78089e1..ecb38486 100644
--- a/src/daemon/cmdline.c
+++ b/src/daemon/cmdline.c
@@ -31,6 +31,7 @@
#include <pulse/xmalloc.h>
#include <pulse/i18n.h>
+#include <pulse/util.h>
#include <pulsecore/core-util.h>
#include <pulsecore/strbuf.h>
@@ -109,15 +110,8 @@ static const struct option long_options[] = {
};
void pa_cmdline_help(const char *argv0) {
- const char *e;
-
pa_assert(argv0);
- if ((e = strrchr(argv0, '/')))
- e++;
- else
- e = argv0;
-
printf(_("%s [options]\n\n"
"COMMANDS:\n"
" -h, --help Show this help\n"
@@ -172,7 +166,8 @@ void pa_cmdline_help(const char *argv0) {
" -C Open a command line on the running TTY\n"
" after startup\n\n"
- " -n Don't load default script file\n"), e);
+ " -n Don't load default script file\n"),
+ pa_path_get_filename(argv0));
}
int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d) {
diff --git a/src/daemon/cpulimit.c b/src/daemon/cpulimit.c
index 45d6a0fb..c2877ecf 100644
--- a/src/daemon/cpulimit.c
+++ b/src/daemon/cpulimit.c
@@ -24,13 +24,14 @@
#endif
#include <pulse/error.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/core-error.h>
#include <pulsecore/log.h>
#include <pulsecore/macro.h>
-#include <pulsecore/rtclock.h>
#include "cpulimit.h"
@@ -125,7 +126,7 @@ static void signal_handler(int sig) {
char t[256];
#endif
- now = pa_rtclock_usec();
+ now = pa_rtclock_now();
elapsed = now - last_time;
#ifdef PRINT_CPU_LOAD
@@ -184,7 +185,7 @@ int pa_cpu_limit_init(pa_mainloop_api *m) {
pa_assert(the_pipe[1] == -1);
pa_assert(!installed);
- last_time = pa_rtclock_usec();
+ last_time = pa_rtclock_now();
/* Prepare the main loop pipe */
if (pipe(the_pipe) < 0) {
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index e6fa8c64..ace460ed 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -60,7 +60,7 @@ static const pa_daemon_conf default_conf = {
.fail = TRUE,
.high_priority = TRUE,
.nice_level = -11,
- .realtime_scheduling = FALSE,
+ .realtime_scheduling = TRUE,
.realtime_priority = 5, /* Half of JACK's default rtprio */
.disallow_module_loading = FALSE,
.disallow_exit = FALSE,
@@ -88,6 +88,7 @@ static const pa_daemon_conf default_conf = {
#endif
.no_cpu_limit = FALSE,
.disable_shm = FALSE,
+ .lock_memory = FALSE,
.default_n_fragments = 4,
.default_fragment_size_msec = 25,
.default_sample_spec = { .format = PA_SAMPLE_S16NE, .rate = 44100, .channels = 2 },
@@ -484,6 +485,7 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
{ "no-cpu-limit", pa_config_parse_bool, &c->no_cpu_limit, NULL },
{ "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
{ "flat-volumes", pa_config_parse_bool, &c->flat_volumes, NULL },
+ { "lock-memory", pa_config_parse_bool, &c->lock_memory, NULL },
{ "exit-idle-time", pa_config_parse_int, &c->exit_idle_time, NULL },
{ "scache-idle-time", pa_config_parse_int, &c->scache_idle_time, NULL },
{ "realtime-priority", parse_rtprio, c, NULL },
@@ -633,23 +635,22 @@ FILE *pa_daemon_conf_open_default_script_file(pa_daemon_conf *c) {
return f;
}
+char *pa_daemon_conf_dump(pa_daemon_conf *c) {
+ static const char* const log_level_to_string[] = {
+ [PA_LOG_DEBUG] = "debug",
+ [PA_LOG_INFO] = "info",
+ [PA_LOG_NOTICE] = "notice",
+ [PA_LOG_WARN] = "warning",
+ [PA_LOG_ERROR] = "error"
+ };
-static const char* const log_level_to_string[] = {
- [PA_LOG_DEBUG] = "debug",
- [PA_LOG_INFO] = "info",
- [PA_LOG_NOTICE] = "notice",
- [PA_LOG_WARN] = "warning",
- [PA_LOG_ERROR] = "error"
-};
-
-static const char* const server_type_to_string[] = {
- [PA_SERVER_TYPE_UNSET] = "!!UNSET!!",
- [PA_SERVER_TYPE_USER] = "user",
- [PA_SERVER_TYPE_SYSTEM] = "system",
- [PA_SERVER_TYPE_NONE] = "none"
-};
+ static const char* const server_type_to_string[] = {
+ [PA_SERVER_TYPE_UNSET] = "!!UNSET!!",
+ [PA_SERVER_TYPE_USER] = "user",
+ [PA_SERVER_TYPE_SYSTEM] = "system",
+ [PA_SERVER_TYPE_NONE] = "none"
+ };
-char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf *s;
char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
@@ -678,6 +679,7 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf_printf(s, "no-cpu-limit = %s\n", pa_yes_no(c->no_cpu_limit));
pa_strbuf_printf(s, "disable-shm = %s\n", pa_yes_no(c->disable_shm));
pa_strbuf_printf(s, "flat-volumes = %s\n", pa_yes_no(c->flat_volumes));
+ pa_strbuf_printf(s, "lock-memory = %s\n", pa_yes_no(c->lock_memory));
pa_strbuf_printf(s, "exit-idle-time = %i\n", c->exit_idle_time);
pa_strbuf_printf(s, "scache-idle-time = %i\n", c->scache_idle_time);
pa_strbuf_printf(s, "dl-search-path = %s\n", pa_strempty(c->dl_search_path));
diff --git a/src/daemon/daemon-conf.h b/src/daemon/daemon-conf.h
index c4f78cbe..41c3c4b7 100644
--- a/src/daemon/daemon-conf.h
+++ b/src/daemon/daemon-conf.h
@@ -74,7 +74,8 @@ typedef struct pa_daemon_conf {
disallow_exit,
log_meta,
log_time,
- flat_volumes;
+ flat_volumes,
+ lock_memory;
pa_server_type_t local_server_type;
int exit_idle_time,
scache_idle_time,
diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in
index ecdb3a64..9bea6148 100644
--- a/src/daemon/daemon.conf.in
+++ b/src/daemon/daemon.conf.in
@@ -28,15 +28,16 @@
; local-server-type = user
; disable-shm = no
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
+; lock-memory = no
+; no-cpu-limit = no
; high-priority = yes
; nice-level = -11
-; realtime-scheduling = no
+; realtime-scheduling = yes
; realtime-priority = 5
; exit-idle-time = 20
-; module-idle-time = 20
; scache-idle-time = 20
; dl-search-path = (depends on architecture)
@@ -56,8 +57,6 @@
; flat-volumes = yes
-; no-cpu-limit = no
-
; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
diff --git a/src/daemon/default.pa.in b/src/daemon/default.pa.in
index ba8e3c80..f9b9eadd 100755
--- a/src/daemon/default.pa.in
+++ b/src/daemon/default.pa.in
@@ -49,11 +49,11 @@ load-module module-augment-properties
#load-module module-pipe-sink
### Automatically load driver modules depending on the hardware available
-.ifexists module-hal-detect@PA_SOEXT@
-load-module module-hal-detect
+.ifexists module-udev-detect@PA_SOEXT@
+load-module module-udev-detect
.else
### Alternatively use the static hardware detection module (for systems that
-### lack HAL support)
+### lack udev support)
load-module module-detect
.endif
@@ -103,6 +103,9 @@ load-module module-rescue-streams
### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink
+### Honour intended role device property
+load-module module-intended-roles
+
### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 62214a56..c1730b70 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -40,6 +40,10 @@
#include <liboil/liboil.h>
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
@@ -69,6 +73,7 @@
#include <pulsecore/lock-autospawn.h>
#include <pulsecore/winsock.h>
#include <pulsecore/core-error.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core.h>
#include <pulsecore/memblock.h>
#include <pulsecore/module.h>
@@ -80,8 +85,6 @@
#include <pulsecore/pid.h>
#include <pulsecore/namereg.h>
#include <pulsecore/random.h>
-#include <pulsecore/rtsig.h>
-#include <pulsecore/rtclock.h>
#include <pulsecore/macro.h>
#include <pulsecore/mutex.h>
#include <pulsecore/thread.h>
@@ -98,7 +101,6 @@
#include "dumpmodules.h"
#include "caps.h"
#include "ltdl-bind-now.h"
-#include "polkit.h"
#include "server-lookup.h"
#ifdef HAVE_LIBWRAP
@@ -130,7 +132,7 @@ static void message_cb(pa_mainloop_api*a, pa_time_event*e, const struct timeval
}
pa_timeval_add(pa_gettimeofday(&tvnext), 100000);
- a->time_restart(e, &tvnext);
+ a->rtclock_time_restart(e, &tvnext);
}
#endif
@@ -376,9 +378,7 @@ int main(int argc, char *argv[]) {
pa_mainloop *mainloop = NULL;
char *s;
int r = 0, retval = 1, d = 0;
- pa_bool_t suid_root, real_root;
pa_bool_t valid_pid_file = FALSE;
- gid_t gid = (gid_t) -1;
pa_bool_t ltdl_init = FALSE;
int passed_fd = -1;
const char *e;
@@ -424,30 +424,6 @@ int main(int argc, char *argv[]) {
}
#endif
-#ifdef HAVE_GETUID
- real_root = getuid() == 0;
- suid_root = !real_root && geteuid() == 0;
-#else
- real_root = FALSE;
- suid_root = FALSE;
-#endif
-
- if (!real_root) {
- /* Drop all capabilities except CAP_SYS_NICE */
- pa_limit_caps();
-
- /* Drop privileges, but keep CAP_SYS_NICE */
- pa_drop_root();
-
- /* After dropping root, the effective set is reset, hence,
- * let's raise it again */
- pa_limit_caps();
-
- /* When capabilities are not supported we will not be able to
- * acquire RT sched anymore. But yes, that's the way it is. It
- * is just too risky tun let PA run as root all the time. */
- }
-
if ((e = getenv("PULSE_PASSED_FD"))) {
passed_fd = atoi(e);
@@ -455,15 +431,14 @@ int main(int argc, char *argv[]) {
passed_fd = -1;
}
+ /* We might be autospawned, in which case have no idea in which
+ * context we have been started. Let's cleanup our execution
+ * context as good as possible */
+ pa_drop_root();
pa_close_all(passed_fd, -1);
-
pa_reset_sigs(-1);
pa_unblock_sigs(-1);
- /* At this point, we are a normal user, possibly with CAP_NICE if
- * we were started SUID. If we are started as normal root, than we
- * still are normal root. */
-
setlocale(LC_ALL, "");
pa_init_i18n();
@@ -506,7 +481,7 @@ int main(int argc, char *argv[]) {
pa_assert_not_reached();
}
- start_server = conf->local_server_type == PA_SERVER_TYPE_USER || (real_root && conf->local_server_type == PA_SERVER_TYPE_SYSTEM);
+ start_server = conf->local_server_type == PA_SERVER_TYPE_USER || (getuid() == 0 && conf->local_server_type == PA_SERVER_TYPE_SYSTEM);
if (!start_server && conf->local_server_type == PA_SERVER_TYPE_SYSTEM) {
pa_log_notice(_("System mode refused for non-root user. Only starting the D-Bus server lookup service."));
@@ -514,165 +489,6 @@ int main(int argc, char *argv[]) {
}
#endif
- pa_log_debug("Started as real root: %s, suid root: %s", pa_yes_no(real_root), pa_yes_no(suid_root));
-
-#ifdef HAVE_DBUS
- /* XXX: Uhh, goto programming... as if this wasn't hard enough to follow
- * already. But if we won't start the full server, we want to just skip all
- * the capability stuff. */
- if (!start_server) {
- if (!real_root && pa_have_caps())
- pa_drop_caps();
- goto after_caps_setup;
- }
-#endif
-
- if (!real_root && pa_have_caps()) {
-#ifdef HAVE_SYS_RESOURCE_H
- struct rlimit rl;
-#endif
- pa_bool_t allow_high_priority = FALSE, allow_realtime = FALSE;
-
- /* Let's better not enable high prio or RT by default */
-
- if (conf->high_priority && !allow_high_priority) {
- if (pa_own_uid_in_group(PA_REALTIME_GROUP, &gid) > 0) {
- pa_log_info(_("We're in the group '%s', allowing high-priority scheduling."), PA_REALTIME_GROUP);
- allow_high_priority = TRUE;
- }
- }
-
- if (conf->realtime_scheduling && !allow_realtime) {
- if (pa_own_uid_in_group(PA_REALTIME_GROUP, &gid) > 0) {
- pa_log_info(_("We're in the group '%s', allowing real-time scheduling."), PA_REALTIME_GROUP);
- allow_realtime = TRUE;
- }
- }
-
-#ifdef HAVE_POLKIT
- if (conf->high_priority && !allow_high_priority) {
- if (pa_polkit_check("org.pulseaudio.acquire-high-priority") > 0) {
- pa_log_info(_("PolicyKit grants us acquire-high-priority privilege."));
- allow_high_priority = TRUE;
- } else
- pa_log_info(_("PolicyKit refuses acquire-high-priority privilege."));
- }
-
- if (conf->realtime_scheduling && !allow_realtime) {
- if (pa_polkit_check("org.pulseaudio.acquire-real-time") > 0) {
- pa_log_info(_("PolicyKit grants us acquire-real-time privilege."));
- allow_realtime = TRUE;
- } else
- pa_log_info(_("PolicyKit refuses acquire-real-time privilege."));
- }
-#endif
-
- if (!allow_high_priority && !allow_realtime) {
-
- /* OK, there's no further need to keep CAP_NICE. Hence
- * let's give it up early */
-
- pa_drop_caps();
- }
-
-#ifdef RLIMIT_RTPRIO
- if (getrlimit(RLIMIT_RTPRIO, &rl) >= 0)
- if (rl.rlim_cur > 0) {
- pa_log_info("RLIMIT_RTPRIO is set to %u, allowing real-time scheduling.", (unsigned) rl.rlim_cur);
- allow_realtime = TRUE;
- }
-#endif
-#ifdef RLIMIT_NICE
- if (getrlimit(RLIMIT_NICE, &rl) >= 0)
- if (rl.rlim_cur > 20 ) {
- pa_log_info("RLIMIT_NICE is set to %u, allowing high-priority scheduling.", (unsigned) rl.rlim_cur);
- allow_high_priority = TRUE;
- }
-#endif
-
- if ((conf->high_priority && !allow_high_priority) ||
- (conf->realtime_scheduling && !allow_realtime))
- pa_log_info(_("Called SUID root and real-time and/or high-priority scheduling was requested in the configuration. However, we lack the necessary privileges:\n"
- "We are not in group '%s', PolicyKit refuse to grant us the requested privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource limits.\n"
- "For enabling real-time/high-priority scheduling please acquire the appropriate PolicyKit privileges, or become a member of '%s', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."),
- PA_REALTIME_GROUP, PA_REALTIME_GROUP);
-
-
- if (!allow_realtime)
- conf->realtime_scheduling = FALSE;
-
- if (!allow_high_priority)
- conf->high_priority = FALSE;
- }
-
-#ifdef HAVE_SYS_RESOURCE_H
- /* Reset resource limits. If we are run as root (for system mode)
- * this might end up increasing the limits, which is intended
- * behaviour. For all other cases, i.e. started as normal user, or
- * SUID root at this point we should have no CAP_SYS_RESOURCE and
- * increasing the limits thus should fail. Which is, too, intended
- * behaviour */
-
- set_all_rlimits(conf);
-#endif
-
- if (conf->high_priority && !pa_can_high_priority()) {
- pa_log_info(_("High-priority scheduling enabled in configuration but not allowed by policy."));
- conf->high_priority = FALSE;
- }
-
- if (conf->high_priority && (conf->cmd == PA_CMD_DAEMON || conf->cmd == PA_CMD_START))
- pa_raise_priority(conf->nice_level);
-
- pa_log_debug("Can realtime: %s, can high-priority: %s", pa_yes_no(pa_can_realtime()), pa_yes_no(pa_can_high_priority()));
-
- if (!real_root && pa_have_caps()) {
- pa_bool_t drop;
-
- drop = (conf->cmd != PA_CMD_DAEMON && conf->cmd != PA_CMD_START) || !conf->realtime_scheduling;
-
-#ifdef RLIMIT_RTPRIO
- if (!drop) {
- struct rlimit rl;
- /* At this point we still have CAP_NICE if we were loaded
- * SUID root. If possible let's acquire RLIMIT_RTPRIO
- * instead and give CAP_NICE up. */
-
- if (getrlimit(RLIMIT_RTPRIO, &rl) >= 0) {
-
- if (rl.rlim_cur >= 9)
- drop = TRUE;
- else {
- rl.rlim_max = rl.rlim_cur = 9;
-
- if (setrlimit(RLIMIT_RTPRIO, &rl) >= 0) {
- pa_log_info(_("Successfully increased RLIMIT_RTPRIO"));
- drop = TRUE;
- } else
- pa_log_warn(_("RLIMIT_RTPRIO failed: %s"), pa_cstrerror(errno));
- }
- }
- }
-#endif
-
- if (drop) {
- pa_log_info(_("Giving up CAP_NICE"));
- pa_drop_caps();
- suid_root = FALSE;
- }
- }
-
- if (conf->realtime_scheduling && !pa_can_realtime()) {
- pa_log_info(_("Real-time scheduling enabled in configuration but not allowed by policy."));
- conf->realtime_scheduling = FALSE;
- }
-
-#ifdef HAVE_DBUS
-after_caps_setup:
-#endif
-
- pa_log_debug("Can realtime: %s, can high-priority: %s", pa_yes_no(pa_can_realtime()), pa_yes_no(pa_can_high_priority()));
-
LTDL_SET_PRELOADED_SYMBOLS();
pa_ltdl_init();
ltdl_init = TRUE;
@@ -757,10 +573,10 @@ after_caps_setup:
pa_assert(conf->cmd == PA_CMD_DAEMON || conf->cmd == PA_CMD_START);
}
- if (real_root && !conf->system_instance)
+ if (getuid() == 0 && !conf->system_instance)
pa_log_warn(_("This program is not intended to be run as root (unless --system is specified)."));
#ifndef HAVE_DBUS /* A similar, only a notice worthy check was done earlier, if D-Bus is enabled. */
- else if (!real_root && conf->system_instance) {
+ else if (getuid() != 0 && conf->system_instance) {
pa_log(_("Root privileges required."));
goto finish;
}
@@ -907,6 +723,13 @@ after_caps_setup:
pa_assert_se(chdir("/") == 0);
umask(0022);
+#ifdef HAVE_SYS_RESOURCE_H
+ set_all_rlimits(conf);
+#endif
+ pa_rtclock_hrtimer_enable();
+
+ pa_raise_priority(conf->nice_level);
+
if (conf->system_instance)
if (change_user() < 0)
goto finish;
@@ -955,8 +778,8 @@ after_caps_setup:
pa_xfree(s);
if ((s = pa_session_id())) {
- pa_log_info(_("Session ID is %s."), s);
- pa_xfree(s);
+ pa_log_info(_("Session ID is %s."), s);
+ pa_xfree(s);
}
if (!(s = pa_get_runtime_dir()))
@@ -971,6 +794,11 @@ after_caps_setup:
pa_log_info(_("Running in system mode: %s"), pa_yes_no(pa_in_system_mode()));
+ if (pa_in_system_mode())
+ pa_log_warn(_("OK, so you are running PA in system mode. Please note that you most likely shouldn't be doing that.\n"
+ "If you do it nonetheless then it's your own fault if things don't work as expected.\n"
+ "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an explanation why system mode is usually a bad idea."));
+
if (conf->use_pid_file) {
int z;
@@ -998,12 +826,16 @@ after_caps_setup:
else
pa_log_info(_("Dude, your kernel stinks! The chef's recommendation today is Linux with high-resolution timers enabled!"));
- pa_rtclock_hrtimer_enable();
-
-#ifdef SIGRTMIN
- /* Valgrind uses SIGRTMAX. To easy debugging we don't use it here */
- pa_rtsig_configure(SIGRTMIN, SIGRTMAX-1);
+ if (conf->lock_memory) {
+#ifdef HAVE_SYS_MMAN_H
+ if (mlockall(MCL_FUTURE) < 0)
+ pa_log_warn("mlockall() failed: %s", pa_cstrerror(errno));
+ else
+ pa_log_info("Sucessfully locked process into memory.");
+#else
+ pa_log_warn("Memory locking requested but not supported on platform.");
#endif
+ }
pa_memtrap_install();
@@ -1028,7 +860,9 @@ after_caps_setup:
c->running_as_daemon = !!conf->daemonize;
c->disallow_exit = conf->disallow_exit;
c->flat_volumes = conf->flat_volumes;
+#ifdef HAVE_DBUS
c->server_type = conf->local_server_type;
+#endif
pa_assert_se(pa_signal_init(pa_mainloop_get_api(mainloop)) == 0);
pa_signal_new(SIGINT, signal_callback, c);
@@ -1044,7 +878,7 @@ after_caps_setup:
#endif
#ifdef OS_IS_WIN32
- win32_timer = pa_mainloop_get_api(mainloop)->time_new(pa_mainloop_get_api(mainloop), pa_gettimeofday(&win32_tv), message_cb, NULL);
+ win32_timer = pa_mainloop_get_api(mainloop)->rtclock_time_new(pa_mainloop_get_api(mainloop), pa_gettimeofday(&win32_tv), message_cb, NULL);
#endif
oil_init();
diff --git a/src/map-file b/src/map-file
index c46c6792..a1d0a061 100644
--- a/src/map-file
+++ b/src/map-file
@@ -28,6 +28,7 @@ pa_channel_map_superset;
pa_channel_map_to_name;
pa_channel_map_to_pretty_name;
pa_channel_map_valid;
+pa_channel_position_from_string;
pa_channel_position_to_pretty_string;
pa_channel_position_to_string;
pa_context_add_autoload;
@@ -85,6 +86,8 @@ pa_context_ref;
pa_context_remove_autoload_by_index;
pa_context_remove_autoload_by_name;
pa_context_remove_sample;
+pa_context_rttime_new;
+pa_context_rttime_restart;
pa_context_set_card_profile_by_index;
pa_context_set_card_profile_by_name;
pa_context_set_default_sink;
@@ -95,10 +98,14 @@ pa_context_set_sink_input_mute;
pa_context_set_sink_input_volume;
pa_context_set_sink_mute_by_index;
pa_context_set_sink_mute_by_name;
+pa_context_set_sink_port_by_index;
+pa_context_set_sink_port_by_name;
pa_context_set_sink_volume_by_index;
pa_context_set_sink_volume_by_name;
pa_context_set_source_mute_by_index;
pa_context_set_source_mute_by_name;
+pa_context_set_source_port_by_index;
+pa_context_set_source_port_by_name;
pa_context_set_source_volume_by_index;
pa_context_set_source_volume_by_name;
pa_context_set_state_callback;
@@ -190,6 +197,7 @@ pa_proplist_to_string_sep;
pa_proplist_unset;
pa_proplist_unset_many;
pa_proplist_update;
+pa_rtclock_now;
pa_sample_format_is_be;
pa_sample_format_is_le;
pa_sample_format_to_string;
@@ -264,7 +272,9 @@ pa_stream_writable_size;
pa_stream_write;
pa_strerror;
pa_sw_cvolume_divide;
+pa_sw_cvolume_divide_scalar;
pa_sw_cvolume_multiply;
+pa_sw_cvolume_multiply_scalar;
pa_sw_cvolume_snprint_dB;
pa_sw_volume_divide;
pa_sw_volume_from_dB;
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
new file mode 100644
index 00000000..a5515e1b
--- /dev/null
+++ b/src/modules/alsa/alsa-mixer.c
@@ -0,0 +1,3406 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2009 Lennart Poettering
+ Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
+
+ 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
+ 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <limits.h>
+#include <asoundlib.h>
+
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+#include <valgrind/memcheck.h>
+#endif
+
+#include <pulse/sample.h>
+#include <pulse/xmalloc.h>
+#include <pulse/timeval.h>
+#include <pulse/util.h>
+#include <pulse/i18n.h>
+#include <pulse/utf8.h>
+
+#include <pulsecore/log.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/atomic.h>
+#include <pulsecore/core-error.h>
+#include <pulsecore/once.h>
+#include <pulsecore/thread.h>
+#include <pulsecore/conf-parser.h>
+#include <pulsecore/strbuf.h>
+
+#include "alsa-mixer.h"
+#include "alsa-util.h"
+
+struct description_map {
+ const char *name;
+ const char *description;
+};
+
+static const char *lookup_description(const char *name, const struct description_map dm[], unsigned n) {
+ unsigned i;
+
+ for (i = 0; i < n; i++)
+ if (pa_streq(dm[i].name, name))
+ return dm[i].description;
+
+ return NULL;
+}
+
+struct pa_alsa_fdlist {
+ unsigned num_fds;
+ struct pollfd *fds;
+ /* This is a temporary buffer used to avoid lots of mallocs */
+ struct pollfd *work_fds;
+
+ snd_mixer_t *mixer;
+
+ pa_mainloop_api *m;
+ pa_defer_event *defer;
+ pa_io_event **ios;
+
+ pa_bool_t polled;
+
+ void (*cb)(void *userdata);
+ void *userdata;
+};
+
+static void io_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t events, void *userdata) {
+
+ struct pa_alsa_fdlist *fdl = userdata;
+ int err;
+ unsigned i;
+ unsigned short revents;
+
+ pa_assert(a);
+ pa_assert(fdl);
+ pa_assert(fdl->mixer);
+ pa_assert(fdl->fds);
+ pa_assert(fdl->work_fds);
+
+ if (fdl->polled)
+ return;
+
+ fdl->polled = TRUE;
+
+ memcpy(fdl->work_fds, fdl->fds, sizeof(struct pollfd) * fdl->num_fds);
+
+ for (i = 0; i < fdl->num_fds; i++) {
+ if (e == fdl->ios[i]) {
+ if (events & PA_IO_EVENT_INPUT)
+ fdl->work_fds[i].revents |= POLLIN;
+ if (events & PA_IO_EVENT_OUTPUT)
+ fdl->work_fds[i].revents |= POLLOUT;
+ if (events & PA_IO_EVENT_ERROR)
+ fdl->work_fds[i].revents |= POLLERR;
+ if (events & PA_IO_EVENT_HANGUP)
+ fdl->work_fds[i].revents |= POLLHUP;
+ break;
+ }
+ }
+
+ pa_assert(i != fdl->num_fds);
+
+ if ((err = snd_mixer_poll_descriptors_revents(fdl->mixer, fdl->work_fds, fdl->num_fds, &revents)) < 0) {
+ pa_log_error("Unable to get poll revent: %s", pa_alsa_strerror(err));
+ return;
+ }
+
+ a->defer_enable(fdl->defer, 1);
+
+ if (revents)
+ snd_mixer_handle_events(fdl->mixer);
+}
+
+static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
+ struct pa_alsa_fdlist *fdl = userdata;
+ unsigned num_fds, i;
+ int err, n;
+ struct pollfd *temp;
+
+ pa_assert(a);
+ pa_assert(fdl);
+ pa_assert(fdl->mixer);
+
+ a->defer_enable(fdl->defer, 0);
+
+ if ((n = snd_mixer_poll_descriptors_count(fdl->mixer)) < 0) {
+ pa_log("snd_mixer_poll_descriptors_count() failed: %s", pa_alsa_strerror(n));
+ return;
+ }
+ num_fds = (unsigned) n;
+
+ if (num_fds != fdl->num_fds) {
+ if (fdl->fds)
+ pa_xfree(fdl->fds);
+ if (fdl->work_fds)
+ pa_xfree(fdl->work_fds);
+ fdl->fds = pa_xnew0(struct pollfd, num_fds);
+ fdl->work_fds = pa_xnew(struct pollfd, num_fds);
+ }
+
+ memset(fdl->work_fds, 0, sizeof(struct pollfd) * num_fds);
+
+ if ((err = snd_mixer_poll_descriptors(fdl->mixer, fdl->work_fds, num_fds)) < 0) {
+ pa_log_error("Unable to get poll descriptors: %s", pa_alsa_strerror(err));
+ return;
+ }
+
+ fdl->polled = FALSE;
+
+ if (memcmp(fdl->fds, fdl->work_fds, sizeof(struct pollfd) * num_fds) == 0)
+ return;
+
+ if (fdl->ios) {
+ for (i = 0; i < fdl->num_fds; i++)
+ a->io_free(fdl->ios[i]);
+
+ if (num_fds != fdl->num_fds) {
+ pa_xfree(fdl->ios);
+ fdl->ios = NULL;
+ }
+ }
+
+ if (!fdl->ios)
+ fdl->ios = pa_xnew(pa_io_event*, num_fds);
+
+ /* Swap pointers */
+ temp = fdl->work_fds;
+ fdl->work_fds = fdl->fds;
+ fdl->fds = temp;
+
+ fdl->num_fds = num_fds;
+
+ for (i = 0;i < num_fds;i++)
+ fdl->ios[i] = a->io_new(a, fdl->fds[i].fd,
+ ((fdl->fds[i].events & POLLIN) ? PA_IO_EVENT_INPUT : 0) |
+ ((fdl->fds[i].events & POLLOUT) ? PA_IO_EVENT_OUTPUT : 0),
+ io_cb, fdl);
+}
+
+struct pa_alsa_fdlist *pa_alsa_fdlist_new(void) {
+ struct pa_alsa_fdlist *fdl;
+
+ fdl = pa_xnew0(struct pa_alsa_fdlist, 1);
+
+ return fdl;
+}
+
+void pa_alsa_fdlist_free(struct pa_alsa_fdlist *fdl) {
+ pa_assert(fdl);
+
+ if (fdl->defer) {
+ pa_assert(fdl->m);
+ fdl->m->defer_free(fdl->defer);
+ }
+
+ if (fdl->ios) {
+ unsigned i;
+ pa_assert(fdl->m);
+ for (i = 0; i < fdl->num_fds; i++)
+ fdl->m->io_free(fdl->ios[i]);
+ pa_xfree(fdl->ios);
+ }
+
+ if (fdl->fds)
+ pa_xfree(fdl->fds);
+ if (fdl->work_fds)
+ pa_xfree(fdl->work_fds);
+
+ pa_xfree(fdl);
+}
+
+int pa_alsa_fdlist_set_mixer(struct pa_alsa_fdlist *fdl, snd_mixer_t *mixer_handle, pa_mainloop_api* m) {
+ pa_assert(fdl);
+ pa_assert(mixer_handle);
+ pa_assert(m);
+ pa_assert(!fdl->m);
+
+ fdl->mixer = mixer_handle;
+ fdl->m = m;
+ fdl->defer = m->defer_new(m, defer_cb, fdl);
+
+ return 0;
+}
+
+static int prepare_mixer(snd_mixer_t *mixer, const char *dev) {
+ int err;
+
+ pa_assert(mixer);
+ pa_assert(dev);
+
+ if ((err = snd_mixer_attach(mixer, dev)) < 0) {
+ pa_log_info("Unable to attach to mixer %s: %s", dev, pa_alsa_strerror(err));
+ return -1;
+ }
+
+ if ((err = snd_mixer_selem_register(mixer, NULL, NULL)) < 0) {
+ pa_log_warn("Unable to register mixer: %s", pa_alsa_strerror(err));
+ return -1;
+ }
+
+ if ((err = snd_mixer_load(mixer)) < 0) {
+ pa_log_warn("Unable to load mixer: %s", pa_alsa_strerror(err));
+ return -1;
+ }
+
+ pa_log_info("Successfully attached to mixer '%s'", dev);
+ return 0;
+}
+
+snd_mixer_t *pa_alsa_open_mixer_for_pcm(snd_pcm_t *pcm, char **ctl_device) {
+ int err;
+ snd_mixer_t *m;
+ const char *dev;
+ snd_pcm_info_t* info;
+ snd_pcm_info_alloca(&info);
+
+ pa_assert(pcm);
+
+ if ((err = snd_mixer_open(&m, 0)) < 0) {
+ pa_log("Error opening mixer: %s", pa_alsa_strerror(err));
+ return NULL;
+ }
+
+ /* First, try by name */
+ if ((dev = snd_pcm_name(pcm)))
+ if (prepare_mixer(m, dev) >= 0) {
+ if (ctl_device)
+ *ctl_device = pa_xstrdup(dev);
+
+ return m;
+ }
+
+ /* Then, try by card index */
+ if (snd_pcm_info(pcm, info) >= 0) {
+ char *md;
+ int card_idx;
+
+ if ((card_idx = snd_pcm_info_get_card(info)) >= 0) {
+
+ md = pa_sprintf_malloc("hw:%i", card_idx);
+
+ if (!dev || !pa_streq(dev, md))
+ if (prepare_mixer(m, md) >= 0) {
+
+ if (ctl_device)
+ *ctl_device = md;
+ else
+ pa_xfree(md);
+
+ return m;
+ }
+
+ pa_xfree(md);
+ }
+ }
+
+ snd_mixer_close(m);
+ return NULL;
+}
+
+static const snd_mixer_selem_channel_id_t alsa_channel_ids[PA_CHANNEL_POSITION_MAX] = {
+ [PA_CHANNEL_POSITION_MONO] = SND_MIXER_SCHN_MONO, /* The ALSA name is just an alias! */
+
+ [PA_CHANNEL_POSITION_FRONT_CENTER] = SND_MIXER_SCHN_FRONT_CENTER,
+ [PA_CHANNEL_POSITION_FRONT_LEFT] = SND_MIXER_SCHN_FRONT_LEFT,
+ [PA_CHANNEL_POSITION_FRONT_RIGHT] = SND_MIXER_SCHN_FRONT_RIGHT,
+
+ [PA_CHANNEL_POSITION_REAR_CENTER] = SND_MIXER_SCHN_REAR_CENTER,
+ [PA_CHANNEL_POSITION_REAR_LEFT] = SND_MIXER_SCHN_REAR_LEFT,
+ [PA_CHANNEL_POSITION_REAR_RIGHT] = SND_MIXER_SCHN_REAR_RIGHT,
+
+ [PA_CHANNEL_POSITION_LFE] = SND_MIXER_SCHN_WOOFER,
+
+ [PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER] = SND_MIXER_SCHN_UNKNOWN,
+
+ [PA_CHANNEL_POSITION_SIDE_LEFT] = SND_MIXER_SCHN_SIDE_LEFT,
+ [PA_CHANNEL_POSITION_SIDE_RIGHT] = SND_MIXER_SCHN_SIDE_RIGHT,
+
+ [PA_CHANNEL_POSITION_AUX0] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX1] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX2] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX3] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX4] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX5] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX6] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX7] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX8] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX9] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX10] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX11] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX12] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX13] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX14] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX15] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX16] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX17] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX18] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX19] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX20] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX21] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX22] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX23] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX24] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX25] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX26] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX27] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX28] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX29] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX30] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_AUX31] = SND_MIXER_SCHN_UNKNOWN,
+
+ [PA_CHANNEL_POSITION_TOP_CENTER] = SND_MIXER_SCHN_UNKNOWN,
+
+ [PA_CHANNEL_POSITION_TOP_FRONT_CENTER] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_TOP_FRONT_LEFT] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_TOP_FRONT_RIGHT] = SND_MIXER_SCHN_UNKNOWN,
+
+ [PA_CHANNEL_POSITION_TOP_REAR_CENTER] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_TOP_REAR_LEFT] = SND_MIXER_SCHN_UNKNOWN,
+ [PA_CHANNEL_POSITION_TOP_REAR_RIGHT] = SND_MIXER_SCHN_UNKNOWN
+};
+
+static void setting_free(pa_alsa_setting *s) {
+ pa_assert(s);
+
+ if (s->options)
+ pa_idxset_free(s->options, NULL, NULL);
+
+ pa_xfree(s->name);
+ pa_xfree(s->description);
+ pa_xfree(s);
+}
+
+static void option_free(pa_alsa_option *o) {
+ pa_assert(o);
+
+ pa_xfree(o->alsa_name);
+ pa_xfree(o->name);
+ pa_xfree(o->description);
+ pa_xfree(o);
+}
+
+static void element_free(pa_alsa_element *e) {
+ pa_alsa_option *o;
+ pa_assert(e);
+
+ while ((o = e->options)) {
+ PA_LLIST_REMOVE(pa_alsa_option, e->options, o);
+ option_free(o);
+ }
+
+ pa_xfree(e->alsa_name);
+ pa_xfree(e);
+}
+
+void pa_alsa_path_free(pa_alsa_path *p) {
+ pa_alsa_element *e;
+ pa_alsa_setting *s;
+
+ pa_assert(p);
+
+ while ((e = p->elements)) {
+ PA_LLIST_REMOVE(pa_alsa_element, p->elements, e);
+ element_free(e);
+ }
+
+ while ((s = p->settings)) {
+ PA_LLIST_REMOVE(pa_alsa_setting, p->settings, s);
+ setting_free(s);
+ }
+
+ pa_xfree(p->name);
+ pa_xfree(p->description);
+ pa_xfree(p);
+}
+
+void pa_alsa_path_set_free(pa_alsa_path_set *ps) {
+ pa_alsa_path *p;
+ pa_assert(ps);
+
+ while ((p = ps->paths)) {
+ PA_LLIST_REMOVE(pa_alsa_path, ps->paths, p);
+ pa_alsa_path_free(p);
+ }
+
+ pa_xfree(ps);
+}
+
+static long to_alsa_dB(pa_volume_t v) {
+ return (long) (pa_sw_volume_to_dB(v) * 100.0);
+}
+
+static pa_volume_t from_alsa_dB(long v) {
+ return pa_sw_volume_from_dB((double) v / 100.0);
+}
+
+static long to_alsa_volume(pa_volume_t v, long min, long max) {
+ long w;
+
+ w = (long) round(((double) v * (double) (max - min)) / PA_VOLUME_NORM) + min;
+ return PA_CLAMP_UNLIKELY(w, min, max);
+}
+
+static pa_volume_t from_alsa_volume(long v, long min, long max) {
+ return (pa_volume_t) round(((double) (v - min) * PA_VOLUME_NORM) / (double) (max - min));
+}
+
+#define SELEM_INIT(sid, name) \
+ do { \
+ snd_mixer_selem_id_alloca(&(sid)); \
+ snd_mixer_selem_id_set_name((sid), (name)); \
+ snd_mixer_selem_id_set_index((sid), 0); \
+ } while(FALSE)
+
+static int element_get_volume(pa_alsa_element *e, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v) {
+ snd_mixer_selem_id_t *sid;
+ snd_mixer_elem_t *me;
+ snd_mixer_selem_channel_id_t c;
+ pa_channel_position_mask_t mask = 0;
+ pa_volume_t max_channel_volume = PA_VOLUME_MUTED;
+ unsigned k;
+
+ pa_assert(m);
+ pa_assert(e);
+ pa_assert(cm);
+ pa_assert(v);
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return -1;
+ }
+
+ pa_cvolume_mute(v, cm->channels);
+
+ /* We take the highest volume of all channels that match */
+
+ for (c = 0; c <= SND_MIXER_SCHN_LAST; c++) {
+ int r;
+ pa_volume_t f;
+
+ if (e->has_dB) {
+ long value = 0;
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ if (snd_mixer_selem_has_playback_channel(me, c))
+ r = snd_mixer_selem_get_playback_dB(me, c, &value);
+ else
+ r = -1;
+ } else {
+ if (snd_mixer_selem_has_capture_channel(me, c))
+ r = snd_mixer_selem_get_capture_dB(me, c, &value);
+ else
+ r = -1;
+ }
+
+ if (r < 0)
+ continue;
+
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+ VALGRIND_MAKE_MEM_DEFINED(&value, sizeof(value));
+#endif
+
+ f = from_alsa_dB(value);
+
+ } else {
+ long value = 0;
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ if (snd_mixer_selem_has_playback_channel(me, c))
+ r = snd_mixer_selem_get_playback_volume(me, c, &value);
+ else
+ r = -1;
+ } else {
+ if (snd_mixer_selem_has_capture_channel(me, c))
+ r = snd_mixer_selem_get_capture_volume(me, c, &value);
+ else
+ r = -1;
+ }
+
+ if (r < 0)
+ continue;
+
+ f = from_alsa_volume(value, e->min_volume, e->max_volume);
+ }
+
+ if (f > max_channel_volume)
+ max_channel_volume = f;
+
+ for (k = 0; k < cm->channels; k++)
+ if (e->masks[c][e->n_channels-1] & PA_CHANNEL_POSITION_MASK(cm->map[k]))
+ if (v->values[k] < f)
+ v->values[k] = f;
+
+ mask |= e->masks[c][e->n_channels-1];
+ }
+
+ for (k = 0; k < cm->channels; k++)
+ if (!(mask & PA_CHANNEL_POSITION_MASK(cm->map[k])))
+ v->values[k] = max_channel_volume;
+
+ return 0;
+}
+
+int pa_alsa_path_get_volume(pa_alsa_path *p, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v) {
+ pa_alsa_element *e;
+
+ pa_assert(m);
+ pa_assert(p);
+ pa_assert(cm);
+ pa_assert(v);
+
+ if (!p->has_volume)
+ return -1;
+
+ pa_cvolume_reset(v, cm->channels);
+
+ PA_LLIST_FOREACH(e, p->elements) {
+ pa_cvolume ev;
+
+ if (e->volume_use != PA_ALSA_VOLUME_MERGE)
+ continue;
+
+ pa_assert(!p->has_dB || e->has_dB);
+
+ if (element_get_volume(e, m, cm, &ev) < 0)
+ return -1;
+
+ /* If we have no dB information all we can do is take the first element and leave */
+ if (!p->has_dB) {
+ *v = ev;
+ return 0;
+ }
+
+ pa_sw_cvolume_multiply(v, v, &ev);
+ }
+
+ return 0;
+}
+
+static int element_get_switch(pa_alsa_element *e, snd_mixer_t *m, pa_bool_t *b) {
+ snd_mixer_selem_id_t *sid;
+ snd_mixer_elem_t *me;
+ snd_mixer_selem_channel_id_t c;
+
+ pa_assert(m);
+ pa_assert(e);
+ pa_assert(b);
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return -1;
+ }
+
+ /* We return muted if at least one channel is muted */
+
+ for (c = 0; c <= SND_MIXER_SCHN_LAST; c++) {
+ int r;
+ int value = 0;
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ if (snd_mixer_selem_has_playback_channel(me, c))
+ r = snd_mixer_selem_get_playback_switch(me, c, &value);
+ else
+ r = -1;
+ } else {
+ if (snd_mixer_selem_has_capture_channel(me, c))
+ r = snd_mixer_selem_get_capture_switch(me, c, &value);
+ else
+ r = -1;
+ }
+
+ if (r < 0)
+ continue;
+
+ if (!value) {
+ *b = FALSE;
+ return 0;
+ }
+ }
+
+ *b = TRUE;
+ return 0;
+}
+
+int pa_alsa_path_get_mute(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t *muted) {
+ pa_alsa_element *e;
+
+ pa_assert(m);
+ pa_assert(p);
+ pa_assert(muted);
+
+ if (!p->has_mute)
+ return -1;
+
+ PA_LLIST_FOREACH(e, p->elements) {
+ pa_bool_t b;
+
+ if (e->switch_use != PA_ALSA_SWITCH_MUTE)
+ continue;
+
+ if (element_get_switch(e, m, &b) < 0)
+ return -1;
+
+ if (!b) {
+ *muted = TRUE;
+ return 0;
+ }
+ }
+
+ *muted = FALSE;
+ return 0;
+}
+
+static int element_set_volume(pa_alsa_element *e, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v) {
+ snd_mixer_selem_id_t *sid;
+ pa_cvolume rv;
+ snd_mixer_elem_t *me;
+ snd_mixer_selem_channel_id_t c;
+ pa_channel_position_mask_t mask = 0;
+ pa_volume_t max_channel_volume = PA_VOLUME_MUTED;
+ unsigned k;
+
+ pa_assert(m);
+ pa_assert(e);
+ pa_assert(cm);
+ pa_assert(v);
+ pa_assert(pa_cvolume_compatible_with_channel_map(v, cm));
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return -1;
+ }
+
+ pa_cvolume_mute(&rv, cm->channels);
+
+ for (c = 0; c <= SND_MIXER_SCHN_LAST; c++) {
+ int r;
+ pa_volume_t f = PA_VOLUME_MUTED;
+ pa_bool_t found = FALSE;
+
+ for (k = 0; k < cm->channels; k++)
+ if (e->masks[c][e->n_channels-1] & PA_CHANNEL_POSITION_MASK(cm->map[k])) {
+ found = TRUE;
+ if (v->values[k] > f)
+ f = v->values[k];
+ }
+
+ if (!found) {
+ /* Hmm, so this channel does not exist in the volume
+ * struct, so let's bind it to the overall max of the
+ * volume. */
+ f = pa_cvolume_max(v);
+ }
+
+ if (e->has_dB) {
+ long value = to_alsa_dB(f);
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ /* If we call set_play_volume() without checking first
+ * if the channel is available, ALSA behaves ver
+ * strangely and doesn't fail the call */
+ if (snd_mixer_selem_has_playback_channel(me, c)) {
+ if ((r = snd_mixer_selem_set_playback_dB(me, c, value, +1)) >= 0)
+ r = snd_mixer_selem_get_playback_dB(me, c, &value);
+ } else
+ r = -1;
+ } else {
+ if (snd_mixer_selem_has_capture_channel(me, c)) {
+ if ((r = snd_mixer_selem_set_capture_dB(me, c, value, +1)) >= 0)
+ r = snd_mixer_selem_get_capture_dB(me, c, &value);
+ } else
+ r = -1;
+ }
+
+ if (r < 0)
+ continue;
+
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+ VALGRIND_MAKE_MEM_DEFINED(&value, sizeof(value));
+#endif
+
+ f = from_alsa_dB(value);
+
+ } else {
+ long value;
+
+ value = to_alsa_volume(f, e->min_volume, e->max_volume);
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ if (snd_mixer_selem_has_playback_channel(me, c)) {
+ if ((r = snd_mixer_selem_set_playback_volume(me, c, value)) >= 0)
+ r = snd_mixer_selem_get_playback_volume(me, c, &value);
+ } else
+ r = -1;
+ } else {
+ if (snd_mixer_selem_has_capture_channel(me, c)) {
+ if ((r = snd_mixer_selem_set_capture_volume(me, c, value)) >= 0)
+ r = snd_mixer_selem_get_capture_volume(me, c, &value);
+ } else
+ r = -1;
+ }
+
+ if (r < 0)
+ continue;
+
+ f = from_alsa_volume(value, e->min_volume, e->max_volume);
+ }
+
+ if (f > max_channel_volume)
+ max_channel_volume = f;
+
+ for (k = 0; k < cm->channels; k++)
+ if (e->masks[c][e->n_channels-1] & PA_CHANNEL_POSITION_MASK(cm->map[k]))
+ if (rv.values[k] < f)
+ rv.values[k] = f;
+
+ mask |= e->masks[c][e->n_channels-1];
+ }
+
+ for (k = 0; k < cm->channels; k++)
+ if (!(mask & PA_CHANNEL_POSITION_MASK(cm->map[k])))
+ rv.values[k] = max_channel_volume;
+
+ *v = rv;
+ return 0;
+}
+
+int pa_alsa_path_set_volume(pa_alsa_path *p, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v) {
+ pa_alsa_element *e;
+ pa_cvolume rv;
+
+ pa_assert(m);
+ pa_assert(p);
+ pa_assert(cm);
+ pa_assert(v);
+ pa_assert(pa_cvolume_compatible_with_channel_map(v, cm));
+
+ if (!p->has_volume)
+ return -1;
+
+ rv = *v; /* Remaining adjustment */
+ pa_cvolume_reset(v, cm->channels); /* Adjustment done */
+
+ PA_LLIST_FOREACH(e, p->elements) {
+ pa_cvolume ev;
+
+ if (e->volume_use != PA_ALSA_VOLUME_MERGE)
+ continue;
+
+ pa_assert(!p->has_dB || e->has_dB);
+
+ ev = rv;
+ if (element_set_volume(e, m, cm, &ev) < 0)
+ return -1;
+
+ if (!p->has_dB) {
+ *v = ev;
+ return 0;
+ }
+
+ pa_sw_cvolume_multiply(v, v, &ev);
+ pa_sw_cvolume_divide(&rv, &rv, &ev);
+ }
+
+ return 0;
+}
+
+static int element_set_switch(pa_alsa_element *e, snd_mixer_t *m, pa_bool_t b) {
+ snd_mixer_elem_t *me;
+ snd_mixer_selem_id_t *sid;
+ int r;
+
+ pa_assert(m);
+ pa_assert(e);
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return -1;
+ }
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ r = snd_mixer_selem_set_playback_switch_all(me, b);
+ else
+ r = snd_mixer_selem_set_capture_switch_all(me, b);
+
+ if (r < 0)
+ pa_log_warn("Failed to set switch of %s: %s", e->alsa_name, pa_alsa_strerror(errno));
+
+ return r;
+}
+
+int pa_alsa_path_set_mute(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t muted) {
+ pa_alsa_element *e;
+
+ pa_assert(m);
+ pa_assert(p);
+
+ if (!p->has_mute)
+ return -1;
+
+ PA_LLIST_FOREACH(e, p->elements) {
+
+ if (e->switch_use != PA_ALSA_SWITCH_MUTE)
+ continue;
+
+ if (element_set_switch(e, m, !muted) < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+static int element_mute_volume(pa_alsa_element *e, snd_mixer_t *m) {
+ snd_mixer_elem_t *me;
+ snd_mixer_selem_id_t *sid;
+ int r;
+
+ pa_assert(m);
+ pa_assert(e);
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return -1;
+ }
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ r = snd_mixer_selem_set_playback_volume_all(me, e->min_volume);
+ else
+ r = snd_mixer_selem_set_capture_volume_all(me, e->min_volume);
+
+ if (r < 0)
+ pa_log_warn("Faile to set volume to muted of %s: %s", e->alsa_name, pa_alsa_strerror(errno));
+
+ return r;
+}
+
+/* The volume to 0dB */
+static int element_zero_volume(pa_alsa_element *e, snd_mixer_t *m) {
+ snd_mixer_elem_t *me;
+ snd_mixer_selem_id_t *sid;
+ int r;
+
+ pa_assert(m);
+ pa_assert(e);
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return -1;
+ }
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ r = snd_mixer_selem_set_playback_dB_all(me, 0, +1);
+ else
+ r = snd_mixer_selem_set_capture_dB_all(me, 0, +1);
+
+ if (r < 0)
+ pa_log_warn("Faile to set volume to 0dB of %s: %s", e->alsa_name, pa_alsa_strerror(errno));
+
+ return r;
+}
+
+int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
+ pa_alsa_element *e;
+ int r;
+
+ pa_assert(m);
+ pa_assert(p);
+
+ pa_log_debug("Activating path %s", p->name);
+ pa_alsa_path_dump(p);
+
+ PA_LLIST_FOREACH(e, p->elements) {
+
+ switch (e->switch_use) {
+ case PA_ALSA_SWITCH_MUTE:
+ case PA_ALSA_SWITCH_OFF:
+ r = element_set_switch(e, m, FALSE);
+ break;
+
+ case PA_ALSA_SWITCH_ON:
+ r = element_set_switch(e, m, TRUE);
+ break;
+
+ case PA_ALSA_SWITCH_IGNORE:
+ case PA_ALSA_SWITCH_SELECT:
+ r = 0;
+ break;
+ }
+
+ if (r < 0)
+ return -1;
+
+ switch (e->volume_use) {
+ case PA_ALSA_VOLUME_OFF:
+ case PA_ALSA_VOLUME_MERGE:
+ r = element_mute_volume(e, m);
+ break;
+
+ case PA_ALSA_VOLUME_ZERO:
+ r = element_zero_volume(e, m);
+ break;
+
+ case PA_ALSA_VOLUME_IGNORE:
+ r = 0;
+ break;
+ }
+
+ if (r < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+static int check_required(pa_alsa_element *e, snd_mixer_elem_t *me) {
+ pa_bool_t has_switch;
+ pa_bool_t has_enumeration;
+ pa_bool_t has_volume;
+
+ pa_assert(e);
+ pa_assert(me);
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ has_switch =
+ snd_mixer_selem_has_playback_switch(me) ||
+ (e->direction_try_other && snd_mixer_selem_has_capture_switch(me));
+ } else {
+ has_switch =
+ snd_mixer_selem_has_capture_switch(me) ||
+ (e->direction_try_other && snd_mixer_selem_has_playback_switch(me));
+ }
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ has_volume =
+ snd_mixer_selem_has_playback_volume(me) ||
+ (e->direction_try_other && snd_mixer_selem_has_capture_volume(me));
+ } else {
+ has_volume =
+ snd_mixer_selem_has_capture_volume(me) ||
+ (e->direction_try_other && snd_mixer_selem_has_playback_volume(me));
+ }
+
+ has_enumeration = snd_mixer_selem_is_enumerated(me);
+
+ if ((e->required == PA_ALSA_REQUIRED_SWITCH && !has_switch) ||
+ (e->required == PA_ALSA_REQUIRED_VOLUME && !has_volume) ||
+ (e->required == PA_ALSA_REQUIRED_ENUMERATION && !has_enumeration))
+ return -1;
+
+ if (e->required == PA_ALSA_REQUIRED_ANY && !(has_switch || has_volume || has_enumeration))
+ return -1;
+
+ if ((e->required_absent == PA_ALSA_REQUIRED_SWITCH && has_switch) ||
+ (e->required_absent == PA_ALSA_REQUIRED_VOLUME && has_volume) ||
+ (e->required_absent == PA_ALSA_REQUIRED_ENUMERATION && has_enumeration))
+ return -1;
+
+ if (e->required_absent == PA_ALSA_REQUIRED_ANY && (has_switch || has_volume || has_enumeration))
+ return -1;
+
+ return 0;
+}
+
+static int element_probe(pa_alsa_element *e, snd_mixer_t *m) {
+ snd_mixer_selem_id_t *sid;
+ snd_mixer_elem_t *me;
+
+ pa_assert(m);
+ pa_assert(e);
+
+ SELEM_INIT(sid, e->alsa_name);
+
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+
+ if (e->required != PA_ALSA_REQUIRED_IGNORE)
+ return -1;
+
+ e->switch_use = PA_ALSA_SWITCH_IGNORE;
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
+ e->enumeration_use = PA_ALSA_VOLUME_IGNORE;
+
+ return 0;
+ }
+
+ if (e->switch_use != PA_ALSA_SWITCH_IGNORE) {
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+
+ if (!snd_mixer_selem_has_playback_switch(me)) {
+ if (e->direction_try_other && snd_mixer_selem_has_capture_switch(me))
+ e->direction = PA_ALSA_DIRECTION_INPUT;
+ else
+ e->switch_use = PA_ALSA_SWITCH_IGNORE;
+ }
+
+ } else {
+
+ if (!snd_mixer_selem_has_capture_switch(me)) {
+ if (e->direction_try_other && snd_mixer_selem_has_playback_switch(me))
+ e->direction = PA_ALSA_DIRECTION_OUTPUT;
+ else
+ e->switch_use = PA_ALSA_SWITCH_IGNORE;
+ }
+ }
+
+ if (e->switch_use != PA_ALSA_SWITCH_IGNORE)
+ e->direction_try_other = FALSE;
+ }
+
+ if (e->volume_use != PA_ALSA_VOLUME_IGNORE) {
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT) {
+
+ if (!snd_mixer_selem_has_playback_volume(me)) {
+ if (e->direction_try_other && snd_mixer_selem_has_capture_volume(me))
+ e->direction = PA_ALSA_DIRECTION_INPUT;
+ else
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
+ }
+
+ } else {
+
+ if (!snd_mixer_selem_has_capture_volume(me)) {
+ if (e->direction_try_other && snd_mixer_selem_has_playback_volume(me))
+ e->direction = PA_ALSA_DIRECTION_OUTPUT;
+ else
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
+ }
+ }
+
+ if (e->volume_use != PA_ALSA_VOLUME_IGNORE) {
+ long min_dB = 0, max_dB = 0;
+ int r;
+
+ e->direction_try_other = FALSE;
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ e->has_dB = snd_mixer_selem_get_playback_dB_range(me, &min_dB, &max_dB) >= 0;
+ else
+ e->has_dB = snd_mixer_selem_get_capture_dB_range(me, &min_dB, &max_dB) >= 0;
+
+ if (e->has_dB) {
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+ VALGRIND_MAKE_MEM_DEFINED(&min_dB, sizeof(min_dB));
+ VALGRIND_MAKE_MEM_DEFINED(&max_dB, sizeof(max_dB));
+#endif
+
+ e->min_dB = ((double) min_dB) / 100.0;
+ e->max_dB = ((double) max_dB) / 100.0;
+
+ if (min_dB >= max_dB) {
+ pa_log_warn("Your kernel driver is broken: it reports a volume range from %0.2f dB to %0.2f dB which makes no sense.", e->min_dB, e->max_dB);
+ e->has_dB = FALSE;
+ }
+ }
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ r = snd_mixer_selem_get_playback_volume_range(me, &e->min_volume, &e->max_volume);
+ else
+ r = snd_mixer_selem_get_capture_volume_range(me, &e->min_volume, &e->max_volume);
+
+ if (r < 0) {
+ pa_log_warn("Failed to get volume range of %s: %s", e->alsa_name, pa_alsa_strerror(r));
+ return -1;
+ }
+
+
+ if (e->min_volume >= e->max_volume) {
+ pa_log_warn("Your kernel driver is broken: it reports a volume range from %li to %li which makes no sense.", e->min_volume, e->max_volume);
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
+
+ } else {
+ pa_bool_t is_mono;
+ pa_channel_position_t p;
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ is_mono = snd_mixer_selem_is_playback_mono(me) > 0;
+ else
+ is_mono = snd_mixer_selem_is_capture_mono(me) > 0;
+
+ if (is_mono) {
+ e->n_channels = 1;
+
+ if (!e->override_map) {
+ for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++)
+ e->masks[alsa_channel_ids[p]][e->n_channels-1] = 0;
+ e->masks[SND_MIXER_SCHN_MONO][e->n_channels-1] = PA_CHANNEL_POSITION_MASK_ALL;
+ }
+
+ e->merged_mask = e->masks[SND_MIXER_SCHN_MONO][e->n_channels-1];
+ } else {
+ e->n_channels = 0;
+ for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++) {
+
+ if (alsa_channel_ids[p] == SND_MIXER_SCHN_UNKNOWN)
+ continue;
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ e->n_channels += snd_mixer_selem_has_playback_channel(me, alsa_channel_ids[p]) > 0;
+ else
+ e->n_channels += snd_mixer_selem_has_capture_channel(me, alsa_channel_ids[p]) > 0;
+ }
+
+ if (e->n_channels <= 0) {
+ pa_log_warn("Volume element %s with no channels?", e->alsa_name);
+ return -1;
+ }
+
+ if (!e->override_map) {
+ for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++) {
+ pa_bool_t has_channel;
+
+ if (alsa_channel_ids[p] == SND_MIXER_SCHN_UNKNOWN)
+ continue;
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ has_channel = snd_mixer_selem_has_playback_channel(me, alsa_channel_ids[p]) > 0;
+ else
+ has_channel = snd_mixer_selem_has_capture_channel(me, alsa_channel_ids[p]) > 0;
+
+ e->masks[alsa_channel_ids[p]][e->n_channels-1] = has_channel ? PA_CHANNEL_POSITION_MASK(p) : 0;
+ }
+ }
+
+ e->merged_mask = 0;
+ for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++)
+ e->merged_mask |= e->masks[alsa_channel_ids[p]][e->n_channels-1];
+ }
+ }
+ }
+
+ }
+
+ if (check_required(e, me) < 0)
+ return -1;
+
+ if (e->switch_use == PA_ALSA_SWITCH_SELECT) {
+ pa_alsa_option *o;
+
+ PA_LLIST_FOREACH(o, e->options)
+ o->alsa_idx = pa_streq(o->alsa_name, "on") ? 1 : 0;
+ } else if (e->enumeration_use == PA_ALSA_ENUMERATION_SELECT) {
+ int n;
+ pa_alsa_option *o;
+
+ if ((n = snd_mixer_selem_get_enum_items(me)) < 0) {
+ pa_log("snd_mixer_selem_get_enum_items() failed: %s", pa_alsa_strerror(n));
+ return -1;
+ }
+
+ PA_LLIST_FOREACH(o, e->options) {
+ int i;
+
+ for (i = 0; i < n; i++) {
+ char buf[128];
+
+ if (snd_mixer_selem_get_enum_item_name(me, i, sizeof(buf), buf) < 0)
+ continue;
+
+ if (!pa_streq(buf, o->alsa_name))
+ continue;
+
+ o->alsa_idx = i;
+ }
+ }
+ }
+
+ return 0;
+}
+
+static pa_alsa_element* element_get(pa_alsa_path *p, const char *section, pa_bool_t prefixed) {
+ pa_alsa_element *e;
+
+ pa_assert(p);
+ pa_assert(section);
+
+ if (prefixed) {
+ if (!pa_startswith(section, "Element "))
+ return NULL;
+
+ section += 8;
+ }
+
+ /* This is not an element section, but an enum section? */
+ if (strchr(section, ':'))
+ return NULL;
+
+ if (p->last_element && pa_streq(p->last_element->alsa_name, section))
+ return p->last_element;
+
+ PA_LLIST_FOREACH(e, p->elements)
+ if (pa_streq(e->alsa_name, section))
+ goto finish;
+
+ e = pa_xnew0(pa_alsa_element, 1);
+ e->path = p;
+ e->alsa_name = pa_xstrdup(section);
+ e->direction = p->direction;
+
+ PA_LLIST_INSERT_AFTER(pa_alsa_element, p->elements, p->last_element, e);
+
+finish:
+ p->last_element = e;
+ return e;
+}
+
+static pa_alsa_option* option_get(pa_alsa_path *p, const char *section) {
+ char *en;
+ const char *on;
+ pa_alsa_option *o;
+ pa_alsa_element *e;
+
+ if (!pa_startswith(section, "Option "))
+ return NULL;
+
+ section += 7;
+
+ /* This is not an enum section, but an element section? */
+ if (!(on = strchr(section, ':')))
+ return NULL;
+
+ en = pa_xstrndup(section, on - section);
+ on++;
+
+ if (p->last_option &&
+ pa_streq(p->last_option->element->alsa_name, en) &&
+ pa_streq(p->last_option->alsa_name, on)) {
+ pa_xfree(en);
+ return p->last_option;
+ }
+
+ pa_assert_se(e = element_get(p, en, FALSE));
+ pa_xfree(en);
+
+ PA_LLIST_FOREACH(o, e->options)
+ if (pa_streq(o->alsa_name, on))
+ goto finish;
+
+ o = pa_xnew0(pa_alsa_option, 1);
+ o->element = e;
+ o->alsa_name = pa_xstrdup(on);
+ o->alsa_idx = -1;
+
+ if (p->last_option && p->last_option->element == e)
+ PA_LLIST_INSERT_AFTER(pa_alsa_option, e->options, p->last_option, o);
+ else
+ PA_LLIST_PREPEND(pa_alsa_option, e->options, o);
+
+finish:
+ p->last_option = o;
+ return o;
+}
+
+static int element_parse_switch(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_element *e;
+
+ pa_assert(p);
+
+ if (!(e = element_get(p, section, TRUE))) {
+ pa_log("[%s:%u] Switch makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ if (pa_streq(rvalue, "ignore"))
+ e->switch_use = PA_ALSA_SWITCH_IGNORE;
+ else if (pa_streq(rvalue, "mute"))
+ e->switch_use = PA_ALSA_SWITCH_MUTE;
+ else if (pa_streq(rvalue, "off"))
+ e->switch_use = PA_ALSA_SWITCH_OFF;
+ else if (pa_streq(rvalue, "on"))
+ e->switch_use = PA_ALSA_SWITCH_ON;
+ else if (pa_streq(rvalue, "select"))
+ e->switch_use = PA_ALSA_SWITCH_SELECT;
+ else {
+ pa_log("[%s:%u] Switch invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int element_parse_volume(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_element *e;
+
+ pa_assert(p);
+
+ if (!(e = element_get(p, section, TRUE))) {
+ pa_log("[%s:%u] Volume makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ if (pa_streq(rvalue, "ignore"))
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
+ else if (pa_streq(rvalue, "merge"))
+ e->volume_use = PA_ALSA_VOLUME_MERGE;
+ else if (pa_streq(rvalue, "off"))
+ e->volume_use = PA_ALSA_VOLUME_OFF;
+ else if (pa_streq(rvalue, "zero"))
+ e->volume_use = PA_ALSA_VOLUME_ZERO;
+ else {
+ pa_log("[%s:%u] Volume invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int element_parse_enumeration(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_element *e;
+
+ pa_assert(p);
+
+ if (!(e = element_get(p, section, TRUE))) {
+ pa_log("[%s:%u] Enumeration makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ if (pa_streq(rvalue, "ignore"))
+ e->enumeration_use = PA_ALSA_ENUMERATION_IGNORE;
+ else if (pa_streq(rvalue, "select"))
+ e->enumeration_use = PA_ALSA_ENUMERATION_SELECT;
+ else {
+ pa_log("[%s:%u] Enumeration invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int option_parse_priority(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_option *o;
+ uint32_t prio;
+
+ pa_assert(p);
+
+ if (!(o = option_get(p, section))) {
+ pa_log("[%s:%u] Priority makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ if (pa_atou(rvalue, &prio) < 0) {
+ pa_log("[%s:%u] Priority invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ o->priority = prio;
+ return 0;
+}
+
+static int option_parse_name(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_option *o;
+
+ pa_assert(p);
+
+ if (!(o = option_get(p, section))) {
+ pa_log("[%s:%u] Name makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ pa_xfree(o->name);
+ o->name = pa_xstrdup(rvalue);
+
+ return 0;
+}
+
+static int element_parse_required(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_element *e;
+ pa_alsa_required_t req;
+
+ pa_assert(p);
+
+ if (!(e = element_get(p, section, TRUE))) {
+ pa_log("[%s:%u] Required makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ if (pa_streq(rvalue, "ignore"))
+ req = PA_ALSA_REQUIRED_IGNORE;
+ else if (pa_streq(rvalue, "switch"))
+ req = PA_ALSA_REQUIRED_SWITCH;
+ else if (pa_streq(rvalue, "volume"))
+ req = PA_ALSA_REQUIRED_VOLUME;
+ else if (pa_streq(rvalue, "enumeration"))
+ req = PA_ALSA_REQUIRED_ENUMERATION;
+ else if (pa_streq(rvalue, "any"))
+ req = PA_ALSA_REQUIRED_ANY;
+ else {
+ pa_log("[%s:%u] Required invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ if (pa_streq(lvalue, "required-absent"))
+ e->required_absent = req;
+ else
+ e->required = req;
+
+ return 0;
+}
+
+static int element_parse_direction(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_element *e;
+
+ pa_assert(p);
+
+ if (!(e = element_get(p, section, TRUE))) {
+ pa_log("[%s:%u] Direction makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ if (pa_streq(rvalue, "playback"))
+ e->direction = PA_ALSA_DIRECTION_OUTPUT;
+ else if (pa_streq(rvalue, "capture"))
+ e->direction = PA_ALSA_DIRECTION_INPUT;
+ else {
+ pa_log("[%s:%u] Direction invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int element_parse_direction_try_other(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_element *e;
+ int yes;
+
+ if (!(e = element_get(p, section, TRUE))) {
+ pa_log("[%s:%u] Direction makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ if ((yes = pa_parse_boolean(rvalue)) < 0) {
+ pa_log("[%s:%u] Direction invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ e->direction_try_other = !!yes;
+ return 0;
+}
+
+static pa_channel_position_mask_t parse_mask(const char *m) {
+ pa_channel_position_mask_t v;
+
+ if (pa_streq(m, "all-left"))
+ v = PA_CHANNEL_POSITION_MASK_LEFT;
+ else if (pa_streq(m, "all-right"))
+ v = PA_CHANNEL_POSITION_MASK_RIGHT;
+ else if (pa_streq(m, "all-center"))
+ v = PA_CHANNEL_POSITION_MASK_CENTER;
+ else if (pa_streq(m, "all-front"))
+ v = PA_CHANNEL_POSITION_MASK_FRONT;
+ else if (pa_streq(m, "all-rear"))
+ v = PA_CHANNEL_POSITION_MASK_REAR;
+ else if (pa_streq(m, "all-side"))
+ v = PA_CHANNEL_POSITION_MASK_SIDE_OR_TOP_CENTER;
+ else if (pa_streq(m, "all-top"))
+ v = PA_CHANNEL_POSITION_MASK_TOP;
+ else if (pa_streq(m, "all-no-lfe"))
+ v = PA_CHANNEL_POSITION_MASK_ALL ^ PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_LFE);
+ else if (pa_streq(m, "all"))
+ v = PA_CHANNEL_POSITION_MASK_ALL;
+ else {
+ pa_channel_position_t p;
+
+ if ((p = pa_channel_position_from_string(m)) == PA_CHANNEL_POSITION_INVALID)
+ return 0;
+
+ v = PA_CHANNEL_POSITION_MASK(p);
+ }
+
+ return v;
+}
+
+static int element_parse_override_map(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_path *p = userdata;
+ pa_alsa_element *e;
+ const char *state = NULL;
+ unsigned i = 0;
+ char *n;
+
+ if (!(e = element_get(p, section, TRUE))) {
+ pa_log("[%s:%u] Override map makes no sense in '%s'", filename, line, section);
+ return -1;
+ }
+
+ while ((n = pa_split(rvalue, ",", &state))) {
+ pa_channel_position_mask_t m;
+
+ if (!*n)
+ m = 0;
+ else {
+ if ((m = parse_mask(n)) == 0) {
+ pa_log("[%s:%u] Override map '%s' invalid in '%s'", filename, line, n, section);
+ pa_xfree(n);
+ return -1;
+ }
+ }
+
+ if (pa_streq(lvalue, "override-map.1"))
+ e->masks[i++][0] = m;
+ else
+ e->masks[i++][1] = m;
+
+ /* Later on we might add override-map.3 and so on here ... */
+
+ pa_xfree(n);
+ }
+
+ e->override_map = TRUE;
+
+ return 0;
+}
+
+static int element_set_option(pa_alsa_element *e, snd_mixer_t *m, int alsa_idx) {
+ snd_mixer_selem_id_t *sid;
+ snd_mixer_elem_t *me;
+ int r;
+
+ pa_assert(e);
+ pa_assert(m);
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return -1;
+ }
+
+ if (e->switch_use == PA_ALSA_SWITCH_SELECT) {
+
+ if (e->direction == PA_ALSA_DIRECTION_OUTPUT)
+ r = snd_mixer_selem_set_playback_switch_all(me, alsa_idx);
+ else
+ r = snd_mixer_selem_set_capture_switch_all(me, alsa_idx);
+
+ if (r < 0)
+ pa_log_warn("Faile to set switch of %s: %s", e->alsa_name, pa_alsa_strerror(errno));
+
+ } else {
+ pa_assert(e->enumeration_use == PA_ALSA_ENUMERATION_SELECT);
+
+ if ((r = snd_mixer_selem_set_enum_item(me, 0, alsa_idx)) < 0)
+ pa_log_warn("Faile to set enumeration of %s: %s", e->alsa_name, pa_alsa_strerror(errno));
+ }
+
+ return r;
+}
+
+int pa_alsa_setting_select(pa_alsa_setting *s, snd_mixer_t *m) {
+ pa_alsa_option *o;
+ uint32_t idx;
+
+ pa_assert(s);
+ pa_assert(m);
+
+ PA_IDXSET_FOREACH(o, s->options, idx)
+ element_set_option(o->element, m, o->alsa_idx);
+
+ return 0;
+}
+
+static int option_verify(pa_alsa_option *o) {
+ static const struct description_map well_known_descriptions[] = {
+ { "input", N_("Input") },
+ { "input-docking", N_("Docking Station Input") },
+ { "input-docking-microphone", N_("Docking Station Microphone") },
+ { "input-linein", N_("Line-In") },
+ { "input-microphone", N_("Microphone") },
+ { "input-microphone-external", N_("External Microphone") },
+ { "input-microphone-internal", N_("Internal Microphone") },
+ { "input-radio", N_("Radio") },
+ { "input-video", N_("Video") },
+ { "input-agc-on", N_("Automatic Gain Control") },
+ { "input-agc-off", "" },
+ { "input-boost-on", N_("Boost") },
+ { "input-boost-off", "" },
+ { "output-amplifier-on", N_("Amplifier") },
+ { "output-amplifier-off", "" }
+ };
+
+ pa_assert(o);
+
+ if (!o->name) {
+ pa_log("No name set for option %s", o->alsa_name);
+ return -1;
+ }
+
+ if (o->element->enumeration_use != PA_ALSA_ENUMERATION_SELECT &&
+ o->element->switch_use != PA_ALSA_SWITCH_SELECT) {
+ pa_log("Element %s of option %s not set for select.", o->element->alsa_name, o->name);
+ return -1;
+ }
+
+ if (o->element->switch_use == PA_ALSA_SWITCH_SELECT &&
+ !pa_streq(o->alsa_name, "on") &&
+ !pa_streq(o->alsa_name, "off")) {
+ pa_log("Switch %s options need be named off or on ", o->element->alsa_name);
+ return -1;
+ }
+
+ if (!o->description)
+ o->description = pa_xstrdup(lookup_description(o->name,
+ well_known_descriptions,
+ PA_ELEMENTSOF(well_known_descriptions)));
+ if (!o->description)
+ o->description = pa_xstrdup(o->name);
+
+ return 0;
+}
+
+static int element_verify(pa_alsa_element *e) {
+ pa_alsa_option *o;
+
+ pa_assert(e);
+
+ if ((e->required != PA_ALSA_REQUIRED_IGNORE && e->required == e->required_absent) ||
+ (e->required_absent == PA_ALSA_REQUIRED_ANY && e->required != PA_ALSA_REQUIRED_IGNORE)) {
+ pa_log("Element %s cannot be required and absent at the same time.", e->alsa_name);
+ return -1;
+ }
+
+ if (e->switch_use == PA_ALSA_SWITCH_SELECT && e->enumeration_use == PA_ALSA_ENUMERATION_SELECT) {
+ pa_log("Element %s cannot set select for both switch and enumeration.", e->alsa_name);
+ return -1;
+ }
+
+ PA_LLIST_FOREACH(o, e->options)
+ if (option_verify(o) < 0)
+ return -1;
+
+ return 0;
+}
+
+static int path_verify(pa_alsa_path *p) {
+ static const struct description_map well_known_descriptions[] = {
+ { "analog-input", N_("Analog Input") },
+ { "analog-input-microphone", N_("Analog Microphone") },
+ { "analog-input-linein", N_("Analog Line-In") },
+ { "analog-input-radio", N_("Analog Radio") },
+ { "analog-input-video", N_("Analog Video") },
+ { "analog-output", N_("Analog Output") },
+ { "analog-output-headphones", N_("Analog Headphones") },
+ { "analog-output-lfe-on-mono", N_("Analog Output (LFE)") },
+ { "analog-output-mono", N_("Analog Mono Output") }
+ };
+
+ pa_alsa_element *e;
+
+ pa_assert(p);
+
+ PA_LLIST_FOREACH(e, p->elements)
+ if (element_verify(e) < 0)
+ return -1;
+
+ if (!p->description)
+ p->description = pa_xstrdup(lookup_description(p->name,
+ well_known_descriptions,
+ PA_ELEMENTSOF(well_known_descriptions)));
+
+ if (!p->description)
+ p->description = pa_xstrdup(p->name);
+
+ return 0;
+}
+
+pa_alsa_path* pa_alsa_path_new(const char *fname, pa_alsa_direction_t direction) {
+ pa_alsa_path *p;
+ char *fn;
+ int r;
+ const char *n;
+
+ pa_config_item items[] = {
+ /* [General] */
+ { "priority", pa_config_parse_unsigned, NULL, "General" },
+ { "description", pa_config_parse_string, NULL, "General" },
+ { "name", pa_config_parse_string, NULL, "General" },
+
+ /* [Option ...] */
+ { "priority", option_parse_priority, NULL, NULL },
+ { "name", option_parse_name, NULL, NULL },
+
+ /* [Element ...] */
+ { "switch", element_parse_switch, NULL, NULL },
+ { "volume", element_parse_volume, NULL, NULL },
+ { "enumeration", element_parse_enumeration, NULL, NULL },
+ { "override-map.1", element_parse_override_map, NULL, NULL },
+ { "override-map.2", element_parse_override_map, NULL, NULL },
+ /* ... later on we might add override-map.3 and so on here ... */
+ { "required", element_parse_required, NULL, NULL },
+ { "required-absent", element_parse_required, NULL, NULL },
+ { "direction", element_parse_direction, NULL, NULL },
+ { "direction-try-other", element_parse_direction_try_other, NULL, NULL },
+ { NULL, NULL, NULL, NULL }
+ };
+
+ pa_assert(fname);
+
+ p = pa_xnew0(pa_alsa_path, 1);
+ n = pa_path_get_filename(fname);
+ p->name = pa_xstrndup(n, strcspn(n, "."));
+ p->direction = direction;
+
+ items[0].data = &p->priority;
+ items[1].data = &p->description;
+ items[2].data = &p->name;
+
+ fn = pa_maybe_prefix_path(fname, PA_ALSA_PATHS_DIR);
+ r = pa_config_parse(fn, NULL, items, p);
+ pa_xfree(fn);
+
+ if (r < 0)
+ goto fail;
+
+ if (path_verify(p) < 0)
+ goto fail;
+
+ return p;
+
+fail:
+ pa_alsa_path_free(p);
+ return NULL;
+}
+
+pa_alsa_path* pa_alsa_path_synthesize(const char*element, pa_alsa_direction_t direction) {
+ pa_alsa_path *p;
+ pa_alsa_element *e;
+
+ pa_assert(element);
+
+ p = pa_xnew0(pa_alsa_path, 1);
+ p->name = pa_xstrdup(element);
+ p->direction = direction;
+
+ e = pa_xnew0(pa_alsa_element, 1);
+ e->path = p;
+ e->alsa_name = pa_xstrdup(element);
+ e->direction = direction;
+
+ e->switch_use = PA_ALSA_SWITCH_MUTE;
+ e->volume_use = PA_ALSA_VOLUME_MERGE;
+
+ PA_LLIST_PREPEND(pa_alsa_element, p->elements, e);
+ return p;
+}
+
+static pa_bool_t element_drop_unsupported(pa_alsa_element *e) {
+ pa_alsa_option *o, *n;
+
+ pa_assert(e);
+
+ for (o = e->options; o; o = n) {
+ n = o->next;
+
+ if (o->alsa_idx < 0) {
+ PA_LLIST_REMOVE(pa_alsa_option, e->options, o);
+ option_free(o);
+ }
+ }
+
+ return
+ e->switch_use != PA_ALSA_SWITCH_IGNORE ||
+ e->volume_use != PA_ALSA_VOLUME_IGNORE ||
+ e->enumeration_use != PA_ALSA_ENUMERATION_IGNORE;
+}
+
+static void path_drop_unsupported(pa_alsa_path *p) {
+ pa_alsa_element *e, *n;
+
+ pa_assert(p);
+
+ for (e = p->elements; e; e = n) {
+ n = e->next;
+
+ if (!element_drop_unsupported(e)) {
+ PA_LLIST_REMOVE(pa_alsa_element, p->elements, e);
+ element_free(e);
+ }
+ }
+}
+
+static void path_make_options_unique(pa_alsa_path *p) {
+ pa_alsa_element *e;
+ pa_alsa_option *o, *u;
+
+ PA_LLIST_FOREACH(e, p->elements) {
+ PA_LLIST_FOREACH(o, e->options) {
+ unsigned i;
+ char *m;
+
+ for (u = o->next; u; u = u->next)
+ if (pa_streq(u->name, o->name))
+ break;
+
+ if (!u)
+ continue;
+
+ m = pa_xstrdup(o->name);
+
+ /* OK, this name is not unique, hence let's rename */
+ for (i = 1, u = o; u; u = u->next) {
+ char *nn, *nd;
+
+ if (!pa_streq(u->name, m))
+ continue;
+
+ nn = pa_sprintf_malloc("%s-%u", m, i);
+ pa_xfree(u->name);
+ u->name = nn;
+
+ nd = pa_sprintf_malloc("%s %u", u->description, i);
+ pa_xfree(u->description);
+ u->description = nd;
+
+ i++;
+ }
+
+ pa_xfree(m);
+ }
+ }
+}
+
+static pa_bool_t element_create_settings(pa_alsa_element *e, pa_alsa_setting *template) {
+ pa_alsa_option *o;
+
+ for (; e; e = e->next)
+ if (e->switch_use == PA_ALSA_SWITCH_SELECT ||
+ e->enumeration_use == PA_ALSA_ENUMERATION_SELECT)
+ break;
+
+ if (!e)
+ return FALSE;
+
+ for (o = e->options; o; o = o->next) {
+ pa_alsa_setting *s;
+
+ if (template) {
+ s = pa_xnewdup(pa_alsa_setting, template, 1);
+ s->options = pa_idxset_copy(template->options);
+ s->name = pa_sprintf_malloc(_("%s+%s"), template->name, o->name);
+ s->description =
+ (template->description[0] && o->description[0])
+ ? pa_sprintf_malloc(_("%s / %s"), template->description, o->description)
+ : (template->description[0]
+ ? pa_xstrdup(template->description)
+ : pa_xstrdup(o->description));
+
+ s->priority = PA_MAX(template->priority, o->priority);
+ } else {
+ s = pa_xnew0(pa_alsa_setting, 1);
+ s->options = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
+ s->name = pa_xstrdup(o->name);
+ s->description = pa_xstrdup(o->description);
+ s->priority = o->priority;
+ }
+
+ pa_idxset_put(s->options, o, NULL);
+
+ if (element_create_settings(e->next, s))
+ /* This is not a leaf, so let's get rid of it */
+ setting_free(s);
+ else {
+ /* This is a leaf, so let's add it */
+ PA_LLIST_INSERT_AFTER(pa_alsa_setting, e->path->settings, e->path->last_setting, s);
+
+ e->path->last_setting = s;
+ }
+ }
+
+ return TRUE;
+}
+
+static void path_create_settings(pa_alsa_path *p) {
+ pa_assert(p);
+
+ element_create_settings(p->elements, NULL);
+}
+
+int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t ignore_dB) {
+ pa_alsa_element *e;
+ double min_dB[PA_CHANNEL_POSITION_MAX], max_dB[PA_CHANNEL_POSITION_MAX];
+ pa_channel_position_t t;
+
+ pa_assert(p);
+ pa_assert(m);
+
+ if (p->probed)
+ return 0;
+
+ pa_zero(min_dB);
+ pa_zero(max_dB);
+
+ pa_log_debug("Probing path '%s'", p->name);
+
+ PA_LLIST_FOREACH(e, p->elements) {
+ if (element_probe(e, m) < 0) {
+ p->supported = FALSE;
+ pa_log_debug("Probe of element '%s' failed.", e->alsa_name);
+ return -1;
+ }
+
+ if (ignore_dB)
+ e->has_dB = FALSE;
+
+ if (e->volume_use == PA_ALSA_VOLUME_MERGE) {
+
+ if (!p->has_volume) {
+ p->min_volume = e->min_volume;
+ p->max_volume = e->max_volume;
+ }
+
+ if (e->has_dB) {
+ if (!p->has_volume) {
+ for (t = 0; t < PA_CHANNEL_POSITION_MAX; t++)
+ if (PA_CHANNEL_POSITION_MASK(t) & e->merged_mask) {
+ min_dB[t] = e->min_dB;
+ max_dB[t] = e->max_dB;
+ }
+
+ p->has_dB = TRUE;
+ } else {
+
+ if (p->has_dB) {
+ for (t = 0; t < PA_CHANNEL_POSITION_MAX; t++)
+ if (PA_CHANNEL_POSITION_MASK(t) & e->merged_mask) {
+ min_dB[t] += e->min_dB;
+ max_dB[t] += e->max_dB;
+ }
+ } else
+ /* Hmm, there's another element before us
+ * which cannot do dB volumes, so we we need
+ * to 'neutralize' this slider */
+ e->volume_use = PA_ALSA_VOLUME_ZERO;
+ }
+ } else if (p->has_volume)
+ /* We can't use this volume, so let's ignore it */
+ e->volume_use = PA_ALSA_VOLUME_IGNORE;
+
+ p->has_volume = TRUE;
+ }
+
+ if (e->switch_use == PA_ALSA_SWITCH_MUTE)
+ p->has_mute = TRUE;
+ }
+
+ path_drop_unsupported(p);
+ path_make_options_unique(p);
+ path_create_settings(p);
+
+ p->supported = TRUE;
+ p->probed = TRUE;
+
+ p->min_dB = INFINITY;
+ p->max_dB = -INFINITY;
+
+ for (t = 0; t < PA_CHANNEL_POSITION_MAX; t++) {
+ if (p->min_dB > min_dB[t])
+ p->min_dB = min_dB[t];
+
+ if (p->max_dB < max_dB[t])
+ p->max_dB = max_dB[t];
+ }
+
+ return 0;
+}
+
+void pa_alsa_setting_dump(pa_alsa_setting *s) {
+ pa_assert(s);
+
+ pa_log_debug("Setting %s (%s) priority=%u",
+ s->name,
+ pa_strnull(s->description),
+ s->priority);
+}
+
+void pa_alsa_option_dump(pa_alsa_option *o) {
+ pa_assert(o);
+
+ pa_log_debug("Option %s (%s/%s) index=%i, priority=%u",
+ o->alsa_name,
+ pa_strnull(o->name),
+ pa_strnull(o->description),
+ o->alsa_idx,
+ o->priority);
+}
+
+void pa_alsa_element_dump(pa_alsa_element *e) {
+ pa_alsa_option *o;
+ pa_assert(e);
+
+ pa_log_debug("Element %s, direction=%i, switch=%i, volume=%i, enumeration=%i, required=%i, required_absent=%i, mask=0x%llx, n_channels=%u, override_map=%s",
+ e->alsa_name,
+ e->direction,
+ e->switch_use,
+ e->volume_use,
+ e->enumeration_use,
+ e->required,
+ e->required_absent,
+ (long long unsigned) e->merged_mask,
+ e->n_channels,
+ pa_yes_no(e->override_map));
+
+ PA_LLIST_FOREACH(o, e->options)
+ pa_alsa_option_dump(o);
+}
+
+void pa_alsa_path_dump(pa_alsa_path *p) {
+ pa_alsa_element *e;
+ pa_alsa_setting *s;
+ pa_assert(p);
+
+ pa_log_debug("Path %s (%s), direction=%i, priority=%u, probed=%s, supported=%s, has_mute=%s, has_volume=%s, "
+ "has_dB=%s, min_volume=%li, max_volume=%li, min_dB=%g, max_dB=%g",
+ p->name,
+ pa_strnull(p->description),
+ p->direction,
+ p->priority,
+ pa_yes_no(p->probed),
+ pa_yes_no(p->supported),
+ pa_yes_no(p->has_mute),
+ pa_yes_no(p->has_volume),
+ pa_yes_no(p->has_dB),
+ p->min_volume, p->max_volume,
+ p->min_dB, p->max_dB);
+
+ PA_LLIST_FOREACH(e, p->elements)
+ pa_alsa_element_dump(e);
+
+ PA_LLIST_FOREACH(s, p->settings)
+ pa_alsa_setting_dump(s);
+}
+
+static void element_set_callback(pa_alsa_element *e, snd_mixer_t *m, snd_mixer_elem_callback_t cb, void *userdata) {
+ snd_mixer_selem_id_t *sid;
+ snd_mixer_elem_t *me;
+
+ pa_assert(e);
+ pa_assert(m);
+ pa_assert(cb);
+
+ SELEM_INIT(sid, e->alsa_name);
+ if (!(me = snd_mixer_find_selem(m, sid))) {
+ pa_log_warn("Element %s seems to have disappeared.", e->alsa_name);
+ return;
+ }
+
+ snd_mixer_elem_set_callback(me, cb);
+ snd_mixer_elem_set_callback_private(me, userdata);
+}
+
+void pa_alsa_path_set_callback(pa_alsa_path *p, snd_mixer_t *m, snd_mixer_elem_callback_t cb, void *userdata) {
+ pa_alsa_element *e;
+
+ pa_assert(p);
+ pa_assert(m);
+ pa_assert(cb);
+
+ PA_LLIST_FOREACH(e, p->elements)
+ element_set_callback(e, m, cb, userdata);
+}
+
+void pa_alsa_path_set_set_callback(pa_alsa_path_set *ps, snd_mixer_t *m, snd_mixer_elem_callback_t cb, void *userdata) {
+ pa_alsa_path *p;
+
+ pa_assert(ps);
+ pa_assert(m);
+ pa_assert(cb);
+
+ PA_LLIST_FOREACH(p, ps->paths)
+ pa_alsa_path_set_callback(p, m, cb, userdata);
+}
+
+pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t direction) {
+ pa_alsa_path_set *ps;
+ char **pn = NULL, **en = NULL, **ie;
+
+ pa_assert(m);
+ pa_assert(direction == PA_ALSA_DIRECTION_OUTPUT || direction == PA_ALSA_DIRECTION_INPUT);
+
+ if (m->direction != PA_ALSA_DIRECTION_ANY && m->direction != direction)
+ return NULL;
+
+ ps = pa_xnew0(pa_alsa_path_set, 1);
+ ps->direction = direction;
+
+ if (direction == PA_ALSA_DIRECTION_OUTPUT)
+ pn = m->output_path_names;
+ else if (direction == PA_ALSA_DIRECTION_INPUT)
+ pn = m->input_path_names;
+
+ if (pn) {
+ char **in;
+
+ for (in = pn; *in; in++) {
+ pa_alsa_path *p;
+ pa_bool_t duplicate = FALSE;
+ char **kn, *fn;
+
+ for (kn = pn; kn != in; kn++)
+ if (pa_streq(*kn, *in)) {
+ duplicate = TRUE;
+ break;
+ }
+
+ if (duplicate)
+ continue;
+
+ fn = pa_sprintf_malloc("%s.conf", *in);
+
+ if ((p = pa_alsa_path_new(fn, direction))) {
+ p->path_set = ps;
+ PA_LLIST_INSERT_AFTER(pa_alsa_path, ps->paths, ps->last_path, p);
+ ps->last_path = p;
+ }
+
+ pa_xfree(fn);
+ }
+
+ return ps;
+ }
+
+ if (direction == PA_ALSA_DIRECTION_OUTPUT)
+ en = m->output_element;
+ else if (direction == PA_ALSA_DIRECTION_INPUT)
+ en = m->input_element;
+
+ if (!en) {
+ pa_alsa_path_set_free(ps);
+ return NULL;
+ }
+
+ for (ie = en; *ie; ie++) {
+ char **je;
+ pa_alsa_path *p;
+
+ p = pa_alsa_path_synthesize(*ie, direction);
+ p->path_set = ps;
+
+ /* Mark all other passed elements for require-absent */
+ for (je = en; *je; je++) {
+ pa_alsa_element *e;
+ e = pa_xnew0(pa_alsa_element, 1);
+ e->path = p;
+ e->alsa_name = pa_xstrdup(*je);
+ e->direction = direction;
+ e->required_absent = PA_ALSA_REQUIRED_ANY;
+
+ PA_LLIST_INSERT_AFTER(pa_alsa_element, p->elements, p->last_element, e);
+ p->last_element = e;
+ }
+
+ PA_LLIST_INSERT_AFTER(pa_alsa_path, ps->paths, ps->last_path, p);
+ ps->last_path = p;
+ }
+
+ return ps;
+}
+
+void pa_alsa_path_set_dump(pa_alsa_path_set *ps) {
+ pa_alsa_path *p;
+ pa_assert(ps);
+
+ pa_log_debug("Path Set %p, direction=%i, probed=%s",
+ (void*) ps,
+ ps->direction,
+ pa_yes_no(ps->probed));
+
+ PA_LLIST_FOREACH(p, ps->paths)
+ pa_alsa_path_dump(p);
+}
+
+static void path_set_unify(pa_alsa_path_set *ps) {
+ pa_alsa_path *p;
+ pa_bool_t has_dB = TRUE, has_volume = TRUE, has_mute = TRUE;
+ pa_assert(ps);
+
+ /* We have issues dealing with paths that vary too wildly. That
+ * means for now we have to have all paths support volume/mute/dB
+ * or none. */
+
+ PA_LLIST_FOREACH(p, ps->paths) {
+ pa_assert(p->probed);
+
+ if (!p->has_volume)
+ has_volume = FALSE;
+ else if (!p->has_dB)
+ has_dB = FALSE;
+
+ if (!p->has_mute)
+ has_mute = FALSE;
+ }
+
+ if (!has_volume || !has_dB || !has_mute) {
+
+ if (!has_volume)
+ pa_log_debug("Some paths of the device lack hardware volume control, disabling hardware control altogether.");
+ else if (!has_dB)
+ pa_log_debug("Some paths of the device lack dB information, disabling dB logic altogether.");
+
+ if (!has_mute)
+ pa_log_debug("Some paths of the device lack hardware mute control, disabling hardware control altogether.");
+
+ PA_LLIST_FOREACH(p, ps->paths) {
+ if (!has_volume)
+ p->has_volume = FALSE;
+ else if (!has_dB)
+ p->has_dB = FALSE;
+
+ if (!has_mute)
+ p->has_mute = FALSE;
+ }
+ }
+}
+
+static void path_set_make_paths_unique(pa_alsa_path_set *ps) {
+ pa_alsa_path *p, *q;
+
+ PA_LLIST_FOREACH(p, ps->paths) {
+ unsigned i;
+ char *m;
+
+ for (q = p->next; q; q = q->next)
+ if (pa_streq(q->name, p->name))
+ break;
+
+ if (!q)
+ continue;
+
+ m = pa_xstrdup(p->name);
+
+ /* OK, this name is not unique, hence let's rename */
+ for (i = 1, q = p; q; q = q->next) {
+ char *nn, *nd;
+
+ if (!pa_streq(q->name, m))
+ continue;
+
+ nn = pa_sprintf_malloc("%s-%u", m, i);
+ pa_xfree(q->name);
+ q->name = nn;
+
+ nd = pa_sprintf_malloc("%s %u", q->description, i);
+ pa_xfree(q->description);
+ q->description = nd;
+
+ i++;
+ }
+
+ pa_xfree(m);
+ }
+}
+
+void pa_alsa_path_set_probe(pa_alsa_path_set *ps, snd_mixer_t *m, pa_bool_t ignore_dB) {
+ pa_alsa_path *p, *n;
+
+ pa_assert(ps);
+
+ if (ps->probed)
+ return;
+
+ for (p = ps->paths; p; p = n) {
+ n = p->next;
+
+ if (pa_alsa_path_probe(p, m, ignore_dB) < 0) {
+ PA_LLIST_REMOVE(pa_alsa_path, ps->paths, p);
+ pa_alsa_path_free(p);
+ }
+ }
+
+ path_set_unify(ps);
+ path_set_make_paths_unique(ps);
+ ps->probed = TRUE;
+}
+
+static void mapping_free(pa_alsa_mapping *m) {
+ pa_assert(m);
+
+ pa_xfree(m->name);
+ pa_xfree(m->description);
+
+ pa_xstrfreev(m->device_strings);
+ pa_xstrfreev(m->input_path_names);
+ pa_xstrfreev(m->output_path_names);
+ pa_xstrfreev(m->input_element);
+ pa_xstrfreev(m->output_element);
+
+ pa_assert(!m->input_pcm);
+ pa_assert(!m->output_pcm);
+
+ pa_xfree(m);
+}
+
+static void profile_free(pa_alsa_profile *p) {
+ pa_assert(p);
+
+ pa_xfree(p->name);
+ pa_xfree(p->description);
+
+ pa_xstrfreev(p->input_mapping_names);
+ pa_xstrfreev(p->output_mapping_names);
+
+ if (p->input_mappings)
+ pa_idxset_free(p->input_mappings, NULL, NULL);
+
+ if (p->output_mappings)
+ pa_idxset_free(p->output_mappings, NULL, NULL);
+
+ pa_xfree(p);
+}
+
+void pa_alsa_profile_set_free(pa_alsa_profile_set *ps) {
+ pa_assert(ps);
+
+ if (ps->profiles) {
+ pa_alsa_profile *p;
+
+ while ((p = pa_hashmap_steal_first(ps->profiles)))
+ profile_free(p);
+
+ pa_hashmap_free(ps->profiles, NULL, NULL);
+ }
+
+ if (ps->mappings) {
+ pa_alsa_mapping *m;
+
+ while ((m = pa_hashmap_steal_first(ps->mappings)))
+ mapping_free(m);
+
+ pa_hashmap_free(ps->mappings, NULL, NULL);
+ }
+
+ pa_xfree(ps);
+}
+
+static pa_alsa_mapping *mapping_get(pa_alsa_profile_set *ps, const char *name) {
+ pa_alsa_mapping *m;
+
+ if (!pa_startswith(name, "Mapping "))
+ return NULL;
+
+ name += 8;
+
+ if ((m = pa_hashmap_get(ps->mappings, name)))
+ return m;
+
+ m = pa_xnew0(pa_alsa_mapping, 1);
+ m->profile_set = ps;
+ m->name = pa_xstrdup(name);
+ pa_channel_map_init(&m->channel_map);
+
+ pa_hashmap_put(ps->mappings, m->name, m);
+
+ return m;
+}
+
+static pa_alsa_profile *profile_get(pa_alsa_profile_set *ps, const char *name) {
+ pa_alsa_profile *p;
+
+ if (!pa_startswith(name, "Profile "))
+ return NULL;
+
+ name += 8;
+
+ if ((p = pa_hashmap_get(ps->profiles, name)))
+ return p;
+
+ p = pa_xnew0(pa_alsa_profile, 1);
+ p->profile_set = ps;
+ p->name = pa_xstrdup(name);
+
+ pa_hashmap_put(ps->profiles, p->name, p);
+
+ return p;
+}
+
+static int mapping_parse_device_strings(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_mapping *m;
+
+ pa_assert(ps);
+
+ if (!(m = mapping_get(ps, section))) {
+ pa_log("[%s:%u] %s invalid in section %s", filename, line, lvalue, section);
+ return -1;
+ }
+
+ pa_xstrfreev(m->device_strings);
+ if (!(m->device_strings = pa_split_spaces_strv(rvalue))) {
+ pa_log("[%s:%u] Device string list empty of '%s'", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mapping_parse_channel_map(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_mapping *m;
+
+ pa_assert(ps);
+
+ if (!(m = mapping_get(ps, section))) {
+ pa_log("[%s:%u] %s invalid in section %s", filename, line, lvalue, section);
+ return -1;
+ }
+
+ if (!(pa_channel_map_parse(&m->channel_map, rvalue))) {
+ pa_log("[%s:%u] Channel map invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mapping_parse_paths(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_mapping *m;
+
+ pa_assert(ps);
+
+ if (!(m = mapping_get(ps, section))) {
+ pa_log("[%s:%u] %s invalid in section %s", filename, line, lvalue, section);
+ return -1;
+ }
+
+ if (pa_streq(lvalue, "paths-input")) {
+ pa_xstrfreev(m->input_path_names);
+ m->input_path_names = pa_split_spaces_strv(rvalue);
+ } else {
+ pa_xstrfreev(m->output_path_names);
+ m->output_path_names = pa_split_spaces_strv(rvalue);
+ }
+
+ return 0;
+}
+
+static int mapping_parse_element(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_mapping *m;
+
+ pa_assert(ps);
+
+ if (!(m = mapping_get(ps, section))) {
+ pa_log("[%s:%u] %s invalid in section %s", filename, line, lvalue, section);
+ return -1;
+ }
+
+ if (pa_streq(lvalue, "element-input")) {
+ pa_xstrfreev(m->input_element);
+ m->input_element = pa_split_spaces_strv(rvalue);
+ } else {
+ pa_xstrfreev(m->output_element);
+ m->output_element = pa_split_spaces_strv(rvalue);
+ }
+
+ return 0;
+}
+
+static int mapping_parse_direction(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_mapping *m;
+
+ pa_assert(ps);
+
+ if (!(m = mapping_get(ps, section))) {
+ pa_log("[%s:%u] Section name %s invalid.", filename, line, section);
+ return -1;
+ }
+
+ if (pa_streq(rvalue, "input"))
+ m->direction = PA_ALSA_DIRECTION_INPUT;
+ else if (pa_streq(rvalue, "output"))
+ m->direction = PA_ALSA_DIRECTION_OUTPUT;
+ else if (pa_streq(rvalue, "any"))
+ m->direction = PA_ALSA_DIRECTION_ANY;
+ else {
+ pa_log("[%s:%u] Direction %s invalid.", filename, line, rvalue);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mapping_parse_description(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_profile *p;
+ pa_alsa_mapping *m;
+
+ pa_assert(ps);
+
+ if ((m = mapping_get(ps, section))) {
+ pa_xstrdup(m->description);
+ m->description = pa_xstrdup(rvalue);
+ } else if ((p = profile_get(ps, section))) {
+ pa_xfree(p->description);
+ p->description = pa_xstrdup(rvalue);
+ } else {
+ pa_log("[%s:%u] Section name %s invalid.", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mapping_parse_priority(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_profile *p;
+ pa_alsa_mapping *m;
+ uint32_t prio;
+
+ pa_assert(ps);
+
+ if (pa_atou(rvalue, &prio) < 0) {
+ pa_log("[%s:%u] Priority invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ if ((m = mapping_get(ps, section)))
+ m->priority = prio;
+ else if ((p = profile_get(ps, section)))
+ p->priority = prio;
+ else {
+ pa_log("[%s:%u] Section name %s invalid.", filename, line, section);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int profile_parse_mappings(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_profile *p;
+
+ pa_assert(ps);
+
+ if (!(p = profile_get(ps, section))) {
+ pa_log("[%s:%u] %s invalid in section %s", filename, line, lvalue, section);
+ return -1;
+ }
+
+ if (pa_streq(lvalue, "input-mappings")) {
+ pa_xstrfreev(p->input_mapping_names);
+ p->input_mapping_names = pa_split_spaces_strv(rvalue);
+ } else {
+ pa_xstrfreev(p->output_mapping_names);
+ p->output_mapping_names = pa_split_spaces_strv(rvalue);
+ }
+
+ return 0;
+}
+
+static int profile_parse_skip_probe(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ pa_alsa_profile_set *ps = userdata;
+ pa_alsa_profile *p;
+ int b;
+
+ pa_assert(ps);
+
+ if (!(p = profile_get(ps, section))) {
+ pa_log("[%s:%u] %s invalid in section %s", filename, line, lvalue, section);
+ return -1;
+ }
+
+ if ((b = pa_parse_boolean(rvalue)) < 0) {
+ pa_log("[%s:%u] Skip probe invalid of '%s'", filename, line, section);
+ return -1;
+ }
+
+ p->supported = b;
+
+ return 0;
+}
+
+static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) {
+
+ static const struct description_map well_known_descriptions[] = {
+ { "analog-mono", N_("Analog Mono") },
+ { "analog-stereo", N_("Analog Stereo") },
+ { "analog-surround-21", N_("Analog Surround 2.1") },
+ { "analog-surround-30", N_("Analog Surround 3.0") },
+ { "analog-surround-31", N_("Analog Surround 3.1") },
+ { "analog-surround-40", N_("Analog Surround 4.0") },
+ { "analog-surround-41", N_("Analog Surround 4.1") },
+ { "analog-surround-50", N_("Analog Surround 5.0") },
+ { "analog-surround-51", N_("Analog Surround 5.1") },
+ { "analog-surround-61", N_("Analog Surround 6.0") },
+ { "analog-surround-61", N_("Analog Surround 6.1") },
+ { "analog-surround-70", N_("Analog Surround 7.0") },
+ { "analog-surround-71", N_("Analog Surround 7.1") },
+ { "iec958-stereo", N_("Digital Stereo (IEC958)") },
+ { "iec958-surround-40", N_("Digital Surround 4.0 (IEC958)") },
+ { "iec958-ac3-surround-40", N_("Digital Surround 4.0 (IEC958/AC3)") },
+ { "iec958-ac3-surround-51", N_("Digital Surround 5.1 (IEC958/AC3)") },
+ { "hdmi-stereo", N_("Digital Stereo (HDMI)") }
+ };
+
+ pa_assert(m);
+
+ if (!pa_channel_map_valid(&m->channel_map)) {
+ pa_log("Mapping %s is missing channel map.", m->name);
+ return -1;
+ }
+
+ if (!m->device_strings) {
+ pa_log("Mapping %s is missing device strings.", m->name);
+ return -1;
+ }
+
+ if ((m->input_path_names && m->input_element) ||
+ (m->output_path_names && m->output_element)) {
+ pa_log("Mapping %s must have either mixer path or mixer elment, not both.", m->name);
+ return -1;
+ }
+
+ if (!m->description)
+ m->description = pa_xstrdup(lookup_description(m->name,
+ well_known_descriptions,
+ PA_ELEMENTSOF(well_known_descriptions)));
+
+ if (!m->description)
+ m->description = pa_xstrdup(m->name);
+
+ if (bonus) {
+ if (pa_channel_map_equal(&m->channel_map, bonus))
+ m->priority += 5000;
+ else if (m->channel_map.channels == bonus->channels)
+ m->priority += 4000;
+ }
+
+ return 0;
+}
+
+void pa_alsa_mapping_dump(pa_alsa_mapping *m) {
+ char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
+
+ pa_assert(m);
+
+ pa_log_debug("Mapping %s (%s), priority=%u, channel_map=%s, supported=%s, direction=%i",
+ m->name,
+ pa_strnull(m->description),
+ m->priority,
+ pa_channel_map_snprint(cm, sizeof(cm), &m->channel_map),
+ pa_yes_no(m->supported),
+ m->direction);
+}
+
+static void profile_set_add_auto_pair(
+ pa_alsa_profile_set *ps,
+ pa_alsa_mapping *m, /* output */
+ pa_alsa_mapping *n /* input */) {
+
+ char *name;
+ pa_alsa_profile *p;
+
+ pa_assert(ps);
+ pa_assert(m || n);
+
+ if (m && m->direction == PA_ALSA_DIRECTION_INPUT)
+ return;
+
+ if (n && n->direction == PA_ALSA_DIRECTION_OUTPUT)
+ return;
+
+ if (m && n)
+ name = pa_sprintf_malloc("output:%s+input:%s", m->name, n->name);
+ else if (m)
+ name = pa_sprintf_malloc("output:%s", m->name);
+ else
+ name = pa_sprintf_malloc("input:%s", n->name);
+
+ if ((p = pa_hashmap_get(ps->profiles, name))) {
+ pa_xfree(name);
+ return;
+ }
+
+ p = pa_xnew0(pa_alsa_profile, 1);
+ p->profile_set = ps;
+ p->name = name;
+
+ if (m) {
+ p->output_mappings = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
+ pa_idxset_put(p->output_mappings, m, NULL);
+ p->priority += m->priority * 100;
+ }
+
+ if (n) {
+ p->input_mappings = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
+ pa_idxset_put(p->input_mappings, n, NULL);
+ p->priority += n->priority;
+ }
+
+ pa_hashmap_put(ps->profiles, p->name, p);
+}
+
+static void profile_set_add_auto(pa_alsa_profile_set *ps) {
+ pa_alsa_mapping *m, *n;
+ void *m_state, *n_state;
+
+ pa_assert(ps);
+
+ PA_HASHMAP_FOREACH(m, ps->mappings, m_state) {
+ profile_set_add_auto_pair(ps, m, NULL);
+
+ PA_HASHMAP_FOREACH(n, ps->mappings, n_state)
+ profile_set_add_auto_pair(ps, m, n);
+ }
+
+ PA_HASHMAP_FOREACH(n, ps->mappings, n_state)
+ profile_set_add_auto_pair(ps, NULL, n);
+}
+
+static int profile_verify(pa_alsa_profile *p) {
+
+ static const struct description_map well_known_descriptions[] = {
+ { "output:analog-mono+input:analog-mono", N_("Analog Mono Duplex") },
+ { "output:analog-stereo+input:analog-stereo", N_("Analog Stereo Duplex") },
+ { "output:iec958-stereo", N_("Digital Stereo Duplex (IEC958)") },
+ { "off", N_("Off") }
+ };
+
+ pa_assert(p);
+
+ /* Replace the output mapping names by the actual mappings */
+ if (p->output_mapping_names) {
+ char **name;
+
+ pa_assert(!p->output_mappings);
+ p->output_mappings = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
+
+ for (name = p->output_mapping_names; *name; name++) {
+ pa_alsa_mapping *m;
+ char **in;
+ pa_bool_t duplicate = FALSE;
+
+ for (in = name + 1; *in; in++)
+ if (pa_streq(*name, *in)) {
+ duplicate = TRUE;
+ break;
+ }
+
+ if (duplicate)
+ continue;
+
+ if (!(m = pa_hashmap_get(p->profile_set->mappings, *name)) || m->direction == PA_ALSA_DIRECTION_INPUT) {
+ pa_log("Profile '%s' refers to unexistant mapping '%s'.", p->name, *name);
+ return -1;
+ }
+
+ pa_idxset_put(p->output_mappings, m, NULL);
+
+ if (p->supported)
+ m->supported++;
+ }
+
+ pa_xstrfreev(p->output_mapping_names);
+ p->output_mapping_names = NULL;
+ }
+
+ /* Replace the input mapping names by the actual mappings */
+ if (p->input_mapping_names) {
+ char **name;
+
+ pa_assert(!p->input_mappings);
+ p->input_mappings = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
+
+ for (name = p->input_mapping_names; *name; name++) {
+ pa_alsa_mapping *m;
+ char **in;
+ pa_bool_t duplicate = FALSE;
+
+ for (in = name + 1; *in; in++)
+ if (pa_streq(*name, *in)) {
+ duplicate = TRUE;
+ break;
+ }
+
+ if (duplicate)
+ continue;
+
+ if (!(m = pa_hashmap_get(p->profile_set->mappings, *name)) || m->direction == PA_ALSA_DIRECTION_OUTPUT) {
+ pa_log("Profile '%s' refers to unexistant mapping '%s'.", p->name, *name);
+ return -1;
+ }
+
+ pa_idxset_put(p->input_mappings, m, NULL);
+
+ if (p->supported)
+ m->supported++;
+ }
+
+ pa_xstrfreev(p->input_mapping_names);
+ p->input_mapping_names = NULL;
+ }
+
+ if (!p->input_mappings && !p->output_mappings) {
+ pa_log("Profile '%s' lacks mappings.", p->name);
+ return -1;
+ }
+
+ if (!p->description)
+ p->description = pa_xstrdup(lookup_description(p->name,
+ well_known_descriptions,
+ PA_ELEMENTSOF(well_known_descriptions)));
+
+ if (!p->description) {
+ pa_strbuf *sb;
+ uint32_t idx;
+ pa_alsa_mapping *m;
+
+ sb = pa_strbuf_new();
+
+ if (p->output_mappings)
+ PA_IDXSET_FOREACH(m, p->output_mappings, idx) {
+ if (!pa_strbuf_isempty(sb))
+ pa_strbuf_puts(sb, " + ");
+
+ pa_strbuf_printf(sb, "%s Output", m->description);
+ }
+
+ if (p->input_mappings)
+ PA_IDXSET_FOREACH(m, p->input_mappings, idx) {
+ if (!pa_strbuf_isempty(sb))
+ pa_strbuf_puts(sb, " + ");
+
+ pa_strbuf_printf(sb, "%s Input", m->description);
+ }
+
+ p->description = pa_strbuf_tostring_free(sb);
+ }
+
+ return 0;
+}
+
+void pa_alsa_profile_dump(pa_alsa_profile *p) {
+ uint32_t idx;
+ pa_alsa_mapping *m;
+ pa_assert(p);
+
+ pa_log_debug("Profile %s (%s), priority=%u, supported=%s n_input_mappings=%u, n_output_mappings=%u",
+ p->name,
+ pa_strnull(p->description),
+ p->priority,
+ pa_yes_no(p->supported),
+ p->input_mappings ? pa_idxset_size(p->input_mappings) : 0,
+ p->output_mappings ? pa_idxset_size(p->output_mappings) : 0);
+
+ if (p->input_mappings)
+ PA_IDXSET_FOREACH(m, p->input_mappings, idx)
+ pa_log_debug("Input %s", m->name);
+
+ if (p->output_mappings)
+ PA_IDXSET_FOREACH(m, p->output_mappings, idx)
+ pa_log_debug("Output %s", m->name);
+}
+
+pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel_map *bonus) {
+ pa_alsa_profile_set *ps;
+ pa_alsa_profile *p;
+ pa_alsa_mapping *m;
+ char *fn;
+ int r;
+ void *state;
+
+ static pa_config_item items[] = {
+ /* [General] */
+ { "auto-profiles", pa_config_parse_bool, NULL, "General" },
+
+ /* [Mapping ...] */
+ { "device-strings", mapping_parse_device_strings, NULL, NULL },
+ { "channel-map", mapping_parse_channel_map, NULL, NULL },
+ { "paths-input", mapping_parse_paths, NULL, NULL },
+ { "paths-output", mapping_parse_paths, NULL, NULL },
+ { "element-input", mapping_parse_element, NULL, NULL },
+ { "element-output", mapping_parse_element, NULL, NULL },
+ { "direction", mapping_parse_direction, NULL, NULL },
+
+ /* Shared by [Mapping ...] and [Profile ...] */
+ { "description", mapping_parse_description, NULL, NULL },
+ { "priority", mapping_parse_priority, NULL, NULL },
+
+ /* [Profile ...] */
+ { "input-mappings", profile_parse_mappings, NULL, NULL },
+ { "output-mappings", profile_parse_mappings, NULL, NULL },
+ { "skip-probe", profile_parse_skip_probe, NULL, NULL },
+ { NULL, NULL, NULL, NULL }
+ };
+
+ ps = pa_xnew0(pa_alsa_profile_set, 1);
+ ps->mappings = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+ ps->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+
+ items[0].data = &ps->auto_profiles;
+
+ if (!fname)
+ fname = "default.conf";
+
+ fn = pa_maybe_prefix_path(fname, PA_ALSA_PROFILE_SETS_DIR);
+ r = pa_config_parse(fn, NULL, items, ps);
+ pa_xfree(fn);
+
+ if (r < 0)
+ goto fail;
+
+ PA_HASHMAP_FOREACH(m, ps->mappings, state)
+ if (mapping_verify(m, bonus) < 0)
+ goto fail;
+
+ if (ps->auto_profiles)
+ profile_set_add_auto(ps);
+
+ PA_HASHMAP_FOREACH(p, ps->profiles, state)
+ if (profile_verify(p) < 0)
+ goto fail;
+
+ return ps;
+
+fail:
+ pa_alsa_profile_set_free(ps);
+ return NULL;
+}
+
+void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, const pa_sample_spec *ss) {
+ void *state;
+ pa_alsa_profile *p, *last = NULL;
+ pa_alsa_mapping *m;
+
+ pa_assert(ps);
+ pa_assert(dev_id);
+ pa_assert(ss);
+
+ if (ps->probed)
+ return;
+
+ PA_HASHMAP_FOREACH(p, ps->profiles, state) {
+ pa_sample_spec try_ss;
+ pa_channel_map try_map;
+ uint32_t idx;
+
+ /* Is this already marked that it is supported? (i.e. from the config file) */
+ if (p->supported)
+ continue;
+
+ pa_log_debug("Looking at profile %s", p->name);
+
+ /* Close PCMs from the last iteration we don't need anymore */
+ if (last && last->output_mappings)
+ PA_IDXSET_FOREACH(m, last->output_mappings, idx) {
+
+ if (!m->output_pcm)
+ break;
+
+ if (last->supported)
+ m->supported++;
+
+ if (!p->output_mappings || !pa_idxset_get_by_data(p->output_mappings, m, NULL)) {
+ snd_pcm_close(m->output_pcm);
+ m->output_pcm = NULL;
+ }
+ }
+
+ if (last && last->input_mappings)
+ PA_IDXSET_FOREACH(m, last->input_mappings, idx) {
+
+ if (!m->input_pcm)
+ break;
+
+ if (last->supported)
+ m->supported++;
+
+ if (!p->input_mappings || !pa_idxset_get_by_data(p->input_mappings, m, NULL)) {
+ snd_pcm_close(m->input_pcm);
+ m->input_pcm = NULL;
+ }
+ }
+
+ p->supported = TRUE;
+
+ /* Check if we can open all new ones */
+ if (p->output_mappings)
+ PA_IDXSET_FOREACH(m, p->output_mappings, idx) {
+
+ if (m->output_pcm)
+ continue;
+
+ pa_log_debug("Checking for playback on %s (%s)", m->description, m->name);
+ try_map = m->channel_map;
+ try_ss = *ss;
+ try_ss.channels = try_map.channels;
+
+ if (!(m ->output_pcm = pa_alsa_open_by_template(
+ m->device_strings,
+ dev_id,
+ NULL,
+ &try_ss, &try_map,
+ SND_PCM_STREAM_PLAYBACK,
+ NULL, NULL, 0, NULL, NULL,
+ TRUE))) {
+ p->supported = FALSE;
+ break;
+ }
+ }
+
+ if (p->input_mappings && p->supported)
+ PA_IDXSET_FOREACH(m, p->input_mappings, idx) {
+
+ if (m->input_pcm)
+ continue;
+
+ pa_log_debug("Checking for recording on %s (%s)", m->description, m->name);
+ try_map = m->channel_map;
+ try_ss = *ss;
+ try_ss.channels = try_map.channels;
+
+ if (!(m ->input_pcm = pa_alsa_open_by_template(
+ m->device_strings,
+ dev_id,
+ NULL,
+ &try_ss, &try_map,
+ SND_PCM_STREAM_CAPTURE,
+ NULL, NULL, 0, NULL, NULL,
+ TRUE))) {
+ p->supported = FALSE;
+ break;
+ }
+ }
+
+ last = p;
+
+ if (p->supported)
+ pa_log_debug("Profile %s supported.", p->name);
+ }
+
+ /* Clean up */
+ if (last) {
+ uint32_t idx;
+
+ if (last->output_mappings)
+ PA_IDXSET_FOREACH(m, last->output_mappings, idx)
+ if (m->output_pcm) {
+
+ if (last->supported)
+ m->supported++;
+
+ snd_pcm_close(m->output_pcm);
+ m->output_pcm = NULL;
+ }
+
+ if (last->input_mappings)
+ PA_IDXSET_FOREACH(m, last->input_mappings, idx)
+ if (m->input_pcm) {
+
+ if (last->supported)
+ m->supported++;
+
+ snd_pcm_close(m->input_pcm);
+ m->input_pcm = NULL;
+ }
+ }
+
+ PA_HASHMAP_FOREACH(p, ps->profiles, state)
+ if (!p->supported) {
+ pa_hashmap_remove(ps->profiles, p->name);
+ profile_free(p);
+ }
+
+ PA_HASHMAP_FOREACH(m, ps->mappings, state)
+ if (m->supported <= 0) {
+ pa_hashmap_remove(ps->mappings, m->name);
+ mapping_free(m);
+ }
+
+ ps->probed = TRUE;
+}
+
+void pa_alsa_profile_set_dump(pa_alsa_profile_set *ps) {
+ pa_alsa_profile *p;
+ pa_alsa_mapping *m;
+ void *state;
+
+ pa_assert(ps);
+
+ pa_log_debug("Profile set %p, auto_profiles=%s, probed=%s, n_mappings=%u, n_profiles=%u",
+ (void*)
+ ps,
+ pa_yes_no(ps->auto_profiles),
+ pa_yes_no(ps->probed),
+ pa_hashmap_size(ps->mappings),
+ pa_hashmap_size(ps->profiles));
+
+ PA_HASHMAP_FOREACH(m, ps->mappings, state)
+ pa_alsa_mapping_dump(m);
+
+ PA_HASHMAP_FOREACH(p, ps->profiles, state)
+ pa_alsa_profile_dump(p);
+}
+
+void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps) {
+ pa_alsa_path *path;
+
+ pa_assert(p);
+ pa_assert(!*p);
+ pa_assert(ps);
+
+ /* if there is no path, we don't want a port list */
+ if (!ps->paths)
+ return;
+
+ if (!ps->paths->next){
+ pa_alsa_setting *s;
+
+ /* If there is only one path, but no or only one setting, then
+ * we want a port list either */
+ if (!ps->paths->settings || !ps->paths->settings->next)
+ return;
+
+ /* Ok, there is only one path, however with multiple settings,
+ * so let's create a port for each setting */
+ *p = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+
+ PA_LLIST_FOREACH(s, ps->paths->settings) {
+ pa_device_port *port;
+ pa_alsa_port_data *data;
+
+ port = pa_device_port_new(s->name, s->description, sizeof(pa_alsa_port_data));
+ port->priority = s->priority;
+
+ data = PA_DEVICE_PORT_DATA(port);
+ data->path = ps->paths;
+ data->setting = s;
+
+ pa_hashmap_put(*p, port->name, port);
+ }
+
+ } else {
+
+ /* We have multiple paths, so let's create a port for each
+ * one, and each of each settings */
+ *p = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+
+ PA_LLIST_FOREACH(path, ps->paths) {
+
+ if (!path->settings || !path->settings->next) {
+ pa_device_port *port;
+ pa_alsa_port_data *data;
+
+ /* If there is no or just one setting we only need a
+ * single entry */
+
+ port = pa_device_port_new(path->name, path->description, sizeof(pa_alsa_port_data));
+ port->priority = path->priority * 100;
+
+
+ data = PA_DEVICE_PORT_DATA(port);
+ data->path = path;
+ data->setting = path->settings;
+
+ pa_hashmap_put(*p, port->name, port);
+ } else {
+ pa_alsa_setting *s;
+
+ PA_LLIST_FOREACH(s, path->settings) {
+ pa_device_port *port;
+ pa_alsa_port_data *data;
+ char *n, *d;
+
+ n = pa_sprintf_malloc("%s;%s", path->name, s->name);
+
+ if (s->description[0])
+ d = pa_sprintf_malloc(_("%s / %s"), path->description, s->description);
+ else
+ d = pa_xstrdup(path->description);
+
+ port = pa_device_port_new(n, d, sizeof(pa_alsa_port_data));
+ port->priority = path->priority * 100 + s->priority;
+
+ pa_xfree(n);
+ pa_xfree(d);
+
+ data = PA_DEVICE_PORT_DATA(port);
+ data->path = path;
+ data->setting = s;
+
+ pa_hashmap_put(*p, port->name, port);
+ }
+ }
+ }
+ }
+
+ pa_log_debug("Added %u ports", pa_hashmap_size(*p));
+}
diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h
new file mode 100644
index 00000000..76788183
--- /dev/null
+++ b/src/modules/alsa/alsa-mixer.h
@@ -0,0 +1,292 @@
+#ifndef fooalsamixerhfoo
+#define fooalsamixerhfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
+
+ 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
+ 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.
+***/
+
+#include <asoundlib.h>
+
+#include <pulse/sample.h>
+#include <pulse/volume.h>
+#include <pulse/mainloop-api.h>
+#include <pulse/channelmap.h>
+#include <pulse/proplist.h>
+#include <pulse/volume.h>
+
+#include <pulsecore/llist.h>
+#include <pulsecore/rtpoll.h>
+#include <pulsecore/core.h>
+#include <pulsecore/log.h>
+
+typedef struct pa_alsa_fdlist pa_alsa_fdlist;
+typedef struct pa_alsa_setting pa_alsa_setting;
+typedef struct pa_alsa_option pa_alsa_option;
+typedef struct pa_alsa_element pa_alsa_element;
+typedef struct pa_alsa_path pa_alsa_path;
+typedef struct pa_alsa_path_set pa_alsa_path_set;
+typedef struct pa_alsa_mapping pa_alsa_mapping;
+typedef struct pa_alsa_profile pa_alsa_profile;
+typedef struct pa_alsa_profile_set pa_alsa_profile_set;
+typedef struct pa_alsa_port_data pa_alsa_port_data;
+
+#include "alsa-util.h"
+
+typedef enum pa_alsa_switch_use {
+ PA_ALSA_SWITCH_IGNORE,
+ PA_ALSA_SWITCH_MUTE, /* make this switch follow mute status */
+ PA_ALSA_SWITCH_OFF, /* set this switch to 'off' unconditionally */
+ PA_ALSA_SWITCH_ON, /* set this switch to 'on' unconditionally */
+ PA_ALSA_SWITCH_SELECT /* allow the user to select switch status through a setting */
+} pa_alsa_switch_use_t;
+
+typedef enum pa_alsa_volume_use {
+ PA_ALSA_VOLUME_IGNORE,
+ PA_ALSA_VOLUME_MERGE, /* merge this volume slider into the global volume slider */
+ PA_ALSA_VOLUME_OFF, /* set this volume to minimal unconditionally */
+ PA_ALSA_VOLUME_ZERO /* set this volume to 0dB unconditionally */
+} pa_alsa_volume_use_t;
+
+typedef enum pa_alsa_enumeration_use {
+ PA_ALSA_ENUMERATION_IGNORE,
+ PA_ALSA_ENUMERATION_SELECT
+} pa_alsa_enumeration_use_t;
+
+typedef enum pa_alsa_required {
+ PA_ALSA_REQUIRED_IGNORE,
+ PA_ALSA_REQUIRED_SWITCH,
+ PA_ALSA_REQUIRED_VOLUME,
+ PA_ALSA_REQUIRED_ENUMERATION,
+ PA_ALSA_REQUIRED_ANY
+} pa_alsa_required_t;
+
+typedef enum pa_alsa_direction {
+ PA_ALSA_DIRECTION_ANY,
+ PA_ALSA_DIRECTION_OUTPUT,
+ PA_ALSA_DIRECTION_INPUT
+} pa_alsa_direction_t;
+
+/* A setting combines a couple of options into a single entity that
+ * may be selected. Only one setting can be active at the same
+ * time. */
+struct pa_alsa_setting {
+ pa_alsa_path *path;
+ PA_LLIST_FIELDS(pa_alsa_setting);
+
+ pa_idxset *options;
+
+ char *name;
+ char *description;
+ unsigned priority;
+};
+
+/* An option belongs to an element and refers to one enumeration item
+ * of the element is an enumeration item, or a switch status if the
+ * element is a switch item. */
+struct pa_alsa_option {
+ pa_alsa_element *element;
+ PA_LLIST_FIELDS(pa_alsa_option);
+
+ char *alsa_name;
+ int alsa_idx;
+
+ char *name;
+ char *description;
+ unsigned priority;
+};
+
+/* And element wraps one specific ALSA element. A series of elements *
+make up a path (see below). If the element is an enumeration or switch
+* element it may includes a list of options. */
+struct pa_alsa_element {
+ pa_alsa_path *path;
+ PA_LLIST_FIELDS(pa_alsa_element);
+
+ char *alsa_name;
+ pa_alsa_direction_t direction;
+
+ pa_alsa_switch_use_t switch_use;
+ pa_alsa_volume_use_t volume_use;
+ pa_alsa_enumeration_use_t enumeration_use;
+
+ pa_alsa_required_t required;
+ pa_alsa_required_t required_absent;
+
+ pa_bool_t override_map:1;
+ pa_bool_t direction_try_other:1;
+
+ pa_bool_t has_dB:1;
+ long min_volume, max_volume;
+ double min_dB, max_dB;
+
+ pa_channel_position_mask_t masks[SND_MIXER_SCHN_LAST][2];
+ unsigned n_channels;
+
+ pa_channel_position_mask_t merged_mask;
+
+ PA_LLIST_HEAD(pa_alsa_option, options);
+};
+
+/* A path wraps a series of elements into a single entity which can be
+ * used to control it as if it had a single volume slider, a single
+ * mute switch and a single list of selectable options. */
+struct pa_alsa_path {
+ pa_alsa_path_set *path_set;
+ PA_LLIST_FIELDS(pa_alsa_path);
+
+ pa_alsa_direction_t direction;
+
+ char *name;
+ char *description;
+ unsigned priority;
+
+ pa_bool_t probed:1;
+ pa_bool_t supported:1;
+ pa_bool_t has_mute:1;
+ pa_bool_t has_volume:1;
+ pa_bool_t has_dB:1;
+
+ long min_volume, max_volume;
+ double min_dB, max_dB;
+
+ /* This is used during parsing only, as a shortcut so that we
+ * don't have to iterate the list all the time */
+ pa_alsa_element *last_element;
+ pa_alsa_option *last_option;
+ pa_alsa_setting *last_setting;
+
+ PA_LLIST_HEAD(pa_alsa_element, elements);
+ PA_LLIST_HEAD(pa_alsa_setting, settings);
+};
+
+/* A path set is simply a set of paths that are applicable to a
+ * device */
+struct pa_alsa_path_set {
+ PA_LLIST_HEAD(pa_alsa_path, paths);
+ pa_alsa_direction_t direction;
+ pa_bool_t probed:1;
+
+ /* This is used during parsing only, as a shortcut so that we
+ * don't have to iterate the list all the time */
+ pa_alsa_path *last_path;
+};
+
+int pa_alsa_setting_select(pa_alsa_setting *s, snd_mixer_t *m);
+void pa_alsa_setting_dump(pa_alsa_setting *s);
+
+void pa_alsa_option_dump(pa_alsa_option *o);
+
+void pa_alsa_element_dump(pa_alsa_element *e);
+
+pa_alsa_path *pa_alsa_path_new(const char *fname, pa_alsa_direction_t direction);
+pa_alsa_path *pa_alsa_path_synthesize(const char *element, pa_alsa_direction_t direction);
+int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t ignore_dB);
+void pa_alsa_path_dump(pa_alsa_path *p);
+int pa_alsa_path_get_volume(pa_alsa_path *p, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v);
+int pa_alsa_path_get_mute(pa_alsa_path *path, snd_mixer_t *m, pa_bool_t *muted);
+int pa_alsa_path_set_volume(pa_alsa_path *path, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v);
+int pa_alsa_path_set_mute(pa_alsa_path *path, snd_mixer_t *m, pa_bool_t muted);
+int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m);
+void pa_alsa_path_set_callback(pa_alsa_path *p, snd_mixer_t *m, snd_mixer_elem_callback_t cb, void *userdata);
+void pa_alsa_path_free(pa_alsa_path *p);
+
+pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t direction);
+void pa_alsa_path_set_probe(pa_alsa_path_set *s, snd_mixer_t *m, pa_bool_t ignore_dB);
+void pa_alsa_path_set_dump(pa_alsa_path_set *s);
+void pa_alsa_path_set_set_callback(pa_alsa_path_set *ps, snd_mixer_t *m, snd_mixer_elem_callback_t cb, void *userdata);
+void pa_alsa_path_set_free(pa_alsa_path_set *s);
+
+struct pa_alsa_mapping {
+ pa_alsa_profile_set *profile_set;
+
+ char *name;
+ char *description;
+ unsigned priority;
+ pa_alsa_direction_t direction;
+
+ pa_channel_map channel_map;
+
+ char **device_strings;
+
+ char **input_path_names;
+ char **output_path_names;
+ char **input_element; /* list of fallbacks */
+ char **output_element;
+
+ unsigned supported;
+
+ /* Temporarily used during probing */
+ snd_pcm_t *input_pcm;
+ snd_pcm_t *output_pcm;
+
+ pa_sink *sink;
+ pa_source *source;
+};
+
+struct pa_alsa_profile {
+ pa_alsa_profile_set *profile_set;
+
+ char *name;
+ char *description;
+ unsigned priority;
+
+ pa_bool_t supported:1;
+
+ char **input_mapping_names;
+ char **output_mapping_names;
+
+ pa_idxset *input_mappings;
+ pa_idxset *output_mappings;
+};
+
+struct pa_alsa_profile_set {
+ pa_hashmap *mappings;
+ pa_hashmap *profiles;
+
+ pa_bool_t auto_profiles;
+ pa_bool_t probed:1;
+};
+
+void pa_alsa_mapping_dump(pa_alsa_mapping *m);
+void pa_alsa_profile_dump(pa_alsa_profile *p);
+
+pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel_map *bonus);
+void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, const pa_sample_spec *ss);
+void pa_alsa_profile_set_free(pa_alsa_profile_set *s);
+void pa_alsa_profile_set_dump(pa_alsa_profile_set *s);
+
+snd_mixer_t *pa_alsa_open_mixer_for_pcm(snd_pcm_t *pcm, char **ctl_device);
+
+pa_alsa_fdlist *pa_alsa_fdlist_new(void);
+void pa_alsa_fdlist_free(pa_alsa_fdlist *fdl);
+int pa_alsa_fdlist_set_mixer(pa_alsa_fdlist *fdl, snd_mixer_t *mixer_handle, pa_mainloop_api* m);
+
+/* Data structure for inclusion in pa_device_port for alsa
+ * sinks/sources. This contains nothing that needs to be freed
+ * individually */
+struct pa_alsa_port_data {
+ pa_alsa_path *path;
+ pa_alsa_setting *setting;
+};
+
+void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps);
+
+#endif
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 59f53110..c584362d 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -32,16 +32,18 @@
#include <valgrind/memcheck.h>
#endif
-#include <pulse/xmalloc.h>
-#include <pulse/util.h>
-#include <pulse/timeval.h>
#include <pulse/i18n.h>
+#include <pulse/rtclock.h>
+#include <pulse/timeval.h>
+#include <pulse/util.h>
+#include <pulse/xmalloc.h>
#include <pulsecore/core.h>
#include <pulsecore/module.h>
#include <pulsecore/memchunk.h>
#include <pulsecore/sink.h>
#include <pulsecore/modargs.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/sample-util.h>
#include <pulsecore/log.h>
@@ -50,7 +52,6 @@
#include <pulsecore/core-error.h>
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
-#include <pulsecore/rtclock.h>
#include <pulsecore/time-smoother.h>
#include <modules/reserve-wrap.h>
@@ -80,11 +81,9 @@ struct userdata {
pa_alsa_fdlist *mixer_fdl;
snd_mixer_t *mixer_handle;
- snd_mixer_elem_t *mixer_elem;
- long hw_volume_max, hw_volume_min;
- long hw_dB_max, hw_dB_min;
- pa_bool_t hw_dB_supported:1;
- pa_bool_t mixer_seperate_channels:1;
+ pa_alsa_path_set *mixer_path_set;
+ pa_alsa_path *mixer_path;
+
pa_cvolume hardware_volume;
size_t
@@ -100,7 +99,8 @@ struct userdata {
unsigned nfragments;
pa_memchunk memchunk;
- char *device_name;
+ char *device_name; /* name of the PCM device */
+ char *control_device; /* name of the control device */
pa_bool_t use_mmap:1, use_tsched:1;
@@ -116,6 +116,8 @@ struct userdata {
pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot;
+ pa_reserve_monitor_wrapper *monitor;
+ pa_hook_slot *monitor_slot;
};
static void userdata_free(struct userdata *u);
@@ -124,7 +126,7 @@ static pa_hook_result_t reserve_cb(pa_reserve_wrapper *r, void *forced, struct u
pa_assert(r);
pa_assert(u);
- if (pa_sink_suspend(u->sink, TRUE) < 0)
+ if (pa_sink_suspend(u->sink, TRUE, PA_SUSPEND_APPLICATION) < 0)
return PA_HOOK_CANCEL;
return PA_HOOK_OK;
@@ -185,6 +187,57 @@ static int reserve_init(struct userdata *u, const char *dname) {
return 0;
}
+static pa_hook_result_t monitor_cb(pa_reserve_monitor_wrapper *w, void* busy, struct userdata *u) {
+ pa_bool_t b;
+
+ pa_assert(w);
+ pa_assert(u);
+
+ b = PA_PTR_TO_UINT(busy) && !u->reserve;
+
+ pa_sink_suspend(u->sink, b, PA_SUSPEND_APPLICATION);
+ return PA_HOOK_OK;
+}
+
+static void monitor_done(struct userdata *u) {
+ pa_assert(u);
+
+ if (u->monitor_slot) {
+ pa_hook_slot_free(u->monitor_slot);
+ u->monitor_slot = NULL;
+ }
+
+ if (u->monitor) {
+ pa_reserve_monitor_wrapper_unref(u->monitor);
+ u->monitor = NULL;
+ }
+}
+
+static int reserve_monitor_init(struct userdata *u, const char *dname) {
+ char *rname;
+
+ pa_assert(u);
+ pa_assert(dname);
+
+ if (pa_in_system_mode())
+ return 0;
+
+ /* We are resuming, try to lock the device */
+ if (!(rname = pa_alsa_get_reserve_name(dname)))
+ return 0;
+
+ u->monitor = pa_reserve_monitor_wrapper_get(u->core, rname);
+ pa_xfree(rname);
+
+ if (!(u->monitor))
+ return -1;
+
+ pa_assert(!u->monitor_slot);
+ u->monitor_slot = pa_hook_connect(pa_reserve_monitor_wrapper_hook(u->monitor), PA_HOOK_NORMAL, (pa_hook_cb_t) monitor_cb, u);
+
+ return 0;
+}
+
static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
@@ -655,7 +708,7 @@ static void update_smoother(struct userdata *u) {
/* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */
if (now1 <= 0)
- now1 = pa_rtclock_usec();
+ now1 = pa_rtclock_now();
now2 = pa_bytes_to_usec((uint64_t) position, &u->sink->sample_spec);
@@ -669,7 +722,7 @@ static pa_usec_t sink_get_latency(struct userdata *u) {
pa_assert(u);
- now1 = pa_rtclock_usec();
+ now1 = pa_rtclock_now();
now2 = pa_smoother_get(u->smoother, now1);
delay = (int64_t) pa_bytes_to_usec(u->write_count, &u->sink->sample_spec) - (int64_t) now2;
@@ -700,7 +753,7 @@ static int suspend(struct userdata *u) {
pa_assert(u);
pa_assert(u->pcm_handle);
- pa_smoother_pause(u->smoother, pa_rtclock_usec());
+ pa_smoother_pause(u->smoother, pa_rtclock_now());
/* Let's suspend -- we don't call snd_pcm_drain() here since that might
* take awfully long with our long buffer sizes today. */
@@ -786,7 +839,6 @@ static int unsuspend(struct userdata *u) {
pa_log_info("Trying resume...");
- snd_config_update_free_global();
if ((err = snd_pcm_open(&u->pcm_handle, u->device_name, SND_PCM_STREAM_PLAYBACK,
/*SND_PCM_NONBLOCK|*/
SND_PCM_NO_AUTO_RESAMPLE|
@@ -938,191 +990,58 @@ static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) {
return 0;
}
-static pa_volume_t from_alsa_volume(struct userdata *u, long alsa_vol) {
-
- return (pa_volume_t) round(((double) (alsa_vol - u->hw_volume_min) * PA_VOLUME_NORM) /
- (double) (u->hw_volume_max - u->hw_volume_min));
-}
-
-static long to_alsa_volume(struct userdata *u, pa_volume_t vol) {
- long alsa_vol;
-
- alsa_vol = (long) round(((double) vol * (double) (u->hw_volume_max - u->hw_volume_min))
- / PA_VOLUME_NORM) + u->hw_volume_min;
-
- return PA_CLAMP_UNLIKELY(alsa_vol, u->hw_volume_min, u->hw_volume_max);
-}
-
static void sink_get_volume_cb(pa_sink *s) {
struct userdata *u = s->userdata;
- int err;
- unsigned i;
pa_cvolume r;
char t[PA_CVOLUME_SNPRINT_MAX];
pa_assert(u);
- pa_assert(u->mixer_elem);
-
- if (u->mixer_seperate_channels) {
-
- r.channels = s->sample_spec.channels;
-
- for (i = 0; i < s->sample_spec.channels; i++) {
- long alsa_vol;
-
- if (u->hw_dB_supported) {
-
- if ((err = snd_mixer_selem_get_playback_dB(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- r.values[i] = pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0);
- } else {
-
- if ((err = snd_mixer_selem_get_playback_volume(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
- r.values[i] = from_alsa_volume(u, alsa_vol);
- }
- }
-
- } else {
- long alsa_vol;
-
- if (u->hw_dB_supported) {
-
- if ((err = snd_mixer_selem_get_playback_dB(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- pa_cvolume_set(&r, s->sample_spec.channels, pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0));
-
- } else {
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- if ((err = snd_mixer_selem_get_playback_volume(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
+ if (pa_alsa_path_get_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
+ return;
- pa_cvolume_set(&r, s->sample_spec.channels, from_alsa_volume(u, alsa_vol));
- }
- }
+ /* Shift down by the base volume, so that 0dB becomes maximum volume */
+ pa_sw_cvolume_multiply_scalar(&r, &r, s->base_volume);
pa_log_debug("Read hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
- if (!pa_cvolume_equal(&u->hardware_volume, &r)) {
+ if (pa_cvolume_equal(&u->hardware_volume, &r))
+ return;
- s->virtual_volume = u->hardware_volume = r;
+ s->virtual_volume = u->hardware_volume = r;
- if (u->hw_dB_supported) {
- pa_cvolume reset;
+ if (u->mixer_path->has_dB) {
+ pa_cvolume reset;
- /* Hmm, so the hardware volume changed, let's reset our software volume */
- pa_cvolume_reset(&reset, s->sample_spec.channels);
- pa_sink_set_soft_volume(s, &reset);
- }
+ /* Hmm, so the hardware volume changed, let's reset our software volume */
+ pa_cvolume_reset(&reset, s->sample_spec.channels);
+ pa_sink_set_soft_volume(s, &reset);
}
-
- return;
-
-fail:
- pa_log_error("Unable to read volume: %s", pa_alsa_strerror(err));
}
static void sink_set_volume_cb(pa_sink *s) {
struct userdata *u = s->userdata;
- int err;
- unsigned i;
pa_cvolume r;
+ char t[PA_CVOLUME_SNPRINT_MAX];
pa_assert(u);
- pa_assert(u->mixer_elem);
-
- if (u->mixer_seperate_channels) {
-
- r.channels = s->sample_spec.channels;
-
- for (i = 0; i < s->sample_spec.channels; i++) {
- long alsa_vol;
- pa_volume_t vol;
-
- vol = s->virtual_volume.values[i];
-
- if (u->hw_dB_supported) {
-
- alsa_vol = (long) (pa_sw_volume_to_dB(vol) * 100);
- alsa_vol += u->hw_dB_max;
- alsa_vol = PA_CLAMP_UNLIKELY(alsa_vol, u->hw_dB_min, u->hw_dB_max);
-
- if ((err = snd_mixer_selem_set_playback_dB(u->mixer_elem, u->mixer_map[i], alsa_vol, 1)) < 0)
- goto fail;
-
- if ((err = snd_mixer_selem_get_playback_dB(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- r.values[i] = pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0);
-
- } else {
- alsa_vol = to_alsa_volume(u, vol);
-
- if ((err = snd_mixer_selem_set_playback_volume(u->mixer_elem, u->mixer_map[i], alsa_vol)) < 0)
- goto fail;
-
- if ((err = snd_mixer_selem_get_playback_volume(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
- r.values[i] = from_alsa_volume(u, alsa_vol);
- }
- }
-
- } else {
- pa_volume_t vol;
- long alsa_vol;
-
- vol = pa_cvolume_max(&s->virtual_volume);
-
- if (u->hw_dB_supported) {
- alsa_vol = (long) (pa_sw_volume_to_dB(vol) * 100);
- alsa_vol += u->hw_dB_max;
- alsa_vol = PA_CLAMP_UNLIKELY(alsa_vol, u->hw_dB_min, u->hw_dB_max);
-
- if ((err = snd_mixer_selem_set_playback_dB_all(u->mixer_elem, alsa_vol, 1)) < 0)
- goto fail;
-
- if ((err = snd_mixer_selem_get_playback_dB(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- pa_cvolume_set(&r, s->sample_spec.channels, pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0));
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- } else {
- alsa_vol = to_alsa_volume(u, vol);
+ /* Shift up by the base volume */
+ pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume);
- if ((err = snd_mixer_selem_set_playback_volume_all(u->mixer_elem, alsa_vol)) < 0)
- goto fail;
+ if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
+ return;
- if ((err = snd_mixer_selem_get_playback_volume(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
-
- pa_cvolume_set(&r, s->sample_spec.channels, from_alsa_volume(u, alsa_vol));
- }
- }
+ /* Shift down by the base volume, so that 0dB becomes maximum volume */
+ pa_sw_cvolume_multiply_scalar(&r, &r, s->base_volume);
u->hardware_volume = r;
- if (u->hw_dB_supported) {
- char t[PA_CVOLUME_SNPRINT_MAX];
+ if (u->mixer_path->has_dB) {
/* Match exactly what the user requested by software */
pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume);
@@ -1131,45 +1050,75 @@ static void sink_set_volume_cb(pa_sink *s) {
pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &u->hardware_volume));
pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume));
- } else
+ } else {
+ pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
/* We can't match exactly what the user requested, hence let's
* at least tell the user about it */
s->virtual_volume = r;
-
- return;
-
-fail:
- pa_log_error("Unable to set volume: %s", pa_alsa_strerror(err));
+ }
}
static void sink_get_mute_cb(pa_sink *s) {
struct userdata *u = s->userdata;
- int err, sw;
+ pa_bool_t b;
pa_assert(u);
- pa_assert(u->mixer_elem);
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- if ((err = snd_mixer_selem_get_playback_switch(u->mixer_elem, 0, &sw)) < 0) {
- pa_log_error("Unable to get switch: %s", pa_alsa_strerror(err));
+ if (pa_alsa_path_get_mute(u->mixer_path, u->mixer_handle, &b) < 0)
return;
- }
- s->muted = !sw;
+ s->muted = b;
}
static void sink_set_mute_cb(pa_sink *s) {
struct userdata *u = s->userdata;
- int err;
pa_assert(u);
- pa_assert(u->mixer_elem);
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- if ((err = snd_mixer_selem_set_playback_switch_all(u->mixer_elem, !s->muted)) < 0) {
- pa_log_error("Unable to set switch: %s", pa_alsa_strerror(err));
- return;
+ pa_alsa_path_set_mute(u->mixer_path, u->mixer_handle, s->muted);
+}
+
+static int sink_set_port_cb(pa_sink *s, pa_device_port *p) {
+ struct userdata *u = s->userdata;
+ pa_alsa_port_data *data;
+
+ pa_assert(u);
+ pa_assert(p);
+ pa_assert(u->mixer_handle);
+
+ data = PA_DEVICE_PORT_DATA(p);
+
+ pa_assert_se(u->mixer_path = data->path);
+ pa_alsa_path_select(u->mixer_path, u->mixer_handle);
+
+ if (u->mixer_path->has_volume && u->mixer_path->has_dB) {
+ s->base_volume = pa_sw_volume_from_dB(-u->mixer_path->max_dB);
+ s->n_volume_steps = PA_VOLUME_NORM+1;
+
+ if (u->mixer_path->max_dB > 0.0)
+ pa_log_info("Fixing base volume to %0.2f dB", pa_sw_volume_to_dB(s->base_volume));
+ else
+ pa_log_info("No particular base volume set, fixing to 0 dB");
+ } else {
+ s->base_volume = PA_VOLUME_NORM;
+ s->n_volume_steps = u->mixer_path->max_volume - u->mixer_path->min_volume + 1;
}
+
+ if (data->setting)
+ pa_alsa_setting_select(data->setting, u->mixer_handle);
+
+ if (s->set_mute)
+ s->set_mute(s);
+ if (s->set_volume)
+ s->set_volume(s);
+
+ return 0;
}
static void sink_update_requested_latency_cb(pa_sink *s) {
@@ -1264,7 +1213,6 @@ static void thread_func(void *userdata) {
pa_make_realtime(u->core->realtime_priority);
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
int ret;
@@ -1298,7 +1246,7 @@ static void thread_func(void *userdata) {
pa_log_info("Starting playback.");
snd_pcm_start(u->pcm_handle);
- pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
+ pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE);
}
update_smoother(u);
@@ -1327,7 +1275,7 @@ static void thread_func(void *userdata) {
/* Convert from the sound card time domain to the
* system time domain */
- cusec = pa_smoother_translate(u->smoother, pa_rtclock_usec(), sleep_usec);
+ cusec = pa_smoother_translate(u->smoother, pa_rtclock_now(), sleep_usec);
/* pa_log_debug("Waking up in %0.2fms (system clock).", (double) cusec / PA_USEC_PER_MSEC); */
@@ -1386,7 +1334,7 @@ finish:
pa_log_debug("Thread shutting down");
}
-static void set_sink_name(pa_sink_new_data *data, pa_modargs *ma, const char *device_id, const char *device_name) {
+static void set_sink_name(pa_sink_new_data *data, pa_modargs *ma, const char *device_id, const char *device_name, pa_alsa_mapping *mapping) {
const char *n;
char *t;
@@ -1407,82 +1355,136 @@ static void set_sink_name(pa_sink_new_data *data, pa_modargs *ma, const char *de
data->namereg_fail = FALSE;
}
- t = pa_sprintf_malloc("alsa_output.%s", n);
+ if (mapping)
+ t = pa_sprintf_malloc("alsa_output.%s.%s", n, mapping->name);
+ else
+ t = pa_sprintf_malloc("alsa_output.%s", n);
+
pa_sink_new_data_set_name(data, t);
pa_xfree(t);
}
+static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char *element, pa_bool_t ignore_dB) {
+
+ if (!mapping && !element)
+ return;
+
+ if (!(u->mixer_handle = pa_alsa_open_mixer_for_pcm(u->pcm_handle, &u->control_device))) {
+ pa_log_info("Failed to find a working mixer device.");
+ return;
+ }
+
+ if (element) {
+
+ if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_OUTPUT)))
+ goto fail;
+
+ if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0)
+ goto fail;
+
+ pa_log_debug("Probed mixer path %s:", u->mixer_path->name);
+ pa_alsa_path_dump(u->mixer_path);
+ } else {
+
+ if (!(u->mixer_path_set = pa_alsa_path_set_new(mapping, PA_ALSA_DIRECTION_OUTPUT)))
+ goto fail;
+
+ pa_alsa_path_set_probe(u->mixer_path_set, u->mixer_handle, ignore_dB);
+
+ pa_log_debug("Probed mixer paths:");
+ pa_alsa_path_set_dump(u->mixer_path_set);
+ }
+
+ return;
+
+fail:
+
+ if (u->mixer_path_set) {
+ pa_alsa_path_set_free(u->mixer_path_set);
+ u->mixer_path_set = NULL;
+ } else if (u->mixer_path) {
+ pa_alsa_path_free(u->mixer_path);
+ u->mixer_path = NULL;
+ }
+
+ if (u->mixer_handle) {
+ snd_mixer_close(u->mixer_handle);
+ u->mixer_handle = NULL;
+ }
+}
+
static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) {
pa_assert(u);
if (!u->mixer_handle)
return 0;
- pa_assert(u->mixer_elem);
+ if (u->sink->active_port) {
+ pa_alsa_port_data *data;
- if (snd_mixer_selem_has_playback_volume(u->mixer_elem)) {
- pa_bool_t suitable = FALSE;
+ /* We have a list of supported paths, so let's activate the
+ * one that has been chosen as active */
- if (snd_mixer_selem_get_playback_volume_range(u->mixer_elem, &u->hw_volume_min, &u->hw_volume_max) < 0)
- pa_log_info("Failed to get volume range. Falling back to software volume control.");
- else if (u->hw_volume_min >= u->hw_volume_max)
- pa_log_warn("Your kernel driver is broken: it reports a volume range from %li to %li which makes no sense.", u->hw_volume_min, u->hw_volume_max);
- else {
- pa_log_info("Volume ranges from %li to %li.", u->hw_volume_min, u->hw_volume_max);
- suitable = TRUE;
- }
+ data = PA_DEVICE_PORT_DATA(u->sink->active_port);
+ u->mixer_path = data->path;
- if (suitable) {
- if (ignore_dB || snd_mixer_selem_get_playback_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
- pa_log_info("Mixer doesn't support dB information or data is ignored.");
- else {
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_min, sizeof(u->hw_dB_min));
- VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_max, sizeof(u->hw_dB_max));
-#endif
+ pa_alsa_path_select(data->path, u->mixer_handle);
- if (u->hw_dB_min >= u->hw_dB_max)
- pa_log_warn("Your kernel driver is broken: it reports a volume range from %0.2f dB to %0.2f dB which makes no sense.", (double) u->hw_dB_min/100.0, (double) u->hw_dB_max/100.0);
- else {
- pa_log_info("Volume ranges from %0.2f dB to %0.2f dB.", (double) u->hw_dB_min/100.0, (double) u->hw_dB_max/100.0);
- u->hw_dB_supported = TRUE;
-
- if (u->hw_dB_max > 0) {
- u->sink->base_volume = pa_sw_volume_from_dB(- (double) u->hw_dB_max/100.0);
- pa_log_info("Fixing base volume to %0.2f dB", pa_sw_volume_to_dB(u->sink->base_volume));
- } else
- pa_log_info("No particular base volume set, fixing to 0 dB");
- }
- }
+ if (data->setting)
+ pa_alsa_setting_select(data->setting, u->mixer_handle);
- if (!u->hw_dB_supported &&
- u->hw_volume_max - u->hw_volume_min < 3) {
+ } else {
- pa_log_info("Device doesn't do dB volume and has less than 4 volume levels. Falling back to software volume control.");
- suitable = FALSE;
- }
- }
+ if (!u->mixer_path && u->mixer_path_set)
+ u->mixer_path = u->mixer_path_set->paths;
- if (suitable) {
- u->mixer_seperate_channels = pa_alsa_calc_mixer_map(u->mixer_elem, &u->sink->channel_map, u->mixer_map, TRUE) >= 0;
+ if (u->mixer_path) {
+ /* Hmm, we have only a single path, then let's activate it */
- u->sink->get_volume = sink_get_volume_cb;
- u->sink->set_volume = sink_set_volume_cb;
- u->sink->flags |= PA_SINK_HW_VOLUME_CTRL | (u->hw_dB_supported ? PA_SINK_DECIBEL_VOLUME : 0);
- pa_log_info("Using hardware volume control. Hardware dB scale %s.", u->hw_dB_supported ? "supported" : "not supported");
+ pa_alsa_path_select(u->mixer_path, u->mixer_handle);
- if (!u->hw_dB_supported)
- u->sink->n_volume_steps = u->hw_volume_max - u->hw_volume_min + 1;
+ if (u->mixer_path->settings)
+ pa_alsa_setting_select(u->mixer_path->settings, u->mixer_handle);
} else
- pa_log_info("Using software volume control.");
+ return 0;
+ }
+
+ if (!u->mixer_path->has_volume)
+ pa_log_info("Driver does not support hardware volume control, falling back to software volume control.");
+ else {
+
+ if (u->mixer_path->has_dB) {
+ pa_log_info("Hardware volume ranges from %0.2f dB to %0.2f dB.", u->mixer_path->min_dB, u->mixer_path->max_dB);
+
+ u->sink->base_volume = pa_sw_volume_from_dB(-u->mixer_path->max_dB);
+ u->sink->n_volume_steps = PA_VOLUME_NORM+1;
+
+ if (u->mixer_path->max_dB > 0.0)
+ pa_log_info("Fixing base volume to %0.2f dB", pa_sw_volume_to_dB(u->sink->base_volume));
+ else
+ pa_log_info("No particular base volume set, fixing to 0 dB");
+
+ } else {
+ pa_log_info("Hardware volume ranges from %li to %li.", u->mixer_path->min_volume, u->mixer_path->max_volume);
+ u->sink->base_volume = PA_VOLUME_NORM;
+ u->sink->n_volume_steps = u->mixer_path->max_volume - u->mixer_path->min_volume + 1;
+ }
+
+ u->sink->get_volume = sink_get_volume_cb;
+ u->sink->set_volume = sink_set_volume_cb;
+
+ u->sink->flags |= PA_SINK_HW_VOLUME_CTRL | (u->mixer_path->has_dB ? PA_SINK_DECIBEL_VOLUME : 0);
+ pa_log_info("Using hardware volume control. Hardware dB scale %s.", u->mixer_path->has_dB ? "supported" : "not supported");
}
- if (snd_mixer_selem_has_playback_switch(u->mixer_elem)) {
+ if (!u->mixer_path->has_mute) {
+ pa_log_info("Driver does not support hardware mute control, falling back to software mute control.");
+ } else {
u->sink->get_mute = sink_get_mute_cb;
u->sink->set_mute = sink_set_mute_cb;
u->sink->flags |= PA_SINK_HW_MUTE_CTRL;
- } else
- pa_log_info("Using software mute control.");
+ pa_log_info("Using hardware mute control.");
+ }
u->mixer_fdl = pa_alsa_fdlist_new();
@@ -1491,13 +1493,15 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) {
return -1;
}
- snd_mixer_elem_set_callback(u->mixer_elem, mixer_callback);
- snd_mixer_elem_set_callback_private(u->mixer_elem, u);
+ if (u->mixer_path_set)
+ pa_alsa_path_set_set_callback(u->mixer_path_set, u->mixer_handle, mixer_callback, u);
+ else
+ pa_alsa_path_set_callback(u->mixer_path, u->mixer_handle, mixer_callback, u);
return 0;
}
-pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, const pa_alsa_profile_info *profile) {
+pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, pa_alsa_mapping *mapping) {
struct userdata *u = NULL;
const char *dev_id = NULL;
@@ -1508,7 +1512,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
size_t frame_size;
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
pa_sink_new_data data;
- char *control_device = NULL;
+ pa_alsa_profile_set *profile_set = NULL;
pa_assert(m);
pa_assert(ma);
@@ -1577,43 +1581,51 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
TRUE,
TRUE,
5,
- pa_rtclock_usec(),
+ pa_rtclock_now(),
TRUE);
- if (reserve_init(u, pa_modargs_get_value(
- ma, "device_id",
- pa_modargs_get_value(ma, "device", DEFAULT_DEVICE))) < 0)
+ dev_id = pa_modargs_get_value(
+ ma, "device_id",
+ pa_modargs_get_value(ma, "device", DEFAULT_DEVICE));
+
+ if (reserve_init(u, dev_id) < 0)
+ goto fail;
+
+ if (reserve_monitor_init(u, dev_id) < 0)
goto fail;
b = use_mmap;
d = use_tsched;
- if (profile) {
+ if (mapping) {
if (!(dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
pa_log("device_id= not set");
goto fail;
}
- if (!(u->pcm_handle = pa_alsa_open_by_device_id_profile(
+ if (!(u->pcm_handle = pa_alsa_open_by_device_id_mapping(
dev_id,
&u->device_name,
&ss, &map,
SND_PCM_STREAM_PLAYBACK,
&nfrags, &period_frames, tsched_frames,
- &b, &d, profile)))
+ &b, &d, mapping)))
goto fail;
} else if ((dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
+ if (!(profile_set = pa_alsa_profile_set_new(NULL, &map)))
+ goto fail;
+
if (!(u->pcm_handle = pa_alsa_open_by_device_id_auto(
dev_id,
&u->device_name,
&ss, &map,
SND_PCM_STREAM_PLAYBACK,
&nfrags, &period_frames, tsched_frames,
- &b, &d, &profile)))
+ &b, &d, profile_set, &mapping)))
goto fail;
@@ -1627,7 +1639,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
&nfrags, &period_frames, tsched_frames,
&b, &d, FALSE)))
goto fail;
-
}
pa_assert(u->device_name);
@@ -1638,8 +1649,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
goto fail;
}
- if (profile)
- pa_log_info("Selected configuration '%s' (%s).", profile->description, profile->name);
+ if (mapping)
+ pa_log_info("Selected mapping '%s' (%s).", mapping->description, mapping->name);
if (use_mmap && !b) {
pa_log_info("Device doesn't support mmap(), falling back to UNIX read/write mode.");
@@ -1665,33 +1676,31 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
/* ALSA might tweak the sample spec, so recalculate the frame size */
frame_size = pa_frame_size(&ss);
- pa_alsa_find_mixer_and_elem(u->pcm_handle, &control_device, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
+ find_mixer(u, mapping, pa_modargs_get_value(ma, "control", NULL), ignore_dB);
pa_sink_new_data_init(&data);
data.driver = driver;
data.module = m;
data.card = card;
- set_sink_name(&data, ma, dev_id, u->device_name);
+ set_sink_name(&data, ma, dev_id, u->device_name, mapping);
pa_sink_new_data_set_sample_spec(&data, &ss);
pa_sink_new_data_set_channel_map(&data, &map);
- pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle, u->mixer_elem);
+ pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags));
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size));
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_ACCESS_MODE, u->use_tsched ? "mmap+timer" : (u->use_mmap ? "mmap" : "serial"));
- if (profile) {
- pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_NAME, profile->name);
- pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, profile->description);
+ if (mapping) {
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_NAME, mapping->name);
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, mapping->description);
}
pa_alsa_init_description(data.proplist);
- if (control_device) {
- pa_alsa_init_proplist_ctl(data.proplist, control_device);
- pa_xfree(control_device);
- }
+ if (u->control_device)
+ pa_alsa_init_proplist_ctl(data.proplist, u->control_device);
if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
pa_log("Invalid properties");
@@ -1699,6 +1708,9 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
goto fail;
}
+ if (u->mixer_path_set)
+ pa_alsa_add_ports(&data.ports, u->mixer_path_set);
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY|(u->use_tsched ? PA_SINK_DYNAMIC_LATENCY : 0));
pa_sink_new_data_done(&data);
@@ -1710,6 +1722,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->sink->parent.process_msg = sink_process_msg;
u->sink->update_requested_latency = sink_update_requested_latency_cb;
u->sink->set_state = sink_set_state_cb;
+ u->sink->set_port = sink_set_port_cb;
u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
@@ -1778,6 +1791,9 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_sink_put(u->sink);
+ if (profile_set)
+ pa_alsa_profile_set_free(profile_set);
+
return u->sink;
fail:
@@ -1785,6 +1801,9 @@ fail:
if (u)
userdata_free(u);
+ if (profile_set)
+ pa_alsa_profile_set_free(profile_set);
+
return NULL;
}
@@ -1813,23 +1832,30 @@ static void userdata_free(struct userdata *u) {
if (u->rtpoll)
pa_rtpoll_free(u->rtpoll);
+ if (u->pcm_handle) {
+ snd_pcm_drop(u->pcm_handle);
+ snd_pcm_close(u->pcm_handle);
+ }
+
if (u->mixer_fdl)
pa_alsa_fdlist_free(u->mixer_fdl);
+ if (u->mixer_path_set)
+ pa_alsa_path_set_free(u->mixer_path_set);
+ else if (u->mixer_path)
+ pa_alsa_path_free(u->mixer_path);
+
if (u->mixer_handle)
snd_mixer_close(u->mixer_handle);
- if (u->pcm_handle) {
- snd_pcm_drop(u->pcm_handle);
- snd_pcm_close(u->pcm_handle);
- }
-
if (u->smoother)
pa_smoother_free(u->smoother);
reserve_done(u);
+ monitor_done(u);
pa_xfree(u->device_name);
+ pa_xfree(u->control_device);
pa_xfree(u);
}
diff --git a/src/modules/alsa/alsa-sink.h b/src/modules/alsa/alsa-sink.h
index bbf64234..b9a4ac2a 100644
--- a/src/modules/alsa/alsa-sink.h
+++ b/src/modules/alsa/alsa-sink.h
@@ -28,8 +28,9 @@
#include <pulsecore/sink.h>
#include "alsa-util.h"
+#include "alsa-mixer.h"
-pa_sink* pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, const pa_alsa_profile_info *profile);
+pa_sink* pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, pa_alsa_mapping *mapping);
void pa_alsa_sink_free(pa_sink *s);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index f1c18196..a6760e1e 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -28,14 +28,11 @@
#include <asoundlib.h>
-#ifdef HAVE_VALGRIND_MEMCHECK_H
-#include <valgrind/memcheck.h>
-#endif
-
-#include <pulse/xmalloc.h>
-#include <pulse/util.h>
-#include <pulse/timeval.h>
#include <pulse/i18n.h>
+#include <pulse/rtclock.h>
+#include <pulse/timeval.h>
+#include <pulse/util.h>
+#include <pulse/xmalloc.h>
#include <pulsecore/core-error.h>
#include <pulsecore/core.h>
@@ -43,6 +40,7 @@
#include <pulsecore/memchunk.h>
#include <pulsecore/sink.h>
#include <pulsecore/modargs.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/sample-util.h>
#include <pulsecore/log.h>
@@ -52,7 +50,6 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
#include <pulsecore/time-smoother.h>
-#include <pulsecore/rtclock.h>
#include <modules/reserve-wrap.h>
@@ -81,11 +78,8 @@ struct userdata {
pa_alsa_fdlist *mixer_fdl;
snd_mixer_t *mixer_handle;
- snd_mixer_elem_t *mixer_elem;
- long hw_volume_max, hw_volume_min;
- long hw_dB_max, hw_dB_min;
- pa_bool_t hw_dB_supported:1;
- pa_bool_t mixer_seperate_channels:1;
+ pa_alsa_path_set *mixer_path_set;
+ pa_alsa_path *mixer_path;
pa_cvolume hardware_volume;
@@ -102,6 +96,7 @@ struct userdata {
unsigned nfragments;
char *device_name;
+ char *control_device;
pa_bool_t use_mmap:1, use_tsched:1;
@@ -114,6 +109,8 @@ struct userdata {
pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot;
+ pa_reserve_monitor_wrapper *monitor;
+ pa_hook_slot *monitor_slot;
};
static void userdata_free(struct userdata *u);
@@ -122,7 +119,7 @@ static pa_hook_result_t reserve_cb(pa_reserve_wrapper *r, void *forced, struct u
pa_assert(r);
pa_assert(u);
- if (pa_source_suspend(u->source, TRUE) < 0)
+ if (pa_source_suspend(u->source, TRUE, PA_SUSPEND_APPLICATION) < 0)
return PA_HOOK_CANCEL;
return PA_HOOK_OK;
@@ -183,6 +180,57 @@ static int reserve_init(struct userdata *u, const char *dname) {
return 0;
}
+static pa_hook_result_t monitor_cb(pa_reserve_monitor_wrapper *w, void* busy, struct userdata *u) {
+ pa_bool_t b;
+
+ pa_assert(w);
+ pa_assert(u);
+
+ b = PA_PTR_TO_UINT(busy) && !u->reserve;
+
+ pa_source_suspend(u->source, b, PA_SUSPEND_APPLICATION);
+ return PA_HOOK_OK;
+}
+
+static void monitor_done(struct userdata *u) {
+ pa_assert(u);
+
+ if (u->monitor_slot) {
+ pa_hook_slot_free(u->monitor_slot);
+ u->monitor_slot = NULL;
+ }
+
+ if (u->monitor) {
+ pa_reserve_monitor_wrapper_unref(u->monitor);
+ u->monitor = NULL;
+ }
+}
+
+static int reserve_monitor_init(struct userdata *u, const char *dname) {
+ char *rname;
+
+ pa_assert(u);
+ pa_assert(dname);
+
+ if (pa_in_system_mode())
+ return 0;
+
+ /* We are resuming, try to lock the device */
+ if (!(rname = pa_alsa_get_reserve_name(dname)))
+ return 0;
+
+ u->monitor = pa_reserve_monitor_wrapper_get(u->core, rname);
+ pa_xfree(rname);
+
+ if (!(u->monitor))
+ return -1;
+
+ pa_assert(!u->monitor_slot);
+ u->monitor_slot = pa_hook_connect(pa_reserve_monitor_wrapper_hook(u->monitor), PA_HOOK_NORMAL, (pa_hook_cb_t) monitor_cb, u);
+
+ return 0;
+}
+
static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
pa_assert(u);
@@ -622,7 +670,7 @@ static void update_smoother(struct userdata *u) {
/* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */
if (now1 <= 0)
- now1 = pa_rtclock_usec();
+ now1 = pa_rtclock_now();
now2 = pa_bytes_to_usec(position, &u->source->sample_spec);
@@ -635,7 +683,7 @@ static pa_usec_t source_get_latency(struct userdata *u) {
pa_assert(u);
- now1 = pa_rtclock_usec();
+ now1 = pa_rtclock_now();
now2 = pa_smoother_get(u->smoother, now1);
delay = (int64_t) now2 - (int64_t) pa_bytes_to_usec(u->read_count, &u->source->sample_spec);
@@ -660,7 +708,7 @@ static int suspend(struct userdata *u) {
pa_assert(u);
pa_assert(u->pcm_handle);
- pa_smoother_pause(u->smoother, pa_rtclock_usec());
+ pa_smoother_pause(u->smoother, pa_rtclock_now());
/* Let's suspend */
snd_pcm_close(u->pcm_handle);
@@ -740,8 +788,6 @@ static int unsuspend(struct userdata *u) {
pa_log_info("Trying resume...");
- snd_config_update_free_global();
-
if ((err = snd_pcm_open(&u->pcm_handle, u->device_name, SND_PCM_STREAM_CAPTURE,
/*SND_PCM_NONBLOCK|*/
SND_PCM_NO_AUTO_RESAMPLE|
@@ -788,7 +834,7 @@ static int unsuspend(struct userdata *u) {
/* FIXME: We need to reload the volume somehow */
snd_pcm_start(u->pcm_handle);
- pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
+ pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE);
pa_log_info("Resumed successfully...");
@@ -896,239 +942,135 @@ static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) {
return 0;
}
-static pa_volume_t from_alsa_volume(struct userdata *u, long alsa_vol) {
-
- return (pa_volume_t) round(((double) (alsa_vol - u->hw_volume_min) * PA_VOLUME_NORM) /
- (double) (u->hw_volume_max - u->hw_volume_min));
-}
-
-static long to_alsa_volume(struct userdata *u, pa_volume_t vol) {
- long alsa_vol;
-
- alsa_vol = (long) round(((double) vol * (double) (u->hw_volume_max - u->hw_volume_min))
- / PA_VOLUME_NORM) + u->hw_volume_min;
-
- return PA_CLAMP_UNLIKELY(alsa_vol, u->hw_volume_min, u->hw_volume_max);
-}
-
static void source_get_volume_cb(pa_source *s) {
struct userdata *u = s->userdata;
- int err;
- unsigned i;
pa_cvolume r;
char t[PA_CVOLUME_SNPRINT_MAX];
pa_assert(u);
- pa_assert(u->mixer_elem);
-
- if (u->mixer_seperate_channels) {
-
- r.channels = s->sample_spec.channels;
-
- for (i = 0; i < s->sample_spec.channels; i++) {
- long alsa_vol;
-
- if (u->hw_dB_supported) {
-
- if ((err = snd_mixer_selem_get_capture_dB(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- r.values[i] = pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0);
- } else {
-
- if ((err = snd_mixer_selem_get_capture_volume(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
- r.values[i] = from_alsa_volume(u, alsa_vol);
- }
- }
-
- } else {
- long alsa_vol;
-
- if (u->hw_dB_supported) {
-
- if ((err = snd_mixer_selem_get_capture_dB(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- pa_cvolume_set(&r, s->sample_spec.channels, pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0));
-
- } else {
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- if ((err = snd_mixer_selem_get_capture_volume(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
+ if (pa_alsa_path_get_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
+ return;
- pa_cvolume_set(&r, s->sample_spec.channels, from_alsa_volume(u, alsa_vol));
- }
- }
+ /* Shift down by the base volume, so that 0dB becomes maximum volume */
+ pa_sw_cvolume_multiply_scalar(&r, &r, s->base_volume);
pa_log_debug("Read hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
- if (!pa_cvolume_equal(&u->hardware_volume, &r)) {
+ if (pa_cvolume_equal(&u->hardware_volume, &r))
+ return;
- s->virtual_volume = u->hardware_volume = r;
+ s->virtual_volume = u->hardware_volume = r;
- if (u->hw_dB_supported) {
- pa_cvolume reset;
+ if (u->mixer_path->has_dB) {
+ pa_cvolume reset;
- /* Hmm, so the hardware volume changed, let's reset our software volume */
- pa_cvolume_reset(&reset, s->sample_spec.channels);
- pa_source_set_soft_volume(s, &reset);
- }
+ /* Hmm, so the hardware volume changed, let's reset our software volume */
+ pa_cvolume_reset(&reset, s->sample_spec.channels);
+ pa_source_set_soft_volume(s, &reset);
}
-
- return;
-
-fail:
- pa_log_error("Unable to read volume: %s", pa_alsa_strerror(err));
}
static void source_set_volume_cb(pa_source *s) {
struct userdata *u = s->userdata;
- int err;
- unsigned i;
pa_cvolume r;
+ char t[PA_CVOLUME_SNPRINT_MAX];
pa_assert(u);
- pa_assert(u->mixer_elem);
-
- if (u->mixer_seperate_channels) {
-
- r.channels = s->sample_spec.channels;
-
- for (i = 0; i < s->sample_spec.channels; i++) {
- long alsa_vol;
- pa_volume_t vol;
-
- vol = s->virtual_volume.values[i];
-
- if (u->hw_dB_supported) {
-
- alsa_vol = (long) (pa_sw_volume_to_dB(vol) * 100);
- alsa_vol += u->hw_dB_max;
- alsa_vol = PA_CLAMP_UNLIKELY(alsa_vol, u->hw_dB_min, u->hw_dB_max);
-
- if ((err = snd_mixer_selem_set_capture_dB(u->mixer_elem, u->mixer_map[i], alsa_vol, 1)) < 0)
- goto fail;
-
- if ((err = snd_mixer_selem_get_capture_dB(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- r.values[i] = pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0);
-
- } else {
- alsa_vol = to_alsa_volume(u, vol);
-
- if ((err = snd_mixer_selem_set_capture_volume(u->mixer_elem, u->mixer_map[i], alsa_vol)) < 0)
- goto fail;
-
- if ((err = snd_mixer_selem_get_capture_volume(u->mixer_elem, u->mixer_map[i], &alsa_vol)) < 0)
- goto fail;
-
- r.values[i] = from_alsa_volume(u, alsa_vol);
- }
- }
-
- } else {
- pa_volume_t vol;
- long alsa_vol;
-
- vol = pa_cvolume_max(&s->virtual_volume);
-
- if (u->hw_dB_supported) {
- alsa_vol = (long) (pa_sw_volume_to_dB(vol) * 100);
- alsa_vol += u->hw_dB_max;
- alsa_vol = PA_CLAMP_UNLIKELY(alsa_vol, u->hw_dB_min, u->hw_dB_max);
-
- if ((err = snd_mixer_selem_set_capture_dB_all(u->mixer_elem, alsa_vol, 1)) < 0)
- goto fail;
-
- if ((err = snd_mixer_selem_get_capture_dB(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&alsa_vol, sizeof(alsa_vol));
-#endif
-
- pa_cvolume_set(&r, s->sample_spec.channels, pa_sw_volume_from_dB((double) (alsa_vol - u->hw_dB_max) / 100.0));
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- } else {
- alsa_vol = to_alsa_volume(u, vol);
+ /* Shift up by the base volume */
+ pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume);
- if ((err = snd_mixer_selem_set_capture_volume_all(u->mixer_elem, alsa_vol)) < 0)
- goto fail;
+ if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
+ return;
- if ((err = snd_mixer_selem_get_capture_volume(u->mixer_elem, SND_MIXER_SCHN_MONO, &alsa_vol)) < 0)
- goto fail;
-
- pa_cvolume_set(&r, s->sample_spec.channels, from_alsa_volume(u, alsa_vol));
- }
- }
+ /* Shift down by the base volume, so that 0dB becomes maximum volume */
+ pa_sw_cvolume_multiply_scalar(&r, &r, s->base_volume);
u->hardware_volume = r;
- if (u->hw_dB_supported) {
- char t[PA_CVOLUME_SNPRINT_MAX];
+ if (u->mixer_path->has_dB) {
/* Match exactly what the user requested by software */
-
pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume);
pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume));
pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &u->hardware_volume));
pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume));
- } else
+ } else {
+ pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
/* We can't match exactly what the user requested, hence let's
* at least tell the user about it */
s->virtual_volume = r;
-
- return;
-
-fail:
- pa_log_error("Unable to set volume: %s", pa_alsa_strerror(err));
+ }
}
static void source_get_mute_cb(pa_source *s) {
struct userdata *u = s->userdata;
- int err, sw;
+ pa_bool_t b;
pa_assert(u);
- pa_assert(u->mixer_elem);
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- if ((err = snd_mixer_selem_get_capture_switch(u->mixer_elem, 0, &sw)) < 0) {
- pa_log_error("Unable to get switch: %s", pa_alsa_strerror(err));
+ if (pa_alsa_path_get_mute(u->mixer_path, u->mixer_handle, &b) < 0)
return;
- }
- s->muted = !sw;
+ s->muted = b;
}
static void source_set_mute_cb(pa_source *s) {
struct userdata *u = s->userdata;
- int err;
pa_assert(u);
- pa_assert(u->mixer_elem);
+ pa_assert(u->mixer_path);
+ pa_assert(u->mixer_handle);
- if ((err = snd_mixer_selem_set_capture_switch_all(u->mixer_elem, !s->muted)) < 0) {
- pa_log_error("Unable to set switch: %s", pa_alsa_strerror(err));
- return;
+ pa_alsa_path_set_mute(u->mixer_path, u->mixer_handle, s->muted);
+}
+
+static int source_set_port_cb(pa_source *s, pa_device_port *p) {
+ struct userdata *u = s->userdata;
+ pa_alsa_port_data *data;
+
+ pa_assert(u);
+ pa_assert(p);
+ pa_assert(u->mixer_handle);
+
+ data = PA_DEVICE_PORT_DATA(p);
+
+ pa_assert_se(u->mixer_path = data->path);
+ pa_alsa_path_select(u->mixer_path, u->mixer_handle);
+
+ if (u->mixer_path->has_volume && u->mixer_path->has_dB) {
+ s->base_volume = pa_sw_volume_from_dB(-u->mixer_path->max_dB);
+ s->n_volume_steps = PA_VOLUME_NORM+1;
+
+ if (u->mixer_path->max_dB > 0.0)
+ pa_log_info("Fixing base volume to %0.2f dB", pa_sw_volume_to_dB(s->base_volume));
+ else
+ pa_log_info("No particular base volume set, fixing to 0 dB");
+ } else {
+ s->base_volume = PA_VOLUME_NORM;
+ s->n_volume_steps = u->mixer_path->max_volume - u->mixer_path->min_volume + 1;
}
+
+ if (data->setting)
+ pa_alsa_setting_select(data->setting, u->mixer_handle);
+
+ if (s->set_mute)
+ s->set_mute(s);
+ if (s->set_volume)
+ s->set_volume(s);
+
+ return 0;
}
static void source_update_requested_latency_cb(pa_source *s) {
@@ -1153,7 +1095,6 @@ static void thread_func(void *userdata) {
pa_make_realtime(u->core->realtime_priority);
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
int ret;
@@ -1190,7 +1131,7 @@ static void thread_func(void *userdata) {
/* Convert from the sound card time domain to the
* system time domain */
- cusec = pa_smoother_translate(u->smoother, pa_rtclock_usec(), sleep_usec);
+ cusec = pa_smoother_translate(u->smoother, pa_rtclock_now(), sleep_usec);
/* pa_log_debug("Waking up in %0.2fms (system clock).", (double) cusec / PA_USEC_PER_MSEC); */
@@ -1244,7 +1185,7 @@ finish:
pa_log_debug("Thread shutting down");
}
-static void set_source_name(pa_source_new_data *data, pa_modargs *ma, const char *device_id, const char *device_name) {
+static void set_source_name(pa_source_new_data *data, pa_modargs *ma, const char *device_id, const char *device_name, pa_alsa_mapping *mapping) {
const char *n;
char *t;
@@ -1265,82 +1206,136 @@ static void set_source_name(pa_source_new_data *data, pa_modargs *ma, const char
data->namereg_fail = FALSE;
}
- t = pa_sprintf_malloc("alsa_input.%s", n);
+ if (mapping)
+ t = pa_sprintf_malloc("alsa_input.%s.%s", n, mapping->name);
+ else
+ t = pa_sprintf_malloc("alsa_input.%s", n);
+
pa_source_new_data_set_name(data, t);
pa_xfree(t);
}
+static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char *element, pa_bool_t ignore_dB) {
+
+ if (!mapping && !element)
+ return;
+
+ if (!(u->mixer_handle = pa_alsa_open_mixer_for_pcm(u->pcm_handle, &u->control_device))) {
+ pa_log_info("Failed to find a working mixer device.");
+ return;
+ }
+
+ if (element) {
+
+ if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_INPUT)))
+ goto fail;
+
+ if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0)
+ goto fail;
+
+ pa_log_debug("Probed mixer path %s:", u->mixer_path->name);
+ pa_alsa_path_dump(u->mixer_path);
+ } else {
+
+ if (!(u->mixer_path_set = pa_alsa_path_set_new(mapping, PA_ALSA_DIRECTION_INPUT)))
+ goto fail;
+
+ pa_alsa_path_set_probe(u->mixer_path_set, u->mixer_handle, ignore_dB);
+
+ pa_log_debug("Probed mixer paths:");
+ pa_alsa_path_set_dump(u->mixer_path_set);
+ }
+
+ return;
+
+fail:
+
+ if (u->mixer_path_set) {
+ pa_alsa_path_set_free(u->mixer_path_set);
+ u->mixer_path_set = NULL;
+ } else if (u->mixer_path) {
+ pa_alsa_path_free(u->mixer_path);
+ u->mixer_path = NULL;
+ }
+
+ if (u->mixer_handle) {
+ snd_mixer_close(u->mixer_handle);
+ u->mixer_handle = NULL;
+ }
+}
+
static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) {
pa_assert(u);
if (!u->mixer_handle)
return 0;
- pa_assert(u->mixer_elem);
+ if (u->source->active_port) {
+ pa_alsa_port_data *data;
- if (snd_mixer_selem_has_capture_volume(u->mixer_elem)) {
- pa_bool_t suitable = FALSE;
+ /* We have a list of supported paths, so let's activate the
+ * one that has been chosen as active */
- if (snd_mixer_selem_get_capture_volume_range(u->mixer_elem, &u->hw_volume_min, &u->hw_volume_max) < 0)
- pa_log_info("Failed to get volume range. Falling back to software volume control.");
- else if (u->hw_volume_min >= u->hw_volume_max)
- pa_log_warn("Your kernel driver is broken: it reports a volume range from %li to %li which makes no sense.", u->hw_volume_min, u->hw_volume_max);
- else {
- pa_log_info("Volume ranges from %li to %li.", u->hw_volume_min, u->hw_volume_max);
- suitable = TRUE;
- }
+ data = PA_DEVICE_PORT_DATA(u->source->active_port);
+ u->mixer_path = data->path;
- if (suitable) {
- if (ignore_dB || snd_mixer_selem_get_capture_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
- pa_log_info("Mixer doesn't support dB information or data is ignored.");
- else {
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_min, sizeof(u->hw_dB_min));
- VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_max, sizeof(u->hw_dB_max));
-#endif
+ pa_alsa_path_select(data->path, u->mixer_handle);
- if (u->hw_dB_min >= u->hw_dB_max)
- pa_log_warn("Your kernel driver is broken: it reports a volume range from %0.2f dB to %0.2f dB which makes no sense.", (double) u->hw_dB_min/100.0, (double) u->hw_dB_max/100.0);
- else {
- pa_log_info("Volume ranges from %0.2f dB to %0.2f dB.", (double) u->hw_dB_min/100.0, (double) u->hw_dB_max/100.0);
- u->hw_dB_supported = TRUE;
-
- if (u->hw_dB_max > 0) {
- u->source->base_volume = pa_sw_volume_from_dB(- (double) u->hw_dB_max/100.0);
- pa_log_info("Fixing base volume to %0.2f dB", pa_sw_volume_to_dB(u->source->base_volume));
- } else
- pa_log_info("No particular base volume set, fixing to 0 dB");
- }
- }
+ if (data->setting)
+ pa_alsa_setting_select(data->setting, u->mixer_handle);
- if (!u->hw_dB_supported &&
- u->hw_volume_max - u->hw_volume_min < 3) {
+ } else {
- pa_log_info("Device has less than 4 volume levels. Falling back to software volume control.");
- suitable = FALSE;
- }
- }
+ if (!u->mixer_path && u->mixer_path_set)
+ u->mixer_path = u->mixer_path_set->paths;
- if (suitable) {
- u->mixer_seperate_channels = pa_alsa_calc_mixer_map(u->mixer_elem, &u->source->channel_map, u->mixer_map, FALSE) >= 0;
+ if (u->mixer_path) {
+ /* Hmm, we have only a single path, then let's activate it */
- u->source->get_volume = source_get_volume_cb;
- u->source->set_volume = source_set_volume_cb;
- u->source->flags |= PA_SOURCE_HW_VOLUME_CTRL | (u->hw_dB_supported ? PA_SOURCE_DECIBEL_VOLUME : 0);
- pa_log_info("Using hardware volume control. Hardware dB scale %s.", u->hw_dB_supported ? "supported" : "not supported");
+ pa_alsa_path_select(u->mixer_path, u->mixer_handle);
- if (!u->hw_dB_supported)
- u->source->n_volume_steps = u->hw_volume_max - u->hw_volume_min + 1;
+ if (u->mixer_path->settings)
+ pa_alsa_setting_select(u->mixer_path->settings, u->mixer_handle);
} else
- pa_log_info("Using software volume control.");
+ return 0;
}
- if (snd_mixer_selem_has_capture_switch(u->mixer_elem)) {
+ if (!u->mixer_path->has_volume)
+ pa_log_info("Driver does not support hardware volume control, falling back to software volume control.");
+ else {
+
+ if (u->mixer_path->has_dB) {
+ pa_log_info("Hardware volume ranges from %0.2f dB to %0.2f dB.", u->mixer_path->min_dB, u->mixer_path->max_dB);
+
+ u->source->base_volume = pa_sw_volume_from_dB(-u->mixer_path->max_dB);
+ u->source->n_volume_steps = PA_VOLUME_NORM+1;
+
+ if (u->mixer_path->max_dB > 0.0)
+ pa_log_info("Fixing base volume to %0.2f dB", pa_sw_volume_to_dB(u->source->base_volume));
+ else
+ pa_log_info("No particular base volume set, fixing to 0 dB");
+
+ } else {
+ pa_log_info("Hardware volume ranges from %li to %li.", u->mixer_path->min_volume, u->mixer_path->max_volume);
+ u->source->base_volume = PA_VOLUME_NORM;
+ u->source->n_volume_steps = u->mixer_path->max_volume - u->mixer_path->min_volume + 1;
+ }
+
+ u->source->get_volume = source_get_volume_cb;
+ u->source->set_volume = source_set_volume_cb;
+
+ u->source->flags |= PA_SOURCE_HW_VOLUME_CTRL | (u->mixer_path->has_dB ? PA_SOURCE_DECIBEL_VOLUME : 0);
+ pa_log_info("Using hardware volume control. Hardware dB scale %s.", u->mixer_path->has_dB ? "supported" : "not supported");
+ }
+
+ if (!u->mixer_path->has_mute) {
+ pa_log_info("Driver does not support hardware mute control, falling back to software mute control.");
+ } else {
u->source->get_mute = source_get_mute_cb;
u->source->set_mute = source_set_mute_cb;
u->source->flags |= PA_SOURCE_HW_MUTE_CTRL;
- } else
- pa_log_info("Using software mute control.");
+ pa_log_info("Using hardware mute control.");
+ }
u->mixer_fdl = pa_alsa_fdlist_new();
@@ -1349,13 +1344,15 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) {
return -1;
}
- snd_mixer_elem_set_callback(u->mixer_elem, mixer_callback);
- snd_mixer_elem_set_callback_private(u->mixer_elem, u);
+ if (u->mixer_path_set)
+ pa_alsa_path_set_set_callback(u->mixer_path_set, u->mixer_handle, mixer_callback, u);
+ else
+ pa_alsa_path_set_callback(u->mixer_path, u->mixer_handle, mixer_callback, u);
return 0;
}
-pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, const pa_alsa_profile_info *profile) {
+pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, pa_alsa_mapping *mapping) {
struct userdata *u = NULL;
const char *dev_id = NULL;
@@ -1366,7 +1363,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
size_t frame_size;
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
pa_source_new_data data;
- char *control_device = NULL;
+ pa_alsa_profile_set *profile_set = NULL;
pa_assert(m);
pa_assert(ma);
@@ -1427,7 +1424,6 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->use_tsched = use_tsched;
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
- u->alsa_rtpoll_item = NULL;
u->smoother = pa_smoother_new(
DEFAULT_TSCHED_WATERMARK_USEC*2,
@@ -1435,42 +1431,50 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
TRUE,
TRUE,
5,
- pa_rtclock_usec(),
+ pa_rtclock_now(),
FALSE);
- if (reserve_init(u, pa_modargs_get_value(
- ma, "device_id",
- pa_modargs_get_value(ma, "device", DEFAULT_DEVICE))) < 0)
+ dev_id = pa_modargs_get_value(
+ ma, "device_id",
+ pa_modargs_get_value(ma, "device", DEFAULT_DEVICE));
+
+ if (reserve_init(u, dev_id) < 0)
+ goto fail;
+
+ if (reserve_monitor_init(u, dev_id) < 0)
goto fail;
b = use_mmap;
d = use_tsched;
- if (profile) {
+ if (mapping) {
if (!(dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
pa_log("device_id= not set");
goto fail;
}
- if (!(u->pcm_handle = pa_alsa_open_by_device_id_profile(
+ if (!(u->pcm_handle = pa_alsa_open_by_device_id_mapping(
dev_id,
&u->device_name,
&ss, &map,
SND_PCM_STREAM_CAPTURE,
&nfrags, &period_frames, tsched_frames,
- &b, &d, profile)))
+ &b, &d, mapping)))
goto fail;
} else if ((dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
+ if (!(profile_set = pa_alsa_profile_set_new(NULL, &map)))
+ goto fail;
+
if (!(u->pcm_handle = pa_alsa_open_by_device_id_auto(
dev_id,
&u->device_name,
&ss, &map,
SND_PCM_STREAM_CAPTURE,
&nfrags, &period_frames, tsched_frames,
- &b, &d, &profile)))
+ &b, &d, profile_set, &mapping)))
goto fail;
} else {
@@ -1493,8 +1497,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
goto fail;
}
- if (profile)
- pa_log_info("Selected configuration '%s' (%s).", profile->description, profile->name);
+ if (mapping)
+ pa_log_info("Selected mapping '%s' (%s).", mapping->description, mapping->name);
if (use_mmap && !b) {
pa_log_info("Device doesn't support mmap(), falling back to UNIX read/write mode.");
@@ -1520,33 +1524,31 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
/* ALSA might tweak the sample spec, so recalculate the frame size */
frame_size = pa_frame_size(&ss);
- pa_alsa_find_mixer_and_elem(u->pcm_handle, &control_device, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
+ find_mixer(u, mapping, pa_modargs_get_value(ma, "control", NULL), ignore_dB);
pa_source_new_data_init(&data);
data.driver = driver;
data.module = m;
data.card = card;
- set_source_name(&data, ma, dev_id, u->device_name);
+ set_source_name(&data, ma, dev_id, u->device_name, mapping);
pa_source_new_data_set_sample_spec(&data, &ss);
pa_source_new_data_set_channel_map(&data, &map);
- pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle, u->mixer_elem);
+ pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags));
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size));
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_ACCESS_MODE, u->use_tsched ? "mmap+timer" : (u->use_mmap ? "mmap" : "serial"));
- if (profile) {
- pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_NAME, profile->name);
- pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, profile->description);
+ if (mapping) {
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_NAME, mapping->name);
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, mapping->description);
}
pa_alsa_init_description(data.proplist);
- if (control_device) {
- pa_alsa_init_proplist_ctl(data.proplist, control_device);
- pa_xfree(control_device);
- }
+ if (u->control_device)
+ pa_alsa_init_proplist_ctl(data.proplist, u->control_device);
if (pa_modargs_get_proplist(ma, "source_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
pa_log("Invalid properties");
@@ -1554,6 +1556,9 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
goto fail;
}
+ if (u->mixer_path_set)
+ pa_alsa_add_ports(&data.ports, u->mixer_path_set);
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|(u->use_tsched ? PA_SOURCE_DYNAMIC_LATENCY : 0));
pa_source_new_data_done(&data);
@@ -1565,6 +1570,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->source->parent.process_msg = source_process_msg;
u->source->update_requested_latency = source_update_requested_latency_cb;
u->source->set_state = source_set_state_cb;
+ u->source->set_port = source_set_port_cb;
u->source->userdata = u;
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
@@ -1629,6 +1635,9 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_source_put(u->source);
+ if (profile_set)
+ pa_alsa_profile_set_free(profile_set);
+
return u->source;
fail:
@@ -1636,6 +1645,9 @@ fail:
if (u)
userdata_free(u);
+ if (profile_set)
+ pa_alsa_profile_set_free(profile_set);
+
return NULL;
}
@@ -1661,23 +1673,30 @@ static void userdata_free(struct userdata *u) {
if (u->rtpoll)
pa_rtpoll_free(u->rtpoll);
+ if (u->pcm_handle) {
+ snd_pcm_drop(u->pcm_handle);
+ snd_pcm_close(u->pcm_handle);
+ }
+
if (u->mixer_fdl)
pa_alsa_fdlist_free(u->mixer_fdl);
+ if (u->mixer_path_set)
+ pa_alsa_path_set_free(u->mixer_path_set);
+ else if (u->mixer_path)
+ pa_alsa_path_free(u->mixer_path);
+
if (u->mixer_handle)
snd_mixer_close(u->mixer_handle);
- if (u->pcm_handle) {
- snd_pcm_drop(u->pcm_handle);
- snd_pcm_close(u->pcm_handle);
- }
-
if (u->smoother)
pa_smoother_free(u->smoother);
reserve_done(u);
+ monitor_done(u);
pa_xfree(u->device_name);
+ pa_xfree(u->control_device);
pa_xfree(u);
}
diff --git a/src/modules/alsa/alsa-source.h b/src/modules/alsa/alsa-source.h
index 9cbb0e17..5d9409e2 100644
--- a/src/modules/alsa/alsa-source.h
+++ b/src/modules/alsa/alsa-source.h
@@ -29,7 +29,7 @@
#include "alsa-util.h"
-pa_source* pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, const pa_alsa_profile_info *profile);
+pa_source* pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, pa_card *card, pa_alsa_mapping *mapping);
void pa_alsa_source_free(pa_source *s);
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index c03866cc..1f3e5dcd 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -42,8 +42,10 @@
#include <pulsecore/core-error.h>
#include <pulsecore/once.h>
#include <pulsecore/thread.h>
+#include <pulsecore/conf-parser.h>
#include "alsa-util.h"
+#include "alsa-mixer.h"
#ifdef HAVE_HAL
#include "hal-util.h"
@@ -53,182 +55,6 @@
#include "udev-util.h"
#endif
-struct pa_alsa_fdlist {
- unsigned num_fds;
- struct pollfd *fds;
- /* This is a temporary buffer used to avoid lots of mallocs */
- struct pollfd *work_fds;
-
- snd_mixer_t *mixer;
-
- pa_mainloop_api *m;
- pa_defer_event *defer;
- pa_io_event **ios;
-
- pa_bool_t polled;
-
- void (*cb)(void *userdata);
- void *userdata;
-};
-
-static void io_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t events, void *userdata) {
-
- struct pa_alsa_fdlist *fdl = userdata;
- int err;
- unsigned i;
- unsigned short revents;
-
- pa_assert(a);
- pa_assert(fdl);
- pa_assert(fdl->mixer);
- pa_assert(fdl->fds);
- pa_assert(fdl->work_fds);
-
- if (fdl->polled)
- return;
-
- fdl->polled = TRUE;
-
- memcpy(fdl->work_fds, fdl->fds, sizeof(struct pollfd) * fdl->num_fds);
-
- for (i = 0; i < fdl->num_fds; i++) {
- if (e == fdl->ios[i]) {
- if (events & PA_IO_EVENT_INPUT)
- fdl->work_fds[i].revents |= POLLIN;
- if (events & PA_IO_EVENT_OUTPUT)
- fdl->work_fds[i].revents |= POLLOUT;
- if (events & PA_IO_EVENT_ERROR)
- fdl->work_fds[i].revents |= POLLERR;
- if (events & PA_IO_EVENT_HANGUP)
- fdl->work_fds[i].revents |= POLLHUP;
- break;
- }
- }
-
- pa_assert(i != fdl->num_fds);
-
- if ((err = snd_mixer_poll_descriptors_revents(fdl->mixer, fdl->work_fds, fdl->num_fds, &revents)) < 0) {
- pa_log_error("Unable to get poll revent: %s", pa_alsa_strerror(err));
- return;
- }
-
- a->defer_enable(fdl->defer, 1);
-
- if (revents)
- snd_mixer_handle_events(fdl->mixer);
-}
-
-static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
- struct pa_alsa_fdlist *fdl = userdata;
- unsigned num_fds, i;
- int err, n;
- struct pollfd *temp;
-
- pa_assert(a);
- pa_assert(fdl);
- pa_assert(fdl->mixer);
-
- a->defer_enable(fdl->defer, 0);
-
- if ((n = snd_mixer_poll_descriptors_count(fdl->mixer)) < 0) {
- pa_log("snd_mixer_poll_descriptors_count() failed: %s", pa_alsa_strerror(n));
- return;
- }
- num_fds = (unsigned) n;
-
- if (num_fds != fdl->num_fds) {
- if (fdl->fds)
- pa_xfree(fdl->fds);
- if (fdl->work_fds)
- pa_xfree(fdl->work_fds);
- fdl->fds = pa_xnew0(struct pollfd, num_fds);
- fdl->work_fds = pa_xnew(struct pollfd, num_fds);
- }
-
- memset(fdl->work_fds, 0, sizeof(struct pollfd) * num_fds);
-
- if ((err = snd_mixer_poll_descriptors(fdl->mixer, fdl->work_fds, num_fds)) < 0) {
- pa_log_error("Unable to get poll descriptors: %s", pa_alsa_strerror(err));
- return;
- }
-
- fdl->polled = FALSE;
-
- if (memcmp(fdl->fds, fdl->work_fds, sizeof(struct pollfd) * num_fds) == 0)
- return;
-
- if (fdl->ios) {
- for (i = 0; i < fdl->num_fds; i++)
- a->io_free(fdl->ios[i]);
-
- if (num_fds != fdl->num_fds) {
- pa_xfree(fdl->ios);
- fdl->ios = NULL;
- }
- }
-
- if (!fdl->ios)
- fdl->ios = pa_xnew(pa_io_event*, num_fds);
-
- /* Swap pointers */
- temp = fdl->work_fds;
- fdl->work_fds = fdl->fds;
- fdl->fds = temp;
-
- fdl->num_fds = num_fds;
-
- for (i = 0;i < num_fds;i++)
- fdl->ios[i] = a->io_new(a, fdl->fds[i].fd,
- ((fdl->fds[i].events & POLLIN) ? PA_IO_EVENT_INPUT : 0) |
- ((fdl->fds[i].events & POLLOUT) ? PA_IO_EVENT_OUTPUT : 0),
- io_cb, fdl);
-}
-
-struct pa_alsa_fdlist *pa_alsa_fdlist_new(void) {
- struct pa_alsa_fdlist *fdl;
-
- fdl = pa_xnew0(struct pa_alsa_fdlist, 1);
-
- return fdl;
-}
-
-void pa_alsa_fdlist_free(struct pa_alsa_fdlist *fdl) {
- pa_assert(fdl);
-
- if (fdl->defer) {
- pa_assert(fdl->m);
- fdl->m->defer_free(fdl->defer);
- }
-
- if (fdl->ios) {
- unsigned i;
- pa_assert(fdl->m);
- for (i = 0; i < fdl->num_fds; i++)
- fdl->m->io_free(fdl->ios[i]);
- pa_xfree(fdl->ios);
- }
-
- if (fdl->fds)
- pa_xfree(fdl->fds);
- if (fdl->work_fds)
- pa_xfree(fdl->work_fds);
-
- pa_xfree(fdl);
-}
-
-int pa_alsa_fdlist_set_mixer(struct pa_alsa_fdlist *fdl, snd_mixer_t *mixer_handle, pa_mainloop_api* m) {
- pa_assert(fdl);
- pa_assert(mixer_handle);
- pa_assert(m);
- pa_assert(!fdl->m);
-
- fdl->mixer = mixer_handle;
- fdl->m = m;
- fdl->defer = m->defer_new(m, defer_cb, fdl);
-
- return 0;
-}
-
static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_sample_format_t *f) {
static const snd_pcm_format_t format_trans[] = {
@@ -260,11 +86,11 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
PA_SAMPLE_S16RE,
PA_SAMPLE_ALAW,
PA_SAMPLE_ULAW,
- PA_SAMPLE_U8,
- PA_SAMPLE_INVALID
+ PA_SAMPLE_U8
};
- int i, ret;
+ unsigned i;
+ int ret;
pa_assert(pcm_handle);
pa_assert(f);
@@ -276,7 +102,6 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
snd_pcm_format_description(format_trans[*f]),
pa_alsa_strerror(ret));
-
if (*f == PA_SAMPLE_FLOAT32BE)
*f = PA_SAMPLE_FLOAT32LE;
else if (*f == PA_SAMPLE_FLOAT32LE)
@@ -309,7 +134,7 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
try_auto:
- for (i = 0; try_order[i] != PA_SAMPLE_INVALID; i++) {
+ for (i = 0; i < PA_ELEMENTSOF(try_order); i++) {
*f = try_order[i];
if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
@@ -393,12 +218,12 @@ int pa_alsa_set_hw_params(
if (require_exact_channel_number) {
if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, c)) < 0) {
- pa_log_debug("snd_pcm_hw_params_set_channels() failed: %s", pa_alsa_strerror(ret));
+ pa_log_debug("snd_pcm_hw_params_set_channels(%u) failed: %s", c, pa_alsa_strerror(ret));
goto finish;
}
} else {
if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0) {
- pa_log_debug("snd_pcm_hw_params_set_channels_near() failed: %s", pa_alsa_strerror(ret));
+ pa_log_debug("snd_pcm_hw_params_set_channels_near(%u) failed: %s", c, pa_alsa_strerror(ret));
goto finish;
}
}
@@ -415,10 +240,12 @@ int pa_alsa_set_hw_params(
tsched_size = (snd_pcm_uframes_t) (((uint64_t) tsched_size * r) / ss->rate);
if (_use_tsched) {
- snd_pcm_uframes_t buffer_size;
+ snd_pcm_uframes_t buffer_size = 0;
- pa_assert_se(snd_pcm_hw_params_get_buffer_size_max(hwparams, &buffer_size) == 0);
- pa_log_debug("Maximum hw buffer size is %u ms", (unsigned) buffer_size * 1000 / r);
+ if ((ret = snd_pcm_hw_params_get_buffer_size_max(hwparams, &buffer_size)) < 0)
+ pa_log_warn("snd_pcm_hw_params_get_buffer_size_max() failed: %s", pa_alsa_strerror(ret));
+ else
+ pa_log_debug("Maximum hw buffer size is %u ms", (unsigned) buffer_size * 1000 / r);
_period_size = tsched_size;
_periods = 1;
@@ -464,12 +291,16 @@ int pa_alsa_set_hw_params(
if (ss->format != f)
pa_log_info("Device %s doesn't support sample format %s, changed to %s.", snd_pcm_name(pcm_handle), pa_sample_format_to_string(ss->format), pa_sample_format_to_string(f));
- if ((ret = snd_pcm_prepare(pcm_handle)) < 0)
+ if ((ret = snd_pcm_prepare(pcm_handle)) < 0) {
+ pa_log_info("snd_pcm_prepare() failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
if ((ret = snd_pcm_hw_params_get_period_size(hwparams, &_period_size, &dir)) < 0 ||
- (ret = snd_pcm_hw_params_get_periods(hwparams, &_periods, &dir)) < 0)
+ (ret = snd_pcm_hw_params_get_periods(hwparams, &_periods, &dir)) < 0) {
+ pa_log_info("snd_pcm_hw_params_get_period{s|_size}() failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
/* If the sample rate deviates too much, we need to resample */
if (r < ss->rate*.95 || r > ss->rate*1.05)
@@ -553,167 +384,6 @@ int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min) {
return 0;
}
-static const struct pa_alsa_profile_info device_table[] = {
- {{ 1, { PA_CHANNEL_POSITION_MONO }},
- "hw", NULL,
- N_("Analog Mono"),
- "analog-mono",
- 1,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
- "front", "hw",
- N_("Analog Stereo"),
- "analog-stereo",
- 10,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
- "iec958", NULL,
- N_("Digital Stereo (IEC958)"),
- "iec958-stereo",
- 5,
- "IEC958", NULL,
- "IEC958 In", NULL },
-
- {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
- "hdmi", NULL,
- N_("Digital Stereo (HDMI)"),
- "hdmi-stereo",
- 4,
- "IEC958", NULL,
- "IEC958 In", NULL },
-
- {{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
- PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
- "surround40", NULL,
- N_("Analog Surround 4.0"),
- "analog-surround-40",
- 7,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
- PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
- "a52", NULL,
- N_("Digital Surround 4.0 (IEC958/AC3)"),
- "iec958-ac3-surround-40",
- 2,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
- PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
- PA_CHANNEL_POSITION_LFE }},
- "surround41", NULL,
- N_("Analog Surround 4.1"),
- "analog-surround-41",
- 7,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
- PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
- PA_CHANNEL_POSITION_CENTER }},
- "surround50", NULL,
- N_("Analog Surround 5.0"),
- "analog-surround-50",
- 7,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
- PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
- PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE }},
- "surround51", NULL,
- N_("Analog Surround 5.1"),
- "analog-surround-51",
- 8,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
- PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
- PA_CHANNEL_POSITION_FRONT_CENTER, PA_CHANNEL_POSITION_LFE}},
- "a52", NULL,
- N_("Digital Surround 5.1 (IEC958/AC3)"),
- "iec958-ac3-surround-51",
- 3,
- "IEC958", NULL,
- "IEC958 In", NULL },
-
- {{ 8, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
- PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
- PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE,
- PA_CHANNEL_POSITION_SIDE_LEFT, PA_CHANNEL_POSITION_SIDE_RIGHT }},
- "surround71", NULL,
- N_("Analog Surround 7.1"),
- "analog-surround-71",
- 7,
- "Master", "PCM",
- "Capture", "Mic" },
-
- {{ 0, { 0 }}, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL }
-};
-
-static snd_pcm_t *open_by_device_string_with_fallback(
- const char *prefix,
- const char *prefix_fallback,
- const char *dev_id,
- char **dev,
- pa_sample_spec *ss,
- pa_channel_map* map,
- int mode,
- uint32_t *nfrags,
- snd_pcm_uframes_t *period_size,
- snd_pcm_uframes_t tsched_size,
- pa_bool_t *use_mmap,
- pa_bool_t *use_tsched,
- pa_bool_t require_exact_channel_number) {
-
- snd_pcm_t *pcm_handle;
- char *d;
-
- d = pa_sprintf_malloc("%s:%s", prefix, dev_id);
-
- pcm_handle = pa_alsa_open_by_device_string(
- d,
- dev,
- ss,
- map,
- mode,
- nfrags,
- period_size,
- tsched_size,
- use_mmap,
- use_tsched,
- require_exact_channel_number);
- pa_xfree(d);
-
- if (!pcm_handle && prefix_fallback) {
-
- d = pa_sprintf_malloc("%s:%s", prefix_fallback, dev_id);
-
- pcm_handle = pa_alsa_open_by_device_string(
- d,
- dev,
- ss,
- map,
- mode,
- nfrags,
- period_size,
- tsched_size,
- use_mmap,
- use_tsched,
- require_exact_channel_number);
- pa_xfree(d);
- }
-
- return pcm_handle;
-}
-
snd_pcm_t *pa_alsa_open_by_device_id_auto(
const char *dev_id,
char **dev,
@@ -725,12 +395,13 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
snd_pcm_uframes_t tsched_size,
pa_bool_t *use_mmap,
pa_bool_t *use_tsched,
- const pa_alsa_profile_info **profile) {
+ pa_alsa_profile_set *ps,
+ pa_alsa_mapping **mapping) {
- int i;
- int direction = 1;
char *d;
snd_pcm_t *pcm_handle;
+ void *state;
+ pa_alsa_mapping *m;
pa_assert(dev_id);
pa_assert(dev);
@@ -738,113 +409,82 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
pa_assert(map);
pa_assert(nfrags);
pa_assert(period_size);
+ pa_assert(ps);
/* First we try to find a device string with a superset of the
- * requested channel map and open it without the plug: prefix. We
- * iterate through our device table from top to bottom and take
- * the first that matches. If we didn't find a working device that
- * way, we iterate backwards, and check all devices that do not
- * provide a superset of the requested channel map.*/
+ * requested channel map. We iterate through our device table from
+ * top to bottom and take the first that matches. If we didn't
+ * find a working device that way, we iterate backwards, and check
+ * all devices that do not provide a superset of the requested
+ * channel map.*/
- i = 0;
- for (;;) {
+ PA_HASHMAP_FOREACH(m, ps->mappings, state) {
+ if (!pa_channel_map_superset(&m->channel_map, map))
+ continue;
- if ((direction > 0) == pa_channel_map_superset(&device_table[i].map, map)) {
- pa_sample_spec try_ss;
+ pa_log_debug("Checking for superset %s (%s)", m->name, m->device_strings[0]);
- pa_log_debug("Checking for %s (%s)", device_table[i].name, device_table[i].alsa_name);
-
- try_ss.channels = device_table[i].map.channels;
- try_ss.rate = ss->rate;
- try_ss.format = ss->format;
-
- pcm_handle = open_by_device_string_with_fallback(
- device_table[i].alsa_name,
- device_table[i].alsa_name_fallback,
- dev_id,
- dev,
- &try_ss,
- map,
- mode,
- nfrags,
- period_size,
- tsched_size,
- use_mmap,
- use_tsched,
- TRUE);
-
- if (pcm_handle) {
-
- *ss = try_ss;
- *map = device_table[i].map;
- pa_assert(map->channels == ss->channels);
-
- if (profile)
- *profile = &device_table[i];
-
- return pcm_handle;
- }
+ pcm_handle = pa_alsa_open_by_device_id_mapping(
+ dev_id,
+ dev,
+ ss,
+ map,
+ mode,
+ nfrags,
+ period_size,
+ tsched_size,
+ use_mmap,
+ use_tsched,
+ m);
- }
+ if (pcm_handle) {
+ if (mapping)
+ *mapping = m;
- if (direction > 0) {
- if (!device_table[i+1].alsa_name) {
- /* OK, so we are at the end of our list. Let's turn
- * back. */
- direction = -1;
- } else {
- /* We are not at the end of the list, so let's simply
- * try the next entry */
- i++;
- }
+ return pcm_handle;
}
+ }
- if (direction < 0) {
-
- if (device_table[i+1].alsa_name &&
- device_table[i].map.channels == device_table[i+1].map.channels) {
-
- /* OK, the next entry has the same number of channels,
- * let's try it */
- i++;
+ PA_HASHMAP_FOREACH_BACKWARDS(m, ps->mappings, state) {
+ if (pa_channel_map_superset(&m->channel_map, map))
+ continue;
- } else {
- /* Hmm, so the next entry does not have the same
- * number of channels, so let's go backwards until we
- * find the next entry with a different number of
- * channels */
+ pa_log_debug("Checking for subset %s (%s)", m->name, m->device_strings[0]);
- for (i--; i >= 0; i--)
- if (device_table[i].map.channels != device_table[i+1].map.channels)
- break;
+ pcm_handle = pa_alsa_open_by_device_id_mapping(
+ dev_id,
+ dev,
+ ss,
+ map,
+ mode,
+ nfrags,
+ period_size,
+ tsched_size,
+ use_mmap,
+ use_tsched,
+ m);
- /* Hmm, there is no entry with a different number of
- * entries, then we're done */
- if (i < 0)
- break;
+ if (pcm_handle) {
+ if (mapping)
+ *mapping = m;
- /* OK, now lets find go back as long as we have the same number of channels */
- for (; i > 0; i--)
- if (device_table[i].map.channels != device_table[i-1].map.channels)
- break;
- }
+ return pcm_handle;
}
}
- /* OK, we didn't find any good device, so let's try the raw plughw: stuff */
-
+ /* OK, we didn't find any good device, so let's try the raw hw: stuff */
d = pa_sprintf_malloc("hw:%s", dev_id);
pa_log_debug("Trying %s as last resort...", d);
pcm_handle = pa_alsa_open_by_device_string(d, dev, ss, map, mode, nfrags, period_size, tsched_size, use_mmap, use_tsched, FALSE);
pa_xfree(d);
- if (pcm_handle && profile)
- *profile = NULL;
+ if (pcm_handle && mapping)
+ *mapping = NULL;
return pcm_handle;
}
-snd_pcm_t *pa_alsa_open_by_device_id_profile(
+snd_pcm_t *pa_alsa_open_by_device_id_mapping(
const char *dev_id,
char **dev,
pa_sample_spec *ss,
@@ -855,10 +495,11 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
snd_pcm_uframes_t tsched_size,
pa_bool_t *use_mmap,
pa_bool_t *use_tsched,
- const pa_alsa_profile_info *profile) {
+ pa_alsa_mapping *m) {
snd_pcm_t *pcm_handle;
pa_sample_spec try_ss;
+ pa_channel_map try_map;
pa_assert(dev_id);
pa_assert(dev);
@@ -866,19 +507,19 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
pa_assert(map);
pa_assert(nfrags);
pa_assert(period_size);
- pa_assert(profile);
+ pa_assert(m);
- try_ss.channels = profile->map.channels;
+ try_ss.channels = m->channel_map.channels;
try_ss.rate = ss->rate;
try_ss.format = ss->format;
+ try_map = m->channel_map;
- pcm_handle = open_by_device_string_with_fallback(
- profile->alsa_name,
- profile->alsa_name_fallback,
+ pcm_handle = pa_alsa_open_by_template(
+ m->device_strings,
dev_id,
dev,
&try_ss,
- map,
+ &try_map,
mode,
nfrags,
period_size,
@@ -891,7 +532,7 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
return NULL;
*ss = try_ss;
- *map = profile->map;
+ *map = try_map;
pa_assert(map->channels == ss->channels);
return pcm_handle;
@@ -924,14 +565,8 @@ snd_pcm_t *pa_alsa_open_by_device_string(
for (;;) {
pa_log_debug("Trying %s %s SND_PCM_NO_AUTO_FORMAT ...", d, reformat ? "without" : "with");
- /* We don't pass SND_PCM_NONBLOCK here, since alsa-lib <=
- * 1.0.17a would then ignore the SND_PCM_NO_xxx flags. Instead
- * we enable nonblock mode afterwards via
- * snd_pcm_nonblock(). Also see
- * http://mailman.alsa-project.org/pipermail/alsa-devel/2008-August/010258.html */
-
if ((err = snd_pcm_open(&pcm_handle, d, mode,
- /*SND_PCM_NONBLOCK|*/
+ SND_PCM_NONBLOCK|
SND_PCM_NO_AUTO_RESAMPLE|
SND_PCM_NO_AUTO_CHANNELS|
(reformat ? 0 : SND_PCM_NO_AUTO_FORMAT))) < 0) {
@@ -951,7 +586,6 @@ snd_pcm_t *pa_alsa_open_by_device_string(
}
/* Hmm, some hw is very exotic, so we retry with plug, if without it didn't work */
-
if (!pa_startswith(d, "plug:") && !pa_startswith(d, "plughw:")) {
char *t;
@@ -988,440 +622,48 @@ fail:
return NULL;
}
-int pa_alsa_probe_profiles(
+snd_pcm_t *pa_alsa_open_by_template(
+ char **template,
const char *dev_id,
- const pa_sample_spec *ss,
- void (*cb)(const pa_alsa_profile_info *sink, const pa_alsa_profile_info *source, void *userdata),
- void *userdata) {
-
- const pa_alsa_profile_info *i;
-
- pa_assert(dev_id);
- pa_assert(ss);
- pa_assert(cb);
-
- /* We try each combination of playback/capture. We also try to
- * open only for capture resp. only for sink. Don't get confused
- * by the trailing entry in device_table we use for this! */
-
- for (i = device_table; i < device_table + PA_ELEMENTSOF(device_table); i++) {
- const pa_alsa_profile_info *j;
- snd_pcm_t *pcm_i = NULL;
-
- if (i->alsa_name) {
- pa_sample_spec try_ss;
- pa_channel_map try_map;
-
- pa_log_debug("Checking for playback on %s (%s)", i->name, i->alsa_name);
-
- try_ss = *ss;
- try_ss.channels = i->map.channels;
- try_map = i->map;
-
- pcm_i = open_by_device_string_with_fallback(
- i->alsa_name,
- i->alsa_name_fallback,
- dev_id,
- NULL,
- &try_ss, &try_map,
- SND_PCM_STREAM_PLAYBACK,
- NULL, NULL, 0, NULL, NULL,
- TRUE);
-
- if (!pcm_i)
- continue;
- }
-
- for (j = device_table; j < device_table + PA_ELEMENTSOF(device_table); j++) {
- snd_pcm_t *pcm_j = NULL;
-
- if (j->alsa_name) {
- pa_sample_spec try_ss;
- pa_channel_map try_map;
-
- pa_log_debug("Checking for capture on %s (%s)", j->name, j->alsa_name);
-
- try_ss = *ss;
- try_ss.channels = j->map.channels;
- try_map = j->map;
-
- pcm_j = open_by_device_string_with_fallback(
- j->alsa_name,
- j->alsa_name_fallback,
- dev_id,
- NULL,
- &try_ss, &try_map,
- SND_PCM_STREAM_CAPTURE,
- NULL, NULL, 0, NULL, NULL,
- TRUE);
-
- if (!pcm_j)
- continue;
- }
-
- if (pcm_j)
- snd_pcm_close(pcm_j);
-
- if (i->alsa_name || j->alsa_name)
- cb(i->alsa_name ? i : NULL,
- j->alsa_name ? j : NULL, userdata);
- }
-
- if (pcm_i)
- snd_pcm_close(pcm_i);
- }
-
- return TRUE;
-}
-
-int pa_alsa_prepare_mixer(snd_mixer_t *mixer, const char *dev) {
- int err;
-
- pa_assert(mixer);
- pa_assert(dev);
-
- if ((err = snd_mixer_attach(mixer, dev)) < 0) {
- pa_log_info("Unable to attach to mixer %s: %s", dev, pa_alsa_strerror(err));
- return -1;
- }
-
- if ((err = snd_mixer_selem_register(mixer, NULL, NULL)) < 0) {
- pa_log_warn("Unable to register mixer: %s", pa_alsa_strerror(err));
- return -1;
- }
-
- if ((err = snd_mixer_load(mixer)) < 0) {
- pa_log_warn("Unable to load mixer: %s", pa_alsa_strerror(err));
- return -1;
- }
-
- pa_log_info("Successfully attached to mixer '%s'", dev);
-
- return 0;
-}
-
-static pa_bool_t elem_has_volume(snd_mixer_elem_t *elem, pa_bool_t playback) {
- pa_assert(elem);
-
- if (playback && snd_mixer_selem_has_playback_volume(elem))
- return TRUE;
-
- if (!playback && snd_mixer_selem_has_capture_volume(elem))
- return TRUE;
-
- return FALSE;
-}
-
-static pa_bool_t elem_has_switch(snd_mixer_elem_t *elem, pa_bool_t playback) {
- pa_assert(elem);
-
- if (playback && snd_mixer_selem_has_playback_switch(elem))
- return TRUE;
-
- if (!playback && snd_mixer_selem_has_capture_switch(elem))
- return TRUE;
-
- return FALSE;
-}
-
-snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name, const char *fallback, pa_bool_t playback) {
- snd_mixer_elem_t *elem = NULL, *fallback_elem = NULL;
- snd_mixer_selem_id_t *sid = NULL;
-
- snd_mixer_selem_id_alloca(&sid);
-
- pa_assert(mixer);
- pa_assert(name);
-
- snd_mixer_selem_id_set_name(sid, name);
- snd_mixer_selem_id_set_index(sid, 0);
-
- if ((elem = snd_mixer_find_selem(mixer, sid))) {
-
- if (elem_has_volume(elem, playback) &&
- elem_has_switch(elem, playback))
- goto success;
-
- if (!elem_has_volume(elem, playback) &&
- !elem_has_switch(elem, playback))
- elem = NULL;
- }
-
- pa_log_info("Cannot find mixer control \"%s\" or mixer control is no combination of switch/volume.", snd_mixer_selem_id_get_name(sid));
-
- if (fallback) {
- snd_mixer_selem_id_set_name(sid, fallback);
- snd_mixer_selem_id_set_index(sid, 0);
-
- if ((fallback_elem = snd_mixer_find_selem(mixer, sid))) {
-
- if (elem_has_volume(fallback_elem, playback) &&
- elem_has_switch(fallback_elem, playback)) {
- elem = fallback_elem;
- goto success;
- }
-
- if (!elem_has_volume(fallback_elem, playback) &&
- !elem_has_switch(fallback_elem, playback))
- fallback_elem = NULL;
- }
-
- pa_log_info("Cannot find fallback mixer control \"%s\" or mixer control is no combination of switch/volume.", snd_mixer_selem_id_get_name(sid));
- }
-
- if (elem && fallback_elem) {
-
- /* Hmm, so we have both elements, but neither has both mute
- * and volume. Let's prefer the one with the volume */
-
- if (elem_has_volume(elem, playback))
- goto success;
-
- if (elem_has_volume(fallback_elem, playback)) {
- elem = fallback_elem;
- goto success;
- }
- }
-
- if (!elem && fallback_elem)
- elem = fallback_elem;
-
-success:
-
- if (elem)
- pa_log_info("Using mixer control \"%s\".", snd_mixer_selem_id_get_name(sid));
-
- return elem;
-}
-
-int pa_alsa_find_mixer_and_elem(
- snd_pcm_t *pcm,
- char **ctl_device,
- snd_mixer_t **_m,
- snd_mixer_elem_t **_e,
- const char *control_name,
- const pa_alsa_profile_info *profile) {
-
- int err;
- snd_mixer_t *m;
- snd_mixer_elem_t *e;
- pa_bool_t found = FALSE;
- const char *dev;
-
- pa_assert(pcm);
- pa_assert(_m);
- pa_assert(_e);
-
- if (control_name && *control_name == 0) {
- pa_log_debug("Hardware mixer usage disabled because empty control name passed");
- return -1;
- }
-
- if ((err = snd_mixer_open(&m, 0)) < 0) {
- pa_log("Error opening mixer: %s", pa_alsa_strerror(err));
- return -1;
- }
-
- /* First, try by name */
- if ((dev = snd_pcm_name(pcm)))
- if (pa_alsa_prepare_mixer(m, dev) >= 0) {
- found = TRUE;
-
- if (ctl_device)
- *ctl_device = pa_xstrdup(dev);
- }
-
- /* Then, try by card index */
- if (!found) {
- snd_pcm_info_t* info;
- snd_pcm_info_alloca(&info);
-
- if (snd_pcm_info(pcm, info) >= 0) {
- char *md;
- int card_idx;
-
- if ((card_idx = snd_pcm_info_get_card(info)) >= 0) {
-
- md = pa_sprintf_malloc("hw:%i", card_idx);
-
- if (!dev || !pa_streq(dev, md))
- if (pa_alsa_prepare_mixer(m, md) >= 0) {
- found = TRUE;
-
- if (ctl_device) {
- *ctl_device = md;
- md = NULL;
- }
- }
-
- pa_xfree(md);
- }
- }
- }
-
- if (!found) {
- snd_mixer_close(m);
- return -1;
- }
-
- switch (snd_pcm_stream(pcm)) {
-
- case SND_PCM_STREAM_PLAYBACK:
- if (control_name)
- e = pa_alsa_find_elem(m, control_name, NULL, TRUE);
- else if (profile)
- e = pa_alsa_find_elem(m, profile->playback_control_name, profile->playback_control_fallback, TRUE);
- else
- e = pa_alsa_find_elem(m, "Master", "PCM", TRUE);
- break;
-
- case SND_PCM_STREAM_CAPTURE:
- if (control_name)
- e = pa_alsa_find_elem(m, control_name, NULL, FALSE);
- else if (profile)
- e = pa_alsa_find_elem(m, profile->record_control_name, profile->record_control_fallback, FALSE);
- else
- e = pa_alsa_find_elem(m, "Capture", "Mic", FALSE);
- break;
-
- default:
- pa_assert_not_reached();
- }
-
- if (!e) {
- if (ctl_device)
- pa_xfree(*ctl_device);
-
- snd_mixer_close(m);
- return -1;
- }
-
- pa_assert(e && m);
-
- *_m = m;
- *_e = e;
-
- return 0;
-}
-
-static const snd_mixer_selem_channel_id_t alsa_channel_ids[PA_CHANNEL_POSITION_MAX] = {
- [PA_CHANNEL_POSITION_MONO] = SND_MIXER_SCHN_MONO, /* The ALSA name is just an alias! */
-
- [PA_CHANNEL_POSITION_FRONT_CENTER] = SND_MIXER_SCHN_FRONT_CENTER,
- [PA_CHANNEL_POSITION_FRONT_LEFT] = SND_MIXER_SCHN_FRONT_LEFT,
- [PA_CHANNEL_POSITION_FRONT_RIGHT] = SND_MIXER_SCHN_FRONT_RIGHT,
-
- [PA_CHANNEL_POSITION_REAR_CENTER] = SND_MIXER_SCHN_REAR_CENTER,
- [PA_CHANNEL_POSITION_REAR_LEFT] = SND_MIXER_SCHN_REAR_LEFT,
- [PA_CHANNEL_POSITION_REAR_RIGHT] = SND_MIXER_SCHN_REAR_RIGHT,
-
- [PA_CHANNEL_POSITION_LFE] = SND_MIXER_SCHN_WOOFER,
-
- [PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER] = SND_MIXER_SCHN_UNKNOWN,
-
- [PA_CHANNEL_POSITION_SIDE_LEFT] = SND_MIXER_SCHN_SIDE_LEFT,
- [PA_CHANNEL_POSITION_SIDE_RIGHT] = SND_MIXER_SCHN_SIDE_RIGHT,
-
- [PA_CHANNEL_POSITION_AUX0] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX1] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX2] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX3] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX4] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX5] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX6] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX7] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX8] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX9] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX10] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX11] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX12] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX13] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX14] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX15] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX16] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX17] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX18] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX19] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX20] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX21] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX22] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX23] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX24] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX25] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX26] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX27] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX28] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX29] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX30] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_AUX31] = SND_MIXER_SCHN_UNKNOWN,
-
- [PA_CHANNEL_POSITION_TOP_CENTER] = SND_MIXER_SCHN_UNKNOWN,
-
- [PA_CHANNEL_POSITION_TOP_FRONT_CENTER] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_TOP_FRONT_LEFT] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_TOP_FRONT_RIGHT] = SND_MIXER_SCHN_UNKNOWN,
-
- [PA_CHANNEL_POSITION_TOP_REAR_CENTER] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_TOP_REAR_LEFT] = SND_MIXER_SCHN_UNKNOWN,
- [PA_CHANNEL_POSITION_TOP_REAR_RIGHT] = SND_MIXER_SCHN_UNKNOWN
-};
-
-
-int pa_alsa_calc_mixer_map(snd_mixer_elem_t *elem, const pa_channel_map *channel_map, snd_mixer_selem_channel_id_t mixer_map[], pa_bool_t playback) {
- unsigned i;
- pa_bool_t alsa_channel_used[SND_MIXER_SCHN_LAST];
- pa_bool_t mono_used = FALSE;
-
- pa_assert(elem);
- pa_assert(channel_map);
- pa_assert(mixer_map);
-
- memset(&alsa_channel_used, 0, sizeof(alsa_channel_used));
-
- if (channel_map->channels > 1 &&
- ((playback && snd_mixer_selem_has_playback_volume_joined(elem)) ||
- (!playback && snd_mixer_selem_has_capture_volume_joined(elem)))) {
- pa_log_info("ALSA device lacks independant volume controls for each channel.");
- return -1;
- }
+ char **dev,
+ pa_sample_spec *ss,
+ pa_channel_map* map,
+ int mode,
+ uint32_t *nfrags,
+ snd_pcm_uframes_t *period_size,
+ snd_pcm_uframes_t tsched_size,
+ pa_bool_t *use_mmap,
+ pa_bool_t *use_tsched,
+ pa_bool_t require_exact_channel_number) {
- for (i = 0; i < channel_map->channels; i++) {
- snd_mixer_selem_channel_id_t id;
- pa_bool_t is_mono;
+ snd_pcm_t *pcm_handle;
+ char **i;
- is_mono = channel_map->map[i] == PA_CHANNEL_POSITION_MONO;
- id = alsa_channel_ids[channel_map->map[i]];
+ for (i = template; *i; i++) {
+ char *d;
- if (!is_mono && id == SND_MIXER_SCHN_UNKNOWN) {
- pa_log_info("Configured channel map contains channel '%s' that is unknown to the ALSA mixer.", pa_channel_position_to_string(channel_map->map[i]));
- return -1;
- }
+ d = pa_replace(*i, "%f", dev_id);
- if ((is_mono && mono_used) || (!is_mono && alsa_channel_used[id])) {
- pa_log_info("Channel map has duplicate channel '%s', falling back to software volume control.", pa_channel_position_to_string(channel_map->map[i]));
- return -1;
- }
-
- if ((playback && (!snd_mixer_selem_has_playback_channel(elem, id) || (is_mono && !snd_mixer_selem_is_playback_mono(elem)))) ||
- (!playback && (!snd_mixer_selem_has_capture_channel(elem, id) || (is_mono && !snd_mixer_selem_is_capture_mono(elem))))) {
+ pcm_handle = pa_alsa_open_by_device_string(
+ d,
+ dev,
+ ss,
+ map,
+ mode,
+ nfrags,
+ period_size,
+ tsched_size,
+ use_mmap,
+ use_tsched,
+ require_exact_channel_number);
- pa_log_info("ALSA device lacks separate volumes control for channel '%s'", pa_channel_position_to_string(channel_map->map[i]));
- return -1;
- }
+ pa_xfree(d);
- if (is_mono) {
- mixer_map[i] = SND_MIXER_SCHN_MONO;
- mono_used = TRUE;
- } else {
- mixer_map[i] = id;
- alsa_channel_used[id] = TRUE;
- }
+ if (pcm_handle)
+ return pcm_handle;
}
- pa_log_info("All %u channels can be mapped to mixer channels.", channel_map->channels);
-
- return 0;
+ return NULL;
}
void pa_alsa_dump(pa_log_level_t level, snd_pcm_t *pcm) {
@@ -1447,24 +689,33 @@ void pa_alsa_dump_status(snd_pcm_t *pcm) {
int err;
snd_output_t *out;
snd_pcm_status_t *status;
+ char *s = NULL;
pa_assert(pcm);
snd_pcm_status_alloca(&status);
- pa_assert_se(snd_output_buffer_open(&out) == 0);
+ if ((err = snd_output_buffer_open(&out)) < 0) {
+ pa_log_debug("snd_output_buffer_open() failed: %s", pa_cstrerror(err));
+ return;
+ }
- pa_assert_se(snd_pcm_status(pcm, status) == 0);
+ if ((err = snd_pcm_status(pcm, status)) < 0) {
+ pa_log_debug("snd_pcm_status() failed: %s", pa_cstrerror(err));
+ goto finish;
+ }
- if ((err = snd_pcm_status_dump(status, out)) < 0)
+ if ((err = snd_pcm_status_dump(status, out)) < 0) {
pa_log_debug("snd_pcm_dump(): %s", pa_alsa_strerror(err));
- else {
- char *s = NULL;
- snd_output_buffer_string(out, &s);
- pa_log_debug("snd_pcm_dump():\n%s", pa_strnull(s));
+ goto finish;
}
- pa_assert_se(snd_output_close(out) == 0);
+ snd_output_buffer_string(out, &s);
+ pa_log_debug("snd_pcm_dump():\n%s", pa_strnull(s));
+
+finish:
+
+ snd_output_close(out);
}
static void alsa_error_handler(const char *file, int line, const char *function, int err, const char *fmt,...) {
@@ -1484,38 +735,43 @@ static void alsa_error_handler(const char *file, int line, const char *function,
static pa_atomic_t n_error_handler_installed = PA_ATOMIC_INIT(0);
-void pa_alsa_redirect_errors_inc(void) {
+void pa_alsa_refcnt_inc(void) {
/* This is not really thread safe, but we do our best */
if (pa_atomic_inc(&n_error_handler_installed) == 0)
snd_lib_error_set_handler(alsa_error_handler);
}
-void pa_alsa_redirect_errors_dec(void) {
+void pa_alsa_refcnt_dec(void) {
int r;
pa_assert_se((r = pa_atomic_dec(&n_error_handler_installed)) >= 1);
- if (r == 1)
+ if (r == 1) {
snd_lib_error_set_handler(NULL);
+ snd_config_update_free_global();
+ }
}
pa_bool_t pa_alsa_init_description(pa_proplist *p) {
- const char *s;
+ const char *d, *k;
pa_assert(p);
if (pa_device_init_description(p))
return TRUE;
- if ((s = pa_proplist_gets(p, "alsa.card_name"))) {
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
- return TRUE;
- }
+ if (!(d = pa_proplist_gets(p, "alsa.card_name")))
+ d = pa_proplist_gets(p, "alsa.name");
- if ((s = pa_proplist_gets(p, "alsa.name"))) {
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
- return TRUE;
- }
+ if (!d)
+ return FALSE;
+
+ k = pa_proplist_gets(p, PA_PROP_DEVICE_PROFILE_DESCRIPTION);
+
+ if (d && k)
+ pa_proplist_setf(p, PA_PROP_DEVICE_DESCRIPTION, _("%s %s"), d, k);
+ else if (d)
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, d);
return FALSE;
}
@@ -1544,7 +800,7 @@ void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card) {
}
#ifdef HAVE_UDEV
- pa_udev_get_info(c, p, card);
+ pa_udev_get_info(card, p);
#endif
#ifdef HAVE_HAL
@@ -1581,16 +837,14 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
pa_proplist_sets(p, PA_PROP_DEVICE_API, "alsa");
- class = snd_pcm_info_get_class(pcm_info);
- if (class <= SND_PCM_CLASS_LAST) {
+ if ((class = snd_pcm_info_get_class(pcm_info)) <= SND_PCM_CLASS_LAST) {
if (class_table[class])
pa_proplist_sets(p, PA_PROP_DEVICE_CLASS, class_table[class]);
if (alsa_class_table[class])
pa_proplist_sets(p, "alsa.class", alsa_class_table[class]);
}
- subclass = snd_pcm_info_get_subclass(pcm_info);
- if (subclass <= SND_PCM_SUBCLASS_LAST)
+ if ((subclass = snd_pcm_info_get_subclass(pcm_info)) <= SND_PCM_SUBCLASS_LAST)
if (alsa_subclass_table[subclass])
pa_proplist_sets(p, "alsa.subclass", alsa_subclass_table[subclass]);
@@ -1610,7 +864,7 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
pa_alsa_init_proplist_card(c, p, card);
}
-void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_mixer_elem_t *elem) {
+void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm) {
snd_pcm_hw_params_t *hwparams;
snd_pcm_info_t *info;
int bits, err;
@@ -1626,9 +880,6 @@ void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_m
pa_proplist_setf(p, "alsa.resolution_bits", "%i", bits);
}
- if (elem)
- pa_proplist_sets(p, "alsa.mixer_element", snd_mixer_selem_get_name(elem));
-
if ((err = snd_pcm_info(pcm, info)) < 0)
pa_log_warn("Error fetching PCM info: %s", pa_alsa_strerror(err));
else
@@ -1656,10 +907,10 @@ void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name) {
return;
}
- if ((t = snd_ctl_card_info_get_mixername(info)))
+ if ((t = snd_ctl_card_info_get_mixername(info)) && *t)
pa_proplist_sets(p, "alsa.mixer_name", t);
- if ((t = snd_ctl_card_info_get_components(info)))
+ if ((t = snd_ctl_card_info_get_components(info)) && *t)
pa_proplist_sets(p, "alsa.components", t);
snd_ctl_close(ctl);
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 27f43712..830a922e 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -30,105 +30,97 @@
#include <pulse/mainloop-api.h>
#include <pulse/channelmap.h>
#include <pulse/proplist.h>
+#include <pulse/volume.h>
+#include <pulsecore/llist.h>
#include <pulsecore/rtpoll.h>
#include <pulsecore/core.h>
#include <pulsecore/log.h>
-typedef struct pa_alsa_fdlist pa_alsa_fdlist;
-
-struct pa_alsa_fdlist *pa_alsa_fdlist_new(void);
-void pa_alsa_fdlist_free(struct pa_alsa_fdlist *fdl);
-int pa_alsa_fdlist_set_mixer(struct pa_alsa_fdlist *fdl, snd_mixer_t *mixer_handle, pa_mainloop_api* m);
+#include "alsa-mixer.h"
int pa_alsa_set_hw_params(
snd_pcm_t *pcm_handle,
- pa_sample_spec *ss,
- uint32_t *periods,
- snd_pcm_uframes_t *period_size,
+ pa_sample_spec *ss, /* modified at return */
+ uint32_t *periods, /* modified at return */
+ snd_pcm_uframes_t *period_size, /* modified at return */
snd_pcm_uframes_t tsched_size,
- pa_bool_t *use_mmap,
- pa_bool_t *use_tsched,
+ pa_bool_t *use_mmap, /* modified at return */
+ pa_bool_t *use_tsched, /* modified at return */
pa_bool_t require_exact_channel_number);
-int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min);
-
-typedef struct pa_alsa_profile_info {
- pa_channel_map map;
- const char *alsa_name;
- const char *alsa_name_fallback;
- const char *description; /* internationalized */
- const char *name;
- unsigned priority;
- const char *playback_control_name, *playback_control_fallback;
- const char *record_control_name, *record_control_fallback;
-} pa_alsa_profile_info;
-
-int pa_alsa_prepare_mixer(snd_mixer_t *mixer, const char *dev);
-snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name, const char *fallback, pa_bool_t playback);
-int pa_alsa_find_mixer_and_elem(snd_pcm_t *pcm, char **ctl_device, snd_mixer_t **_m, snd_mixer_elem_t **_e, const char *control_name, const pa_alsa_profile_info*profile);
+int pa_alsa_set_sw_params(
+ snd_pcm_t *pcm,
+ snd_pcm_uframes_t avail_min);
-void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name);
-
-/* Picks a working profile based on the specified ss/map */
+/* Picks a working mapping from the profile set based on the specified ss/map */
snd_pcm_t *pa_alsa_open_by_device_id_auto(
const char *dev_id,
- char **dev,
- pa_sample_spec *ss,
- pa_channel_map* map,
+ char **dev, /* modified at return */
+ pa_sample_spec *ss, /* modified at return */
+ pa_channel_map* map, /* modified at return */
int mode,
- uint32_t *nfrags,
- snd_pcm_uframes_t *period_size,
+ uint32_t *nfrags, /* modified at return */
+ snd_pcm_uframes_t *period_size, /* modified at return */
snd_pcm_uframes_t tsched_size,
- pa_bool_t *use_mmap,
- pa_bool_t *use_tsched,
- const pa_alsa_profile_info **profile);
+ pa_bool_t *use_mmap, /* modified at return */
+ pa_bool_t *use_tsched, /* modified at return */
+ pa_alsa_profile_set *ps,
+ pa_alsa_mapping **mapping); /* modified at return */
-/* Uses the specified profile */
-snd_pcm_t *pa_alsa_open_by_device_id_profile(
+/* Uses the specified mapping */
+snd_pcm_t *pa_alsa_open_by_device_id_mapping(
const char *dev_id,
- char **dev,
- pa_sample_spec *ss,
- pa_channel_map* map,
+ char **dev, /* modified at return */
+ pa_sample_spec *ss, /* modified at return */
+ pa_channel_map* map, /* modified at return */
int mode,
- uint32_t *nfrags,
- snd_pcm_uframes_t *period_size,
+ uint32_t *nfrags, /* modified at return */
+ snd_pcm_uframes_t *period_size, /* modified at return */
snd_pcm_uframes_t tsched_size,
- pa_bool_t *use_mmap,
- pa_bool_t *use_tsched,
- const pa_alsa_profile_info *profile);
+ pa_bool_t *use_mmap, /* modified at return */
+ pa_bool_t *use_tsched, /* modified at return */
+ pa_alsa_mapping *mapping);
/* Opens the explicit ALSA device */
snd_pcm_t *pa_alsa_open_by_device_string(
- const char *device,
- char **dev,
- pa_sample_spec *ss,
- pa_channel_map* map,
+ const char *dir,
+ char **dev, /* modified at return */
+ pa_sample_spec *ss, /* modified at return */
+ pa_channel_map* map, /* modified at return */
int mode,
- uint32_t *nfrags,
- snd_pcm_uframes_t *period_size,
+ uint32_t *nfrags, /* modified at return */
+ snd_pcm_uframes_t *period_size, /* modified at return */
snd_pcm_uframes_t tsched_size,
- pa_bool_t *use_mmap,
- pa_bool_t *use_tsched,
+ pa_bool_t *use_mmap, /* modified at return */
+ pa_bool_t *use_tsched, /* modified at return */
pa_bool_t require_exact_channel_number);
-int pa_alsa_probe_profiles(
+/* Opens the explicit ALSA device with a fallback list */
+snd_pcm_t *pa_alsa_open_by_template(
+ char **template,
const char *dev_id,
- const pa_sample_spec *ss,
- void (*cb)(const pa_alsa_profile_info *sink, const pa_alsa_profile_info *source, void *userdata),
- void *userdata);
-
-int pa_alsa_calc_mixer_map(snd_mixer_elem_t *elem, const pa_channel_map *channel_map, snd_mixer_selem_channel_id_t mixer_map[], pa_bool_t playback);
+ char **dev, /* modified at return */
+ pa_sample_spec *ss, /* modified at return */
+ pa_channel_map* map, /* modified at return */
+ int mode,
+ uint32_t *nfrags, /* modified at return */
+ snd_pcm_uframes_t *period_size, /* modified at return */
+ snd_pcm_uframes_t tsched_size,
+ pa_bool_t *use_mmap, /* modified at return */
+ pa_bool_t *use_tsched, /* modified at return */
+ pa_bool_t require_exact_channel_number);
void pa_alsa_dump(pa_log_level_t level, snd_pcm_t *pcm);
void pa_alsa_dump_status(snd_pcm_t *pcm);
-void pa_alsa_redirect_errors_inc(void);
-void pa_alsa_redirect_errors_dec(void);
+void pa_alsa_refcnt_inc(void);
+void pa_alsa_refcnt_dec(void);
void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *pcm_info);
void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card);
-void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_mixer_elem_t *elem);
+void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm);
+void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name);
pa_bool_t pa_alsa_init_description(pa_proplist *p);
int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents);
@@ -140,13 +132,11 @@ int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delay, size_t hwbuf_si
int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas, snd_pcm_uframes_t *offset, snd_pcm_uframes_t *frames, size_t hwbuf_size, const pa_sample_spec *ss);
char *pa_alsa_get_driver_name(int card);
-
char *pa_alsa_get_driver_name_by_pcm(snd_pcm_t *pcm);
char *pa_alsa_get_reserve_name(const char *device);
pa_bool_t pa_alsa_pcm_is_hw(snd_pcm_t *pcm);
-
pa_bool_t pa_alsa_pcm_is_modem(snd_pcm_t *pcm);
const char* pa_alsa_strerror(int errnum);
diff --git a/src/modules/alsa/mixer/paths/analog-input-aux.conf b/src/modules/alsa/mixer/paths/analog-input-aux.conf
new file mode 100644
index 00000000..db78eb48
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-aux.conf
@@ -0,0 +1,62 @@
+# 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
+# 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.
+
+; For devices where an 'Aux' element exists
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 90
+name = analog-input
+
+[Element Capture]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+switch = off
+volume = off
+
+[Element Line]
+switch = off
+volume = off
+
+[Element Aux]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Video]
+switch = off
+volume = off
+
+[Element Mic/Line]
+switch = off
+volume = off
+
+[Element TV Tuner]
+switch = off
+volume = off
+
+[Element FM]
+switch = off
+volume = off
+
+.include analog-input.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input-fm.conf b/src/modules/alsa/mixer/paths/analog-input-fm.conf
new file mode 100644
index 00000000..baf674aa
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-fm.conf
@@ -0,0 +1,62 @@
+# 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
+# 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.
+
+; For devices where an 'FM' element exists
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 70
+name = analog-input-radio
+
+[Element Capture]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+switch = off
+volume = off
+
+[Element Line]
+switch = off
+volume = off
+
+[Element Aux]
+switch = off
+volume = off
+
+[Element Video]
+switch = off
+volume = off
+
+[Element Mic/Line]
+switch = off
+volume = off
+
+[Element TV Tuner]
+switch = off
+volume = off
+
+[Element FM]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+.include analog-input.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input-linein.conf b/src/modules/alsa/mixer/paths/analog-input-linein.conf
new file mode 100644
index 00000000..4be5722d
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-linein.conf
@@ -0,0 +1,61 @@
+# 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
+# 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.
+
+; For devices where a 'Line' element exists
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 90
+
+[Element Capture]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+switch = off
+volume = off
+
+[Element Line]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Aux]
+switch = off
+volume = off
+
+[Element Video]
+switch = off
+volume = off
+
+[Element Mic/Line]
+switch = off
+volume = off
+
+[Element TV Tuner]
+switch = off
+volume = off
+
+[Element FM]
+switch = off
+volume = off
+
+.include analog-input.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input-mic-line.conf b/src/modules/alsa/mixer/paths/analog-input-mic-line.conf
new file mode 100644
index 00000000..f7f30854
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-mic-line.conf
@@ -0,0 +1,63 @@
+# 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
+# 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.
+
+; For devices where a 'Mic/Line' element exists
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 90
+name = analog-input
+
+[Element Capture]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+switch = off
+volume = off
+
+[Element Line]
+switch = off
+volume = off
+
+[Element Aux]
+switch = off
+volume = off
+
+[Element Video]
+switch = off
+volume = off
+
+[Element Mic/Line]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element TV Tuner]
+switch = off
+volume = off
+
+[Element FM]
+switch = off
+volume = off
+
+.include analog-input.conf.common
+.include analog-input-mic.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input-mic.conf b/src/modules/alsa/mixer/paths/analog-input-mic.conf
new file mode 100644
index 00000000..2a36f2f3
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-mic.conf
@@ -0,0 +1,63 @@
+# 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
+# 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.
+
+; For devices where a 'Mic' element exists
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 100
+name = analog-input-microphone
+
+[Element Capture]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Line]
+switch = off
+volume = off
+
+[Element Aux]
+switch = off
+volume = off
+
+[Element Video]
+switch = off
+volume = off
+
+[Element Mic/Line]
+switch = off
+volume = off
+
+[Element TV Tuner]
+switch = off
+volume = off
+
+[Element FM]
+switch = off
+volume = off
+
+.include analog-input.conf.common
+.include analog-input-mic.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input-mic.conf.common b/src/modules/alsa/mixer/paths/analog-input-mic.conf.common
new file mode 100644
index 00000000..b35e7af8
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-mic.conf.common
@@ -0,0 +1,63 @@
+# 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
+# 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.
+
+; Common element for all microphone inputs
+;
+; See analog-output.conf.common for an explanation on the directives
+
+;;; 'Mic Select'
+
+[Element Mic Select]
+enumeration = select
+
+[Option Mic Select:Mic1]
+name = input-microphone
+priority = 20
+
+[Option Mic Select:Mic2]
+name = input-microphone
+priority = 19
+
+;;; Various Boosts
+
+[Element Mic Boost (+20dB)]
+switch = select
+volume = merge
+
+[Option Mic Boost (+20dB):on]
+name = input-boost-on
+
+[Option Mic Boost (+20dB):off]
+name = input-boost-off
+
+[Element Mic Boost]
+switch = select
+volume = merge
+
+[Option Mic Boost:on]
+name = input-boost-on
+
+[Option Mic Boost:off]
+name = input-boost-off
+
+[Element Front Mic Boost]
+switch = select
+
+[Option Front Mic Boost:on]
+name = input-boost-on
+
+[Option Front Mic Boost:off]
+name = input-boost-off
diff --git a/src/modules/alsa/mixer/paths/analog-input-tvtuner.conf b/src/modules/alsa/mixer/paths/analog-input-tvtuner.conf
new file mode 100644
index 00000000..8531ec70
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-tvtuner.conf
@@ -0,0 +1,62 @@
+# 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
+# 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.
+
+; For devices where a 'TV Tuner' element exists
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 70
+name = analog-input-video
+
+[Element Capture]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+switch = off
+volume = off
+
+[Element Line]
+switch = off
+volume = off
+
+[Element Aux]
+switch = off
+volume = off
+
+[Element Video]
+switch = off
+volume = off
+
+[Element Mic/Line]
+switch = off
+volume = off
+
+[Element TV Tuner]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element FM]
+switch = off
+volume = off
+
+.include analog-input.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input-video.conf b/src/modules/alsa/mixer/paths/analog-input-video.conf
new file mode 100644
index 00000000..74c76f07
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input-video.conf
@@ -0,0 +1,61 @@
+# 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
+# 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.
+
+; For devices where a 'Video' element exists
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 70
+
+[Element Capture]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+switch = off
+volume = off
+
+[Element Line]
+switch = off
+volume = off
+
+[Element Aux]
+switch = off
+volume = off
+
+[Element Video]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic/Line]
+switch = off
+volume = off
+
+[Element TV Tuner]
+switch = off
+volume = off
+
+[Element FM]
+switch = off
+volume = off
+
+.include analog-input.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input.conf b/src/modules/alsa/mixer/paths/analog-input.conf
new file mode 100644
index 00000000..5055f90a
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input.conf
@@ -0,0 +1,54 @@
+# 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
+# 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.
+
+; A fallback for devices that lack seperate Mic/Line/Aux/Video/TV
+; Tuner/FM elements
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 100
+
+[Element Capture]
+required = volume
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Mic]
+required-absent = any
+
+[Element Line]
+required-absent = any
+
+[Element Aux]
+required-absent = any
+
+[Element Video]
+required-absent = any
+
+[Element Mic/Line]
+required-absent = any
+
+[Element TV Tuner]
+required-absent = any
+
+[Element FM]
+required-absent = any
+
+.include analog-input.conf.common
+.include analog-input-mic.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-input.conf.common b/src/modules/alsa/mixer/paths/analog-input.conf.common
new file mode 100644
index 00000000..6728a6ae
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-input.conf.common
@@ -0,0 +1,257 @@
+# 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
+# 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.
+
+; Mixer path for PulseAudio's ALSA backend, common elements for all
+; input paths. If multiple options by the same id are discovered they
+; will be suffixed with a number to distuingish them, in the same
+; order they appear here.
+;
+; Source selection should use the following names:
+;
+; input -- If we don't know the exact kind of input
+; input-microphone
+; input-microphone-internal
+; input-microphone-external
+; input-linein
+; input-video
+; input-radio
+; input-docking-microphone
+; input-docking-linein
+; input-docking
+;
+; We explicitly don't want to wrap the following sources:
+;
+; CD
+; Synth/MIDI
+; Phone
+; Mix
+; Digital/SPDIF
+; Master
+; PC Speaker
+;
+; See analog-output.conf.common for an explanation on the directives
+
+;;; 'Input Source Select'
+
+[Element Input Source Select]
+enumeration = select
+
+[Option Input Source Select:Input1]
+name = input
+priority = 10
+
+[Option Input Source Select:Input2]
+name = input
+priority = 5
+
+;;; 'Input Source'
+
+[Element Input Source]
+enumeration = select
+
+[Option Input Source:Mic]
+name = input-microphone
+priority = 20
+
+[Option Input Source:Microphone]
+name = input-microphone
+priority = 20
+
+[Option Input Source:Front Mic]
+name = input-microphone
+priority = 19
+
+[Option Input Source:Front Microphone]
+name = input-microphone
+priority = 19
+
+[Option Input Source:Line]
+name = input-linein
+priority = 18
+
+[Option Input Source:Line-In]
+name = input-linein
+priority = 18
+
+[Option Input Source:Line In]
+name = input-linein
+priority = 18
+
+;;; ' Capture Source'
+
+[Element Capture Source]
+enumeration = select
+
+[Option Capture Source:TV Tuner]
+name = input-video
+
+[Option Capture Source:FM]
+name = input-radio
+
+[Option Capture Source:Mic/Line]
+name = input
+
+[Option Capture Source:Line/Mic]
+name = input
+
+[Option Capture Source:Mic]
+name = input-microphone
+
+[Option Capture Source:Microphone]
+name = input-microphone
+
+[Option Capture Source:Int Mic]
+name = input-microphone-internal
+
+[Option Capture Source:Int DMic]
+name = input-microphone-internal
+
+[Option Capture Source:Internal Mic]
+name = input-microphone-internal
+
+[Option Capture Source:iMic]
+name = input-microphone-internal
+
+[Option Capture Source:i-Mic]
+name = input-microphone-internal
+
+[Option Capture Source:Internal Microphone]
+name = input-microphone-internal
+
+[Option Capture Source:Front Mic]
+name = input-microphone
+
+[Option Capture Source:Front Microphone]
+name = input-microphone
+
+[Option Capture Source:Rear Mic]
+name = input-microphone
+
+[Option Capture Source:Mic1]
+name = input-microphone
+
+[Option Capture Source:Mic2]
+name = input-microphone
+
+[Option Capture Source:D-Mic]
+name = input-microphone
+
+[Option Capture Source:IntMic]
+name = input-microphone-internal
+
+[Option Capture Source:ExtMic]
+name = input-microphone-external
+
+[Option Capture Source:Ext Mic]
+name = input-microphone-external
+
+[Option Capture Source:E-Mic]
+name = input-microphone-external
+
+[Option Capture Source:e-Mic]
+name = input-microphone-external
+
+[Option Capture Source:LineIn]
+name = input-linein
+
+[Option Capture Source:Analog]
+name = input
+
+[Option Capture Source:Line]
+name = input-linein
+
+[Option Capture Source:Line-In]
+name = input-linein
+
+[Option Capture Source:Line In]
+name = input-linein
+
+[Option Capture Source:Video]
+name = input-video
+
+[Option Capture Source:Aux]
+name = input
+
+[Option Capture Source:Aux0]
+name = input
+
+[Option Capture Source:Aux1]
+name = input
+
+[Option Capture Source:Aux2]
+name = input
+
+[Option Capture Source:Aux3]
+name = input
+
+[Option Capture Source:AUX IN]
+name = input
+
+[Option Capture Source:Aux In]
+name = input
+
+[Option Capture Source:AOUT]
+name = input
+
+[Option Capture Source:AUX]
+name = input
+
+[Option Capture Source:Cam Mic]
+name = input-microphone
+
+[Option Capture Source:Digital Mic]
+name = input-microphone
+
+[Option Capture Source:Digital Mic 1]
+name = input-microphone
+
+[Option Capture Source:Digital Mic 2]
+name = input-microphone
+
+[Option Capture Source:Analog Inputs]
+name = input
+
+[Option Capture Source:Unknown1]
+name = input
+
+[Option Capture Source:Unknown2]
+name = input
+
+[Option Capture Source:Docking-Station]
+name = input-docking
+
+[Option Capture Source:Dock Mic]
+name = input-docking-microphone
+
+;;; Various Boosts
+
+[Element Capture Boost]
+switch = select
+
+[Option Capture Boost:on]
+name = input-boost-on
+
+[Option Capture Boost:off]
+name = input-boost-off
+
+[Element Auto Gain Control]
+switch = select
+
+[Option Auto Gain Control:on]
+name = input-agc-on
+
+[Option Auto Gain Control:off]
+name = input-agc-off
diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf
new file mode 100644
index 00000000..c018e0eb
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf
@@ -0,0 +1,71 @@
+# 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
+# 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.
+
+; Path for mixers that have a 'Headphone' control
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 90
+
+[Element Hardware Master]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Master]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Master Mono]
+switch = off
+volume = off
+
+[Element Headphone]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Front]
+switch = off
+volume = off
+
+[Element Rear]
+switch = off
+volume = off
+
+[Element Sourround]
+switch = off
+volume = off
+
+[Element Side]
+switch = off
+volume = off
+
+[Element Center]
+switch = off
+volume = off
+
+[Element LFE]
+switch = off
+volume = off
+
+.include analog-output.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf b/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf
new file mode 100644
index 00000000..7a267890
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf
@@ -0,0 +1,72 @@
+# 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
+# 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.
+
+; Intended for usage in laptops that have a seperate LFE speaker
+; connected to the Master mono connector
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 40
+
+[Element Hardware Master]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Master]
+switch = mute
+volume = merge
+override-map.1 = all-no-lfe
+override-map.2 = all-left,all-right
+
+[Element Master Mono]
+required = any
+switch = mute
+volume = merge
+override-map.1 = lfe
+override-map.2 = lfe,lfe
+
+[Element Headphone]
+switch = off
+volume = off
+
+[Element Front]
+switch = off
+volume = off
+
+[Element Rear]
+switch = off
+volume = off
+
+[Element Sourround]
+switch = off
+volume = off
+
+[Element Side]
+switch = off
+volume = off
+
+[Element Center]
+switch = off
+volume = off
+
+[Element LFE]
+switch = off
+volume = off
+
+.include analog-output.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-output-mono.conf b/src/modules/alsa/mixer/paths/analog-output-mono.conf
new file mode 100644
index 00000000..f6cb9f8a
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-output-mono.conf
@@ -0,0 +1,69 @@
+# 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
+# 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.
+
+; Intended for usage on boards that have a seperate Mono output plug.
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 50
+
+[Element Hardware Master]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Master]
+switch = off
+volume = off
+
+[Element Master Mono]
+required = any
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Headphone]
+switch = off
+volume = off
+
+[Element Front]
+switch = off
+volume = off
+
+[Element Rear]
+switch = off
+volume = off
+
+[Element Sourround]
+switch = off
+volume = off
+
+[Element Side]
+switch = off
+volume = off
+
+[Element Center]
+switch = off
+volume = off
+
+[Element LFE]
+switch = off
+volume = off
+
+.include analog-output.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-output.conf b/src/modules/alsa/mixer/paths/analog-output.conf
new file mode 100644
index 00000000..ea108aaf
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-output.conf
@@ -0,0 +1,80 @@
+# 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
+# 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.
+
+; Intended for the 'default' output
+;
+; See analog-output.conf.common for an explanation on the directives
+
+[General]
+priority = 100
+
+[Element Hardware Master]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Master]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element Master Mono]
+switch = off
+volume = off
+
+[Element Headphone]
+switch = off
+volume = off
+
+[Element Front]
+switch = mute
+volume = merge
+override-map.1 = all-front
+override-map.2 = front-left,front-right
+
+[Element Rear]
+switch = mute
+volume = merge
+override-map.1 = all-rear
+override-map.2 = rear-left,rear-right
+
+[Element Surround]
+switch = mute
+volume = merge
+override-map.1 = all-rear
+override-map.2 = rear-left,rear-right
+
+[Element Side]
+switch = mute
+volume = merge
+override-map.1 = all-side
+override-map.2 = side-left,side-right
+
+[Element Center]
+switch = mute
+volume = merge
+override-map.1 = all-center
+override-map.2 = all-center,all-center
+
+[Element LFE]
+switch = mute
+volume = merge
+override-map.1 = lfe
+override-map.2 = lfe,lfe
+
+.include analog-output.conf.common
diff --git a/src/modules/alsa/mixer/paths/analog-output.conf.common b/src/modules/alsa/mixer/paths/analog-output.conf.common
new file mode 100644
index 00000000..cc1185f4
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/analog-output.conf.common
@@ -0,0 +1,111 @@
+# 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
+# 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.
+
+; Common part of all paths
+
+; So here's generally how mixer paths are used by PA: PA goes through
+; a mixer path file from top to bottom and checks if a mixer element
+; described therein exists. If so it is added to the list of mixer
+; elements PA will control, keeping the order it read them in. If a
+; mixer element described here has set the required= or
+; required-absent= directives a path might not be accepted as valid
+; and is ignored in its entirety (see below). However usually if a
+; element listed here is missing this one element is ignored but not
+; the entire path.
+;
+; When a device shall be muted/unmuted *all* elements listed in a path
+; file with "switch = mute" will be toggled.
+;
+; When a device shall change its volume, PA will got through the list
+; of all elements with "volume = merge" and set the volume on the
+; first element. If that element does not support dB volumes, this is
+; where the story ends. If it does support dB volumes, PA divides the
+; requested volume by the volume that was set on this element, and
+; then go on to the next element with "volume = merge" and then set
+; that there, and so on. That way the first volume element in the
+; path will be the one that does the 'biggest' part of the overall
+; volume adjustment, with the remaining elements usually being set to
+; some value next to 0dB. This logic makes sure we get the full range
+; over all volume sliders and a very high granularity of volumes
+; already in hardware.
+;
+; All switches and enumerations set to "select" are exposed via the
+; "port" functionality of sinks/sources. Basically every possible
+; switch setting and every possible enumeration setting will be
+; combined and made into a "port". So make sure you don't list too
+; many switches/enums for exposing, because the number of ports might
+; rise exponentially.
+;
+; Only one path can be selected at a time. All paths that are valid
+; for an audio device will be exposed as "port" for the sink/source.
+
+
+; [General]
+; priority = ... # Priority for this path
+; description = ...
+;
+; [Option ...:...] # For each option of an enumeration or switch element
+; # that shall be exposed as a sink/source port. Needs to
+; # be named after the Element, followed by a colon, followed
+; # by the option name, resp. on/off if the element is a switch.
+; name = ... # Logical name to use in the path identifier
+; priority = ... # Priority if this is made into a device port
+;
+; [Element ...] # For each element that we shall control
+; required = ignore | switch | volume | enumeration | any # If set, require this element to be of this kind and available,
+; # otherwise don't consider this path valid for the card
+; required-absent = ignore | switch | volume # If set, require this element to not be of this kind and not
+; # available, otherwise don't consider this path valid for the card
+;
+; switch = ignore | mute | off | on | select # What to do with this switch: ignore it, make it follow mute status,
+; # always set it to off, always to on, or make it selectable as port.
+; # If set to 'select' you need to define an Option section for on
+; # and off
+; volume = ignore | merge | off | zero # What to do with this volume: ignore it, merge it into the device
+; # volume slider, always set it to the lowest value possible, or always
+; # set it to 0 dB (for whatever that means)
+; enumeration = ignore | select # What to do with this enumeration, ignore it or make it selectable
+; # via device ports. If set to 'select' you need to define an Option section
+; # for each of the items you want to expose
+; direction = playback | capture # Is this relevant only for playback or capture? If not set this will implicitly be
+; # set the direction of the PCM device is opened as. Generally this doesn't need to be set
+; # unless you have a broken driver that has playback controls marked for capture or vice
+; # versa
+; direction-try-other = no | yes # If the element does not supported what is requested, try the other direction, too?
+;
+; override-map.1 = ... # Override the channel mask of the mixer control if the control only exposes a single channel
+; override-map.2 = ... # Override the channel masks of the mixer control if the control only exposes two channels
+; # Override maps should list for each element channel which high-level channels it controls via a
+; # channel mask. A channel mask may either be the name of a single channel, or the words "all-left",
+; # "all-right", "all-center", "all-front", "all-rear", and "all" to encode a specific subset of
+; # channels in a mask
+
+[Element PCM]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
+
+[Element External Amplifier]
+switch = select
+
+[Option External Amplifier:on]
+name = output-amplifier-on
+priority = 0
+
+[Option External Amplifier:off]
+name = output-amplifier-off
+priority = 10
diff --git a/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules b/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules
new file mode 100644
index 00000000..ea1a2fed
--- /dev/null
+++ b/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules
@@ -0,0 +1,26 @@
+# do not edit this file, it will be overwritten on update
+
+# 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
+# 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.
+
+SUBSYSTEM!="sound", GOTO="pulseaudio_end"
+ACTION!="change", GOTO="pulseaudio_end"
+KERNEL!="card*", GOTO="pulseaudio_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1978", ENV{PULSE_PROFILE_SET}="native-instruments-audio8dj.conf"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="0839", ENV{PULSE_PROFILE_SET}="native-instruments-audio4dj.conf"
+
+LABEL="pulseaudio_end"
diff --git a/src/modules/alsa/mixer/profile-sets/default.conf b/src/modules/alsa/mixer/profile-sets/default.conf
new file mode 100644
index 00000000..ac41a8d3
--- /dev/null
+++ b/src/modules/alsa/mixer/profile-sets/default.conf
@@ -0,0 +1,144 @@
+# 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
+# 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.
+
+; Default profile definitions for the ALSA backend of PulseAudio. This
+; is used as fallback for all cards that have no special mapping
+; assigned. (and should be good enough for the vast majority of
+; cards). Use the udev property PULSE_PROFILE_SET to assign a
+; different profile set than this one to a device. So what is this
+; about? Simply, what we do here is map ALSA devices to how they are
+; exposed in PA. We say which ALSA device string to use to open a
+; device, which channel mapping to use then, and which mixer path to
+; use. This is encoded in a 'mapping'. Multiple of these mappings can
+; be bound together in a 'profile' which is then directly exposed in
+; the UI as a card profile. Each mapping assigned to a profile will
+; result in one sink/source to be created if the profile is selected
+; for the card.
+
+; [General]
+; auto-profiles = no | yes # Instead of defining all profiles manually, autogenerate
+; # them by combining every input mapping with every output mapping.
+;
+; [Mapping id]
+; device-strings = ... # ALSA device string. %f will be replaced by the card identifier.
+; channel-map = ... # Channel mapping to use for this device
+; description = ...
+; paths-input = ... # A list of mixer paths to use. Every path in this list will be probed.
+; # If multiple are found to be working they will be available as device ports
+; paths-output = ...
+; element-input = ... # Instead of configuring a full mixer path simply configure a single
+; # mixer element for volume/mute handling
+; element-output = ...
+; priority = ...
+; direction = any | input | output # Only useful for?
+;
+; [Profile id]
+; input-mappings = ... # Lists mappings for sources on this profile, those mapping must be
+; # defined in this file too
+; output-mappings = ... # Lists mappings for sinks on this profile, those mappings must be
+; # defined in this file too
+; description = ...
+; priority = ... # Numeric value to deduce priority for this profile
+; skip-probe = no | yes # Skip probing for availability? If this is yes then this profile
+; # will be assumed as working without probing. Makes initialization
+; # a bit faster but only works if the card is really known well.
+
+[General]
+auto-profiles = yes
+
+[Mapping analog-mono]
+device-strings = hw:%f
+channel-map = mono
+paths-output = analog-output analog-output-headphones analog-output-mono analog-output-lfe-on-mono
+paths-input = analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line
+priority = 1
+
+[Mapping analog-stereo]
+device-strings = front:%f hw:%f
+channel-map = left,right
+paths-output = analog-output analog-output-headphones analog-output-mono analog-output-lfe-on-mono
+paths-input = analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line
+priority = 10
+
+[Mapping analog-surround-40]
+device-strings = surround40:%f
+channel-map = front-left,front-right,rear-left,rear-right
+paths-output = analog-output analog-output-lfe-on-mono
+priority = 7
+direction = output
+
+[Mapping analog-surround-41]
+device-strings = surround41:%f
+channel-map = front-left,front-right,rear-left,rear-right,lfe
+paths-output = analog-output analog-output-lfe-on-mono
+priority = 8
+direction = output
+
+[Mapping analog-surround-50]
+device-strings = surround50:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center
+paths-output = analog-output analog-output-lfe-on-mono
+priority = 7
+direction = output
+
+[Mapping analog-surround-51]
+device-strings = surround51:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+paths-output = analog-output analog-output-lfe-on-mono
+priority = 8
+direction = output
+
+[Mapping analog-surround-71]
+device-strings = surround71:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+description = Analog Surround 7.1
+paths-output = analog-output analog-output-lfe-on-mono
+priority = 7
+direction = output
+
+[Mapping iec958-stereo]
+device-strings = iec958:%f
+channel-map = left,right
+priority = 5
+
+[Mapping iec958-surround-40]
+device-strings = iec958:%f
+channel-map = front-left,front-right,rear-left,rear-right
+priority = 1
+
+[Mapping iec958-ac3-surround-40]
+device-strings = a52:%f
+channel-map = front-left,front-right,rear-left,rear-right
+priority = 2
+direction = output
+
+[Mapping iec958-ac3-surround-51]
+device-strings = a52:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 3
+direction = output
+
+[Mapping hdmi-stereo]
+device-strings = hdmi:%f
+channel-map = left,right
+priority = 4
+direction = output
+
+; An example for defining multiple-sink profiles
+#[Profile output:analog-stereo+output:iec958-stereo+input:analog-stereo]
+#description = Foobar
+#output-mappings = analog-stereo iec958-stereo
+#input-mappings = analog-stereo
diff --git a/src/modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf b/src/modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf
new file mode 100644
index 00000000..2b835308
--- /dev/null
+++ b/src/modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf
@@ -0,0 +1,91 @@
+# 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
+# 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.
+
+; Native Instruments Audio 4 DJ
+;
+; This card has two stereo pairs of input and two stereo pairs of
+; output, named channels A and B. Channel B has an additional
+; Headphone connector.
+;
+; We knowingly only define a subset of the theoretically possible
+; mapping combinations as profiles here.
+;
+; See default.conf for an explanation on the directives used here.
+
+[General]
+auto-profiles = no
+
+[Mapping analog-stereo-a]
+description = Analog Stereo Channel A
+device-strings = hw:%f,0,0
+channel-map = left,right
+
+[Mapping analog-stereo-b-output]
+description = Analog Stereo Channel B (Headphones)
+device-strings = hw:%f,0,1
+channel-map = left,right
+direction = output
+
+[Mapping analog-stereo-b-input]
+description = Analog Stereo Channel B
+device-strings = hw:%f,0,1
+channel-map = left,right
+direction = input
+
+[Profile output:analog-stereo-all+input:analog-stereo-all]
+description = Analog Stereo Duplex Channels A, B (Headphones)
+output-mappings = analog-stereo-a analog-stereo-b-output
+input-mappings = analog-stereo-a analog-stereo-b-input
+priority = 100
+skip-probe = yes
+
+[Profile output:analog-stereo-a+input:analog-stereo-a]
+description = Analog Stereo Duplex Channel A
+output-mappings = analog-stereo-a
+input-mappings = analog-stereo-a
+priority = 40
+skip-probe = yes
+
+[Profile output:analog-stereo-b+input:analog-stereo-b]
+description = Analog Stereo Duplex Channel B (Headphones)
+output-mappings = analog-stereo-b-output
+input-mappings = analog-stereo-b-input
+priority = 50
+skip-probe = yes
+
+[Profile output:analog-stereo-a]
+description = Analog Stereo Output Channel A
+output-mappings = analog-stereo-a
+priority = 5
+skip-probe = yes
+
+[Profile output:analog-stereo-b]
+description = Analog Stereo Output Channel B (Headphones)
+output-mappings = analog-stereo-b-output
+priority = 6
+skip-probe = yes
+
+[Profile input:analog-stereo-a]
+description = Analog Stereo Input Channel A
+input-mappings = analog-stereo-a
+priority = 2
+skip-probe = yes
+
+[Profile input:analog-stereo-b]
+description = Analog Stereo Input Channel B
+input-mappings = analog-stereo-b-input
+priority = 1
+skip-probe = yes
diff --git a/src/modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf b/src/modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf
new file mode 100644
index 00000000..3fe3cc56
--- /dev/null
+++ b/src/modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf
@@ -0,0 +1,162 @@
+# 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
+# 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.
+
+; Native Instruments Audio 8 DJ
+;
+; This card has four stereo pairs of input and four stereo pairs of
+; output, named channels A to D. Channel C has an additional Mic/Line
+; connector, channel D an additional Headphone connector.
+;
+; We knowingly only define a subset of the theoretically possible
+; mapping combinations as profiles here.
+;
+; See default.conf for an explanation on the directives used here.
+
+[General]
+auto-profiles = no
+
+[Mapping analog-stereo-a]
+description = Analog Stereo Channel A
+device-strings = hw:%f,0,0
+channel-map = left,right
+
+[Mapping analog-stereo-b]
+description = Analog Stereo Channel B
+device-strings = hw:%f,0,1
+channel-map = left,right
+
+# Since we want to set a different description for channel C's/D's input
+# and output we define two seperate mappings for them
+[Mapping analog-stereo-c-output]
+description = Analog Stereo Channel C
+device-strings = hw:%f,0,2
+channel-map = left,right
+direction = output
+
+[Mapping analog-stereo-c-input]
+description = Analog Stereo Channel C (Line/Mic)
+device-strings = hw:%f,0,2
+channel-map = left,right
+direction = input
+
+[Mapping analog-stereo-d-output]
+description = Analog Stereo Channel D (Headphones)
+device-strings = hw:%f,0,3
+channel-map = left,right
+direction = output
+
+[Mapping analog-stereo-d-input]
+description = Analog Stereo Channel D
+device-strings = hw:%f,0,3
+channel-map = left,right
+direction = input
+
+[Profile output:analog-stereo-all+input:analog-stereo-all]
+description = Analog Stereo Duplex Channels A, B, C (Line/Mic), D (Headphones)
+output-mappings = analog-stereo-a analog-stereo-b analog-stereo-c-output analog-stereo-d-output
+input-mappings = analog-stereo-a analog-stereo-b analog-stereo-c-input analog-stereo-d-input
+priority = 100
+skip-probe = yes
+
+[Profile output:analog-stereo-d+input:analog-stereo-c]
+description = Analog Stereo Channel D (Headphones) Output, Channel C (Line/Mic) Input
+output-mappings = analog-stereo-d-output
+input-mappings = analog-stereo-c-input
+priority = 90
+skip-probe = yes
+
+[Profile output:analog-stereo-c-d+input:analog-stereo-c-d]
+description = Analog Stereo Duplex Channels C (Line/Mic), D (Line/Mic)
+output-mappings = analog-stereo-c-output analog-stereo-d-output
+input-mappings = analog-stereo-c-input analog-stereo-d-input
+priority = 80
+skip-probe = yes
+
+[Profile output:analog-stereo-a+input:analog-stereo-a]
+description = Analog Stereo Duplex Channel A
+output-mappings = analog-stereo-a
+input-mappings = analog-stereo-a
+priority = 50
+skip-probe = yes
+
+[Profile output:analog-stereo-b+input:analog-stereo-b]
+description = Analog Stereo Duplex Channel B
+output-mappings = analog-stereo-b
+input-mappings = analog-stereo-b
+priority = 40
+skip-probe = yes
+
+[Profile output:analog-stereo-c+input:analog-stereo-c]
+description = Analog Stereo Duplex Channel C (Line/Mic)
+output-mappings = analog-stereo-c-output
+input-mappings = analog-stereo-c-input
+priority = 60
+skip-probe = yes
+
+[Profile output:analog-stereo-d+input:analog-stereo-d]
+description = Analog Stereo Duplex Channel D (Headphones)
+output-mappings = analog-stereo-d-output
+input-mappings = analog-stereo-d-input
+priority = 70
+skip-probe = yes
+
+[Profile output:analog-stereo-a]
+description = Analog Stereo Output Channel A
+output-mappings = analog-stereo-a
+priority = 6
+skip-probe = yes
+
+[Profile output:analog-stereo-b]
+description = Analog Stereo Output Channel B
+output-mappings = analog-stereo-b
+priority = 5
+skip-probe = yes
+
+[Profile output:analog-stereo-c]
+description = Analog Stereo Output Channel C
+output-mappings = analog-stereo-c-output
+priority = 7
+skip-probe = yes
+
+[Profile output:analog-stereo-d]
+description = Analog Stereo Output Channel D (Headphones)
+output-mappings = analog-stereo-d-output
+priority = 8
+skip-probe = yes
+
+[Profile input:analog-stereo-a]
+description = Analog Stereo Input Channel A
+input-mappings = analog-stereo-a
+priority = 2
+skip-probe = yes
+
+[Profile input:analog-stereo-b]
+description = Analog Stereo Input Channel B
+input-mappings = analog-stereo-b
+priority = 1
+skip-probe = yes
+
+[Profile input:analog-stereo-c]
+description = Analog Stereo Input Channel C (Line/Mic)
+input-mappings = analog-stereo-c-input
+priority = 4
+skip-probe = yes
+
+[Profile input:analog-stereo-d]
+description = Analog Stereo Input Channel D
+input-mappings = analog-stereo-d-input
+priority = 3
+skip-probe = yes
diff --git a/src/modules/alsa/mixer/samples/ATI IXP--Realtek ALC655 rev 0 b/src/modules/alsa/mixer/samples/ATI IXP--Realtek ALC655 rev 0
new file mode 100644
index 00000000..082c9a1b
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/ATI IXP--Realtek ALC655 rev 0
@@ -0,0 +1,150 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 29 [94%] [-3.00dB] [on]
+ Front Right: Playback 29 [94%] [-3.00dB] [on]
+Simple mixer control 'Master Mono',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 23 [74%] [0.00dB] [on]
+ Front Right: Playback 23 [74%] [0.00dB] [on]
+Simple mixer control 'Surround',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-46.50dB] [off]
+ Front Right: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Surround Jack Mode',0
+ Capabilities: enum
+ Items: 'Shared' 'Independent'
+ Item0: 'Shared'
+Simple mixer control 'Center',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'LFE',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Line',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'CD',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-34.50dB] [off]
+ Front Left: Capture [on]
+ Front Right: Capture [on]
+Simple mixer control 'Mic Boost (+20dB)',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'Mic Select',0
+ Capabilities: enum
+ Items: 'Mic1' 'Mic2'
+ Item0: 'Mic1'
+Simple mixer control 'Video',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Phone',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 31 [100%] [12.00dB] [off]
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'IEC958',0
+ Capabilities: pswitch pswitch-joined cswitch cswitch-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Mono: Playback [off] Capture [off]
+Simple mixer control 'IEC958 Playback AC97-SPSA',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 3
+ Mono: 0 [0%]
+Simple mixer control 'IEC958 Playback Source',0
+ Capabilities: enum
+ Items: 'PCM' 'Analog In' 'IEC958 In'
+ Item0: 'PCM'
+Simple mixer control 'PC Speaker',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 15
+ Mono: Playback 0 [0%] [-45.00dB] [on]
+Simple mixer control 'Aux',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [on] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [on] Capture [off]
+Simple mixer control 'Mono Output Select',0
+ Capabilities: enum
+ Items: 'Mix' 'Mic'
+ Item0: 'Mix'
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cswitch cswitch-joined
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 15
+ Front Left: Capture 12 [80%] [18.00dB] [on]
+ Front Right: Capture 12 [80%] [18.00dB] [on]
+Simple mixer control 'Mix',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Mix Mono',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Channel Mode',0
+ Capabilities: enum
+ Items: '2ch' '4ch' '6ch'
+ Item0: '2ch'
+Simple mixer control 'Duplicate Front',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'External Amplifier',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
diff --git a/src/modules/alsa/mixer/samples/Brooktree Bt878--Bt87x b/src/modules/alsa/mixer/samples/Brooktree Bt878--Bt87x
new file mode 100644
index 00000000..b8f61fab
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/Brooktree Bt878--Bt87x
@@ -0,0 +1,24 @@
+Simple mixer control 'FM',0
+ Capabilities: cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Mono
+ Mono: Capture [off]
+Simple mixer control 'Mic/Line',0
+ Capabilities: cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Mono
+ Mono: Capture [off]
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cvolume-joined
+ Capture channels: Mono
+ Limits: Capture 0 - 15
+ Mono: Capture 13 [87%]
+Simple mixer control 'Capture Boost',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
+Simple mixer control 'TV Tuner',0
+ Capabilities: cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Mono
+ Mono: Capture [on]
diff --git a/src/modules/alsa/mixer/samples/Ensoniq AudioPCI--Cirrus Logic CS4297A rev 3 b/src/modules/alsa/mixer/samples/Ensoniq AudioPCI--Cirrus Logic CS4297A rev 3
new file mode 100644
index 00000000..a500a817
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/Ensoniq AudioPCI--Cirrus Logic CS4297A rev 3
@@ -0,0 +1,135 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 63
+ Mono:
+ Front Left: Playback 63 [100%] [0.00dB] [on]
+ Front Right: Playback 63 [100%] [0.00dB] [on]
+Simple mixer control 'Master Mono',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Headphone',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-46.50dB] [off]
+ Front Right: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control '3D Control - Center',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 15
+ Mono: 0 [0%]
+Simple mixer control '3D Control - Depth',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 15
+ Mono: 0 [0%]
+Simple mixer control '3D Control - Switch',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 23 [74%] [0.00dB] [on]
+ Front Right: Playback 23 [74%] [0.00dB] [on]
+Simple mixer control 'Line',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [on]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [on]
+Simple mixer control 'CD',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 23 [74%] [0.00dB] [on]
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Mic Boost (+20dB)',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'Mic Select',0
+ Capabilities: enum
+ Items: 'Mic1' 'Mic2'
+ Item0: 'Mic1'
+Simple mixer control 'Video',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Phone',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-34.50dB] [off]
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'IEC958',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'PC Speaker',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 15
+ Mono: Playback 0 [0%] [-45.00dB] [off]
+Simple mixer control 'Aux',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Mono Output Select',0
+ Capabilities: enum
+ Items: 'Mix' 'Mic'
+ Item0: 'Mic'
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cswitch cswitch-joined
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 15
+ Front Left: Capture 15 [100%] [22.50dB] [on]
+ Front Right: Capture 15 [100%] [22.50dB] [on]
+Simple mixer control 'Mix',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Mix Mono',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'External Amplifier',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
diff --git a/src/modules/alsa/mixer/samples/HDA ATI HDMI--ATI R6xx HDMI b/src/modules/alsa/mixer/samples/HDA ATI HDMI--ATI R6xx HDMI
new file mode 100644
index 00000000..244f24a8
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/HDA ATI HDMI--ATI R6xx HDMI
@@ -0,0 +1,4 @@
+Simple mixer control 'IEC958',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
diff --git a/src/modules/alsa/mixer/samples/HDA Intel--Analog Devices AD1981 b/src/modules/alsa/mixer/samples/HDA Intel--Analog Devices AD1981
new file mode 100644
index 00000000..165522fa
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/HDA Intel--Analog Devices AD1981
@@ -0,0 +1,62 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 63
+ Mono:
+ Front Left: Playback 63 [100%] [3.00dB] [on]
+ Front Right: Playback 63 [100%] [3.00dB] [on]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 23 [74%] [0.00dB] [on]
+ Front Right: Playback 23 [74%] [0.00dB] [on]
+Simple mixer control 'CD',0
+ Capabilities: pvolume pswitch cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Capture [off]
+ Front Left: Playback 0 [0%] [-34.50dB] [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pswitch cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Capture [on]
+ Front Left: Playback 0 [0%] [-34.50dB] [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off]
+Simple mixer control 'Mic Boost',0
+ Capabilities: volume
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: 0 - 3
+ Front Left: 0 [0%]
+ Front Right: 0 [0%]
+Simple mixer control 'IEC958',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 Default PCM',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 Playback Source',0
+ Capabilities: enum
+ Items: 'PCM' 'ADC'
+ Item0: 'PCM'
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cswitch
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 15
+ Front Left: Capture 0 [0%] [0.00dB] [on]
+ Front Right: Capture 0 [0%] [0.00dB] [on]
+Simple mixer control 'Mix',0
+ Capabilities: cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Mono
+ Mono: Capture [off]
diff --git a/src/modules/alsa/mixer/samples/HDA Intel--Realtek ALC889A b/src/modules/alsa/mixer/samples/HDA Intel--Realtek ALC889A
new file mode 100644
index 00000000..28a2e73c
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/HDA Intel--Realtek ALC889A
@@ -0,0 +1,113 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 64
+ Mono: Playback 64 [100%] [0.00dB] [on]
+Simple mixer control 'Headphone',0
+ Capabilities: pswitch
+ Playback channels: Front Left - Front Right
+ Mono:
+ Front Left: Playback [on]
+ Front Right: Playback [on]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 255
+ Mono:
+ Front Left: Playback 255 [100%] [0.00dB]
+ Front Right: Playback 255 [100%] [0.00dB]
+Simple mixer control 'Front',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 64
+ Mono:
+ Front Left: Playback 44 [69%] [-20.00dB] [on]
+ Front Right: Playback 44 [69%] [-20.00dB] [on]
+Simple mixer control 'Front Mic',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-34.50dB] [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off]
+Simple mixer control 'Front Mic Boost',0
+ Capabilities: volume
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: 0 - 3
+ Front Left: 0 [0%]
+ Front Right: 0 [0%]
+Simple mixer control 'Surround',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 64
+ Mono:
+ Front Left: Playback 0 [0%] [-64.00dB] [on]
+ Front Right: Playback 0 [0%] [-64.00dB] [on]
+Simple mixer control 'Center',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 64
+ Mono: Playback 0 [0%] [-64.00dB] [on]
+Simple mixer control 'LFE',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 64
+ Mono: Playback 0 [0%] [-64.00dB] [on]
+Simple mixer control 'Side',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 64
+ Mono:
+ Front Left: Playback 0 [0%] [-64.00dB] [on]
+ Front Right: Playback 0 [0%] [-64.00dB] [on]
+Simple mixer control 'Line',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-34.50dB] [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-34.50dB] [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off]
+Simple mixer control 'Mic Boost',0
+ Capabilities: volume
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: 0 - 3
+ Front Left: 0 [0%]
+ Front Right: 0 [0%]
+Simple mixer control 'IEC958',0
+ Capabilities: pswitch pswitch-joined cswitch cswitch-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Mono: Playback [on] Capture [on]
+Simple mixer control 'IEC958 Default PCM',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cswitch
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 46
+ Front Left: Capture 23 [50%] [7.00dB] [on]
+ Front Right: Capture 23 [50%] [7.00dB] [on]
+Simple mixer control 'Capture',1
+ Capabilities: cvolume cswitch
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 46
+ Front Left: Capture 0 [0%] [-16.00dB] [off]
+ Front Right: Capture 0 [0%] [-16.00dB] [off]
+Simple mixer control 'Input Source',0
+ Capabilities: cenum
+ Items: 'Mic' 'Front Mic' 'Line'
+ Item0: 'Mic'
+Simple mixer control 'Input Source',1
+ Capabilities: cenum
+ Items: 'Mic' 'Front Mic' 'Line'
+ Item0: 'Mic'
diff --git a/src/modules/alsa/mixer/samples/Intel 82801CA-ICH3--Analog Devices AD1881A b/src/modules/alsa/mixer/samples/Intel 82801CA-ICH3--Analog Devices AD1881A
new file mode 100644
index 00000000..3ddd8af6
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/Intel 82801CA-ICH3--Analog Devices AD1881A
@@ -0,0 +1,128 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 63
+ Mono:
+ Front Left: Playback 44 [70%] [-28.50dB] [on]
+ Front Right: Playback 60 [95%] [-4.50dB] [on]
+Simple mixer control 'Master Mono',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 17 [55%] [-21.00dB] [on]
+Simple mixer control '3D Control - Center',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 15
+ Mono: 0 [0%]
+Simple mixer control '3D Control - Depth',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 15
+ Mono: 0 [0%]
+Simple mixer control '3D Control - Switch',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 9 [29%] [-21.00dB] [on]
+ Front Right: Playback 9 [29%] [-21.00dB] [on]
+Simple mixer control 'PCM Out Path & Mute',0
+ Capabilities: enum
+ Items: 'pre 3D' 'post 3D'
+ Item0: 'pre 3D'
+Simple mixer control 'Line',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'CD',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 9 [29%] [-21.00dB] [on] Capture [off]
+ Front Right: Playback 9 [29%] [-21.00dB] [on] Capture [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-34.50dB] [off]
+ Front Left: Capture [on]
+ Front Right: Capture [on]
+Simple mixer control 'Mic Boost (+20dB)',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'Mic Select',0
+ Capabilities: enum
+ Items: 'Mic1' 'Mic2'
+ Item0: 'Mic1'
+Simple mixer control 'Video',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Phone',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-34.50dB] [off]
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'PC Speaker',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 15
+ Mono: Playback 8 [53%] [-21.00dB] [on]
+Simple mixer control 'Aux',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Mono Output Select',0
+ Capabilities: enum
+ Items: 'Mix' 'Mic'
+ Item0: 'Mix'
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cswitch cswitch-joined
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 15
+ Front Left: Capture 13 [87%] [19.50dB] [on]
+ Front Right: Capture 13 [87%] [19.50dB] [on]
+Simple mixer control 'Mix',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Mix Mono',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'External Amplifier',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
diff --git a/src/modules/alsa/mixer/samples/Logitech USB Speaker--USB Mixer b/src/modules/alsa/mixer/samples/Logitech USB Speaker--USB Mixer
new file mode 100644
index 00000000..38cf6778
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/Logitech USB Speaker--USB Mixer
@@ -0,0 +1,27 @@
+Simple mixer control 'Bass',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 48
+ Mono: 22 [46%]
+Simple mixer control 'Bass Boost',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'Treble',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 48
+ Mono: 25 [52%]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 44
+ Mono:
+ Front Left: Playback 10 [23%] [-31.00dB] [on]
+ Front Right: Playback 10 [23%] [-31.00dB] [on]
+Simple mixer control 'Auto Gain Control',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
diff --git a/src/modules/alsa/mixer/samples/USB Audio--USB Mixer b/src/modules/alsa/mixer/samples/USB Audio--USB Mixer
new file mode 100644
index 00000000..9cb4fa7f
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/USB Audio--USB Mixer
@@ -0,0 +1,37 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 255
+ Mono: Playback 105 [41%] [-28.97dB] [on]
+Simple mixer control 'Line',0
+ Capabilities: pvolume cvolume pswitch pswitch-joined cswitch cswitch-joined
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 255 Capture 0 - 128
+ Front Left: Playback 191 [75%] [34.38dB] [off] Capture 0 [0%] [0.18dB] [off]
+ Front Right: Playback 191 [75%] [34.38dB] [off] Capture 0 [0%] [0.18dB] [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: Playback 0 - 255 Capture 0 - 128
+ Mono: Playback 191 [75%] [34.38dB] [off] Capture 0 [0%] [0.18dB] [on]
+Simple mixer control 'Mic Capture',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 In',0
+ Capabilities: cswitch cswitch-joined
+ Capture channels: Mono
+ Mono: Capture [off]
+Simple mixer control 'Input 1',0
+ Capabilities: cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Mono
+ Mono: Capture [off]
+Simple mixer control 'Input 2',0
+ Capabilities: cswitch cswitch-joined cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Mono
+ Mono: Capture [off]
diff --git a/src/modules/alsa/mixer/samples/USB Device 0x46d:0x9a4--USB Mixer b/src/modules/alsa/mixer/samples/USB Device 0x46d:0x9a4--USB Mixer
new file mode 100644
index 00000000..783f826f
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/USB Device 0x46d:0x9a4--USB Mixer
@@ -0,0 +1,5 @@
+Simple mixer control 'Mic',0
+ Capabilities: cvolume cvolume-joined cswitch cswitch-joined
+ Capture channels: Mono
+ Limits: Capture 0 - 3072
+ Mono: Capture 1536 [50%] [23.00dB] [on]
diff --git a/src/modules/alsa/mixer/samples/VIA 8237--Analog Devices AD1888 b/src/modules/alsa/mixer/samples/VIA 8237--Analog Devices AD1888
new file mode 100644
index 00000000..15e7b5a6
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/VIA 8237--Analog Devices AD1888
@@ -0,0 +1,211 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 31 [100%] [0.00dB] [on]
+ Front Right: Playback 31 [100%] [0.00dB] [on]
+Simple mixer control 'Master Mono',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Master Surround',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-46.50dB] [off]
+ Front Right: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Headphone Jack Sense',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 23 [74%] [0.00dB] [on]
+ Front Right: Playback 23 [74%] [0.00dB] [on]
+Simple mixer control 'Surround',0
+ Capabilities: pvolume pswitch
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-46.50dB] [off]
+ Front Right: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Surround Jack Mode',0
+ Capabilities: enum
+ Items: 'Shared' 'Independent'
+ Item0: 'Shared'
+Simple mixer control 'Center',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 31 [100%] [0.00dB] [off]
+Simple mixer control 'LFE',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Line',0
+ Capabilities: pvolume pswitch cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Line Jack Sense',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'CD',0
+ Capabilities: pvolume pswitch cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-34.50dB] [off]
+ Front Left: Capture [on]
+ Front Right: Capture [on]
+Simple mixer control 'Mic Boost (+20dB)',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'Mic Select',0
+ Capabilities: enum
+ Items: 'Mic1' 'Mic2'
+ Item0: 'Mic1'
+Simple mixer control 'Video',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Phone',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Mono
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-34.50dB] [off]
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'IEC958',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 Output',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 Playback AC97-SPSA',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 3
+ Mono: 3 [100%]
+Simple mixer control 'IEC958 Playback Source',0
+ Capabilities: enum
+ Items: 'AC-Link' 'A/D Converter'
+ Item0: 'AC-Link'
+Simple mixer control 'Aux',0
+ Capabilities: pvolume pswitch cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cswitch
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 15
+ Front Left: Capture 0 [0%] [0.00dB] [on]
+ Front Right: Capture 0 [0%] [0.00dB] [on]
+Simple mixer control 'Mix',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Mix Mono',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Channel Mode',0
+ Capabilities: enum
+ Items: '2ch' '4ch' '6ch'
+ Item0: '2ch'
+Simple mixer control 'Downmix',0
+ Capabilities: enum
+ Items: 'Off' '6 -> 4' '6 -> 2'
+ Item0: 'Off'
+Simple mixer control 'Exchange Front/Surround',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'External Amplifier',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
+Simple mixer control 'High Pass Filter Enable',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'Input Source Select',0
+ Capabilities: enum
+ Items: 'Input1' 'Input2'
+ Item0: 'Input1'
+Simple mixer control 'Input Source Select',1
+ Capabilities: enum
+ Items: 'Input1' 'Input2'
+ Item0: 'Input1'
+Simple mixer control 'Spread Front to Surround and Center/LFE',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'VIA DXS',0
+ Capabilities: pvolume
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 31 [100%] [-48.00dB]
+ Front Right: Playback 31 [100%] [-48.00dB]
+Simple mixer control 'VIA DXS',1
+ Capabilities: pvolume
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 31 [100%] [-48.00dB]
+ Front Right: Playback 31 [100%] [-48.00dB]
+Simple mixer control 'VIA DXS',2
+ Capabilities: pvolume
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 31 [100%] [-48.00dB]
+ Front Right: Playback 31 [100%] [-48.00dB]
+Simple mixer control 'VIA DXS',3
+ Capabilities: pvolume
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 31 [100%] [-48.00dB]
+ Front Right: Playback 31 [100%] [-48.00dB]
+Simple mixer control 'V_REFOUT Enable',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
diff --git a/src/modules/alsa/mixer/samples/VIA 8237--C-Media Electronics CMI9761A+ b/src/modules/alsa/mixer/samples/VIA 8237--C-Media Electronics CMI9761A+
new file mode 100644
index 00000000..d4f3db62
--- /dev/null
+++ b/src/modules/alsa/mixer/samples/VIA 8237--C-Media Electronics CMI9761A+
@@ -0,0 +1,160 @@
+Simple mixer control 'Master',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 0 [0%] [-46.50dB] [off]
+ Front Right: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'PCM',0
+ Capabilities: pvolume pswitch pswitch-joined
+ Playback channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Mono:
+ Front Left: Playback 31 [100%] [-48.00dB] [off]
+ Front Right: Playback 31 [100%] [-48.00dB] [off]
+Simple mixer control 'Surround',0
+ Capabilities: pswitch
+ Playback channels: Front Left - Front Right
+ Mono:
+ Front Left: Playback [off]
+ Front Right: Playback [off]
+Simple mixer control 'Surround Jack Mode',0
+ Capabilities: enum
+ Items: 'Shared' 'Independent'
+ Item0: 'Shared'
+Simple mixer control 'Center',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 31 [100%] [0.00dB] [off]
+Simple mixer control 'LFE',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 31
+ Mono: Playback 0 [0%] [-46.50dB] [off]
+Simple mixer control 'Line',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'CD',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Mic',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [on]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [on]
+Simple mixer control 'Mic Boost (+20dB)',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'Mic Select',0
+ Capabilities: enum
+ Items: 'Mic1' 'Mic2'
+ Item0: 'Mic1'
+Simple mixer control 'Video',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Phone',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'IEC958',0
+ Capabilities: pswitch pswitch-joined cswitch cswitch-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Mono: Playback [off] Capture [off]
+Simple mixer control 'IEC958 Capture Monitor',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 Capture Valid',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 Output',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [off]
+Simple mixer control 'IEC958 Playback AC97-SPSA',0
+ Capabilities: volume volume-joined
+ Playback channels: Mono
+ Capture channels: Mono
+ Limits: 0 - 3
+ Mono: 3 [100%]
+Simple mixer control 'IEC958 Playback Source',0
+ Capabilities: enum
+ Items: 'AC-Link' 'ADC' 'SPDIF-In'
+ Item0: 'AC-Link'
+Simple mixer control 'PC Speaker',0
+ Capabilities: pvolume pvolume-joined pswitch pswitch-joined
+ Playback channels: Mono
+ Limits: Playback 0 - 15
+ Mono: Playback 0 [0%] [-45.00dB] [off]
+Simple mixer control 'Aux',0
+ Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Playback channels: Front Left - Front Right
+ Capture channels: Front Left - Front Right
+ Limits: Playback 0 - 31
+ Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+ Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
+Simple mixer control 'Mono Output Select',0
+ Capabilities: enum
+ Items: 'Mix' 'Mic'
+ Item0: 'Mix'
+Simple mixer control 'Capture',0
+ Capabilities: cvolume cswitch cswitch-joined
+ Capture channels: Front Left - Front Right
+ Limits: Capture 0 - 15
+ Front Left: Capture 0 [0%] [0.00dB] [on]
+ Front Right: Capture 0 [0%] [0.00dB] [on]
+Simple mixer control 'Mix',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Mix Mono',0
+ Capabilities: cswitch cswitch-exclusive
+ Capture exclusive group: 0
+ Capture channels: Front Left - Front Right
+ Front Left: Capture [off]
+ Front Right: Capture [off]
+Simple mixer control 'Channel Mode',0
+ Capabilities: enum
+ Items: '2ch' '4ch' '6ch'
+ Item0: '2ch'
+Simple mixer control 'DAC Clock Source',0
+ Capabilities: enum
+ Items: 'AC-Link' 'SPDIF-In' 'Both'
+ Item0: 'AC-Link'
+Simple mixer control 'External Amplifier',0
+ Capabilities: pswitch pswitch-joined
+ Playback channels: Mono
+ Mono: Playback [on]
+Simple mixer control 'Input Source Select',0
+ Capabilities: enum
+ Items: 'Input1' 'Input2'
+ Item0: 'Input1'
+Simple mixer control 'Input Source Select',1
+ Capabilities: enum
+ Items: 'Input1' 'Input2'
+ Item0: 'Input1'
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index ad52f5e3..55f6a6e2 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -32,6 +32,10 @@
#include <modules/reserve-wrap.h>
+#ifdef HAVE_UDEV
+#include <modules/udev-util.h>
+#endif
+
#include "alsa-util.h"
#include "alsa-sink.h"
#include "alsa-source.h"
@@ -92,81 +96,53 @@ struct userdata {
char *device_id;
pa_card *card;
- pa_sink *sink;
- pa_source *source;
pa_modargs *modargs;
- pa_hashmap *profiles;
+ pa_alsa_profile_set *profile_set;
};
struct profile_data {
- const pa_alsa_profile_info *sink_profile, *source_profile;
+ pa_alsa_profile *profile;
};
-static void enumerate_cb(
- const pa_alsa_profile_info *sink,
- const pa_alsa_profile_info *source,
- void *userdata) {
+static void add_profiles(struct userdata *u, pa_hashmap *h) {
+ pa_alsa_profile *ap;
+ void *state;
- struct userdata *u = userdata;
- char *t, *n;
- pa_card_profile *p;
- struct profile_data *d;
- unsigned bonus = 0;
-
- if (sink && source) {
- n = pa_sprintf_malloc("output-%s+input-%s", sink->name, source->name);
- t = pa_sprintf_malloc(_("Output %s + Input %s"), sink->description, _(source->description));
- } else if (sink) {
- n = pa_sprintf_malloc("output-%s", sink->name);
- t = pa_sprintf_malloc(_("Output %s"), _(sink->description));
- } else {
- pa_assert(source);
- n = pa_sprintf_malloc("input-%s", source->name);
- t = pa_sprintf_malloc(_("Input %s"), _(source->description));
- }
-
- if (sink) {
- if (pa_channel_map_equal(&sink->map, &u->core->default_channel_map))
- bonus += 50000;
- else if (sink->map.channels == u->core->default_channel_map.channels)
- bonus += 40000;
- }
-
- if (source) {
- if (pa_channel_map_equal(&source->map, &u->core->default_channel_map))
- bonus += 30000;
- else if (source->map.channels == u->core->default_channel_map.channels)
- bonus += 20000;
- }
+ pa_assert(u);
+ pa_assert(h);
- pa_log_info("Found profile '%s'", t);
+ PA_HASHMAP_FOREACH(ap, u->profile_set->profiles, state) {
+ struct profile_data *d;
+ pa_card_profile *cp;
+ pa_alsa_mapping *m;
+ uint32_t idx;
- p = pa_card_profile_new(n, t, sizeof(struct profile_data));
+ cp = pa_card_profile_new(ap->name, ap->description, sizeof(struct profile_data));
+ cp->priority = ap->priority;
- pa_xfree(t);
- pa_xfree(n);
+ if (ap->output_mappings) {
+ cp->n_sinks = pa_idxset_size(ap->output_mappings);
- p->priority =
- (sink ? sink->priority : 0) * 100 +
- (source ? source->priority : 0) +
- bonus;
-
- p->n_sinks = !!sink;
- p->n_sources = !!source;
+ PA_IDXSET_FOREACH(m, ap->output_mappings, idx)
+ if (m->channel_map.channels > cp->max_sink_channels)
+ cp->max_sink_channels = m->channel_map.channels;
+ }
- if (sink)
- p->max_sink_channels = sink->map.channels;
- if (source)
- p->max_source_channels = source->map.channels;
+ if (ap->input_mappings) {
+ cp->n_sources = pa_idxset_size(ap->input_mappings);
- d = PA_CARD_PROFILE_DATA(p);
+ PA_IDXSET_FOREACH(m, ap->input_mappings, idx)
+ if (m->channel_map.channels > cp->max_source_channels)
+ cp->max_source_channels = m->channel_map.channels;
+ }
- d->sink_profile = sink;
- d->source_profile = source;
+ d = PA_CARD_PROFILE_DATA(cp);
+ d->profile = ap;
- pa_hashmap_put(u->profiles, p->name, p);
+ pa_hashmap_put(h, cp->name, cp);
+ }
}
static void add_disabled_profile(pa_hashmap *profiles) {
@@ -176,7 +152,7 @@ static void add_disabled_profile(pa_hashmap *profiles) {
p = pa_card_profile_new("off", _("Off"), sizeof(struct profile_data));
d = PA_CARD_PROFILE_DATA(p);
- d->sink_profile = d->source_profile = NULL;
+ d->profile = NULL;
pa_hashmap_put(profiles, p->name, p);
}
@@ -184,6 +160,9 @@ static void add_disabled_profile(pa_hashmap *profiles) {
static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
struct userdata *u;
struct profile_data *nd, *od;
+ uint32_t idx;
+ pa_alsa_mapping *am;
+ pa_queue *sink_inputs = NULL, *source_outputs = NULL;
pa_assert(c);
pa_assert(new_profile);
@@ -192,67 +171,85 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
nd = PA_CARD_PROFILE_DATA(new_profile);
od = PA_CARD_PROFILE_DATA(c->active_profile);
- if (od->sink_profile != nd->sink_profile) {
- pa_queue *inputs = NULL;
+ if (od->profile && od->profile->output_mappings)
+ PA_IDXSET_FOREACH(am, od->profile->output_mappings, idx) {
+ if (!am->sink)
+ continue;
- if (u->sink) {
- if (nd->sink_profile)
- inputs = pa_sink_move_all_start(u->sink);
+ if (nd->profile &&
+ nd->profile->output_mappings &&
+ pa_idxset_get_by_data(nd->profile->output_mappings, am, NULL))
+ continue;
- pa_alsa_sink_free(u->sink);
- u->sink = NULL;
+ sink_inputs = pa_sink_move_all_start(am->sink, sink_inputs);
+ pa_alsa_sink_free(am->sink);
+ am->sink = NULL;
}
- if (nd->sink_profile) {
- u->sink = pa_alsa_sink_new(c->module, u->modargs, __FILE__, c, nd->sink_profile);
+ if (od->profile && od->profile->input_mappings)
+ PA_IDXSET_FOREACH(am, od->profile->input_mappings, idx) {
+ if (!am->source)
+ continue;
- if (inputs) {
- if (u->sink)
- pa_sink_move_all_finish(u->sink, inputs, FALSE);
- else
- pa_sink_move_all_fail(inputs);
- }
+ if (nd->profile &&
+ nd->profile->input_mappings &&
+ pa_idxset_get_by_data(nd->profile->input_mappings, am, NULL))
+ continue;
+
+ source_outputs = pa_source_move_all_start(am->source, source_outputs);
+ pa_alsa_source_free(am->source);
+ am->source = NULL;
}
- }
- if (od->source_profile != nd->source_profile) {
- pa_queue *outputs = NULL;
+ if (nd->profile && nd->profile->output_mappings)
+ PA_IDXSET_FOREACH(am, nd->profile->output_mappings, idx) {
- if (u->source) {
- if (nd->source_profile)
- outputs = pa_source_move_all_start(u->source);
+ if (!am->sink)
+ am->sink = pa_alsa_sink_new(c->module, u->modargs, __FILE__, c, am);
- pa_alsa_source_free(u->source);
- u->source = NULL;
+ if (sink_inputs && am->sink) {
+ pa_sink_move_all_finish(am->sink, sink_inputs, FALSE);
+ sink_inputs = NULL;
+ }
}
- if (nd->source_profile) {
- u->source = pa_alsa_source_new(c->module, u->modargs, __FILE__, c, nd->source_profile);
+ if (nd->profile && nd->profile->input_mappings)
+ PA_IDXSET_FOREACH(am, nd->profile->input_mappings, idx) {
- if (outputs) {
- if (u->source)
- pa_source_move_all_finish(u->source, outputs, FALSE);
- else
- pa_source_move_all_fail(outputs);
+ if (!am->source)
+ am->source = pa_alsa_source_new(c->module, u->modargs, __FILE__, c, am);
+
+ if (source_outputs && am->source) {
+ pa_source_move_all_finish(am->source, source_outputs, FALSE);
+ source_outputs = NULL;
}
}
- }
+
+ if (sink_inputs)
+ pa_sink_move_all_fail(sink_inputs);
+
+ if (source_outputs)
+ pa_source_move_all_fail(source_outputs);
return 0;
}
static void init_profile(struct userdata *u) {
+ uint32_t idx;
+ pa_alsa_mapping *am;
struct profile_data *d;
pa_assert(u);
d = PA_CARD_PROFILE_DATA(u->card->active_profile);
- if (d->sink_profile)
- u->sink = pa_alsa_sink_new(u->module, u->modargs, __FILE__, u->card, d->sink_profile);
+ if (d->profile && d->profile->output_mappings)
+ PA_IDXSET_FOREACH(am, d->profile->output_mappings, idx)
+ am->sink = pa_alsa_sink_new(u->module, u->modargs, __FILE__, u->card, am);
- if (d->source_profile)
- u->source = pa_alsa_source_new(u->module, u->modargs, __FILE__, u->card, d->source_profile);
+ if (d->profile && d->profile->input_mappings)
+ PA_IDXSET_FOREACH(am, d->profile->input_mappings, idx)
+ am->source = pa_alsa_source_new(u->module, u->modargs, __FILE__, u->card, am);
}
static void set_card_name(pa_card_new_data *data, pa_modargs *ma, const char *device_id) {
@@ -286,12 +283,11 @@ int pa__init(pa_module *m) {
pa_modargs *ma;
int alsa_card_index;
struct userdata *u;
- char rname[32];
pa_reserve_wrapper *reserve = NULL;
const char *description;
+ char *fn = NULL;
- pa_alsa_redirect_errors_inc();
- snd_config_update_free_global();
+ pa_alsa_refcnt_inc();
pa_assert(m);
@@ -300,13 +296,10 @@ int pa__init(pa_module *m) {
goto fail;
}
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
u->device_id = pa_xstrdup(pa_modargs_get_value(ma, "device_id", DEFAULT_DEVICE_ID));
- u->card = NULL;
- u->sink = NULL;
- u->source = NULL;
u->modargs = ma;
if ((alsa_card_index = snd_card_get_index(u->device_id)) < 0) {
@@ -314,16 +307,36 @@ int pa__init(pa_module *m) {
goto fail;
}
- pa_snprintf(rname, sizeof(rname), "Audio%i", alsa_card_index);
+ if (!pa_in_system_mode()) {
+ char *rname;
+
+ if ((rname = pa_alsa_get_reserve_name(u->device_id))) {
+ reserve = pa_reserve_wrapper_get(m->core, rname);
+ pa_xfree(rname);
+
+ if (!reserve)
+ goto fail;
+ }
+ }
+
+#ifdef HAVE_UDEV
+ fn = pa_udev_get_property(alsa_card_index, "PULSE_PROFILE_SET");
+#endif
+
+ u->profile_set = pa_alsa_profile_set_new(fn, &u->core->default_channel_map);
+ pa_xfree(fn);
+
+ if (!u->profile_set)
+ goto fail;
- if (!pa_in_system_mode())
- if (!(reserve = pa_reserve_wrapper_get(m->core, rname)))
- goto fail;
+ pa_alsa_profile_set_probe(u->profile_set, u->device_id, &m->core->default_sample_spec);
pa_card_new_data_init(&data);
data.driver = __FILE__;
data.module = m;
+
pa_alsa_init_proplist_card(m->core, data.proplist, alsa_card_index);
+
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
pa_alsa_init_description(data.proplist);
set_card_name(&data, ma, u->device_id);
@@ -332,11 +345,8 @@ int pa__init(pa_module *m) {
if ((description = pa_proplist_gets(data.proplist, PA_PROP_DEVICE_DESCRIPTION)))
pa_reserve_wrapper_set_application_device_name(reserve, description);
- u->profiles = data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- if (pa_alsa_probe_profiles(u->device_id, &m->core->default_sample_spec, enumerate_cb, u) < 0) {
- pa_card_new_data_done(&data);
- goto fail;
- }
+ data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+ add_profiles(u, data.profiles);
if (pa_hashmap_isempty(data.profiles)) {
pa_log("Failed to find a working profile.");
@@ -379,13 +389,22 @@ fail:
int pa__get_n_used(pa_module *m) {
struct userdata *u;
+ int n = 0;
+ uint32_t idx;
+ pa_sink *sink;
+ pa_source *source;
pa_assert(m);
pa_assert_se(u = m->userdata);
+ pa_assert(u->card);
+
+ PA_IDXSET_FOREACH(sink, u->card->sinks, idx)
+ n += pa_sink_linked_by(sink);
- return
- (u->sink ? pa_sink_linked_by(u->sink) : 0) +
- (u->source ? pa_source_linked_by(u->source) : 0);
+ PA_IDXSET_FOREACH(source, u->card->sources, idx)
+ n += pa_source_linked_by(source);
+
+ return n;
}
void pa__done(pa_module*m) {
@@ -396,11 +415,19 @@ void pa__done(pa_module*m) {
if (!(u = m->userdata))
goto finish;
- if (u->sink)
- pa_alsa_sink_free(u->sink);
+ if (u->card && u->card->sinks) {
+ pa_sink *s;
+
+ while ((s = pa_idxset_steal_first(u->card->sinks, NULL)))
+ pa_alsa_sink_free(s);
+ }
+
+ if (u->card && u->card->sources) {
+ pa_source *s;
- if (u->source)
- pa_alsa_source_free(u->source);
+ while ((s = pa_idxset_steal_first(u->card->sources, NULL)))
+ pa_alsa_source_free(s);
+ }
if (u->card)
pa_card_free(u->card);
@@ -408,10 +435,12 @@ void pa__done(pa_module*m) {
if (u->modargs)
pa_modargs_free(u->modargs);
+ if (u->profile_set)
+ pa_alsa_profile_set_free(u->profile_set);
+
pa_xfree(u->device_id);
pa_xfree(u);
finish:
- snd_config_update_free_global();
- pa_alsa_redirect_errors_dec();
+ pa_alsa_refcnt_dec();
}
diff --git a/src/modules/alsa/module-alsa-sink.c b/src/modules/alsa/module-alsa-sink.c
index 058ea205..3aa89b2a 100644
--- a/src/modules/alsa/module-alsa-sink.c
+++ b/src/modules/alsa/module-alsa-sink.c
@@ -82,8 +82,7 @@ int pa__init(pa_module*m) {
pa_assert(m);
- pa_alsa_redirect_errors_inc();
- snd_config_update_free_global();
+ pa_alsa_refcnt_inc();
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
pa_log("Failed to parse module arguments");
@@ -124,6 +123,5 @@ void pa__done(pa_module*m) {
if ((sink = m->userdata))
pa_alsa_sink_free(sink);
- snd_config_update_free_global();
- pa_alsa_redirect_errors_dec();
+ pa_alsa_refcnt_dec();
}
diff --git a/src/modules/alsa/module-alsa-source.c b/src/modules/alsa/module-alsa-source.c
index 3bd1b451..23da4185 100644
--- a/src/modules/alsa/module-alsa-source.c
+++ b/src/modules/alsa/module-alsa-source.c
@@ -37,6 +37,7 @@
#include <pulse/timeval.h>
#include <pulsecore/core-error.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core.h>
#include <pulsecore/module.h>
#include <pulsecore/memchunk.h>
@@ -51,7 +52,6 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
#include <pulsecore/time-smoother.h>
-#include <pulsecore/rtclock.h>
#include "alsa-util.h"
#include "alsa-source.h"
@@ -106,8 +106,7 @@ int pa__init(pa_module*m) {
pa_assert(m);
- pa_alsa_redirect_errors_inc();
- snd_config_update_free_global();
+ pa_alsa_refcnt_inc();
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
pa_log("Failed to parse module arguments");
@@ -148,6 +147,5 @@ void pa__done(pa_module*m) {
if ((source = m->userdata))
pa_alsa_source_free(source);
- snd_config_update_free_global();
- pa_alsa_redirect_errors_dec();
+ pa_alsa_refcnt_dec();
}
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index dbec00d4..e7c6d5e4 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -30,13 +30,15 @@
#include <linux/sockios.h>
#include <arpa/inet.h>
-#include <pulse/xmalloc.h>
-#include <pulse/timeval.h>
-#include <pulse/sample.h>
#include <pulse/i18n.h>
+#include <pulse/rtclock.h>
+#include <pulse/sample.h>
+#include <pulse/timeval.h>
+#include <pulse/xmalloc.h>
#include <pulsecore/module.h>
#include <pulsecore/modargs.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/core-error.h>
#include <pulsecore/socket-util.h>
@@ -44,7 +46,6 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
#include <pulsecore/time-smoother.h>
-#include <pulsecore/rtclock.h>
#include <pulsecore/namereg.h>
#include <pulsecore/dbus-shared.h>
@@ -773,7 +774,7 @@ static int start_stream_fd(struct userdata *u) {
TRUE,
TRUE,
10,
- pa_rtclock_usec(),
+ pa_rtclock_now(),
TRUE);
return 0;
@@ -867,14 +868,14 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
if (u->read_smoother) {
pa_usec_t wi, ri;
- ri = pa_smoother_get(u->read_smoother, pa_rtclock_usec());
+ ri = pa_smoother_get(u->read_smoother, pa_rtclock_now());
wi = pa_bytes_to_usec(u->write_index + u->block_size, &u->sample_spec);
*((pa_usec_t*) data) = wi > ri ? wi - ri : 0;
} else {
pa_usec_t ri, wi;
- ri = pa_rtclock_usec() - u->started_at;
+ ri = pa_rtclock_now() - u->started_at;
wi = pa_bytes_to_usec(u->write_index, &u->sample_spec);
*((pa_usec_t*) data) = wi > ri ? wi - ri : 0;
@@ -912,7 +913,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
stop_stream_fd(u);
if (u->read_smoother)
- pa_smoother_pause(u->read_smoother, pa_rtclock_usec());
+ pa_smoother_pause(u->read_smoother, pa_rtclock_now());
break;
case PA_SOURCE_IDLE:
@@ -939,7 +940,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
case PA_SOURCE_MESSAGE_GET_LATENCY: {
pa_usec_t wi, ri;
- wi = pa_smoother_get(u->read_smoother, pa_rtclock_usec());
+ wi = pa_smoother_get(u->read_smoother, pa_rtclock_now());
ri = pa_bytes_to_usec(u->read_index, &u->sample_spec);
*((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->fixed_latency;
@@ -1086,7 +1087,7 @@ static int hsp_process_push(struct userdata *u) {
if (!found_tstamp) {
pa_log_warn("Couldn't find SO_TIMESTAMP data in auxiliary recvmsg() data!");
- tstamp = pa_rtclock_usec();
+ tstamp = pa_rtclock_now();
}
pa_smoother_put(u->read_smoother, tstamp, pa_bytes_to_usec(u->read_index, &u->sample_spec));
@@ -1265,7 +1266,6 @@ static void thread_func(void *userdata) {
goto fail;
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
struct pollfd *pollfd;
@@ -1309,7 +1309,7 @@ static void thread_func(void *userdata) {
/* Hmm, there is no input stream we could synchronize
* to. So let's do things by time */
- time_passed = pa_rtclock_usec() - u->started_at;
+ time_passed = pa_rtclock_now() - u->started_at;
audio_sent = pa_bytes_to_usec(u->write_index, &u->sample_spec);
if (audio_sent <= time_passed) {
@@ -1341,7 +1341,7 @@ static void thread_func(void *userdata) {
int n_written;
if (u->write_index <= 0)
- u->started_at = pa_rtclock_usec();
+ u->started_at = pa_rtclock_now();
if (u->profile == PROFILE_A2DP) {
if ((n_written = a2dp_process_render(u)) < 0)
@@ -1361,7 +1361,7 @@ static void thread_func(void *userdata) {
/* Hmm, there is no input stream we could synchronize
* to. So let's estimate when we need to wake up the latest */
- time_passed = pa_rtclock_usec() - u->started_at;
+ time_passed = pa_rtclock_now() - u->started_at;
next_write_at = pa_bytes_to_usec(u->write_index, &u->sample_spec);
sleep_for = time_passed < next_write_at ? next_write_at - time_passed : 0;
@@ -1443,12 +1443,12 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
if (u->sink && dbus_message_is_signal(m, "org.bluez.Headset", "SpeakerGainChanged")) {
pa_cvolume_set(&v, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
- pa_sink_volume_changed(u->sink, &v);
+ pa_sink_volume_changed(u->sink, &v, TRUE);
} else if (u->source && dbus_message_is_signal(m, "org.bluez.Headset", "MicrophoneGainChanged")) {
pa_cvolume_set(&v, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
- pa_source_volume_changed(u->source, &v);
+ pa_source_volume_changed(u->source, &v, TRUE);
}
}
}
@@ -1622,6 +1622,8 @@ static int add_sink(struct userdata *u) {
data.module = u->module;
pa_sink_new_data_set_sample_spec(&data, &u->sample_spec);
pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP ? "a2dp" : "sco");
+ if (u->profile == PROFILE_HSP)
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_INTENDED_ROLES, "phone");
data.card = u->card;
data.name = get_name("sink", u->modargs, u->address, &b);
data.namereg_fail = b;
@@ -1680,6 +1682,8 @@ static int add_source(struct userdata *u) {
data.module = u->module;
pa_source_new_data_set_sample_spec(&data, &u->sample_spec);
pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP ? "a2dp" : "hsp");
+ if (u->profile == PROFILE_HSP)
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_INTENDED_ROLES, "phone");
data.card = u->card;
data.name = get_name("source", u->modargs, u->address, &b);
data.namereg_fail = b;
@@ -1916,7 +1920,7 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
if (!(device = pa_bluetooth_discovery_get_by_path(u->discovery, u->path))) {
pa_log_error("Failed to get device object.");
- return -1;
+ return -PA_ERR_IO;
}
/* The state signal is sent by bluez, so it is racy to check
@@ -1926,15 +1930,15 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
module will be unloaded. */
if (device->headset_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_HSP) {
pa_log_warn("HSP is not connected, refused to switch profile");
- return -1;
+ return -PA_ERR_IO;
}
else if (device->audio_sink_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_A2DP) {
pa_log_warn("A2DP is not connected, refused to switch profile");
- return -1;
+ return -PA_ERR_IO;
}
if (u->sink) {
- inputs = pa_sink_move_all_start(u->sink);
+ inputs = pa_sink_move_all_start(u->sink, NULL);
#ifdef NOKIA
if (!USE_SCO_OVER_PCM(u))
#endif
@@ -1942,7 +1946,7 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
}
if (u->source) {
- outputs = pa_source_move_all_start(u->source);
+ outputs = pa_source_move_all_start(u->source, NULL);
#ifdef NOKIA
if (!USE_SCO_OVER_PCM(u))
#endif
diff --git a/src/modules/bluetooth/module-bluetooth-proximity.c b/src/modules/bluetooth/module-bluetooth-proximity.c
index 9993c8dc..c4cfd733 100644
--- a/src/modules/bluetooth/module-bluetooth-proximity.c
+++ b/src/modules/bluetooth/module-bluetooth-proximity.c
@@ -109,7 +109,7 @@ static void update_volume(struct userdata *u) {
}
pa_log_info("Found %u BT devices, unmuting.", u->n_found);
- pa_sink_set_mute(s, FALSE);
+ pa_sink_set_mute(s, FALSE, FALSE);
} else if (!u->muted && (u->n_found+u->n_unknown) <= 0) {
pa_sink *s;
@@ -122,7 +122,7 @@ static void update_volume(struct userdata *u) {
}
pa_log_info("No BT devices found, muting.");
- pa_sink_set_mute(s, TRUE);
+ pa_sink_set_mute(s, TRUE, FALSE);
} else
pa_log_info("%u devices now active, %u with unknown state.", u->n_found, u->n_unknown);
diff --git a/src/modules/jack/module-jack-sink.c b/src/modules/jack/module-jack-sink.c
index 290038e7..fc976fa7 100644
--- a/src/modules/jack/module-jack-sink.c
+++ b/src/modules/jack/module-jack-sink.c
@@ -225,7 +225,6 @@ static void thread_func(void *userdata) {
pa_make_realtime(u->core->realtime_priority);
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
int ret;
diff --git a/src/modules/jack/module-jack-source.c b/src/modules/jack/module-jack-source.c
index ef89a98e..a898e0e5 100644
--- a/src/modules/jack/module-jack-source.c
+++ b/src/modules/jack/module-jack-source.c
@@ -196,7 +196,6 @@ static void thread_func(void *userdata) {
pa_make_realtime(u->core->realtime_priority);
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
int ret;
diff --git a/src/modules/module-augment-properties.c b/src/modules/module-augment-properties.c
index c3e5997a..15aa3a1e 100644
--- a/src/modules/module-augment-properties.c
+++ b/src/modules/module-augment-properties.c
@@ -58,6 +58,7 @@ struct rule {
char *process_name;
char *application_name;
char *icon_name;
+ char *role;
pa_proplist *proplist;
};
@@ -72,12 +73,21 @@ static void rule_free(struct rule *r) {
pa_xfree(r->process_name);
pa_xfree(r->application_name);
pa_xfree(r->icon_name);
+ pa_xfree(r->role);
if (r->proplist)
pa_proplist_free(r->proplist);
pa_xfree(r);
}
-static int parse_properties(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
+static int parse_properties(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
struct rule *r = userdata;
pa_proplist *n;
@@ -93,11 +103,56 @@ static int parse_properties(const char *filename, unsigned line, const char *sec
return 0;
}
-static int check_type(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
+static int parse_categories(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ struct rule *r = userdata;
+ const char *state = NULL;
+ char *c;
+
+ while ((c = pa_split(rvalue, ";", &state))) {
+
+ if (pa_streq(c, "Game")) {
+ pa_xfree(r->role);
+ r->role = pa_xstrdup("game");
+ } else if (pa_streq(c, "Telephony")) {
+ pa_xfree(r->role);
+ r->role = pa_xstrdup("phone");
+ }
+
+ pa_xfree(c);
+ }
+
+ return 0;
+}
+
+static int check_type(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
return pa_streq(rvalue, "Application") ? 0 : -1;
}
-static int catch_all(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
+static int catch_all(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
return 0;
}
@@ -109,6 +164,7 @@ static void update_rule(struct rule *r) {
{ "Icon", pa_config_parse_string, NULL, "Desktop Entry" },
{ "Type", check_type, NULL, "Desktop Entry" },
{ "X-PulseAudio-Properties", parse_properties, NULL, "Desktop Entry" },
+ { "Categories", parse_categories, NULL, "Desktop Entry" },
{ NULL, catch_all, NULL, NULL },
{ NULL, NULL, NULL, NULL },
};
@@ -131,7 +187,8 @@ static void update_rule(struct rule *r) {
r->mtime = st.st_mtime;
pa_xfree(r->application_name);
pa_xfree(r->icon_name);
- r->application_name = r->icon_name = NULL;
+ pa_xfree(r->role);
+ r->application_name = r->icon_name = r->role = NULL;
if (r->proplist)
pa_proplist_clear(r->proplist);
@@ -151,6 +208,9 @@ static void apply_rule(struct rule *r, pa_proplist *p) {
if (!r->good)
return;
+ if (r->proplist)
+ pa_proplist_update(p, PA_UPDATE_MERGE, r->proplist);
+
if (r->icon_name)
if (!pa_proplist_contains(p, PA_PROP_APPLICATION_ICON_NAME))
pa_proplist_sets(p, PA_PROP_APPLICATION_ICON_NAME, r->icon_name);
@@ -164,8 +224,9 @@ static void apply_rule(struct rule *r, pa_proplist *p) {
pa_proplist_sets(p, PA_PROP_APPLICATION_NAME, r->application_name);
}
- if (r->proplist)
- pa_proplist_update(p, PA_UPDATE_MERGE, r->proplist);
+ if (r->role)
+ if (!pa_proplist_contains(p, PA_PROP_MEDIA_ROLE))
+ pa_proplist_sets(p, PA_PROP_MEDIA_ROLE, r->role);
}
static void make_room(pa_hashmap *cache) {
diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c
index 85478d12..7dea94f7 100644
--- a/src/modules/module-card-restore.c
+++ b/src/modules/module-card-restore.c
@@ -35,6 +35,7 @@
#include <pulse/volume.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
+#include <pulse/rtclock.h>
#include <pulsecore/core-error.h>
#include <pulsecore/module.h>
@@ -53,7 +54,7 @@ PA_MODULE_DESCRIPTION("Automatically restore profile of cards");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
-#define SAVE_INTERVAL 10
+#define SAVE_INTERVAL (10 * PA_USEC_PER_SEC)
static const char* const valid_modargs[] = {
NULL
@@ -75,12 +76,11 @@ struct entry {
char profile[PA_NAME_MAX];
} PA_GCC_PACKED ;
-static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata) {
+static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *t, void *userdata) {
struct userdata *u = userdata;
pa_assert(a);
pa_assert(e);
- pa_assert(tv);
pa_assert(u);
pa_assert(e == u->save_time_event);
@@ -132,14 +132,10 @@ fail:
}
static void trigger_save(struct userdata *u) {
- struct timeval tv;
-
if (u->save_time_event)
return;
- pa_gettimeofday(&tv);
- tv.tv_sec += SAVE_INTERVAL;
- u->save_time_event = u->core->mainloop->time_new(u->core->mainloop, &tv, save_time_callback, u);
+ u->save_time_event = pa_core_rttime_new(u->core, pa_rtclock_now() + SAVE_INTERVAL, save_time_callback, u);
}
static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, void *userdata) {
@@ -197,8 +193,9 @@ static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new
if ((e = read_entry(u, new_data->name)) && e->profile[0]) {
if (!new_data->active_profile) {
- pa_card_new_data_set_profile(new_data, e->profile);
pa_log_info("Restoring profile for card %s.", new_data->name);
+ pa_card_new_data_set_profile(new_data, e->profile);
+ new_data->save_profile = TRUE;
} else
pa_log_debug("Not restoring profile for card %s, because already set.", new_data->name);
@@ -222,11 +219,9 @@ int pa__init(pa_module*m) {
goto fail;
}
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
- u->save_time_event = NULL;
- u->database = NULL;
u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_CARD, subscribe_callback, u);
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 02a7e1ff..d50e59ae 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -26,6 +26,7 @@
#include <stdio.h>
#include <errno.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
@@ -36,6 +37,7 @@
#include <pulsecore/sink-input.h>
#include <pulsecore/memblockq.h>
#include <pulsecore/log.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/modargs.h>
#include <pulsecore/namereg.h>
@@ -43,7 +45,6 @@
#include <pulsecore/thread.h>
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
-#include <pulsecore/rtclock.h>
#include <pulsecore/core-error.h>
#include <pulsecore/time-smoother.h>
@@ -224,9 +225,8 @@ static void adjust_rates(struct userdata *u) {
pa_asyncmsgq_send(u->sink->asyncmsgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_UPDATE_LATENCY, NULL, (int64_t) avg_total_latency, NULL);
}
-static void time_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata) {
+static void time_callback(pa_mainloop_api *a, pa_time_event *e, const struct timeval *t, void *userdata) {
struct userdata *u = userdata;
- struct timeval n;
pa_assert(u);
pa_assert(a);
@@ -234,9 +234,7 @@ static void time_callback(pa_mainloop_api*a, pa_time_event* e, const struct time
adjust_rates(u);
- pa_gettimeofday(&n);
- n.tv_sec += (time_t) u->adjust_time;
- u->sink->core->mainloop->time_restart(e, &n);
+ pa_core_rttime_restart(u->core, e, pa_rtclock_now() + u->adjust_time * PA_USEC_PER_SEC);
}
static void process_render_null(struct userdata *u, pa_usec_t now) {
@@ -280,9 +278,8 @@ static void thread_func(void *userdata) {
pa_make_realtime(u->core->realtime_priority+1);
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
- u->thread_info.timestamp = pa_rtclock_usec();
+ u->thread_info.timestamp = pa_rtclock_now();
u->thread_info.in_null_mode = FALSE;
for (;;) {
@@ -296,7 +293,7 @@ static void thread_func(void *userdata) {
if (PA_SINK_IS_OPENED(u->sink->thread_info.state) && !u->thread_info.active_outputs) {
pa_usec_t now;
- now = pa_rtclock_usec();
+ now = pa_rtclock_now();
if (!u->thread_info.in_null_mode || u->thread_info.timestamp <= now)
process_render_null(u, now);
@@ -593,7 +590,7 @@ static void unsuspend(struct userdata *u) {
/* Let's resume */
for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
- pa_sink_suspend(o->sink, FALSE);
+ pa_sink_suspend(o->sink, FALSE, PA_SUSPEND_IDLE);
if (PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
enable_output(o);
@@ -664,16 +661,16 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
pa_atomic_store(&u->thread_info.running, PA_PTR_TO_UINT(data) == PA_SINK_RUNNING);
if (PA_PTR_TO_UINT(data) == PA_SINK_SUSPENDED)
- pa_smoother_pause(u->thread_info.smoother, pa_rtclock_usec());
+ pa_smoother_pause(u->thread_info.smoother, pa_rtclock_now());
else
- pa_smoother_resume(u->thread_info.smoother, pa_rtclock_usec(), TRUE);
+ pa_smoother_resume(u->thread_info.smoother, pa_rtclock_now(), TRUE);
break;
case PA_SINK_MESSAGE_GET_LATENCY: {
pa_usec_t x, y, c, *delay = data;
- x = pa_rtclock_usec();
+ x = pa_rtclock_now();
y = pa_smoother_get(u->thread_info.smoother, x);
c = pa_bytes_to_usec(u->thread_info.counter, &u->sink->sample_spec);
@@ -730,7 +727,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case SINK_MESSAGE_UPDATE_LATENCY: {
pa_usec_t x, y, latency = (pa_usec_t) offset;
- x = pa_rtclock_usec();
+ x = pa_rtclock_now();
y = pa_bytes_to_usec(u->thread_info.counter, &u->sink->sample_spec);
if (y > latency)
@@ -873,7 +870,7 @@ static struct output *output_new(struct userdata *u, pa_sink *sink) {
}
if (PA_SINK_IS_OPENED(state) || state == PA_SINK_INIT) {
- pa_sink_suspend(sink, FALSE);
+ pa_sink_suspend(sink, FALSE, PA_SUSPEND_IDLE);
if (PA_SINK_IS_OPENED(pa_sink_get_state(sink)))
if (output_create_sink_input(o) < 0)
@@ -1170,12 +1167,8 @@ int pa__init(pa_module*m) {
if (o->sink_input)
pa_sink_input_put(o->sink_input);
- if (u->adjust_time > 0) {
- struct timeval tv;
- pa_gettimeofday(&tv);
- tv.tv_sec += (time_t) u->adjust_time;
- u->time_event = m->core->mainloop->time_new(m->core->mainloop, &tv, time_callback, u);
- }
+ if (u->adjust_time > 0)
+ u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time * PA_USEC_PER_SEC, time_callback, u);
pa_modargs_free(ma);
diff --git a/src/modules/module-dbus-protocol.c b/src/modules/module-dbus-protocol.c
index 46f64921..f7c1f0a9 100644
--- a/src/modules/module-dbus-protocol.c
+++ b/src/modules/module-dbus-protocol.c
@@ -157,7 +157,7 @@ static void connection_new_cb(DBusServer *dbus_server, DBusConnection *new_conne
c = pa_xnew(struct connection, 1);
c->server = s;
- c->wrap_conn = pa_dbus_wrap_connection_new_from_existing(s->userdata->module->core->mainloop, new_connection);
+ c->wrap_conn = pa_dbus_wrap_connection_new_from_existing(s->userdata->module->core->mainloop, TRUE, new_connection);
c->client = client;
c->client->kill = client_kill_cb;
diff --git a/src/modules/module-default-device-restore.c b/src/modules/module-default-device-restore.c
index 0092d1c7..27ae60e5 100644
--- a/src/modules/module-default-device-restore.c
+++ b/src/modules/module-default-device-restore.c
@@ -26,6 +26,7 @@
#include <errno.h>
#include <stdio.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
@@ -42,7 +43,7 @@ PA_MODULE_DESCRIPTION("Automatically restore the default sink and source");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
-#define DEFAULT_SAVE_INTERVAL 5
+#define SAVE_INTERVAL (5 * PA_USEC_PER_SEC)
struct userdata {
pa_core *core;
@@ -127,7 +128,7 @@ static void save(struct userdata *u) {
u->modified = FALSE;
}
-static void time_cb(pa_mainloop_api *a, pa_time_event *e, const struct timeval *tv, void *userdata) {
+static void time_cb(pa_mainloop_api *a, pa_time_event *e, const struct timeval *t, void *userdata) {
struct userdata *u = userdata;
pa_assert(u);
@@ -146,12 +147,8 @@ static void subscribe_cb(pa_core *c, pa_subscription_event_type_t t, uint32_t id
u->modified = TRUE;
- if (!u->time_event) {
- struct timeval tv;
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, DEFAULT_SAVE_INTERVAL*PA_USEC_PER_SEC);
- u->time_event = u->core->mainloop->time_new(u->core->mainloop, &tv, time_cb, u);
- }
+ if (!u->time_event)
+ u->time_event = pa_core_rttime_new(u->core, pa_rtclock_now() + SAVE_INTERVAL, time_cb, u);
}
int pa__init(pa_module *m) {
diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c
index ae21acd5..120b762c 100644
--- a/src/modules/module-device-restore.c
+++ b/src/modules/module-device-restore.c
@@ -35,6 +35,7 @@
#include <pulse/volume.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
+#include <pulse/rtclock.h>
#include <pulsecore/core-error.h>
#include <pulsecore/module.h>
@@ -54,14 +55,16 @@ PA_MODULE_DESCRIPTION("Automatically restore the volume/mute state of devices");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_USAGE(
+ "restore_port=<Save/restore port?> "
"restore_volume=<Save/restore volumes?> "
"restore_muted=<Save/restore muted states?>");
-#define SAVE_INTERVAL 10
+#define SAVE_INTERVAL (10 * PA_USEC_PER_SEC)
static const char* const valid_modargs[] = {
"restore_volume",
"restore_muted",
+ "restore_port",
NULL
};
@@ -70,30 +73,34 @@ struct userdata {
pa_module *module;
pa_subscription *subscription;
pa_hook_slot
+ *sink_new_hook_slot,
*sink_fixate_hook_slot,
+ *source_new_hook_slot,
*source_fixate_hook_slot;
pa_time_event *save_time_event;
pa_database *database;
pa_bool_t restore_volume:1;
pa_bool_t restore_muted:1;
+ pa_bool_t restore_port:1;
};
-#define ENTRY_VERSION 1
+#define ENTRY_VERSION 2
struct entry {
uint8_t version;
+ pa_bool_t muted_valid:1, volume_valid:1, port_valid:1;
pa_bool_t muted:1;
pa_channel_map channel_map;
pa_cvolume volume;
+ char port[PA_NAME_MAX];
} PA_GCC_PACKED;
-static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata) {
+static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *t, void *userdata) {
struct userdata *u = userdata;
pa_assert(a);
pa_assert(e);
- pa_assert(tv);
pa_assert(u);
pa_assert(e == u->save_time_event);
@@ -131,17 +138,17 @@ static struct entry* read_entry(struct userdata *u, const char *name) {
goto fail;
}
- if (!(pa_cvolume_valid(&e->volume))) {
- pa_log_warn("Invalid volume stored in database for device %s", name);
+ if (!memchr(e->port, 0, sizeof(e->port))) {
+ pa_log_warn("Database contains entry for device %s with missing NUL byte in port name", name);
goto fail;
}
- if (!(pa_channel_map_valid(&e->channel_map))) {
+ if (e->volume_valid && !pa_channel_map_valid(&e->channel_map)) {
pa_log_warn("Invalid channel map stored in database for device %s", name);
goto fail;
}
- if (e->volume.channels != e->channel_map.channels) {
+ if (e->volume_valid && (!pa_cvolume_valid(&e->volume) || !pa_cvolume_compatible_with_channel_map(&e->volume, &e->channel_map))) {
pa_log_warn("Volume and channel map don't match in database entry for device %s", name);
goto fail;
}
@@ -155,14 +162,29 @@ fail:
}
static void trigger_save(struct userdata *u) {
- struct timeval tv;
-
if (u->save_time_event)
return;
- pa_gettimeofday(&tv);
- tv.tv_sec += SAVE_INTERVAL;
- u->save_time_event = u->core->mainloop->time_new(u->core->mainloop, &tv, save_time_callback, u);
+ u->save_time_event = pa_core_rttime_new(u->core, pa_rtclock_now() + SAVE_INTERVAL, save_time_callback, u);
+}
+
+static pa_bool_t entries_equal(const struct entry *a, const struct entry *b) {
+ pa_cvolume t;
+
+ if (a->port_valid != b->port_valid ||
+ (a->port_valid && strncmp(a->port, b->port, sizeof(a->port))))
+ return FALSE;
+
+ if (a->muted_valid != b->muted_valid ||
+ (a->muted_valid && (a->muted != b->muted)))
+ return FALSE;
+
+ t = b->volume;
+ if (a->volume_valid != b->volume_valid ||
+ (a->volume_valid && !pa_cvolume_equal(pa_cvolume_remap(&t, &b->channel_map, &a->channel_map), &a->volume)))
+ return FALSE;
+
+ return TRUE;
}
static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, void *userdata) {
@@ -190,9 +212,25 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
return;
name = pa_sprintf_malloc("sink:%s", sink->name);
- entry.channel_map = sink->channel_map;
- entry.volume = *pa_sink_get_volume(sink, FALSE, TRUE);
- entry.muted = pa_sink_get_mute(sink, FALSE);
+
+ if ((old = read_entry(u, name)))
+ entry = *old;
+
+ if (sink->save_volume) {
+ entry.channel_map = sink->channel_map;
+ entry.volume = *pa_sink_get_volume(sink, FALSE, TRUE);
+ entry.volume_valid = TRUE;
+ }
+
+ if (sink->save_muted) {
+ entry.muted = pa_sink_get_mute(sink, FALSE);
+ entry.muted_valid = TRUE;
+ }
+
+ if (sink->save_port) {
+ pa_strlcpy(entry.port, sink->active_port ? sink->active_port->name : "", sizeof(entry.port));
+ entry.port_valid = TRUE;
+ }
} else {
pa_source *source;
@@ -203,16 +241,30 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
return;
name = pa_sprintf_malloc("source:%s", source->name);
- entry.channel_map = source->channel_map;
- entry.volume = *pa_source_get_volume(source, FALSE);
- entry.muted = pa_source_get_mute(source, FALSE);
- }
- if ((old = read_entry(u, name))) {
+ if ((old = read_entry(u, name)))
+ entry = *old;
+
+ if (source->save_volume) {
+ entry.channel_map = source->channel_map;
+ entry.volume = *pa_source_get_volume(source, FALSE);
+ entry.volume_valid = TRUE;
+ }
+
+ if (source->save_muted) {
+ entry.muted = pa_source_get_mute(source, FALSE);
+ entry.muted_valid = TRUE;
+ }
+
+ if (source->save_port) {
+ pa_strlcpy(entry.port, source->active_port ? source->active_port->name : "", sizeof(entry.port));
+ entry.port_valid = TRUE;
+ }
+ }
- if (pa_cvolume_equal(pa_cvolume_remap(&old->volume, &old->channel_map, &entry.channel_map), &entry.volume) &&
- !old->muted == !entry.muted) {
+ if (old) {
+ if (entries_equal(old, &entry)) {
pa_xfree(old);
pa_xfree(name);
return;
@@ -227,7 +279,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
data.data = &entry;
data.size = sizeof(entry);
- pa_log_info("Storing volume/mute for device %s.", name);
+ pa_log_info("Storing volume/mute/port for device %s.", name);
pa_database_set(u->database, &key, &data, TRUE);
@@ -236,31 +288,71 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
trigger_save(u);
}
+static pa_hook_result_t sink_new_hook_callback(pa_core *c, pa_sink_new_data *new_data, struct userdata *u) {
+ char *name;
+ struct entry *e;
+
+ pa_assert(c);
+ pa_assert(new_data);
+ pa_assert(u);
+ pa_assert(u->restore_port);
+
+ name = pa_sprintf_malloc("sink:%s", new_data->name);
+
+ if ((e = read_entry(u, name))) {
+
+ if (e->port_valid) {
+ if (!new_data->active_port) {
+ pa_log_info("Restoring port for sink %s.", name);
+ pa_sink_new_data_set_port(new_data, e->port);
+ new_data->save_port = TRUE;
+ } else
+ pa_log_debug("Not restoring port for sink %s, because already set.", name);
+ }
+
+ pa_xfree(e);
+ }
+
+ pa_xfree(name);
+
+ return PA_HOOK_OK;
+}
+
static pa_hook_result_t sink_fixate_hook_callback(pa_core *c, pa_sink_new_data *new_data, struct userdata *u) {
char *name;
struct entry *e;
+ pa_assert(c);
pa_assert(new_data);
+ pa_assert(u);
+ pa_assert(u->restore_volume || u->restore_muted);
name = pa_sprintf_malloc("sink:%s", new_data->name);
if ((e = read_entry(u, name))) {
- if (u->restore_volume) {
+ if (u->restore_volume && e->volume_valid) {
if (!new_data->volume_is_set) {
+ pa_cvolume v;
+
pa_log_info("Restoring volume for sink %s.", new_data->name);
- pa_sink_new_data_set_volume(new_data, pa_cvolume_remap(&e->volume, &e->channel_map, &new_data->channel_map));
+
+ v = e->volume;
+ pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
+ pa_sink_new_data_set_volume(new_data, &v);
+
+ new_data->save_volume = TRUE;
} else
pa_log_debug("Not restoring volume for sink %s, because already set.", new_data->name);
-
}
- if (u->restore_muted) {
+ if (u->restore_muted && e->muted_valid) {
if (!new_data->muted_is_set) {
pa_log_info("Restoring mute state for sink %s.", new_data->name);
pa_sink_new_data_set_muted(new_data, e->muted);
+ new_data->save_muted = TRUE;
} else
pa_log_debug("Not restoring mute state for sink %s, because already set.", new_data->name);
}
@@ -273,30 +365,71 @@ static pa_hook_result_t sink_fixate_hook_callback(pa_core *c, pa_sink_new_data *
return PA_HOOK_OK;
}
+static pa_hook_result_t source_new_hook_callback(pa_core *c, pa_source_new_data *new_data, struct userdata *u) {
+ char *name;
+ struct entry *e;
+
+ pa_assert(c);
+ pa_assert(new_data);
+ pa_assert(u);
+ pa_assert(u->restore_port);
+
+ name = pa_sprintf_malloc("source:%s", new_data->name);
+
+ if ((e = read_entry(u, name))) {
+
+ if (e->port_valid) {
+ if (!new_data->active_port) {
+ pa_log_info("Restoring port for source %s.", name);
+ pa_source_new_data_set_port(new_data, e->port);
+ new_data->save_port = TRUE;
+ } else
+ pa_log_debug("Not restoring port for source %s, because already set.", name);
+ }
+
+ pa_xfree(e);
+ }
+
+ pa_xfree(name);
+
+ return PA_HOOK_OK;
+}
+
static pa_hook_result_t source_fixate_hook_callback(pa_core *c, pa_source_new_data *new_data, struct userdata *u) {
char *name;
struct entry *e;
+ pa_assert(c);
pa_assert(new_data);
+ pa_assert(u);
+ pa_assert(u->restore_volume || u->restore_muted);
name = pa_sprintf_malloc("source:%s", new_data->name);
if ((e = read_entry(u, name))) {
- if (u->restore_volume) {
+ if (u->restore_volume && e->volume_valid) {
if (!new_data->volume_is_set) {
+ pa_cvolume v;
+
pa_log_info("Restoring volume for source %s.", new_data->name);
- pa_source_new_data_set_volume(new_data, pa_cvolume_remap(&e->volume, &e->channel_map, &new_data->channel_map));
+
+ v = e->volume;
+ pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
+ pa_source_new_data_set_volume(new_data, &v);
+
+ new_data->save_volume = TRUE;
} else
pa_log_debug("Not restoring volume for source %s, because already set.", new_data->name);
}
- if (u->restore_muted) {
+ if (u->restore_muted && e->muted_valid) {
if (!new_data->muted_is_set) {
pa_log_info("Restoring mute state for source %s.", new_data->name);
pa_source_new_data_set_muted(new_data, e->muted);
+ new_data->save_muted = TRUE;
} else
pa_log_debug("Not restoring mute state for source %s, because already set.", new_data->name);
}
@@ -316,7 +449,7 @@ int pa__init(pa_module*m) {
pa_sink *sink;
pa_source *source;
uint32_t idx;
- pa_bool_t restore_volume = TRUE, restore_muted = TRUE;
+ pa_bool_t restore_volume = TRUE, restore_muted = TRUE, restore_port = TRUE;
pa_assert(m);
@@ -326,24 +459,29 @@ int pa__init(pa_module*m) {
}
if (pa_modargs_get_value_boolean(ma, "restore_volume", &restore_volume) < 0 ||
- pa_modargs_get_value_boolean(ma, "restore_muted", &restore_muted) < 0) {
- pa_log("restore_volume= and restore_muted= expect boolean arguments");
+ pa_modargs_get_value_boolean(ma, "restore_muted", &restore_muted) < 0 ||
+ pa_modargs_get_value_boolean(ma, "restore_port", &restore_port) < 0) {
+ pa_log("restore_port=, restore_volume= and restore_muted= expect boolean arguments");
goto fail;
}
- if (!restore_muted && !restore_volume)
- pa_log_warn("Neither restoring volume nor restoring muted enabled!");
+ if (!restore_muted && !restore_volume && !restore_port)
+ pa_log_warn("Neither restoring volume, nor restoring muted, nor restoring port enabled!");
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
- u->save_time_event = NULL;
u->restore_volume = restore_volume;
u->restore_muted = restore_muted;
- u->database = NULL;
+ u->restore_port = restore_port;
u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_SINK|PA_SUBSCRIPTION_MASK_SOURCE, subscribe_callback, u);
+ if (restore_port) {
+ u->sink_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_NEW], PA_HOOK_EARLY, (pa_hook_cb_t) sink_new_hook_callback, u);
+ u->source_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_NEW], PA_HOOK_EARLY, (pa_hook_cb_t) source_new_hook_callback, u);
+ }
+
if (restore_muted || restore_volume) {
u->sink_fixate_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_FIXATE], PA_HOOK_EARLY, (pa_hook_cb_t) sink_fixate_hook_callback, u);
u->source_fixate_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_FIXATE], PA_HOOK_EARLY, (pa_hook_cb_t) source_fixate_hook_callback, u);
@@ -394,6 +532,10 @@ void pa__done(pa_module*m) {
pa_hook_slot_free(u->sink_fixate_hook_slot);
if (u->source_fixate_hook_slot)
pa_hook_slot_free(u->source_fixate_hook_slot);
+ if (u->sink_new_hook_slot)
+ pa_hook_slot_free(u->sink_new_hook_slot);
+ if (u->source_new_hook_slot)
+ pa_hook_slot_free(u->source_new_hook_slot);
if (u->save_time_event)
u->core->mainloop->time_free(u->save_time_event);
diff --git a/src/modules/module-esound-sink.c b/src/modules/module-esound-sink.c
index 8cb25c51..d7c678ca 100644
--- a/src/modules/module-esound-sink.c
+++ b/src/modules/module-esound-sink.c
@@ -41,13 +41,15 @@
#include <linux/sockios.h>
#endif
-#include <pulse/xmalloc.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
+#include <pulse/xmalloc.h>
#include <pulsecore/core-error.h>
#include <pulsecore/iochannel.h>
#include <pulsecore/sink.h>
#include <pulsecore/module.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/modargs.h>
#include <pulsecore/log.h>
@@ -57,7 +59,6 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/thread.h>
#include <pulsecore/time-smoother.h>
-#include <pulsecore/rtclock.h>
#include <pulsecore/socket-util.h>
#include "module-esound-sink-symdef.h"
@@ -145,14 +146,14 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_SUSPENDED:
pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
- pa_smoother_pause(u->smoother, pa_rtclock_usec());
+ pa_smoother_pause(u->smoother, pa_rtclock_now());
break;
case PA_SINK_IDLE:
case PA_SINK_RUNNING:
if (u->sink->thread_info.state == PA_SINK_SUSPENDED)
- pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
+ pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE);
break;
@@ -167,7 +168,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_MESSAGE_GET_LATENCY: {
pa_usec_t w, r;
- r = pa_smoother_get(u->smoother, pa_rtclock_usec());
+ r = pa_smoother_get(u->smoother, pa_rtclock_now());
w = pa_bytes_to_usec((uint64_t) u->offset + u->memchunk.length, &u->sink->sample_spec);
*((pa_usec_t*) data) = w > r ? w - r : 0;
@@ -200,9 +201,8 @@ static void thread_func(void *userdata) {
pa_log_debug("Thread starting up");
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
- pa_smoother_set_time_offset(u->smoother, pa_rtclock_usec());
+ pa_smoother_set_time_offset(u->smoother, pa_rtclock_now());
for (;;) {
int ret;
@@ -295,7 +295,7 @@ static void thread_func(void *userdata) {
else
usec = 0;
- pa_smoother_put(u->smoother, pa_rtclock_usec(), usec);
+ pa_smoother_put(u->smoother, pa_rtclock_now(), usec);
}
/* Hmm, nothing to do. Let's sleep */
@@ -608,7 +608,7 @@ int pa__init(pa_module*m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
- if (!(u->client = pa_socket_client_new_string(u->core->mainloop, espeaker, ESD_DEFAULT_PORT))) {
+ if (!(u->client = pa_socket_client_new_string(u->core->mainloop, TRUE, espeaker, ESD_DEFAULT_PORT))) {
pa_log("Failed to connect to server.");
goto fail;
}
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index b6139e43..658b3e55 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -64,6 +64,7 @@ PA_MODULE_USAGE("api=<alsa> "
#elif defined(HAVE_OSS)
PA_MODULE_USAGE("api=<oss>");
#endif
+PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!");
struct device {
char *udi, *originating_udi;
@@ -232,7 +233,7 @@ static int hal_device_load_alsa(struct userdata *u, const char *udi, struct devi
goto fail;
card_name = pa_sprintf_malloc("alsa_card.%s", strip_udi(originating_udi));
- args = pa_sprintf_malloc("device_id=%u name=%s card_name=%s tsched=%i", card, strip_udi(originating_udi), card_name, (int) u->use_tsched);
+ args = pa_sprintf_malloc("device_id=%u name=\"%s\" card_name=\"%s\" tsched=%i card_properties=\"module-hal-detect.discovered=1\"", card, strip_udi(originating_udi), card_name, (int) u->use_tsched);
pa_log_debug("Loading module-alsa-card with arguments '%s'", args);
m = pa_module_load(u->core, "module-alsa-card", args);
@@ -567,7 +568,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_sink *sink;
if ((sink = pa_namereg_get(u->core, d->sink_name, PA_NAMEREG_SINK))) {
- pa_bool_t success = pa_sink_suspend(sink, suspend) >= 0;
+ pa_bool_t success = pa_sink_suspend(sink, suspend, PA_SUSPEND_SESSION) >= 0;
if (!success && !suspend)
d->acl_race_fix = TRUE; /* resume failed, let's try again */
@@ -580,7 +581,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_source *source;
if ((source = pa_namereg_get(u->core, d->source_name, PA_NAMEREG_SOURCE))) {
- pa_bool_t success = pa_source_suspend(source, suspend) >= 0;
+ pa_bool_t success = pa_source_suspend(source, suspend, PA_SUSPEND_SESSION) >= 0;
if (!success && !suspend)
d->acl_race_fix = TRUE; /* resume failed, let's try again */
@@ -593,7 +594,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_card *card;
if ((card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD))) {
- pa_bool_t success = pa_card_suspend(card, suspend) >= 0;
+ pa_bool_t success = pa_card_suspend(card, suspend, PA_SUSPEND_SESSION) >= 0;
if (!success && !suspend)
d->acl_race_fix = TRUE; /* resume failed, let's try again */
@@ -637,21 +638,21 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_sink *sink;
if ((sink = pa_namereg_get(u->core, d->sink_name, PA_NAMEREG_SINK)))
- pa_sink_suspend(sink, FALSE);
+ pa_sink_suspend(sink, FALSE, PA_SUSPEND_SESSION);
}
if (d->source_name) {
pa_source *source;
if ((source = pa_namereg_get(u->core, d->source_name, PA_NAMEREG_SOURCE)))
- pa_source_suspend(source, FALSE);
+ pa_source_suspend(source, FALSE, PA_SUSPEND_SESSION);
}
if (d->card_name) {
pa_card *card;
if ((card = pa_namereg_get(u->core, d->source_name, PA_NAMEREG_CARD)))
- pa_card_suspend(card, FALSE);
+ pa_card_suspend(card, FALSE, PA_SUSPEND_SESSION);
}
}
diff --git a/src/modules/module-intended-roles.c b/src/modules/module-intended-roles.c
new file mode 100644
index 00000000..c697209a
--- /dev/null
+++ b/src/modules/module-intended-roles.c
@@ -0,0 +1,428 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Lennart Poettering
+
+ 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
+ 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <pulse/xmalloc.h>
+#include <pulse/volume.h>
+#include <pulse/timeval.h>
+#include <pulse/util.h>
+
+#include <pulsecore/core-error.h>
+#include <pulsecore/module.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/modargs.h>
+#include <pulsecore/log.h>
+#include <pulsecore/core-subscribe.h>
+#include <pulsecore/sink-input.h>
+#include <pulsecore/source-output.h>
+#include <pulsecore/namereg.h>
+
+#include "module-intended-roles-symdef.h"
+
+PA_MODULE_AUTHOR("Lennart Poettering");
+PA_MODULE_DESCRIPTION("Automatically set device of streams based of intended roles of devices");
+PA_MODULE_VERSION(PACKAGE_VERSION);
+PA_MODULE_LOAD_ONCE(TRUE);
+PA_MODULE_USAGE(
+ "on_hotplug=<When new device becomes available, recheck streams?> "
+ "on_rescue=<When device becomes unavailable, recheck streams?>");
+
+static const char* const valid_modargs[] = {
+ "on_hotplug",
+ "on_rescue",
+ NULL
+};
+
+struct userdata {
+ pa_core *core;
+ pa_module *module;
+
+ pa_hook_slot
+ *sink_input_new_hook_slot,
+ *source_output_new_hook_slot,
+ *sink_put_hook_slot,
+ *source_put_hook_slot,
+ *sink_unlink_hook_slot,
+ *source_unlink_hook_slot;
+
+ pa_bool_t on_hotplug:1;
+ pa_bool_t on_rescue:1;
+};
+
+static pa_bool_t role_match(pa_proplist *proplist, const char *role) {
+ const char *ir;
+ char *r;
+ const char *state = NULL;
+
+ if (!(ir = pa_proplist_gets(proplist, PA_PROP_DEVICE_INTENDED_ROLES)))
+ return FALSE;
+
+ while ((r = pa_split_spaces(ir, &state))) {
+
+ if (pa_streq(role, r)) {
+ pa_xfree(r);
+ return TRUE;
+ }
+
+ pa_xfree(r);
+ }
+
+ return FALSE;
+}
+
+static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_new_data *new_data, struct userdata *u) {
+ const char *role;
+ pa_sink *s, *def;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(new_data);
+ pa_assert(u);
+
+ if (!new_data->proplist) {
+ pa_log_debug("New stream lacks property data.");
+ return PA_HOOK_OK;
+ }
+
+ if (new_data->sink) {
+ pa_log_debug("Not setting device for stream %s, because already set.", pa_strnull(pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_NAME)));
+ return PA_HOOK_OK;
+ }
+
+ if (!(role = pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_ROLE))) {
+ pa_log_debug("Not setting device for stream %s, because it lacks role.", pa_strnull(pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_NAME)));
+ return PA_HOOK_OK;
+ }
+
+ /* Prefer the default sink over any other sink, just in case... */
+ if ((def = pa_namereg_get_default_sink(c)))
+ if (role_match(def->proplist, role)) {
+ new_data->sink = def;
+ new_data->save_sink = FALSE;
+ return PA_HOOK_OK;
+ }
+
+ PA_IDXSET_FOREACH(s, c->sinks, idx) {
+ if (s == def)
+ continue;
+
+ if (role_match(s->proplist, role)) {
+ new_data->sink = s;
+ new_data->save_sink = FALSE;
+ return PA_HOOK_OK;
+ }
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_output_new_data *new_data, struct userdata *u) {
+ const char *role;
+ pa_source *s, *def;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(new_data);
+ pa_assert(u);
+
+ if (!new_data->proplist) {
+ pa_log_debug("New stream lacks property data.");
+ return PA_HOOK_OK;
+ }
+
+ if (new_data->source) {
+ pa_log_debug("Not setting device for stream %s, because already set.", pa_strnull(pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_NAME)));
+ return PA_HOOK_OK;
+ }
+
+ if (!(role = pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_ROLE))) {
+ pa_log_debug("Not setting device for stream %s, because it lacks role.", pa_strnull(pa_proplist_gets(new_data->proplist, PA_PROP_MEDIA_NAME)));
+ return PA_HOOK_OK;
+ }
+
+ /* Prefer the default source over any other source, just in case... */
+ if ((def = pa_namereg_get_default_source(c)))
+ if (role_match(def->proplist, role)) {
+ new_data->source = def;
+ new_data->save_source = FALSE;
+ return PA_HOOK_OK;
+ }
+
+ PA_IDXSET_FOREACH(s, c->sources, idx) {
+ if (s == def)
+ continue;
+
+ if (role_match(s->proplist, role)) {
+ new_data->source = s;
+ new_data->save_source = FALSE;
+ return PA_HOOK_OK;
+ }
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct userdata *u) {
+ pa_sink_input *si;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(sink);
+ pa_assert(u);
+ pa_assert(u->on_hotplug);
+
+ PA_IDXSET_FOREACH(si, c->sink_inputs, idx) {
+ const char *role;
+
+ if (si->sink == sink)
+ continue;
+
+ if (si->save_sink)
+ continue;
+
+ if (!(role = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_ROLE)))
+ continue;
+
+ if (role_match(si->sink->proplist, role))
+ continue;
+
+ if (!role_match(sink->proplist, role))
+ continue;
+
+ pa_sink_input_move_to(si, sink, FALSE);
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source, struct userdata *u) {
+ pa_source_output *so;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(source);
+ pa_assert(u);
+ pa_assert(u->on_hotplug);
+
+ PA_IDXSET_FOREACH(so, c->source_outputs, idx) {
+ const char *role;
+
+ if (so->source == source)
+ continue;
+
+ if (so->save_source)
+ continue;
+
+ if (so->direct_on_input)
+ continue;
+
+ if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE)))
+ continue;
+
+ if (role_match(so->source->proplist, role))
+ continue;
+
+ if (!role_match(source->proplist, role))
+ continue;
+
+ pa_source_output_move_to(so, source, FALSE);
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, struct userdata *u) {
+ pa_sink_input *si;
+ uint32_t idx;
+ pa_sink *def;
+
+ pa_assert(c);
+ pa_assert(sink);
+ pa_assert(u);
+ pa_assert(u->on_rescue);
+
+ /* There's no point in doing anything if the core is shut down anyway */
+ if (c->state == PA_CORE_SHUTDOWN)
+ return PA_HOOK_OK;
+
+ /* If there not default sink, then there is no sink at all */
+ if (!(def = pa_namereg_get_default_sink(c)))
+ return PA_HOOK_OK;
+
+ PA_IDXSET_FOREACH(si, sink->inputs, idx) {
+ const char *role;
+ uint32_t jdx;
+ pa_sink *d;
+
+ if (!(role = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_ROLE)))
+ continue;
+
+ /* Would the default sink fit? If so, let's use it */
+ if (def != sink && role_match(def->proplist, role)) {
+ pa_sink_input_move_to(si, def, FALSE);
+ continue;
+ }
+
+ /* Try to find some other fitting sink */
+ PA_IDXSET_FOREACH(d, c->sinks, jdx) {
+ if (d == def || d == sink)
+ continue;
+
+ if (role_match(d->proplist, role)) {
+ pa_sink_input_move_to(si, d, FALSE);
+ break;
+ }
+ }
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *source, struct userdata *u) {
+ pa_source_output *so;
+ uint32_t idx;
+ pa_source *def;
+
+ pa_assert(c);
+ pa_assert(source);
+ pa_assert(u);
+ pa_assert(u->on_rescue);
+
+ /* There's no point in doing anything if the core is shut down anyway */
+ if (c->state == PA_CORE_SHUTDOWN)
+ return PA_HOOK_OK;
+
+ /* If there not default source, then there is no source at all */
+ if (!(def = pa_namereg_get_default_source(c)))
+ return PA_HOOK_OK;
+
+ PA_IDXSET_FOREACH(so, source->outputs, idx) {
+ const char *role;
+ uint32_t jdx;
+ pa_source *d;
+
+ if (so->direct_on_input)
+ continue;
+
+ if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE)))
+ continue;
+
+ /* Would the default source fit? If so, let's use it */
+ if (def != source && role_match(def->proplist, role) && !source->monitor_of == !def->monitor_of) {
+ pa_source_output_move_to(so, def, FALSE);
+ continue;
+ }
+
+ /* Try to find some other fitting source */
+ PA_IDXSET_FOREACH(d, c->sources, jdx) {
+ if (d == def || d == source)
+ continue;
+
+ if (role_match(d->proplist, role) && !source->monitor_of == !d->monitor_of) {
+ pa_source_output_move_to(so, d, FALSE);
+ break;
+ }
+ }
+ }
+
+ return PA_HOOK_OK;
+}
+
+int pa__init(pa_module*m) {
+ pa_modargs *ma = NULL;
+ struct userdata *u;
+ pa_bool_t on_hotplug = TRUE, on_rescue = TRUE;
+
+ pa_assert(m);
+
+ if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
+ pa_log("Failed to parse module arguments");
+ goto fail;
+ }
+
+ if (pa_modargs_get_value_boolean(ma, "on_hotplug", &on_hotplug) < 0 ||
+ pa_modargs_get_value_boolean(ma, "on_rescue", &on_rescue) < 0) {
+ pa_log("on_hotplug= and on_rescue= expect boolean arguments");
+ goto fail;
+ }
+
+ m->userdata = u = pa_xnew0(struct userdata, 1);
+ u->core = m->core;
+ u->module = m;
+ u->on_hotplug = on_hotplug;
+ u->on_rescue = on_rescue;
+
+ /* A little bit later than module-stream-restore */
+ u->sink_input_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_NEW], PA_HOOK_EARLY+10, (pa_hook_cb_t) sink_input_new_hook_callback, u);
+ u->source_output_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_NEW], PA_HOOK_EARLY+10, (pa_hook_cb_t) source_output_new_hook_callback, u);
+
+ if (on_hotplug) {
+ /* A little bit later than module-stream-restore */
+ u->sink_put_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_PUT], PA_HOOK_LATE+10, (pa_hook_cb_t) sink_put_hook_callback, u);
+ u->source_put_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_PUT], PA_HOOK_LATE+10, (pa_hook_cb_t) source_put_hook_callback, u);
+ }
+
+ if (on_rescue) {
+ /* A little bit later than module-stream-restore, a little bit earlier than module-rescue-streams, ... */
+ u->sink_unlink_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE+10, (pa_hook_cb_t) sink_unlink_hook_callback, u);
+ u->source_unlink_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE+10, (pa_hook_cb_t) source_unlink_hook_callback, u);
+ }
+
+ pa_modargs_free(ma);
+ return 0;
+
+fail:
+ pa__done(m);
+
+ if (ma)
+ pa_modargs_free(ma);
+
+ return -1;
+}
+
+void pa__done(pa_module*m) {
+ struct userdata* u;
+
+ pa_assert(m);
+
+ if (!(u = m->userdata))
+ return;
+
+ if (u->sink_input_new_hook_slot)
+ pa_hook_slot_free(u->sink_input_new_hook_slot);
+ if (u->source_output_new_hook_slot)
+ pa_hook_slot_free(u->source_output_new_hook_slot);
+
+ if (u->sink_put_hook_slot)
+ pa_hook_slot_free(u->sink_put_hook_slot);
+ if (u->source_put_hook_slot)
+ pa_hook_slot_free(u->source_put_hook_slot);
+
+ if (u->sink_unlink_hook_slot)
+ pa_hook_slot_free(u->sink_unlink_hook_slot);
+ if (u->source_unlink_hook_slot)
+ pa_hook_slot_free(u->source_unlink_hook_slot);
+
+ pa_xfree(u);
+}
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 15af74a6..21f4a8f1 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -27,6 +27,7 @@
#endif
#include <pulse/xmalloc.h>
+#include <pulse/i18n.h>
#include <pulsecore/core-error.h>
#include <pulsecore/namereg.h>
@@ -45,20 +46,20 @@
#include "ladspa.h"
PA_MODULE_AUTHOR("Lennart Poettering");
-PA_MODULE_DESCRIPTION("Virtual LADSPA sink");
+PA_MODULE_DESCRIPTION(_("Virtual LADSPA sink"));
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
- "sink_name=<name for the sink> "
- "sink_properties=<properties for the sink> "
- "master=<name of sink to remap> "
- "format=<sample format> "
- "rate=<sample rate> "
- "channels=<number of channels> "
- "channel_map=<channel map> "
- "plugin=<ladspa plugin name> "
- "label=<ladspa plugin label> "
- "control=<comma seperated list of input control values>");
+ _("sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
+ "master=<name of sink to filter> "
+ "format=<sample format> "
+ "rate=<sample rate> "
+ "channels=<number of channels> "
+ "channel_map=<channel map> "
+ "plugin=<ladspa plugin name> "
+ "label=<ladspa plugin label> "
+ "control=<comma seperated list of input control values>"));
#define MEMBLOCKQ_MAXLENGTH (16*1024*1024)
diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c
index a1a8726f..06efeb8f 100644
--- a/src/modules/module-lirc.c
+++ b/src/modules/module-lirc.c
@@ -112,7 +112,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
volchange = RESET;
if (volchange == INVALID)
- pa_log_warn("Recieved unknown IR code '%s'", name);
+ pa_log_warn("Received unknown IR code '%s'", name);
else {
pa_sink *s;
@@ -133,7 +133,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MAX;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
break;
case DOWN:
@@ -144,20 +144,20 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MUTED;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
break;
case MUTE:
- pa_sink_set_mute(s, TRUE);
+ pa_sink_set_mute(s, TRUE, TRUE);
break;
case RESET:
- pa_sink_set_mute(s, FALSE);
+ pa_sink_set_mute(s, FALSE, TRUE);
break;
case MUTE_TOGGLE:
- pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE));
+ pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE);
break;
case INVALID:
diff --git a/src/modules/module-mmkbd-evdev.c b/src/modules/module-mmkbd-evdev.c
index d8b9c79e..b30fae51 100644
--- a/src/modules/module-mmkbd-evdev.c
+++ b/src/modules/module-mmkbd-evdev.c
@@ -115,7 +115,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MAX;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
break;
case DOWN:
@@ -126,12 +126,12 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MUTED;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
break;
case MUTE_TOGGLE:
- pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE));
+ pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE);
break;
case INVALID:
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index 30a99ca7..36c50b05 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -32,12 +32,14 @@
#include <unistd.h>
#include <limits.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
#include <pulsecore/macro.h>
#include <pulsecore/sink.h>
#include <pulsecore/module.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/core-error.h>
#include <pulsecore/modargs.h>
@@ -45,7 +47,6 @@
#include <pulsecore/thread.h>
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
-#include <pulsecore/rtclock.h>
#include "module-null-sink-symdef.h"
@@ -101,14 +102,14 @@ static int sink_process_msg(
case PA_SINK_MESSAGE_SET_STATE:
if (PA_PTR_TO_UINT(data) == PA_SINK_RUNNING)
- u->timestamp = pa_rtclock_usec();
+ u->timestamp = pa_rtclock_now();
break;
case PA_SINK_MESSAGE_GET_LATENCY: {
pa_usec_t now;
- now = pa_rtclock_usec();
+ now = pa_rtclock_now();
*((pa_usec_t*) data) = u->timestamp > now ? u->timestamp - now : 0ULL;
return 0;
@@ -208,9 +209,8 @@ static void thread_func(void *userdata) {
pa_log_debug("Thread starting up");
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
- u->timestamp = pa_rtclock_usec();
+ u->timestamp = pa_rtclock_now();
for (;;) {
int ret;
@@ -219,7 +219,7 @@ static void thread_func(void *userdata) {
if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
pa_usec_t now;
- now = pa_rtclock_usec();
+ now = pa_rtclock_now();
if (u->sink->thread_info.rewind_requested) {
if (u->sink->thread_info.rewind_nbytes > 0)
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index 5b0f6414..8a7dc846 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -170,7 +170,6 @@ static void thread_func(void *userdata) {
pa_log_debug("Thread starting up");
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
struct pollfd *pollfd;
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
index 61c9fc0e..e5609fb5 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -129,7 +129,6 @@ static void thread_func(void *userdata) {
pa_log_debug("Thread starting up");
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
int ret;
diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
index c22711ae..c23feceb 100644
--- a/src/modules/module-rescue-streams.c
+++ b/src/modules/module-rescue-streams.c
@@ -65,14 +65,14 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
return PA_HOOK_OK;
}
- if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SINK)) || target == sink) {
+ if (!(target = pa_namereg_get_default_sink(c)) || target == sink) {
PA_IDXSET_FOREACH(target, c->sinks, idx)
if (target != sink)
break;
if (!target) {
- pa_log_info("No evacuation sink found.");
+ pa_log_debug("No evacuation sink found.");
return PA_HOOK_OK;
}
}
@@ -108,7 +108,7 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
return PA_HOOK_OK;
}
- if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SOURCE)) || target == source) {
+ if (!(target = pa_namereg_get_default_source(c)) || target == source) {
PA_IDXSET_FOREACH(target, c->sources, idx)
if (target != source && !target->monitor_of == !source->monitor_of)
@@ -146,8 +146,10 @@ int pa__init(pa_module*m) {
}
m->userdata = u = pa_xnew(struct userdata, 1);
- u->sink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) sink_hook_callback, NULL);
- u->source_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) source_hook_callback, NULL);
+
+ /* A little bit later than module-stream-restore, module-intended-roles... */
+ u->sink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_hook_callback, u);
+ u->source_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) source_hook_callback, u);
pa_modargs_free(ma);
return 0;
diff --git a/src/modules/module-sine-source.c b/src/modules/module-sine-source.c
index 14a04e47..9826e5f4 100644
--- a/src/modules/module-sine-source.c
+++ b/src/modules/module-sine-source.c
@@ -34,19 +34,20 @@
#include <sys/ioctl.h>
#include <sys/poll.h>
-#include <pulse/xmalloc.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
+#include <pulse/xmalloc.h>
#include <pulsecore/core-error.h>
#include <pulsecore/source.h>
#include <pulsecore/module.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/modargs.h>
#include <pulsecore/log.h>
#include <pulsecore/thread.h>
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
-#include <pulsecore/rtclock.h>
#include "module-sine-source-symdef.h"
@@ -101,14 +102,14 @@ static int source_process_msg(
case PA_SOURCE_MESSAGE_SET_STATE:
if (PA_PTR_TO_UINT(data) == PA_SOURCE_RUNNING)
- u->timestamp = pa_rtclock_usec();
+ u->timestamp = pa_rtclock_now();
break;
case PA_SOURCE_MESSAGE_GET_LATENCY: {
pa_usec_t now, left_to_fill;
- now = pa_rtclock_usec();
+ now = pa_rtclock_now();
left_to_fill = u->timestamp > now ? u->timestamp - now : 0ULL;
*((pa_usec_t*) data) = u->block_usec > left_to_fill ? u->block_usec - left_to_fill : 0ULL;
@@ -166,9 +167,8 @@ static void thread_func(void *userdata) {
pa_log_debug("Thread starting up");
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
- u->timestamp = pa_rtclock_usec();
+ u->timestamp = pa_rtclock_now();
for (;;) {
int ret;
@@ -176,7 +176,7 @@ static void thread_func(void *userdata) {
if (PA_SOURCE_IS_OPENED(u->source->thread_info.state)) {
pa_usec_t now;
- now = pa_rtclock_usec();
+ now = pa_rtclock_now();
if (u->timestamp <= now)
process_render(u, now);
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 5cfa97a7..08fe6f58 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -641,7 +641,7 @@ static void thread_func(void *userdata) {
* Since we cannot modify the size of the output buffer we fake it
* by not filling it more than u->buffer_size.
*/
- xtime0 = pa_rtclock_usec();
+ xtime0 = pa_rtclock_now();
buffered_bytes = get_playback_buffered_bytes(u);
if (buffered_bytes >= (uint64_t)u->buffer_size)
break;
diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c
index 2de98f4e..e60cc735 100644
--- a/src/modules/module-stream-restore.c
+++ b/src/modules/module-stream-restore.c
@@ -35,6 +35,7 @@
#include <pulse/volume.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
+#include <pulse/rtclock.h>
#include <pulsecore/core-error.h>
#include <pulsecore/module.h>
@@ -59,15 +60,19 @@ PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_USAGE(
"restore_device=<Save/restore sinks/sources?> "
"restore_volume=<Save/restore volumes?> "
- "restore_muted=<Save/restore muted states?>");
+ "restore_muted=<Save/restore muted states?> "
+ "on_hotplug=<When new device becomes available, recheck streams?> "
+ "on_rescue=<When device becomes unavailable, recheck streams?>");
-#define SAVE_INTERVAL 10
+#define SAVE_INTERVAL (10 * PA_USEC_PER_SEC)
#define IDENTIFICATION_PROPERTY "module-stream-restore.id"
static const char* const valid_modargs[] = {
"restore_device",
"restore_volume",
"restore_muted",
+ "on_hotplug",
+ "on_rescue",
NULL
};
@@ -79,6 +84,10 @@ struct userdata {
*sink_input_new_hook_slot,
*sink_input_fixate_hook_slot,
*source_output_new_hook_slot,
+ *sink_put_hook_slot,
+ *source_put_hook_slot,
+ *sink_unlink_hook_slot,
+ *source_unlink_hook_slot,
*connection_unlink_hook_slot;
pa_time_event *save_time_event;
pa_database* database;
@@ -86,6 +95,8 @@ struct userdata {
pa_bool_t restore_device:1;
pa_bool_t restore_volume:1;
pa_bool_t restore_muted:1;
+ pa_bool_t on_hotplug:1;
+ pa_bool_t on_rescue:1;
pa_native_protocol *protocol;
pa_idxset *subscribed;
@@ -111,12 +122,11 @@ enum {
SUBCOMMAND_EVENT
};
-static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata) {
+static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *t, void *userdata) {
struct userdata *u = userdata;
pa_assert(a);
pa_assert(e);
- pa_assert(tv);
pa_assert(u);
pa_assert(e == u->save_time_event);
@@ -210,7 +220,6 @@ fail:
}
static void trigger_save(struct userdata *u) {
- struct timeval tv;
pa_native_connection *c;
uint32_t idx;
@@ -230,9 +239,7 @@ static void trigger_save(struct userdata *u) {
if (u->save_time_event)
return;
- pa_gettimeofday(&tv);
- tv.tv_sec += SAVE_INTERVAL;
- u->save_time_event = u->core->mainloop->time_new(u->core->mainloop, &tv, save_time_callback, u);
+ u->save_time_event = pa_core_rttime_new(u->core, pa_rtclock_now() + SAVE_INTERVAL, save_time_callback, u);
}
static pa_bool_t entries_equal(const struct entry *a, const struct entry *b) {
@@ -353,18 +360,18 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
char *name;
struct entry *e;
+ pa_assert(c);
pa_assert(new_data);
-
- if (!u->restore_device)
- return PA_HOOK_OK;
+ pa_assert(u);
+ pa_assert(u->restore_device);
if (!(name = get_name(new_data->proplist, "sink-input")))
return PA_HOOK_OK;
if ((e = read_entry(u, name))) {
- pa_sink *s;
if (e->device_valid) {
+ pa_sink *s;
if ((s = pa_namereg_get(c, e->device, PA_NAMEREG_SINK))) {
if (!new_data->sink) {
@@ -372,7 +379,7 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
new_data->sink = s;
new_data->save_sink = TRUE;
} else
- pa_log_info("Not restore device for stream %s, because already set.", name);
+ pa_log_debug("Not restoring device for stream %s, because already set.", name);
}
}
@@ -388,10 +395,10 @@ static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *c, pa_sink_inpu
char *name;
struct entry *e;
+ pa_assert(c);
pa_assert(new_data);
-
- if (!u->restore_volume && !u->restore_muted)
- return PA_HOOK_OK;
+ pa_assert(u);
+ pa_assert(u->restore_volume || u->restore_muted);
if (!(name = get_name(new_data->proplist, "sink-input")))
return PA_HOOK_OK;
@@ -404,12 +411,13 @@ static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *c, pa_sink_inpu
pa_cvolume v;
pa_log_info("Restoring volume for sink input %s.", name);
+
v = e->volume;
pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
pa_sink_input_new_data_set_volume(new_data, &v);
new_data->volume_is_absolute = FALSE;
- new_data->save_volume = FALSE;
+ new_data->save_volume = TRUE;
} else
pa_log_debug("Not restoring volume for sink input %s, because already set.", name);
}
@@ -436,10 +444,10 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
char *name;
struct entry *e;
+ pa_assert(c);
pa_assert(new_data);
-
- if (!u->restore_device)
- return PA_HOOK_OK;
+ pa_assert(u);
+ pa_assert(u->restore_device);
if (new_data->direct_on_input)
return PA_HOOK_OK;
@@ -457,7 +465,7 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
new_data->source = s;
new_data->save_source = TRUE;
} else
- pa_log_info("Not restoring device for stream %s, because already set", name);
+ pa_log_debug("Not restoring device for stream %s, because already set", name);
}
}
@@ -469,6 +477,155 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
return PA_HOOK_OK;
}
+static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct userdata *u) {
+ pa_sink_input *si;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(sink);
+ pa_assert(u);
+ pa_assert(u->on_hotplug && u->restore_device);
+
+ PA_IDXSET_FOREACH(si, c->sink_inputs, idx) {
+ char *name;
+ struct entry *e;
+
+ if (si->sink == sink)
+ continue;
+
+ if (si->save_sink)
+ continue;
+
+ if (!(name = get_name(si->proplist, "sink-input")))
+ continue;
+
+ if ((e = read_entry(u, name))) {
+ if (e->device_valid && pa_streq(e->device, sink->name))
+ pa_sink_input_move_to(si, sink, TRUE);
+
+ pa_xfree(e);
+ }
+
+ pa_xfree(name);
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source, struct userdata *u) {
+ pa_source_output *so;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(source);
+ pa_assert(u);
+ pa_assert(u->on_hotplug && u->restore_device);
+
+ PA_IDXSET_FOREACH(so, c->source_outputs, idx) {
+ char *name;
+ struct entry *e;
+
+ if (so->source == source)
+ continue;
+
+ if (so->save_source)
+ continue;
+
+ if (so->direct_on_input)
+ continue;
+
+ if (!(name = get_name(so->proplist, "source-input")))
+ continue;
+
+ if ((e = read_entry(u, name))) {
+ if (e->device_valid && pa_streq(e->device, source->name))
+ pa_source_output_move_to(so, source, TRUE);
+
+ pa_xfree(e);
+ }
+
+ pa_xfree(name);
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, struct userdata *u) {
+ pa_sink_input *si;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(sink);
+ pa_assert(u);
+ pa_assert(u->on_rescue && u->restore_device);
+
+ /* There's no point in doing anything if the core is shut down anyway */
+ if (c->state == PA_CORE_SHUTDOWN)
+ return PA_HOOK_OK;
+
+ PA_IDXSET_FOREACH(si, sink->inputs, idx) {
+ char *name;
+ struct entry *e;
+
+ if (!(name = get_name(si->proplist, "sink-input")))
+ continue;
+
+ if ((e = read_entry(u, name))) {
+
+ if (e->device_valid) {
+ pa_sink *d;
+
+ if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SINK)) && d != sink)
+ pa_sink_input_move_to(si, d, TRUE);
+ }
+
+ pa_xfree(e);
+ }
+
+ pa_xfree(name);
+ }
+
+ return PA_HOOK_OK;
+}
+
+static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *source, struct userdata *u) {
+ pa_source_output *so;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(source);
+ pa_assert(u);
+ pa_assert(u->on_rescue && u->restore_device);
+
+ /* There's no point in doing anything if the core is shut down anyway */
+ if (c->state == PA_CORE_SHUTDOWN)
+ return PA_HOOK_OK;
+
+ PA_IDXSET_FOREACH(so, source->outputs, idx) {
+ char *name;
+ struct entry *e;
+
+ if (!(name = get_name(so->proplist, "source-output")))
+ continue;
+
+ if ((e = read_entry(u, name))) {
+
+ if (e->device_valid) {
+ pa_source *d;
+
+ if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE)) && d != source)
+ pa_source_output_move_to(so, d, TRUE);
+ }
+
+ pa_xfree(e);
+ }
+
+ pa_xfree(name);
+ }
+
+ return PA_HOOK_OK;
+}
+
#define EXT_VERSION 1
static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
@@ -503,7 +660,7 @@ static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
if (u->restore_muted && e->muted_valid) {
pa_log_info("Restoring mute state for sink input %s.", name);
- pa_sink_input_set_mute(si, e->muted, TRUE);
+ pa_sink_input_set_mute(si, e->muted, FALSE);
}
if (u->restore_device &&
@@ -511,7 +668,7 @@ static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
(s = pa_namereg_get(u->core, e->device, PA_NAMEREG_SINK))) {
pa_log_info("Restoring device for stream %s.", name);
- pa_sink_input_move_to(si, s, TRUE);
+ pa_sink_input_move_to(si, s, FALSE);
}
}
@@ -533,7 +690,7 @@ static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
(s = pa_namereg_get(u->core, e->device, PA_NAMEREG_SOURCE))) {
pa_log_info("Restoring device for stream %s.", name);
- pa_source_output_move_to(so, s, TRUE);
+ pa_source_output_move_to(so, s, FALSE);
}
}
}
@@ -774,7 +931,7 @@ int pa__init(pa_module*m) {
pa_sink_input *si;
pa_source_output *so;
uint32_t idx;
- pa_bool_t restore_device = TRUE, restore_volume = TRUE, restore_muted = TRUE;
+ pa_bool_t restore_device = TRUE, restore_volume = TRUE, restore_muted = TRUE, on_hotplug = TRUE, on_rescue = TRUE;
pa_assert(m);
@@ -785,22 +942,24 @@ int pa__init(pa_module*m) {
if (pa_modargs_get_value_boolean(ma, "restore_device", &restore_device) < 0 ||
pa_modargs_get_value_boolean(ma, "restore_volume", &restore_volume) < 0 ||
- pa_modargs_get_value_boolean(ma, "restore_muted", &restore_muted) < 0) {
- pa_log("restore_device=, restore_volume= and restore_muted= expect boolean arguments");
+ pa_modargs_get_value_boolean(ma, "restore_muted", &restore_muted) < 0 ||
+ pa_modargs_get_value_boolean(ma, "on_hotplug", &on_hotplug) < 0 ||
+ pa_modargs_get_value_boolean(ma, "on_rescue", &on_rescue) < 0) {
+ pa_log("restore_device=, restore_volume=, restore_muted=, on_hotplug= and on_rescue= expect boolean arguments");
goto fail;
}
if (!restore_muted && !restore_volume && !restore_device)
pa_log_warn("Neither restoring volume, nor restoring muted, nor restoring device enabled!");
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
- u->save_time_event = NULL;
u->restore_device = restore_device;
u->restore_volume = restore_volume;
u->restore_muted = restore_muted;
- u->database = NULL;
+ u->on_hotplug = on_hotplug;
+ u->on_rescue = on_rescue;
u->subscribed = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
u->protocol = pa_native_protocol_get(m->core);
@@ -811,17 +970,27 @@ int pa__init(pa_module*m) {
u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_SINK_INPUT|PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT, subscribe_callback, u);
if (restore_device) {
+ /* A little bit earlier than module-intended-roles ... */
u->sink_input_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_NEW], PA_HOOK_EARLY, (pa_hook_cb_t) sink_input_new_hook_callback, u);
u->source_output_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_NEW], PA_HOOK_EARLY, (pa_hook_cb_t) source_output_new_hook_callback, u);
}
- if (restore_volume || restore_muted)
- u->sink_input_fixate_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_FIXATE], PA_HOOK_EARLY, (pa_hook_cb_t) sink_input_fixate_hook_callback, u);
+ if (restore_device && on_hotplug) {
+ /* A little bit earlier than module-intended-roles ... */
+ u->sink_put_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_PUT], PA_HOOK_LATE, (pa_hook_cb_t) sink_put_hook_callback, u);
+ u->source_put_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_PUT], PA_HOOK_LATE, (pa_hook_cb_t) source_put_hook_callback, u);
+ }
+ if (restore_device && on_rescue) {
+ /* A little bit earlier than module-intended-roles, module-rescue-streams, ... */
+ u->sink_unlink_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) sink_unlink_hook_callback, u);
+ u->source_unlink_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) source_unlink_hook_callback, u);
+ }
- fname = pa_state_path("stream-volumes", TRUE);
+ if (restore_volume || restore_muted)
+ u->sink_input_fixate_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_FIXATE], PA_HOOK_EARLY, (pa_hook_cb_t) sink_input_fixate_hook_callback, u);
- if (!fname)
+ if (!(fname = pa_state_path("stream-volumes", TRUE)))
goto fail;
if (!(u->database = pa_database_open(fname, TRUE))) {
@@ -833,10 +1002,10 @@ int pa__init(pa_module*m) {
pa_log_info("Sucessfully opened database file '%s'.", fname);
pa_xfree(fname);
- for (si = pa_idxset_first(m->core->sink_inputs, &idx); si; si = pa_idxset_next(m->core->sink_inputs, &idx))
+ PA_IDXSET_FOREACH(si, m->core->sink_inputs, idx)
subscribe_callback(m->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW, si->index, u);
- for (so = pa_idxset_first(m->core->source_outputs, &idx); so; so = pa_idxset_next(m->core->source_outputs, &idx))
+ PA_IDXSET_FOREACH(so, m->core->source_outputs, idx)
subscribe_callback(m->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_NEW, so->index, u);
pa_modargs_free(ma);
@@ -869,6 +1038,16 @@ void pa__done(pa_module*m) {
if (u->source_output_new_hook_slot)
pa_hook_slot_free(u->source_output_new_hook_slot);
+ if (u->sink_put_hook_slot)
+ pa_hook_slot_free(u->sink_put_hook_slot);
+ if (u->source_put_hook_slot)
+ pa_hook_slot_free(u->source_put_hook_slot);
+
+ if (u->sink_unlink_hook_slot)
+ pa_hook_slot_free(u->sink_unlink_hook_slot);
+ if (u->source_unlink_hook_slot)
+ pa_hook_slot_free(u->source_unlink_hook_slot);
+
if (u->connection_unlink_hook_slot)
pa_hook_slot_free(u->connection_unlink_hook_slot);
diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
index cc69d74c..70a7b049 100644
--- a/src/modules/module-suspend-on-idle.c
+++ b/src/modules/module-suspend-on-idle.c
@@ -25,6 +25,7 @@
#include <pulse/xmalloc.h>
#include <pulse/timeval.h>
+#include <pulse/rtclock.h>
#include <pulsecore/core.h>
#include <pulsecore/core-util.h>
@@ -75,45 +76,43 @@ struct device_info {
struct userdata *userdata;
pa_sink *sink;
pa_source *source;
- struct timeval last_use;
+ pa_usec_t last_use;
pa_time_event *time_event;
};
-static void timeout_cb(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata) {
+static void timeout_cb(pa_mainloop_api*a, pa_time_event* e, const struct timeval *t, void *userdata) {
struct device_info *d = userdata;
pa_assert(d);
d->userdata->core->mainloop->time_restart(d->time_event, NULL);
- if (d->sink && pa_sink_check_suspend(d->sink) <= 0 && pa_sink_get_state(d->sink) != PA_SINK_SUSPENDED) {
+ if (d->sink && pa_sink_check_suspend(d->sink) <= 0 && !(d->sink->suspend_cause & PA_SUSPEND_IDLE)) {
pa_log_info("Sink %s idle for too long, suspending ...", d->sink->name);
- pa_sink_suspend(d->sink, TRUE);
+ pa_sink_suspend(d->sink, TRUE, PA_SUSPEND_IDLE);
}
- if (d->source && pa_source_check_suspend(d->source) <= 0 && pa_source_get_state(d->source) != PA_SOURCE_SUSPENDED) {
+ if (d->source && pa_source_check_suspend(d->source) <= 0 && !(d->source->suspend_cause & PA_SUSPEND_IDLE)) {
pa_log_info("Source %s idle for too long, suspending ...", d->source->name);
- pa_source_suspend(d->source, TRUE);
+ pa_source_suspend(d->source, TRUE, PA_SUSPEND_IDLE);
}
}
static void restart(struct device_info *d) {
- struct timeval tv;
+ pa_usec_t now;
const char *s;
uint32_t timeout;
+
pa_assert(d);
pa_assert(d->sink || d->source);
- pa_gettimeofday(&tv);
- d->last_use = tv;
+ d->last_use = now = pa_rtclock_now();
s = pa_proplist_gets(d->sink ? d->sink->proplist : d->source->proplist, "module-suspend-on-idle.timeout");
if (!s || pa_atou(s, &timeout) < 0)
- timeout = d->userdata->timeout;
-
- pa_timeval_add(&tv, timeout * PA_USEC_PER_SEC);
+ timeout = d->userdata->timeout;
- d->userdata->core->mainloop->time_restart(d->time_event, &tv);
+ pa_core_rttime_restart(d->userdata->core, d->time_event, now + timeout * PA_USEC_PER_SEC);
if (d->sink)
pa_log_debug("Sink %s becomes idle, timeout in %u seconds.", d->sink->name, timeout);
@@ -127,13 +126,13 @@ static void resume(struct device_info *d) {
d->userdata->core->mainloop->time_restart(d->time_event, NULL);
if (d->sink) {
- pa_sink_suspend(d->sink, FALSE);
+ pa_sink_suspend(d->sink, FALSE, PA_SUSPEND_IDLE);
pa_log_debug("Sink %s becomes busy.", d->sink->name);
}
if (d->source) {
- pa_source_suspend(d->source, FALSE);
+ pa_source_suspend(d->source, FALSE, PA_SUSPEND_IDLE);
pa_log_debug("Source %s becomes busy.", d->source->name);
}
@@ -338,7 +337,7 @@ static pa_hook_result_t device_new_hook_cb(pa_core *c, pa_object *o, struct user
d->userdata = u;
d->source = source ? pa_source_ref(source) : NULL;
d->sink = sink ? pa_sink_ref(sink) : NULL;
- d->time_event = c->mainloop->time_new(c->mainloop, NULL, timeout_cb, d);
+ d->time_event = pa_core_rttime_new(c, PA_USEC_INVALID, timeout_cb, d);
pa_hashmap_put(u->device_infos, o, d);
if ((d->sink && pa_sink_check_suspend(d->sink) <= 0) ||
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index 6f525da3..d1153829 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -31,6 +31,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
#include <pulse/version.h>
@@ -50,7 +51,7 @@
#include <pulsecore/time-smoother.h>
#include <pulsecore/thread.h>
#include <pulsecore/thread-mq.h>
-#include <pulsecore/rtclock.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-error.h>
#include <pulsecore/proplist-util.h>
#include <pulsecore/auth-cookie.h>
@@ -112,7 +113,7 @@ static const char* const valid_modargs[] = {
#define DEFAULT_TIMEOUT 5
-#define LATENCY_INTERVAL 10
+#define LATENCY_INTERVAL (10*PA_USEC_PER_SEC)
#define MIN_NETWORK_LATENCY_USEC (8*PA_USEC_PER_MSEC)
@@ -395,7 +396,7 @@ static void check_smoother_status(struct userdata *u, pa_bool_t past) {
pa_assert(u);
- x = pa_rtclock_usec();
+ x = pa_rtclock_now();
/* Correct by the time the requested issued needs to travel to the
* other side. This is a valid thread-safe access, because the
@@ -500,7 +501,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
pa_usec_t yl, yr, *usec = data;
yl = pa_bytes_to_usec((uint64_t) u->counter, &u->sink->sample_spec);
- yr = pa_smoother_get(u->smoother, pa_rtclock_usec());
+ yr = pa_smoother_get(u->smoother, pa_rtclock_now());
*usec = yl > yr ? yl - yr : 0;
return 0;
@@ -533,7 +534,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
else
y = 0;
- pa_smoother_put(u->smoother, pa_rtclock_usec(), y);
+ pa_smoother_put(u->smoother, pa_rtclock_now(), y);
/* We can access this freely here, since the main thread is waiting for us */
u->thread_transport_usec = u->transport_usec;
@@ -607,7 +608,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
pa_usec_t yr, yl, *usec = data;
yl = pa_bytes_to_usec((uint64_t) u->counter, &PA_SOURCE(o)->sample_spec);
- yr = pa_smoother_get(u->smoother, pa_rtclock_usec());
+ yr = pa_smoother_get(u->smoother, pa_rtclock_now());
*usec = yr > yl ? yr - yl : 0;
return 0;
@@ -633,7 +634,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
y = pa_bytes_to_usec((uint64_t) u->counter, &u->source->sample_spec);
y += (pa_usec_t) offset;
- pa_smoother_put(u->smoother, pa_rtclock_usec(), y);
+ pa_smoother_put(u->smoother, pa_rtclock_now(), y);
/* We can access this freely here, since the main thread is waiting for us */
u->thread_transport_usec = u->transport_usec;
@@ -683,7 +684,6 @@ static void thread_func(void *userdata) {
pa_log_debug("Thread starting up");
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
int ret;
@@ -730,7 +730,7 @@ static void command_request(pa_pdispatch *pd, uint32_t command, uint32_t tag, p
}
if (channel != u->channel) {
- pa_log("Recieved data for invalid channel");
+ pa_log("Received data for invalid channel");
goto fail;
}
@@ -878,9 +878,8 @@ static void request_latency(struct userdata *u) {
}
/* Called from main context */
-static void timeout_callback(pa_mainloop_api *m, pa_time_event*e, const struct timeval *tv, void *userdata) {
+static void timeout_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
struct userdata *u = userdata;
- struct timeval ntv;
pa_assert(m);
pa_assert(e);
@@ -888,9 +887,7 @@ static void timeout_callback(pa_mainloop_api *m, pa_time_event*e, const struct
request_latency(u);
- pa_gettimeofday(&ntv);
- ntv.tv_sec += LATENCY_INTERVAL;
- m->time_restart(e, &ntv);
+ pa_core_rttime_restart(u->core, e, pa_rtclock_now() + LATENCY_INTERVAL);
}
/* Called from main context */
@@ -1157,10 +1154,10 @@ static void sink_input_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag
pa_cvolume_equal(&volume, &u->sink->virtual_volume))
return;
- pa_sink_volume_changed(u->sink, &volume);
+ pa_sink_volume_changed(u->sink, &volume, FALSE);
if (u->version >= 11)
- pa_sink_mute_changed(u->sink, mute);
+ pa_sink_mute_changed(u->sink, mute, FALSE);
return;
@@ -1357,7 +1354,6 @@ static void start_subscribe(struct userdata *u) {
/* Called from main context */
static void create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
struct userdata *u = userdata;
- struct timeval ntv;
#ifdef TUNNEL_SINK
uint32_t bytes;
#endif
@@ -1439,9 +1435,7 @@ static void create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t
request_info(u);
pa_assert(!u->time_event);
- pa_gettimeofday(&ntv);
- ntv.tv_sec += LATENCY_INTERVAL;
- u->time_event = u->core->mainloop->time_new(u->core->mainloop, &ntv, timeout_callback, u);
+ u->time_event = pa_core_rttime_new(u->core, pa_rtclock_now() + LATENCY_INTERVAL, timeout_callback, u);
request_latency(u);
@@ -1675,7 +1669,7 @@ static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t o
pa_assert(u);
if (channel != u->channel) {
- pa_log("Recieved memory block on bad channel.");
+ pa_log("Received memory block on bad channel.");
pa_module_unload_request(u->module, TRUE);
return;
}
@@ -1706,7 +1700,7 @@ static void on_connection(pa_socket_client *sc, pa_iochannel *io, void *userdata
}
u->pstream = pa_pstream_new(u->core->mainloop, io, u->core->mempool);
- u->pdispatch = pa_pdispatch_new(u->core->mainloop, command_table, PA_COMMAND_MAX);
+ u->pdispatch = pa_pdispatch_new(u->core->mainloop, TRUE, command_table, PA_COMMAND_MAX);
pa_pstream_set_die_callback(u->pstream, pstream_die_callback, u);
pa_pstream_set_recieve_packet_callback(u->pstream, pstream_packet_callback, u);
@@ -1825,7 +1819,7 @@ int pa__init(pa_module*m) {
TRUE,
TRUE,
10,
- pa_rtclock_usec(),
+ pa_rtclock_now(),
FALSE);
u->ctag = 1;
u->device_index = u->channel = PA_INVALID_INDEX;
@@ -1853,7 +1847,7 @@ int pa__init(pa_module*m) {
goto fail;
}
- if (!(u->client = pa_socket_client_new_string(m->core->mainloop, u->server_name, PA_NATIVE_DEFAULT_PORT))) {
+ if (!(u->client = pa_socket_client_new_string(m->core->mainloop, TRUE, u->server_name, PA_NATIVE_DEFAULT_PORT))) {
pa_log("Failed to connect to server '%s'", u->server_name);
goto fail;
}
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
new file mode 100644
index 00000000..1ad6fa2d
--- /dev/null
+++ b/src/modules/module-udev-detect.c
@@ -0,0 +1,457 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Lennart Poettering
+
+ 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
+ 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <errno.h>
+#include <limits.h>
+#include <sys/inotify.h>
+#include <libudev.h>
+
+#include <pulsecore/modargs.h>
+#include <pulsecore/core-error.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/namereg.h>
+
+#include "module-udev-detect-symdef.h"
+
+PA_MODULE_AUTHOR("Lennart Poettering");
+PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers");
+PA_MODULE_VERSION(PACKAGE_VERSION);
+PA_MODULE_LOAD_ONCE(TRUE);
+
+struct device {
+ char *path;
+ pa_bool_t accessible;
+ char *card_name;
+ uint32_t module;
+};
+
+struct userdata {
+ pa_core *core;
+ pa_hashmap *devices;
+ pa_bool_t use_tsched;
+
+ struct udev* udev;
+ struct udev_monitor *monitor;
+ pa_io_event *udev_io;
+
+ int inotify_fd;
+ pa_io_event *inotify_io;
+};
+
+static const char* const valid_modargs[] = {
+ "tsched",
+ NULL
+};
+
+static void device_free(struct device *d) {
+ pa_assert(d);
+
+ pa_xfree(d->path);
+ pa_xfree(d->card_name);
+ pa_xfree(d);
+}
+
+static const char *path_get_card_id(const char *path) {
+ const char *e;
+
+ if (!path)
+ return NULL;
+
+ if (!(e = strrchr(path, '/')))
+ return NULL;
+
+ if (!pa_startswith(e, "/card"))
+ return NULL;
+
+ return e + 5;
+}
+
+static void verify_access(struct userdata *u, struct device *d) {
+ char *cd;
+ pa_card *card;
+
+ pa_assert(u);
+ pa_assert(d);
+
+ if (!(card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD)))
+ return;
+
+ cd = pa_sprintf_malloc("%s/snd/controlC%s", udev_get_dev_path(u->udev), path_get_card_id(d->path));
+ d->accessible = access(cd, W_OK) >= 0;
+ pa_log_info("%s is accessible: %s", cd, pa_yes_no(d->accessible));
+ pa_xfree(cd);
+
+ pa_card_suspend(card, !d->accessible, PA_SUSPEND_SESSION);
+}
+
+static void card_changed(struct userdata *u, struct udev_device *dev) {
+ struct device *d;
+ const char *path;
+ const char *t;
+ char *card_name, *args;
+ pa_module *m;
+ char *n;
+
+ pa_assert(u);
+ pa_assert(dev);
+
+ path = udev_device_get_devpath(dev);
+
+ if ((d = pa_hashmap_get(u->devices, path))) {
+ verify_access(u, d);
+ return;
+ }
+
+ if (!(t = udev_device_get_property_value(dev, "PULSE_NAME")))
+ if (!(t = udev_device_get_property_value(dev, "ID_ID")))
+ if (!(t = udev_device_get_property_value(dev, "ID_PATH")))
+ t = path_get_card_id(path);
+
+ n = pa_namereg_make_valid_name(t);
+
+ card_name = pa_sprintf_malloc("alsa_card.%s", n);
+ args = pa_sprintf_malloc("device_id=\"%s\" "
+ "name=\"%s\" "
+ "card_name=\"%s\" "
+ "tsched=%i "
+ "card_properties=\"module-udev-detect.discovered=1\"",
+ path_get_card_id(path),
+ n,
+ card_name,
+ (int) u->use_tsched);
+
+ pa_log_debug("Loading module-alsa-card with arguments '%s'", args);
+ m = pa_module_load(u->core, "module-alsa-card", args);
+ pa_xfree(args);
+
+ if (m) {
+ pa_log_info("Card %s (%s) added.", path, n);
+
+ d = pa_xnew(struct device, 1);
+ d->path = pa_xstrdup(path);
+ d->card_name = card_name;
+ d->module = m->index;
+ d->accessible = TRUE;
+
+ pa_hashmap_put(u->devices, d->path, d);
+ } else
+ pa_xfree(card_name);
+
+ pa_xfree(n);
+}
+
+static void remove_card(struct userdata *u, struct udev_device *dev) {
+ struct device *d;
+
+ pa_assert(u);
+ pa_assert(dev);
+
+ if (!(d = pa_hashmap_remove(u->devices, udev_device_get_devpath(dev))))
+ return;
+
+ pa_log_info("Card %s removed.", d->path);
+ pa_module_unload_request_by_index(u->core, d->module, TRUE);
+ device_free(d);
+}
+
+static void process_device(struct userdata *u, struct udev_device *dev) {
+ const char *action, *ff;
+
+ pa_assert(u);
+ pa_assert(dev);
+
+ if (udev_device_get_property_value(dev, "PULSE_IGNORE")) {
+ pa_log_debug("Ignoring %s, because marked so.", udev_device_get_devpath(dev));
+ return;
+ }
+
+ if ((ff = udev_device_get_property_value(dev, "SOUND_FORM_FACTOR")) &&
+ pa_streq(ff, "modem")) {
+ pa_log_debug("Ignoring %s, because it is a modem.", udev_device_get_devpath(dev));
+ return;
+ }
+
+ action = udev_device_get_action(dev);
+
+ if (action && pa_streq(action, "remove"))
+ remove_card(u, dev);
+ else if ((!action || pa_streq(action, "change")) &&
+ udev_device_get_property_value(dev, "SOUND_INITIALIZED"))
+ card_changed(u, dev);
+
+ /* For an explanation why we don't look for 'add' events here
+ * have a look into /lib/udev/rules.d/78-sound-card.rules! */
+}
+
+static void process_path(struct userdata *u, const char *path) {
+ struct udev_device *dev;
+
+ if (!path_get_card_id(path))
+ return;
+
+ if (!(dev = udev_device_new_from_syspath(u->udev, path))) {
+ pa_log("Failed to get udev device object from udev.");
+ return;
+ }
+
+ process_device(u, dev);
+ udev_device_unref(dev);
+}
+
+static void monitor_cb(
+ pa_mainloop_api*a,
+ pa_io_event* e,
+ int fd,
+ pa_io_event_flags_t events,
+ void *userdata) {
+
+ struct userdata *u = userdata;
+ struct udev_device *dev;
+
+ pa_assert(a);
+
+ if (!(dev = udev_monitor_receive_device(u->monitor))) {
+ pa_log("Failed to get udev device object from monitor.");
+ goto fail;
+ }
+
+ if (!path_get_card_id(udev_device_get_devpath(dev)))
+ return;
+
+ process_device(u, dev);
+ udev_device_unref(dev);
+ return;
+
+fail:
+ a->io_free(u->udev_io);
+ u->udev_io = NULL;
+}
+
+static void inotify_cb(
+ pa_mainloop_api*a,
+ pa_io_event* e,
+ int fd,
+ pa_io_event_flags_t events,
+ void *userdata) {
+
+ struct {
+ struct inotify_event e;
+ char name[NAME_MAX];
+ } buf;
+ struct userdata *u = userdata;
+ static int type = 0;
+ pa_bool_t verify = FALSE;
+
+ for (;;) {
+ ssize_t r;
+
+ pa_zero(buf);
+ if ((r = pa_read(fd, &buf, sizeof(buf), &type)) <= 0) {
+
+ if (r < 0 && errno == EAGAIN)
+ break;
+
+ pa_log("read() from inotify failed: %s", r < 0 ? pa_cstrerror(errno) : "EOF");
+ goto fail;
+ }
+
+ if ((buf.e.mask & IN_CLOSE_WRITE) && pa_startswith(buf.e.name, "pcmC"))
+ verify = TRUE;
+ }
+
+ if (verify) {
+ struct device *d;
+ void *state;
+
+ pa_log_debug("Verifying access.");
+
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ verify_access(u, d);
+ }
+
+ return;
+
+fail:
+ a->io_free(u->inotify_io);
+ u->inotify_io = NULL;
+
+ if (u->inotify_fd >= 0) {
+ pa_close(u->inotify_fd);
+ u->inotify_fd = -1;
+ }
+}
+
+static int setup_inotify(struct userdata *u) {
+ char *dev_snd;
+ int r;
+
+ if ((u->inotify_fd = inotify_init1(IN_CLOEXEC|IN_NONBLOCK)) < 0) {
+ pa_log("inotify_init1() failed: %s", pa_cstrerror(errno));
+ return -1;
+ }
+
+ dev_snd = pa_sprintf_malloc("%s/snd", udev_get_dev_path(u->udev));
+ r = inotify_add_watch(u->inotify_fd, dev_snd, IN_CLOSE_WRITE);
+ pa_xfree(dev_snd);
+
+ if (r < 0) {
+ pa_log("inotify_add_watch() failed: %s", pa_cstrerror(errno));
+ return -1;
+ }
+
+ pa_assert_se(u->inotify_io = u->core->mainloop->io_new(u->core->mainloop, u->inotify_fd, PA_IO_EVENT_INPUT, inotify_cb, u));
+
+ return 0;
+}
+
+int pa__init(pa_module *m) {
+ struct userdata *u = NULL;
+ pa_modargs *ma;
+ struct udev_enumerate *enumerate = NULL;
+ struct udev_list_entry *item = NULL, *first = NULL;
+ int fd;
+
+ pa_assert(m);
+
+ if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
+ pa_log("Failed to parse module arguments");
+ goto fail;
+ }
+
+ m->userdata = u = pa_xnew0(struct userdata, 1);
+ u->core = m->core;
+ u->devices = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+ u->use_tsched = TRUE;
+ u->inotify_fd = -1;
+
+ if (pa_modargs_get_value_boolean(ma, "tsched", &u->use_tsched) < 0) {
+ pa_log("Failed to parse tsched argument.");
+ goto fail;
+ }
+
+ if (!(u->udev = udev_new())) {
+ pa_log("Failed to initialize udev library.");
+ goto fail;
+ }
+
+ if (setup_inotify(u) < 0)
+ goto fail;
+
+ if (!(u->monitor = udev_monitor_new_from_netlink(u->udev, "udev"))) {
+ pa_log("Failed to initialize monitor.");
+ goto fail;
+ }
+
+ errno = 0;
+ if (udev_monitor_enable_receiving(u->monitor) < 0) {
+ pa_log("Failed to enable monitor: %s", pa_cstrerror(errno));
+ if (errno == EPERM)
+ pa_log_info("Most likely your kernel is simply too old and "
+ "allows only priviliged processes to listen to device events. "
+ "Please upgrade your kernel to at least 2.6.30.");
+ goto fail;
+ }
+
+ if ((fd = udev_monitor_get_fd(u->monitor)) < 0) {
+ pa_log("Failed to get udev monitor fd.");
+ goto fail;
+ }
+
+ pa_assert_se(u->udev_io = u->core->mainloop->io_new(u->core->mainloop, fd, PA_IO_EVENT_INPUT, monitor_cb, u));
+
+ if (!(enumerate = udev_enumerate_new(u->udev))) {
+ pa_log("Failed to initialize udev enumerator.");
+ goto fail;
+ }
+
+ if (udev_enumerate_add_match_subsystem(enumerate, "sound") < 0) {
+ pa_log("Failed to match to subsystem.");
+ goto fail;
+ }
+
+ if (udev_enumerate_scan_devices(enumerate) < 0) {
+ pa_log("Failed to scan for devices.");
+ goto fail;
+ }
+
+ first = udev_enumerate_get_list_entry(enumerate);
+ udev_list_entry_foreach(item, first)
+ process_path(u, udev_list_entry_get_name(item));
+
+ udev_enumerate_unref(enumerate);
+
+ pa_log_info("Loaded %u modules.", pa_hashmap_size(u->devices));
+
+ pa_modargs_free(ma);
+
+ return 0;
+
+fail:
+
+ if (enumerate)
+ udev_enumerate_unref(enumerate);
+
+ if (ma)
+ pa_modargs_free(ma);
+
+ pa__done(m);
+
+ return -1;
+}
+
+void pa__done(pa_module *m) {
+ struct userdata *u;
+
+ pa_assert(m);
+
+ if (!(u = m->userdata))
+ return;
+
+ if (u->udev_io)
+ m->core->mainloop->io_free(u->udev_io);
+
+ if (u->monitor)
+ udev_monitor_unref(u->monitor);
+
+ if (u->udev)
+ udev_unref(u->udev);
+
+ if (u->inotify_io)
+ m->core->mainloop->io_free(u->inotify_io);
+
+ if (u->inotify_fd >= 0)
+ pa_close(u->inotify_fd);
+
+ if (u->devices) {
+ struct device *d;
+
+ while ((d = pa_hashmap_steal_first(u->devices)))
+ device_free(d);
+
+ pa_hashmap_free(u->devices, NULL, NULL);
+ }
+
+ pa_xfree(u);
+}
diff --git a/src/modules/module-waveout.c b/src/modules/module-waveout.c
index 2d35828d..d1b9f2ff 100644
--- a/src/modules/module-waveout.c
+++ b/src/modules/module-waveout.c
@@ -256,7 +256,7 @@ static void poll_cb(pa_mainloop_api*a, pa_time_event *e, const struct timeval *t
pa_gettimeofday(&ntv);
pa_timeval_add(&ntv, u->poll_timeout);
- a->time_restart(e, &ntv);
+ a->rtclock_time_restart(e, &ntv);
}
static void defer_cb(pa_mainloop_api*a, pa_defer_event *e, void *userdata) {
@@ -549,7 +549,7 @@ int pa__init(pa_core *c, pa_module*m) {
pa_gettimeofday(&tv);
pa_timeval_add(&tv, u->poll_timeout);
- u->event = c->mainloop->time_new(c->mainloop, &tv, poll_cb, u);
+ u->event = c->mainloop->rtclock_time_new(c->mainloop, &tv, poll_cb, u);
assert(u->event);
u->defer = c->mainloop->defer_new(c->mainloop, defer_cb, u);
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index b1afcfd6..c44b882b 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -889,7 +889,6 @@ static void thread_func(void *userdata) {
pa_make_realtime(u->core->realtime_priority);
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
for (;;) {
int ret;
diff --git a/src/modules/module-raop-discover.c b/src/modules/raop/module-raop-discover.c
index eaeb77fc..eaeb77fc 100644
--- a/src/modules/module-raop-discover.c
+++ b/src/modules/raop/module-raop-discover.c
diff --git a/src/modules/module-raop-sink.c b/src/modules/raop/module-raop-sink.c
index 052a3a5e..9699132d 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/raop/module-raop-sink.c
@@ -42,13 +42,15 @@
#include <linux/sockios.h>
#endif
-#include <pulse/xmalloc.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
+#include <pulse/xmalloc.h>
#include <pulsecore/core-error.h>
#include <pulsecore/iochannel.h>
#include <pulsecore/sink.h>
#include <pulsecore/module.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/modargs.h>
#include <pulsecore/log.h>
@@ -57,7 +59,6 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/thread.h>
#include <pulsecore/time-smoother.h>
-#include <pulsecore/rtclock.h>
#include <pulsecore/socket-util.h>
#include "module-raop-sink-symdef.h"
@@ -181,7 +182,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_SUSPENDED:
pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
- pa_smoother_pause(u->smoother, pa_rtclock_usec());
+ pa_smoother_pause(u->smoother, pa_rtclock_now());
/* Issue a FLUSH if we are connected */
if (u->fd >= 0) {
@@ -193,7 +194,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_RUNNING:
if (u->sink->thread_info.state == PA_SINK_SUSPENDED) {
- pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
+ pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE);
/* The connection can be closed when idle, so check to
see if we need to reestablish it */
@@ -216,7 +217,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_MESSAGE_GET_LATENCY: {
pa_usec_t w, r;
- r = pa_smoother_get(u->smoother, pa_rtclock_usec());
+ r = pa_smoother_get(u->smoother, pa_rtclock_now());
w = pa_bytes_to_usec((u->offset - u->encoding_overhead + (u->encoded_memchunk.length / u->encoding_ratio)), &u->sink->sample_spec);
*((pa_usec_t*) data) = w > r ? w - r : 0;
@@ -323,9 +324,8 @@ static void thread_func(void *userdata) {
pa_log_debug("Thread starting up");
pa_thread_mq_install(&u->thread_mq);
- pa_rtpoll_install(u->rtpoll);
- pa_smoother_set_time_offset(u->smoother, pa_rtclock_usec());
+ pa_smoother_set_time_offset(u->smoother, pa_rtclock_now());
/* Create a chunk of memory that is our encoded silence sample. */
pa_memchunk_reset(&silence);
@@ -465,7 +465,7 @@ static void thread_func(void *userdata) {
else
usec = 0;
- pa_smoother_put(u->smoother, pa_rtclock_usec(), usec);
+ pa_smoother_put(u->smoother, pa_rtclock_now(), usec);
}
/* Hmm, nothing to do. Let's sleep */
@@ -583,6 +583,7 @@ int pa__init(pa_module*m) {
pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
pa_sink_new_data_set_sample_spec(&data, &ss);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, server);
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_INTENDED_ROLES, "music");
if ((desc = pa_modargs_get_value(ma, "description", NULL)))
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, desc);
else
diff --git a/src/modules/raop/raop_client.c b/src/modules/raop/raop_client.c
index b3f243c3..c4b02371 100644
--- a/src/modules/raop/raop_client.c
+++ b/src/modules/raop/raop_client.c
@@ -331,7 +331,7 @@ static void rtsp_cb(pa_rtsp_client *rtsp, pa_rtsp_state state, pa_headerlist* he
uint32_t port = pa_rtsp_serverport(c->rtsp);
pa_log_debug("RAOP: RECORDED");
- if (!(c->sc = pa_socket_client_new_string(c->core->mainloop, c->host, port))) {
+ if (!(c->sc = pa_socket_client_new_string(c->core->mainloop, TRUE, c->host, port))) {
pa_log("failed to connect to server '%s:%d'", c->host, port);
return;
}
diff --git a/src/modules/reserve-monitor.c b/src/modules/reserve-monitor.c
new file mode 100644
index 00000000..64d2a7cc
--- /dev/null
+++ b/src/modules/reserve-monitor.c
@@ -0,0 +1,259 @@
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "reserve-monitor.h"
+
+struct rm_monitor {
+ int ref;
+
+ char *device_name;
+ char *service_name;
+
+ DBusConnection *connection;
+
+ unsigned busy:1;
+ unsigned filtering:1;
+ unsigned matching:1;
+
+ rm_change_cb_t change_cb;
+ void *userdata;
+};
+
+#define SERVICE_PREFIX "org.freedesktop.ReserveDevice1."
+
+static DBusHandlerResult filter_handler(
+ DBusConnection *c,
+ DBusMessage *s,
+ void *userdata) {
+
+ DBusMessage *reply;
+ rm_monitor *m;
+ DBusError error;
+
+ dbus_error_init(&error);
+
+ m = userdata;
+ assert(m->ref >= 1);
+
+ if (dbus_message_is_signal(s, "org.freedesktop.DBus", "NameOwnerChanged")) {
+ const char *name, *old, *new;
+
+ if (!dbus_message_get_args(
+ s,
+ &error,
+ DBUS_TYPE_STRING, &name,
+ DBUS_TYPE_STRING, &old,
+ DBUS_TYPE_STRING, &new,
+ DBUS_TYPE_INVALID))
+ goto invalid;
+
+ if (strcmp(name, m->service_name) == 0) {
+
+ m->busy = !!(new && *new);
+
+ if (m->change_cb) {
+ m->ref++;
+ m->change_cb(m);
+ rm_release(m);
+ }
+ }
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+invalid:
+ if (!(reply = dbus_message_new_error(
+ s,
+ DBUS_ERROR_INVALID_ARGS,
+ "Invalid arguments")))
+ goto oom;
+
+ if (!dbus_connection_send(c, reply, NULL))
+ goto oom;
+
+ dbus_message_unref(reply);
+
+ dbus_error_free(&error);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+
+oom:
+ if (reply)
+ dbus_message_unref(reply);
+
+ dbus_error_free(&error);
+
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+}
+
+int rm_watch(
+ rm_monitor **_m,
+ DBusConnection *connection,
+ const char*device_name,
+ rm_change_cb_t change_cb,
+ DBusError *error) {
+
+ rm_monitor *m = NULL;
+ int r;
+ DBusError _error;
+
+ if (!error)
+ error = &_error;
+
+ dbus_error_init(error);
+
+ if (!_m)
+ return -EINVAL;
+
+ if (!connection)
+ return -EINVAL;
+
+ if (!device_name)
+ return -EINVAL;
+
+ if (!(m = calloc(sizeof(rm_monitor), 1)))
+ return -ENOMEM;
+
+ m->ref = 1;
+
+ if (!(m->device_name = strdup(device_name))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ m->connection = dbus_connection_ref(connection);
+ m->change_cb = change_cb;
+
+ if (!(m->service_name = malloc(sizeof(SERVICE_PREFIX) + strlen(device_name)))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+ sprintf(m->service_name, SERVICE_PREFIX "%s", m->device_name);
+
+ if (!(dbus_connection_add_filter(m->connection, filter_handler, m, NULL))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ m->filtering = 1;
+
+ dbus_bus_add_match(m->connection,
+ "type='signal',"
+ "sender='" DBUS_SERVICE_DBUS "',"
+ "interface='" DBUS_INTERFACE_DBUS "',"
+ "member='NameOwnerChanged'", error);
+
+ if (dbus_error_is_set(error)) {
+ r = -EIO;
+ goto fail;
+ }
+
+ m->matching = 1;
+
+ m->busy = dbus_bus_name_has_owner(m->connection, m->service_name, error);
+
+ if (dbus_error_is_set(error)) {
+ r = -EIO;
+ goto fail;
+ }
+
+ *_m = m;
+ return 0;
+
+fail:
+ if (&_error == error)
+ dbus_error_free(&_error);
+
+ if (m)
+ rm_release(m);
+
+ return r;
+}
+
+void rm_release(rm_monitor *m) {
+ if (!m)
+ return;
+
+ assert(m->ref > 0);
+
+ if (--m->ref > 0)
+ return;
+
+ if (m->matching)
+ dbus_bus_remove_match(
+ m->connection,
+ "type='signal',"
+ "sender='" DBUS_SERVICE_DBUS "',"
+ "interface='" DBUS_INTERFACE_DBUS "',"
+ "member='NameOwnerChanged'", NULL);
+
+ if (m->filtering)
+ dbus_connection_remove_filter(
+ m->connection,
+ filter_handler,
+ m);
+
+ free(m->device_name);
+ free(m->service_name);
+
+ if (m->connection)
+ dbus_connection_unref(m->connection);
+
+ free(m);
+}
+
+int rm_busy(rm_monitor *m) {
+ if (!m)
+ return -EINVAL;
+
+ assert(m->ref > 0);
+
+ return m->busy;
+}
+
+void rm_set_userdata(rm_monitor *m, void *userdata) {
+
+ if (!m)
+ return;
+
+ assert(m->ref > 0);
+ m->userdata = userdata;
+}
+
+void* rm_get_userdata(rm_monitor *m) {
+
+ if (!m)
+ return NULL;
+
+ assert(m->ref > 0);
+
+ return m->userdata;
+}
diff --git a/src/modules/reserve-monitor.h b/src/modules/reserve-monitor.h
new file mode 100644
index 00000000..4f4a8332
--- /dev/null
+++ b/src/modules/reserve-monitor.h
@@ -0,0 +1,62 @@
+#ifndef fooreservemonitorhfoo
+#define fooreservemonitorhfoo
+
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <dbus/dbus.h>
+#include <inttypes.h>
+
+typedef struct rm_monitor rm_monitor;
+
+/* Prototype for a function that is called whenever the reservation
+ * device of a device changes. Use rm_monitor_busy() to find out the
+ * new state.*/
+typedef void (*rm_change_cb_t)(rm_monitor *m);
+
+/* Creates a monitor for watching the lock status of a device. Returns
+ * 0 on success, a negative errno style return value on error. The
+ * DBus error might be set as well if the error was caused D-Bus. */
+int rm_watch(
+ rm_monitor **m, /* On success a pointer to the newly allocated rm_device object will be filled in here */
+ DBusConnection *connection, /* Session bus (when D-Bus learns about user busses we should switchg to user busses) */
+ const char *device_name, /* The device to monitor, e.g. "Audio0" */
+ rm_change_cb_t change_cb, /* Will be called whenever the lock status changes. May be NULL */
+ DBusError *error); /* If we fail due to a D-Bus related issue the error will be filled in here. May be NULL. */
+
+/* Free a rm_monitor object */
+void rm_release(rm_monitor *m);
+
+/* Checks whether the device is currently reserved, and returns 1
+ * then, 0 if not, negative errno style error code value on error. */
+int rm_busy(rm_monitor *m);
+
+/* Attach a userdata pointer to an rm_monitor */
+void rm_set_userdata(rm_monitor *m, void *userdata);
+
+/* Query the userdata pointer from an rm_monitor. Returns NULL if no
+ * userdata was set. */
+void* rm_get_userdata(rm_monitor *m);
+
+#endif
diff --git a/src/modules/reserve-wrap.c b/src/modules/reserve-wrap.c
index d0d014d3..07b592d3 100644
--- a/src/modules/reserve-wrap.c
+++ b/src/modules/reserve-wrap.c
@@ -35,6 +35,7 @@
#ifdef HAVE_DBUS
#include <pulsecore/dbus-shared.h>
#include "reserve.h"
+#include "reserve-monitor.h"
#endif
#include "reserve-wrap.h"
@@ -50,6 +51,17 @@ struct pa_reserve_wrapper {
#endif
};
+struct pa_reserve_monitor_wrapper {
+ PA_REFCNT_DECLARE;
+ pa_core *core;
+ pa_hook hook;
+ char *shared_name;
+#ifdef HAVE_DBUS
+ pa_dbus_connection *connection;
+ struct rm_monitor *monitor;
+#endif
+};
+
static void reserve_wrapper_free(pa_reserve_wrapper *r) {
pa_assert(r);
@@ -83,7 +95,7 @@ static int request_cb(rd_device *d, int forced) {
PA_REFCNT_INC(r);
k = pa_hook_fire(&r->hook, PA_INT_TO_PTR(forced));
- pa_log_debug("Device unlock has been requested and %s.", k < 0 ? "failed" : "succeeded");
+ pa_log_debug("Device unlock of %s has been requested and %s.", r->shared_name, k < 0 ? "failed" : "succeeded");
pa_reserve_wrapper_unref(r);
@@ -191,3 +203,138 @@ void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const
rd_set_application_device_name(r->device, name);
#endif
}
+
+static void reserve_monitor_wrapper_free(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+
+#ifdef HAVE_DBUS
+ if (w->monitor)
+ rm_release(w->monitor);
+
+ if (w->connection)
+ pa_dbus_connection_unref(w->connection);
+#endif
+
+ pa_hook_done(&w->hook);
+
+ if (w->shared_name) {
+ pa_assert_se(pa_shared_remove(w->core, w->shared_name) >= 0);
+ pa_xfree(w->shared_name);
+ }
+
+ pa_xfree(w);
+}
+
+#ifdef HAVE_DBUS
+static void change_cb(rm_monitor *m) {
+ pa_reserve_monitor_wrapper *w;
+ int k;
+
+ pa_assert(m);
+ pa_assert_se(w = rm_get_userdata(m));
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ PA_REFCNT_INC(w);
+
+ if ((k = rm_busy(w->monitor)) < 0)
+ return;
+
+ pa_hook_fire(&w->hook, PA_INT_TO_PTR(!!k));
+ pa_log_debug("Device lock status of %s changed: %s", w->shared_name, k ? "busy" : "not busy");
+
+ pa_reserve_monitor_wrapper_unref(w);
+}
+#endif
+
+pa_reserve_monitor_wrapper* pa_reserve_monitor_wrapper_get(pa_core *c, const char *device_name) {
+ pa_reserve_monitor_wrapper *w;
+ int k;
+ char *t;
+#ifdef HAVE_DBUS
+ DBusError error;
+
+ dbus_error_init(&error);
+#endif
+
+ pa_assert(c);
+ pa_assert(device_name);
+
+ t = pa_sprintf_malloc("reserve-monitor-wrapper@%s", device_name);
+
+ if ((w = pa_shared_get(c, t))) {
+ pa_xfree(t);
+
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+ PA_REFCNT_INC(w);
+
+ return w;
+ }
+
+ w = pa_xnew0(pa_reserve_monitor_wrapper, 1);
+ PA_REFCNT_INIT(w);
+ w->core = c;
+ pa_hook_init(&w->hook, w);
+ w->shared_name = t;
+
+ pa_assert_se(pa_shared_set(c, w->shared_name, w) >= 0);
+
+#ifdef HAVE_DBUS
+ if (!(w->connection = pa_dbus_bus_get(c, DBUS_BUS_SESSION, &error)) || dbus_error_is_set(&error)) {
+ pa_log_warn("Unable to contact D-Bus session bus: %s: %s", error.name, error.message);
+
+ /* We don't treat this as error here because we want allow PA
+ * to run even when no session bus is available. */
+ return w;
+ }
+
+ if ((k = rm_watch(
+ &w->monitor,
+ pa_dbus_connection_get(w->connection),
+ device_name,
+ change_cb,
+ NULL)) < 0) {
+
+ pa_log_warn("Failed to create watch on device '%s': %s", device_name, pa_cstrerror(-k));
+ goto fail;
+ }
+
+ pa_log_debug("Successfully create reservation lock monitor for device '%s'", device_name);
+
+ rm_set_userdata(w->monitor, w);
+ return w;
+
+fail:
+ dbus_error_free(&error);
+
+ reserve_monitor_wrapper_free(w);
+
+ return NULL;
+#else
+ return w;
+#endif
+}
+
+void pa_reserve_monitor_wrapper_unref(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ if (PA_REFCNT_DEC(w) > 0)
+ return;
+
+ reserve_monitor_wrapper_free(w);
+}
+
+pa_hook* pa_reserve_monitor_wrapper_hook(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ return &w->hook;
+}
+
+pa_bool_t pa_reserve_monitor_wrapper_busy(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ return rm_busy(w->monitor) > 0;
+}
diff --git a/src/modules/reserve-wrap.h b/src/modules/reserve-wrap.h
index 2b97c91c..2de6c093 100644
--- a/src/modules/reserve-wrap.h
+++ b/src/modules/reserve-wrap.h
@@ -28,11 +28,18 @@
typedef struct pa_reserve_wrapper pa_reserve_wrapper;
pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name);
-
void pa_reserve_wrapper_unref(pa_reserve_wrapper *r);
pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r);
void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const char *name);
+typedef struct pa_reserve_monitor_wrapper pa_reserve_monitor_wrapper;
+
+pa_reserve_monitor_wrapper* pa_reserve_monitor_wrapper_get(pa_core *c, const char *device_name);
+void pa_reserve_monitor_wrapper_unref(pa_reserve_monitor_wrapper *m);
+
+pa_hook* pa_reserve_monitor_wrapper_hook(pa_reserve_monitor_wrapper *m);
+pa_bool_t pa_reserve_monitor_wrapper_busy(pa_reserve_monitor_wrapper *m);
+
#endif
diff --git a/src/modules/reserve.c b/src/modules/reserve.c
index 9a9591d2..09bc46cb 100644
--- a/src/modules/reserve.c
+++ b/src/modules/reserve.c
@@ -43,16 +43,15 @@ struct rd_device {
DBusConnection *connection;
- int owning:1;
- int registered:1;
- int filtering:1;
- int gave_up:1;
+ unsigned owning:1;
+ unsigned registered:1;
+ unsigned filtering:1;
+ unsigned gave_up:1;
rd_request_cb_t request_cb;
void *userdata;
};
-
#define SERVICE_PREFIX "org.freedesktop.ReserveDevice1."
#define OBJECT_PREFIX "/org/freedesktop/ReserveDevice1/"
@@ -297,6 +296,7 @@ static DBusHandlerResult filter_handler(
dbus_error_init(&error);
d = userdata;
+ assert(d->ref >= 1);
if (dbus_message_is_signal(m, "org.freedesktop.DBus", "NameLost")) {
const char *name;
@@ -560,7 +560,7 @@ void rd_release(
assert(d->ref > 0);
- if (--d->ref)
+ if (--d->ref > 0)
return;
@@ -575,17 +575,11 @@ void rd_release(
d->connection,
d->object_path);
- if (d->owning) {
- DBusError error;
- dbus_error_init(&error);
-
+ if (d->owning)
dbus_bus_release_name(
d->connection,
d->service_name,
- &error);
-
- dbus_error_free(&error);
- }
+ NULL);
free(d->device_name);
free(d->application_name);
diff --git a/src/modules/reserve.h b/src/modules/reserve.h
index b315a08c..31071298 100644
--- a/src/modules/reserve.h
+++ b/src/modules/reserve.h
@@ -45,7 +45,7 @@ typedef int (*rd_request_cb_t)(
* the error was caused D-Bus. */
int rd_acquire(
rd_device **d, /* On success a pointer to the newly allocated rd_device object will be filled in here */
- DBusConnection *connection,
+ DBusConnection *connection, /* Session bus (when D-Bus learns about user busses we should switchg to user busses) */
const char *device_name, /* The device to lock, e.g. "Audio0" */
const char *application_name, /* A human readable name of the application, e.g. "PulseAudio Sound Server" */
int32_t priority, /* The priority for this application. If unsure use 0 */
diff --git a/src/modules/rtp/module-rtp-recv.c b/src/modules/rtp/module-rtp-recv.c
index c61d2d8b..5caf8272 100644
--- a/src/modules/rtp/module-rtp-recv.c
+++ b/src/modules/rtp/module-rtp-recv.c
@@ -33,6 +33,7 @@
#include <unistd.h>
#include <poll.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
@@ -43,13 +44,13 @@
#include <pulsecore/sink-input.h>
#include <pulsecore/memblockq.h>
#include <pulsecore/log.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/modargs.h>
#include <pulsecore/namereg.h>
#include <pulsecore/sample-util.h>
#include <pulsecore/macro.h>
#include <pulsecore/atomic.h>
-#include <pulsecore/rtclock.h>
#include <pulsecore/atomic.h>
#include <pulsecore/time-smoother.h>
#include <pulsecore/socket-util.h>
@@ -62,7 +63,7 @@
#include "sap.h"
PA_MODULE_AUTHOR("Lennart Poettering");
-PA_MODULE_DESCRIPTION("Recieve data from a network via RTP/SAP/SDP");
+PA_MODULE_DESCRIPTION("Receive data from a network via RTP/SAP/SDP");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
@@ -112,6 +113,7 @@ struct session {
struct userdata {
pa_module *module;
+ pa_core *core;
pa_sap_context sap_context;
pa_io_event* sap_event;
@@ -193,7 +195,7 @@ static void sink_input_suspend_within_thread(pa_sink_input* i, pa_bool_t b) {
pa_assert_se(s = i->userdata);
if (b) {
- pa_smoother_pause(s->smoother, pa_rtclock_usec());
+ pa_smoother_pause(s->smoother, pa_rtclock_now());
pa_memblockq_flush_read(s->memblockq);
} else
s->first_packet = FALSE;
@@ -621,15 +623,13 @@ static void sap_event_cb(pa_mainloop_api *m, pa_io_event *e, int fd, pa_io_event
}
}
-static void check_death_event_cb(pa_mainloop_api *m, pa_time_event *t, const struct timeval *ptv, void *userdata) {
+static void check_death_event_cb(pa_mainloop_api *m, pa_time_event *t, const struct timeval *tv, void *userdata) {
struct session *s, *n;
struct userdata *u = userdata;
struct timeval now;
- struct timeval tv;
pa_assert(m);
pa_assert(t);
- pa_assert(ptv);
pa_assert(u);
pa_rtclock_get(&now);
@@ -647,9 +647,7 @@ static void check_death_event_cb(pa_mainloop_api *m, pa_time_event *t, const str
}
/* Restart timer */
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, DEATH_TIMEOUT*PA_USEC_PER_SEC);
- m->time_restart(t, &tv);
+ pa_core_rttime_restart(u->module->core, t, pa_rtclock_now() + DEATH_TIMEOUT * PA_USEC_PER_SEC);
}
int pa__init(pa_module*m) {
@@ -663,7 +661,6 @@ int pa__init(pa_module*m) {
socklen_t salen;
const char *sap_address;
int fd = -1;
- struct timeval tv;
pa_assert(m);
@@ -696,6 +693,7 @@ int pa__init(pa_module*m) {
m->userdata = u = pa_xnew(struct userdata, 1);
u->module = m;
+ u->core = m->core;
u->sink_name = pa_xstrdup(pa_modargs_get_value(ma, "sink", NULL));
u->sap_event = m->core->mainloop->io_new(m->core->mainloop, fd, PA_IO_EVENT_INPUT, sap_event_cb, u);
@@ -705,9 +703,7 @@ int pa__init(pa_module*m) {
u->n_sessions = 0;
u->by_origin = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, DEATH_TIMEOUT * PA_USEC_PER_SEC);
- u->check_death_event = m->core->mainloop->time_new(m->core->mainloop, &tv, check_death_event_cb, u);
+ u->check_death_event = pa_core_rttime_new(m->core, pa_rtclock_now() + DEATH_TIMEOUT * PA_USEC_PER_SEC, check_death_event_cb, u);
pa_modargs_free(ma);
diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c
index cdd2c57d..f147364d 100644
--- a/src/modules/rtp/module-rtp-send.c
+++ b/src/modules/rtp/module-rtp-send.c
@@ -31,6 +31,7 @@
#include <string.h>
#include <unistd.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
#include <pulse/xmalloc.h>
@@ -77,7 +78,7 @@ PA_MODULE_USAGE(
#define DEFAULT_DESTINATION "224.0.0.56"
#define MEMBLOCKQ_MAXLENGTH (1024*170)
#define DEFAULT_MTU 1280
-#define SAP_INTERVAL 5
+#define SAP_INTERVAL (5*PA_USEC_PER_SEC)
static const char* const valid_modargs[] = {
"source",
@@ -151,18 +152,14 @@ static void source_output_kill(pa_source_output* o) {
static void sap_event_cb(pa_mainloop_api *m, pa_time_event *t, const struct timeval *tv, void *userdata) {
struct userdata *u = userdata;
- struct timeval next;
pa_assert(m);
pa_assert(t);
- pa_assert(tv);
pa_assert(u);
pa_sap_send(&u->sap_context, 0);
- pa_gettimeofday(&next);
- pa_timeval_add(&next, SAP_INTERVAL * PA_USEC_PER_SEC);
- m->time_restart(t, &next);
+ pa_core_rttime_restart(u->module->core, t, pa_rtclock_now() + SAP_INTERVAL);
}
int pa__init(pa_module*m) {
@@ -186,7 +183,6 @@ int pa__init(pa_module*m) {
char *p;
int r, j;
socklen_t k;
- struct timeval tv;
char hn[128], *n;
pa_bool_t loop = FALSE;
pa_source_output_new_data data;
@@ -347,8 +343,8 @@ int pa__init(pa_module*m) {
o->push = source_output_push;
o->kill = source_output_kill;
- pa_log_info("Configured source latency of %lu ms.",
- pa_source_output_set_requested_latency(o, pa_bytes_to_usec(mtu, &o->sample_spec)) / PA_USEC_PER_MSEC);
+ pa_log_info("Configured source latency of %llu ms.",
+ (unsigned long long) pa_source_output_set_requested_latency(o, pa_bytes_to_usec(mtu, &o->sample_spec)) / PA_USEC_PER_MSEC);
m->userdata = o->userdata = u = pa_xnew(struct userdata, 1);
u->module = m;
@@ -395,9 +391,7 @@ int pa__init(pa_module*m) {
pa_sap_send(&u->sap_context, 0);
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, SAP_INTERVAL * PA_USEC_PER_SEC);
- u->sap_event = m->core->mainloop->time_new(m->core->mainloop, &tv, sap_event_cb, u);
+ u->sap_event = pa_core_rttime_new(m->core, pa_rtclock_now() + SAP_INTERVAL, sap_event_cb, u);
pa_source_output_put(u->source_output);
diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c
index cb037de6..72d304e8 100644
--- a/src/modules/rtp/rtsp_client.c
+++ b/src/modules/rtp/rtsp_client.c
@@ -333,7 +333,7 @@ int pa_rtsp_connect(pa_rtsp_client *c) {
pa_xfree(c->session);
c->session = NULL;
- if (!(c->sc = pa_socket_client_new_string(c->mainloop, c->hostname, c->port))) {
+ if (!(c->sc = pa_socket_client_new_string(c->mainloop, TRUE, c->hostname, c->port))) {
pa_log("failed to connect to server '%s:%d'", c->hostname, c->port);
return -1;
}
diff --git a/src/modules/udev-util.c b/src/modules/udev-util.c
index 144ad797..cc824465 100644
--- a/src/modules/udev-util.c
+++ b/src/modules/udev-util.c
@@ -58,7 +58,7 @@ static int read_id(struct udev_device *d, const char *n) {
return u;
}
-int pa_udev_get_info(pa_core *core, pa_proplist *p, int card_idx) {
+int pa_udev_get_info(int card_idx, pa_proplist *p) {
int r = -1;
struct udev *udev;
struct udev_device *card = NULL;
@@ -66,7 +66,6 @@ int pa_udev_get_info(pa_core *core, pa_proplist *p, int card_idx) {
const char *v;
int id;
- pa_assert(core);
pa_assert(p);
pa_assert(card_idx >= 0);
@@ -84,6 +83,19 @@ int pa_udev_get_info(pa_core *core, pa_proplist *p, int card_idx) {
goto finish;
}
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_BUS_PATH))
+ if (((v = udev_device_get_property_value(card, "ID_PATH")) && *v) ||
+ (v = udev_device_get_devpath(card)))
+ pa_proplist_sets(p, PA_PROP_DEVICE_BUS_PATH, v);
+
+ if (!pa_proplist_contains(p, "sysfs.path"))
+ if ((v = udev_device_get_devpath(card)))
+ pa_proplist_sets(p, "sysfs.path", v);
+
+ if (!pa_proplist_contains(p, "udev.id"))
+ if ((v = udev_device_get_property_value(card, "ID_ID")) && *v)
+ pa_proplist_sets(p, "udev.id", v);
+
if (!pa_proplist_contains(p, PA_PROP_DEVICE_BUS))
if ((v = udev_device_get_property_value(card, "ID_BUS")) && *v)
pa_proplist_sets(p, PA_PROP_DEVICE_BUS, v);
@@ -114,15 +126,15 @@ int pa_udev_get_info(pa_core *core, pa_proplist *p, int card_idx) {
if ((v = udev_device_get_property_value(card, "ID_SERIAL")) && *v)
pa_proplist_sets(p, PA_PROP_DEVICE_SERIAL, v);
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_CLASS))
+ if ((v = udev_device_get_property_value(card, "SOUND_CLASS")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_CLASS, v);
+
if (!pa_proplist_contains(p, PA_PROP_DEVICE_FORM_FACTOR))
if ((v = udev_device_get_property_value(card, "SOUND_FORM_FACTOR")) && *v)
pa_proplist_sets(p, PA_PROP_DEVICE_FORM_FACTOR, v);
- if (!pa_proplist_contains(p, PA_PROP_DEVICE_BUS_PATH))
- if ((v = udev_device_get_devpath(card)))
- pa_proplist_sets(p, PA_PROP_DEVICE_BUS_PATH, v);
-
- /* This is normaly not set by th udev rules but may be useful to
+ /* This is normaly not set by the udev rules but may be useful to
* allow administrators to overwrite the device description.*/
if (!pa_proplist_contains(p, PA_PROP_DEVICE_DESCRIPTION))
if ((v = udev_device_get_property_value(card, "SOUND_DESCRIPTION")) && *v)
@@ -140,3 +152,40 @@ finish:
return r;
}
+
+char* pa_udev_get_property(int card_idx, const char *name) {
+ struct udev *udev;
+ struct udev_device *card = NULL;
+ char *t, *r = NULL;
+ const char *v;
+
+ pa_assert(card_idx >= 0);
+ pa_assert(name);
+
+ if (!(udev = udev_new())) {
+ pa_log_error("Failed to allocate udev context.");
+ goto finish;
+ }
+
+ t = pa_sprintf_malloc("%s/class/sound/card%i", udev_get_sys_path(udev), card_idx);
+ card = udev_device_new_from_syspath(udev, t);
+ pa_xfree(t);
+
+ if (!card) {
+ pa_log_error("Failed to get card object.");
+ goto finish;
+ }
+
+ if ((v = udev_device_get_property_value(card, name)) && *v)
+ r = pa_xstrdup(v);
+
+finish:
+
+ if (card)
+ udev_device_unref(card);
+
+ if (udev)
+ udev_unref(udev);
+
+ return r;
+}
diff --git a/src/modules/udev-util.h b/src/modules/udev-util.h
index 5120abdd..8523bc4d 100644
--- a/src/modules/udev-util.h
+++ b/src/modules/udev-util.h
@@ -25,6 +25,7 @@
#include <pulsecore/core.h>
-int pa_udev_get_info(pa_core *core, pa_proplist *p, int card);
+int pa_udev_get_info(int card_idx, pa_proplist *p);
+char* pa_udev_get_property(int card_idx, const char *name);
#endif
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index 4654a9ad..88823012 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -30,9 +30,11 @@
#include <pulse/xmalloc.h>
#include <pulse/i18n.h>
+
#include <pulsecore/core-util.h>
#include <pulsecore/macro.h>
#include <pulsecore/bitset.h>
+#include <pulsecore/sample-util.h>
#include "channelmap.h"
@@ -491,6 +493,27 @@ char* pa_channel_map_snprint(char *s, size_t l, const pa_channel_map *map) {
return s;
}
+pa_channel_position_t pa_channel_position_from_string(const char *p) {
+ pa_channel_position_t i;
+ pa_assert(p);
+
+ /* Some special aliases */
+ if (pa_streq(p, "left"))
+ return PA_CHANNEL_POSITION_LEFT;
+ else if (pa_streq(p, "right"))
+ return PA_CHANNEL_POSITION_RIGHT;
+ else if (pa_streq(p, "center"))
+ return PA_CHANNEL_POSITION_CENTER;
+ else if (pa_streq(p, "subwoofer"))
+ return PA_CHANNEL_POSITION_SUBWOOFER;
+
+ for (i = 0; i < PA_CHANNEL_POSITION_MAX; i++)
+ if (pa_streq(p, table[i]))
+ return i;
+
+ return PA_CHANNEL_POSITION_INVALID;
+}
+
pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {
const char *state;
pa_channel_map map;
@@ -559,36 +582,19 @@ pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {
map.channels = 0;
while ((p = pa_split(s, ",", &state))) {
+ pa_channel_position_t f;
if (map.channels >= PA_CHANNELS_MAX) {
pa_xfree(p);
return NULL;
}
- /* Some special aliases */
- if (pa_streq(p, "left"))
- map.map[map.channels++] = PA_CHANNEL_POSITION_LEFT;
- else if (pa_streq(p, "right"))
- map.map[map.channels++] = PA_CHANNEL_POSITION_RIGHT;
- else if (pa_streq(p, "center"))
- map.map[map.channels++] = PA_CHANNEL_POSITION_CENTER;
- else if (pa_streq(p, "subwoofer"))
- map.map[map.channels++] = PA_CHANNEL_POSITION_SUBWOOFER;
- else {
- pa_channel_position_t i;
-
- for (i = 0; i < PA_CHANNEL_POSITION_MAX; i++)
- if (strcmp(p, table[i]) == 0) {
- map.map[map.channels++] = i;
- break;
- }
-
- if (i >= PA_CHANNEL_POSITION_MAX) {
- pa_xfree(p);
- return NULL;
- }
+ if ((f = pa_channel_position_from_string(p)) == PA_CHANNEL_POSITION_INVALID) {
+ pa_xfree(p);
+ return NULL;
}
+ map.map[map.channels++] = f;
pa_xfree(p);
}
@@ -627,8 +633,7 @@ int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *s
}
int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
- pa_bitset_t in_a[PA_BITSET_ELEMENTS(PA_CHANNEL_POSITION_MAX)];
- unsigned i;
+ pa_channel_position_mask_t am, bm;
pa_assert(a);
pa_assert(b);
@@ -636,98 +641,36 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
pa_return_val_if_fail(pa_channel_map_valid(a), 0);
pa_return_val_if_fail(pa_channel_map_valid(b), 0);
- memset(in_a, 0, sizeof(in_a));
+ am = pa_channel_map_mask(a);
+ bm = pa_channel_map_mask(b);
- for (i = 0; i < a->channels; i++)
- pa_bitset_set(in_a, a->map[i], TRUE);
-
- for (i = 0; i < b->channels; i++)
- if (!pa_bitset_get(in_a, b->map[i]))
- return 0;
-
- return 1;
+ return (bm & am) == bm;
}
int pa_channel_map_can_balance(const pa_channel_map *map) {
- unsigned c;
- pa_bool_t left = FALSE, right = FALSE;
+ pa_channel_position_mask_t m;
pa_assert(map);
-
pa_return_val_if_fail(pa_channel_map_valid(map), 0);
- for (c = 0; c < map->channels; c++) {
-
- switch (map->map[c]) {
- case PA_CHANNEL_POSITION_LEFT:
- case PA_CHANNEL_POSITION_REAR_LEFT:
- case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
- case PA_CHANNEL_POSITION_SIDE_LEFT:
- case PA_CHANNEL_POSITION_TOP_FRONT_LEFT:
- case PA_CHANNEL_POSITION_TOP_REAR_LEFT:
- left = TRUE;
- break;
-
- case PA_CHANNEL_POSITION_RIGHT:
- case PA_CHANNEL_POSITION_REAR_RIGHT:
- case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
- case PA_CHANNEL_POSITION_SIDE_RIGHT:
- case PA_CHANNEL_POSITION_TOP_FRONT_RIGHT:
- case PA_CHANNEL_POSITION_TOP_REAR_RIGHT:
- right = TRUE;
- break;
-
- default:
- ;
- }
-
- if (left && right)
- return 1;
- }
+ m = pa_channel_map_mask(map);
- return 0;
+ return
+ (PA_CHANNEL_POSITION_MASK_LEFT & m) &&
+ (PA_CHANNEL_POSITION_MASK_RIGHT & m);
}
int pa_channel_map_can_fade(const pa_channel_map *map) {
- unsigned c;
- pa_bool_t front = FALSE, rear = FALSE;
+ pa_channel_position_mask_t m;
pa_assert(map);
-
pa_return_val_if_fail(pa_channel_map_valid(map), 0);
- for (c = 0; c < map->channels; c++) {
-
- switch (map->map[c]) {
- case PA_CHANNEL_POSITION_FRONT_LEFT:
- case PA_CHANNEL_POSITION_FRONT_RIGHT:
- case PA_CHANNEL_POSITION_FRONT_CENTER:
- case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
- case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
- case PA_CHANNEL_POSITION_TOP_FRONT_LEFT:
- case PA_CHANNEL_POSITION_TOP_FRONT_RIGHT:
- case PA_CHANNEL_POSITION_TOP_FRONT_CENTER:
- front = TRUE;
- break;
-
- case PA_CHANNEL_POSITION_REAR_LEFT:
- case PA_CHANNEL_POSITION_REAR_RIGHT:
- case PA_CHANNEL_POSITION_REAR_CENTER:
- case PA_CHANNEL_POSITION_TOP_REAR_LEFT:
- case PA_CHANNEL_POSITION_TOP_REAR_RIGHT:
- case PA_CHANNEL_POSITION_TOP_REAR_CENTER:
- rear = TRUE;
- break;
-
- default:
- ;
- }
-
- if (front && rear)
- return 1;
- }
+ m = pa_channel_map_mask(map);
- return 0;
+ return
+ (PA_CHANNEL_POSITION_MASK_FRONT & m) &&
+ (PA_CHANNEL_POSITION_MASK_REAR & m);
}
const char* pa_channel_map_to_name(const pa_channel_map *map) {
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index 2aaead01..d7901ac2 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -209,7 +209,7 @@ typedef enum pa_channel_position {
typedef uint64_t pa_channel_position_mask_t;
/** Makes a bit mask from a channel position. \since 0.9.16 */
-#define PA_CHANNEL_POSITION_MASK(f) ((pa_channel_position_mask_t) (1 << (f)))
+#define PA_CHANNEL_POSITION_MASK(f) ((pa_channel_position_mask_t) (1ULL << (f)))
/** A list of channel mapping definitions for pa_channel_map_init_auto() */
typedef enum pa_channel_map_def {
@@ -282,6 +282,9 @@ pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels,
/** Return a text label for the specified channel position */
const char* pa_channel_position_to_string(pa_channel_position_t pos) PA_GCC_PURE;
+/* The inverse of pa_channel_position_to_string(). \since 0.9.16 */
+pa_channel_position_t pa_channel_position_from_string(const char *s) PA_GCC_PURE;
+
/** Return a human readable text label for the specified channel position. \since 0.9.7 */
const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos);
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 3b7bf08d..505e758a 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -54,6 +54,8 @@
#include <pulse/utf8.h>
#include <pulse/util.h>
#include <pulse/i18n.h>
+#include <pulse/mainloop.h>
+#include <pulse/timeval.h>
#include <pulsecore/winsock.h>
#include <pulsecore/core-error.h>
@@ -64,6 +66,7 @@
#include <pulsecore/dynarray.h>
#include <pulsecore/socket-client.h>
#include <pulsecore/pstream-util.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/log.h>
#include <pulsecore/socket-util.h>
@@ -157,6 +160,7 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
c->playback_streams = pa_dynarray_new();
c->record_streams = pa_dynarray_new();
c->client_index = PA_INVALID_INDEX;
+ c->use_rtclock = pa_mainloop_is_our_api(mainloop);
PA_LLIST_HEAD_INIT(pa_stream, c->streams);
PA_LLIST_HEAD_INIT(pa_operation, c->operations);
@@ -540,7 +544,7 @@ static void setup_context(pa_context *c, pa_iochannel *io) {
pa_pstream_set_recieve_memblock_callback(c->pstream, pstream_memblock_callback, c);
pa_assert(!c->pdispatch);
- c->pdispatch = pa_pdispatch_new(c->mainloop, command_table, PA_COMMAND_MAX);
+ c->pdispatch = pa_pdispatch_new(c->mainloop, c->use_rtclock, command_table, PA_COMMAND_MAX);
if (!c->conf->cookie_valid)
pa_log_info(_("No cookie loaded. Attempting to connect without."));
@@ -757,7 +761,7 @@ static void track_pulseaudio_on_dbus(pa_context *c, DBusBusType type, pa_dbus_wr
pa_assert(conn);
dbus_error_init(&error);
- if (!(*conn = pa_dbus_wrap_connection_new(c->mainloop, type, &error)) || dbus_error_is_set(&error)) {
+ if (!(*conn = pa_dbus_wrap_connection_new(c->mainloop, c->use_rtclock, type, &error)) || dbus_error_is_set(&error)) {
pa_log_warn("Unable to contact DBUS: %s: %s", error.name, error.message);
goto finish;
}
@@ -827,7 +831,7 @@ static int try_next_connection(pa_context *c) {
pa_xfree(c->server);
c->server = pa_xstrdup(u);
- if (!(c->client = pa_socket_client_new_string(c->mainloop, u, PA_NATIVE_DEFAULT_PORT)))
+ if (!(c->client = pa_socket_client_new_string(c->mainloop, c->use_rtclock, u, PA_NATIVE_DEFAULT_PORT)))
continue;
c->is_local = !!pa_socket_client_is_local(c->client);
@@ -1443,3 +1447,31 @@ finish:
if (pl)
pa_proplist_free(pl);
}
+
+pa_time_event* pa_context_rttime_new(pa_context *c, pa_usec_t usec, pa_time_event_cb_t cb, void *userdata) {
+ struct timeval tv;
+
+ pa_assert(c);
+ pa_assert(c->mainloop);
+
+ if (usec == PA_USEC_INVALID)
+ return c->mainloop->time_new(c->mainloop, NULL, cb, userdata);
+
+ pa_timeval_rtstore(&tv, usec, c->use_rtclock);
+
+ return c->mainloop->time_new(c->mainloop, &tv, cb, userdata);
+}
+
+void pa_context_rttime_restart(pa_context *c, pa_time_event *e, pa_usec_t usec) {
+ struct timeval tv;
+
+ pa_assert(c);
+ pa_assert(c->mainloop);
+
+ if (usec == PA_USEC_INVALID)
+ c->mainloop->time_restart(e, NULL);
+ else {
+ pa_timeval_rtstore(&tv, usec, c->use_rtclock);
+ c->mainloop->time_restart(e, &tv);
+ }
+}
diff --git a/src/pulse/context.h b/src/pulse/context.h
index 139d0e0b..cd129313 100644
--- a/src/pulse/context.h
+++ b/src/pulse/context.h
@@ -260,6 +260,14 @@ pa_operation *pa_context_proplist_remove(pa_context *c, const char *const keys[]
* introspection functions, such as pa_context_get_client_info(). \since 0.9.11 */
uint32_t pa_context_get_index(pa_context *s);
+/** Create a new timer event source for the specified time (wrapper
+ for mainloop->time_new). \since 0.9.16 */
+pa_time_event* pa_context_rttime_new(pa_context *c, pa_usec_t usec, pa_time_event_cb_t cb, void *userdata);
+/** Restart a running or expired timer event source (wrapper
+ for mainloop->time_restart). \since 0.9.16 */
+void pa_context_rttime_restart(pa_context *c, pa_time_event *e, pa_usec_t usec);
+
+
PA_C_DECL_END
#endif
diff --git a/src/pulse/def.h b/src/pulse/def.h
index d5bbefe3..08399ca8 100644
--- a/src/pulse/def.h
+++ b/src/pulse/def.h
@@ -393,6 +393,7 @@ enum {
PA_ERR_OBSOLETE, /**< Obsolete functionality. \since 0.9.15 */
PA_ERR_NOTIMPLEMENTED, /**< Missing implementation. \since 0.9.15 */
PA_ERR_FORKED, /**< The caller forked without calling execve() and tried to reuse the context. \since 0.9.15 */
+ PA_ERR_IO, /**< An IO error happened. \since 0.9.16 */
PA_ERR_MAX /**< Not really an error but the first invalid error code */
};
diff --git a/src/pulse/internal.h b/src/pulse/internal.h
index 28a989b3..ec2da85b 100644
--- a/src/pulse/internal.h
+++ b/src/pulse/internal.h
@@ -89,6 +89,7 @@ struct pa_context {
pa_bool_t server_specified:1;
pa_bool_t no_fail:1;
pa_bool_t do_autospawn:1;
+ pa_bool_t use_rtclock:1;
pa_spawn_api spawn_api;
pa_strlist *server_list;
@@ -279,4 +280,6 @@ pa_tagstruct *pa_tagstruct_command(pa_context *c, uint32_t command, uint32_t *ta
void pa_ext_stream_restore_command(pa_context *c, uint32_t tag, pa_tagstruct *t);
+pa_bool_t pa_mainloop_is_our_api(pa_mainloop_api*m);
+
#endif
diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c
index ac8a11aa..ab67f596 100644
--- a/src/pulse/introspect.c
+++ b/src/pulse/introspect.c
@@ -49,7 +49,7 @@ static void context_stat_callback(pa_pdispatch *pd, uint32_t command, uint32_t t
pa_assert(o);
pa_assert(PA_REFCNT_VALUE(o) >= 1);
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
if (!o->context)
goto finish;
@@ -93,7 +93,7 @@ static void context_get_server_info_callback(pa_pdispatch *pd, uint32_t command,
pa_assert(o);
pa_assert(PA_REFCNT_VALUE(o) >= 1);
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
if (!o->context)
goto finish;
@@ -161,8 +161,10 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u
pa_bool_t mute;
uint32_t flags;
uint32_t state;
+ uint32_t j;
+ const char *ap = NULL;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
i.proplist = pa_proplist_new();
i.base_volume = PA_VOLUME_NORM;
i.n_volume_steps = PA_VOLUME_NORM+1;
@@ -190,13 +192,53 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u
(pa_tagstruct_get_volume(t, &i.base_volume) < 0 ||
pa_tagstruct_getu32(t, &state) < 0 ||
pa_tagstruct_getu32(t, &i.n_volume_steps) < 0 ||
- pa_tagstruct_getu32(t, &i.card) < 0))) {
+ pa_tagstruct_getu32(t, &i.card) < 0)) ||
+ (o->context->version >= 16 &&
+ (pa_tagstruct_getu32(t, &i.n_ports)))) {
+
+ pa_context_fail(o->context, PA_ERR_PROTOCOL);
+ pa_proplist_free(i.proplist);
+ goto finish;
+ }
+
+ if (i.n_ports > 0) {
+ i.ports = pa_xnew(pa_sink_port_info*, i.n_ports+1);
+ i.ports[0] = pa_xnew(pa_sink_port_info, i.n_ports);
+
+ for (j = 0; j < i.n_ports; j++) {
+ if (pa_tagstruct_gets(t, &i.ports[0][j].name) < 0 ||
+ pa_tagstruct_gets(t, &i.ports[0][j].description) < 0 ||
+ pa_tagstruct_getu32(t, &i.ports[0][j].priority) < 0) {
+
+ pa_context_fail(o->context, PA_ERR_PROTOCOL);
+ pa_xfree(i.ports);
+ pa_xfree(i.ports[0]);
+ pa_proplist_free(i.proplist);
+ goto finish;
+ }
+
+ i.ports[j] = &i.ports[0][j];
+ }
+
+ i.ports[j] = NULL;
+ }
+ if (pa_tagstruct_gets(t, &ap) < 0) {
pa_context_fail(o->context, PA_ERR_PROTOCOL);
+ pa_xfree(i.ports[0]);
+ pa_xfree(i.ports);
pa_proplist_free(i.proplist);
goto finish;
}
+ if (ap) {
+ for (j = 0; j < i.n_ports; j++)
+ if (pa_streq(i.ports[j]->name, ap)) {
+ i.active_port = i.ports[j];
+ break;
+ }
+ }
+
i.mute = (int) mute;
i.flags = (pa_sink_flags_t) flags;
i.state = (pa_sink_state_t) state;
@@ -271,6 +313,56 @@ pa_operation* pa_context_get_sink_info_by_name(pa_context *c, const char *name,
return o;
}
+pa_operation* pa_context_set_sink_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata) {
+ pa_operation *o;
+ pa_tagstruct *t;
+ uint32_t tag;
+
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) >= 1);
+
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 16, PA_ERR_NOTSUPPORTED);
+
+ o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
+
+ t = pa_tagstruct_command(c, PA_COMMAND_SET_SINK_PORT, &tag);
+ pa_tagstruct_putu32(t, idx);
+ pa_tagstruct_puts(t, NULL);
+ pa_tagstruct_puts(t, port);
+ pa_pstream_send_tagstruct(c->pstream, t);
+ pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
+
+ return o;
+}
+
+pa_operation* pa_context_set_sink_port_by_name(pa_context *c, const char *name, const char*port, pa_context_success_cb_t cb, void *userdata) {
+ pa_operation *o;
+ pa_tagstruct *t;
+ uint32_t tag;
+
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) >= 1);
+
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 16, PA_ERR_NOTSUPPORTED);
+
+ o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
+
+ t = pa_tagstruct_command(c, PA_COMMAND_SET_SINK_PORT, &tag);
+ pa_tagstruct_putu32(t, PA_INVALID_INDEX);
+ pa_tagstruct_puts(t, name);
+ pa_tagstruct_puts(t, port);
+ pa_pstream_send_tagstruct(c->pstream, t);
+ pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
+
+ return o;
+}
+
/*** Source info ***/
static void context_get_source_info_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
@@ -296,8 +388,10 @@ static void context_get_source_info_callback(pa_pdispatch *pd, uint32_t command,
pa_bool_t mute;
uint32_t flags;
uint32_t state;
+ unsigned j;
+ const char *ap;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
i.proplist = pa_proplist_new();
i.base_volume = PA_VOLUME_NORM;
i.n_volume_steps = PA_VOLUME_NORM+1;
@@ -325,13 +419,53 @@ static void context_get_source_info_callback(pa_pdispatch *pd, uint32_t command,
(pa_tagstruct_get_volume(t, &i.base_volume) < 0 ||
pa_tagstruct_getu32(t, &state) < 0 ||
pa_tagstruct_getu32(t, &i.n_volume_steps) < 0 ||
- pa_tagstruct_getu32(t, &i.card) < 0))) {
+ pa_tagstruct_getu32(t, &i.card) < 0)) ||
+ (o->context->version >= 16 &&
+ (pa_tagstruct_getu32(t, &i.n_ports)))) {
pa_context_fail(o->context, PA_ERR_PROTOCOL);
pa_proplist_free(i.proplist);
goto finish;
}
+ if (i.n_ports > 0) {
+ i.ports = pa_xnew(pa_source_port_info*, i.n_ports+1);
+ i.ports[0] = pa_xnew(pa_source_port_info, i.n_ports);
+
+ for (j = 0; j < i.n_ports; j++) {
+ if (pa_tagstruct_gets(t, &i.ports[0][j].name) < 0 ||
+ pa_tagstruct_gets(t, &i.ports[0][j].description) < 0 ||
+ pa_tagstruct_getu32(t, &i.ports[0][j].priority) < 0) {
+
+ pa_context_fail(o->context, PA_ERR_PROTOCOL);
+ pa_xfree(i.ports[0]);
+ pa_xfree(i.ports);
+ pa_proplist_free(i.proplist);
+ goto finish;
+ }
+
+ i.ports[j] = &i.ports[0][j];
+ }
+
+ i.ports[j] = NULL;
+ }
+
+ if (pa_tagstruct_gets(t, &ap) < 0) {
+ pa_context_fail(o->context, PA_ERR_PROTOCOL);
+ pa_xfree(i.ports[0]);
+ pa_xfree(i.ports);
+ pa_proplist_free(i.proplist);
+ goto finish;
+ }
+
+ if (ap) {
+ for (j = 0; j < i.n_ports; j++)
+ if (pa_streq(i.ports[j]->name, ap)) {
+ i.active_port = i.ports[j];
+ break;
+ }
+ }
+
i.mute = (int) mute;
i.flags = (pa_source_flags_t) flags;
i.state = (pa_source_state_t) state;
@@ -406,6 +540,56 @@ pa_operation* pa_context_get_source_info_by_name(pa_context *c, const char *name
return o;
}
+pa_operation* pa_context_set_source_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata) {
+ pa_operation *o;
+ pa_tagstruct *t;
+ uint32_t tag;
+
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) >= 1);
+
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 16, PA_ERR_NOTSUPPORTED);
+
+ o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
+
+ t = pa_tagstruct_command(c, PA_COMMAND_SET_SOURCE_PORT, &tag);
+ pa_tagstruct_putu32(t, idx);
+ pa_tagstruct_puts(t, NULL);
+ pa_tagstruct_puts(t, port);
+ pa_pstream_send_tagstruct(c->pstream, t);
+ pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
+
+ return o;
+}
+
+pa_operation* pa_context_set_source_port_by_name(pa_context *c, const char *name, const char*port, pa_context_success_cb_t cb, void *userdata) {
+ pa_operation *o;
+ pa_tagstruct *t;
+ uint32_t tag;
+
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) >= 1);
+
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 16, PA_ERR_NOTSUPPORTED);
+
+ o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
+
+ t = pa_tagstruct_command(c, PA_COMMAND_SET_SOURCE_PORT, &tag);
+ pa_tagstruct_putu32(t, PA_INVALID_INDEX);
+ pa_tagstruct_puts(t, name);
+ pa_tagstruct_puts(t, port);
+ pa_pstream_send_tagstruct(c->pstream, t);
+ pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
+
+ return o;
+}
+
/*** Client info ***/
static void context_get_client_info_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
@@ -429,7 +613,7 @@ static void context_get_client_info_callback(pa_pdispatch *pd, uint32_t command,
while (!pa_tagstruct_eof(t)) {
pa_client_info i;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
i.proplist = pa_proplist_new();
if (pa_tagstruct_getu32(t, &i.index) < 0 ||
@@ -514,7 +698,7 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u
uint32_t j;
const char*ap;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
if (pa_tagstruct_getu32(t, &i.index) < 0 ||
pa_tagstruct_gets(t, &i.name) < 0 ||
@@ -527,7 +711,7 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u
}
if (i.n_profiles > 0) {
- i.profiles = pa_xnew(pa_card_profile_info, i.n_profiles+1);
+ i.profiles = pa_xnew0(pa_card_profile_info, i.n_profiles+1);
for (j = 0; j < i.n_profiles; j++) {
@@ -715,7 +899,7 @@ static void context_get_module_info_callback(pa_pdispatch *pd, uint32_t command,
pa_module_info i;
pa_bool_t auto_unload = FALSE;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
i.proplist = pa_proplist_new();
if (pa_tagstruct_getu32(t, &i.index) < 0 ||
@@ -800,7 +984,7 @@ static void context_get_sink_input_info_callback(pa_pdispatch *pd, uint32_t comm
pa_sink_input_info i;
pa_bool_t mute = FALSE;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
i.proplist = pa_proplist_new();
if (pa_tagstruct_getu32(t, &i.index) < 0 ||
@@ -894,7 +1078,7 @@ static void context_get_source_output_info_callback(pa_pdispatch *pd, uint32_t c
while (!pa_tagstruct_eof(t)) {
pa_source_output_info i;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
i.proplist = pa_proplist_new();
if (pa_tagstruct_getu32(t, &i.index) < 0 ||
@@ -1236,7 +1420,7 @@ static void context_get_sample_info_callback(pa_pdispatch *pd, uint32_t command,
pa_sample_info i;
pa_bool_t lazy = FALSE;
- memset(&i, 0, sizeof(i));
+ pa_zero(i);
i.proplist = pa_proplist_new();
if (pa_tagstruct_getu32(t, &i.index) < 0 ||
diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
index 117880c8..ee982100 100644
--- a/src/pulse/introspect.h
+++ b/src/pulse/introspect.h
@@ -193,6 +193,15 @@ PA_C_DECL_BEGIN
/** @{ \name Sinks */
+/** Stores information about a specific port of a sink. Please
+ * note that this structure can be extended as part of evolutionary
+ * API updates at any time in any new release. \since 0.9.16 */
+typedef struct pa_sink_port_info {
+ const char *name; /**< Name of this port */
+ const char *description; /**< Description of this port */
+ uint32_t priority; /**< The higher this value is the more useful this port is as a default */
+} pa_sink_port_info;
+
/** Stores information about sinks. Please note that this structure
* can be extended as part of evolutionary API updates at any time in
* any new release. */
@@ -216,6 +225,9 @@ typedef struct pa_sink_info {
pa_sink_state_t state; /**< State \since 0.9.15 */
uint32_t n_volume_steps; /**< Number of volume steps for sinks which do not support arbitrary volumes. \since 0.9.15 */
uint32_t card; /**< Card index, or PA_INVALID_INDEX. \since 0.9.15 */
+ uint32_t n_ports; /**< Number of entries in port array \since 0.9.16 */
+ pa_sink_port_info** ports; /**< Array of available ports, or NULL. Array is terminated by an entry set to NULL. The number of entries is stored in n_ports \since 0.9.16 */
+ pa_sink_port_info* active_port; /**< Pointer to active port in the array, or NULL \since 0.9.16 */
} pa_sink_info;
/** Callback prototype for pa_context_get_sink_info_by_name() and friends */
@@ -248,10 +260,25 @@ pa_operation* pa_context_suspend_sink_by_name(pa_context *c, const char *sink_na
/** Suspend/Resume a sink. If idx is PA_INVALID_INDEX all sinks will be suspended. \since 0.9.7 */
pa_operation* pa_context_suspend_sink_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void* userdata);
+/** Change the profile of a sink. \since 0.9.16 */
+pa_operation* pa_context_set_sink_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata);
+
+/** Change the profile of a sink. \since 0.9.15 */
+pa_operation* pa_context_set_sink_port_by_name(pa_context *c, const char*name, const char*port, pa_context_success_cb_t cb, void *userdata);
+
/** @} */
/** @{ \name Sources */
+/** Stores information about a specific port of a source. Please
+ * note that this structure can be extended as part of evolutionary
+ * API updates at any time in any new release. \since 0.9.16 */
+typedef struct pa_source_port_info {
+ const char *name; /**< Name of this port */
+ const char *description; /**< Description of this port */
+ uint32_t priority; /**< The higher this value is the more useful this port is as a default */
+} pa_source_port_info;
+
/** Stores information about sources. Please note that this structure
* can be extended as part of evolutionary API updates at any time in
* any new release. */
@@ -275,6 +302,9 @@ typedef struct pa_source_info {
pa_source_state_t state; /**< State \since 0.9.15 */
uint32_t n_volume_steps; /**< Number of volume steps for sources which do not support arbitrary volumes. \since 0.9.15 */
uint32_t card; /**< Card index, or PA_INVALID_INDEX. \since 0.9.15 */
+ uint32_t n_ports; /**< Number of entries in port array \since 0.9.16 */
+ pa_source_port_info** ports; /**< Array of available ports, or NULL. Array is terminated by an entry set to NULL. The number of entries is stored in n_ports \since 0.9.16 */
+ pa_source_port_info* active_port; /**< Pointer to active port in the array, or NULL \since 0.9.16 */
} pa_source_info;
/** Callback prototype for pa_context_get_source_info_by_name() and friends */
@@ -301,6 +331,12 @@ pa_operation* pa_context_set_source_mute_by_index(pa_context *c, uint32_t idx, i
/** Set the mute switch of a source device specified by its name */
pa_operation* pa_context_set_source_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata);
+/** Change the profile of a source. \since 0.9.16 */
+pa_operation* pa_context_set_source_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata);
+
+/** Change the profile of a source. \since 0.9.15 */
+pa_operation* pa_context_set_source_port_by_name(pa_context *c, const char*name, const char*port, pa_context_success_cb_t cb, void *userdata);
+
/** @} */
/** @{ \name Server */
diff --git a/src/pulse/mainloop-api.h b/src/pulse/mainloop-api.h
index e353ed96..aa0d5e73 100644
--- a/src/pulse/mainloop-api.h
+++ b/src/pulse/mainloop-api.h
@@ -27,6 +27,7 @@
#include <time.h>
#include <pulse/cdecl.h>
+#include <pulse/sample.h>
#include <pulse/version.h>
/** \file
diff --git a/src/pulse/mainloop.c b/src/pulse/mainloop.c
index 225fd098..c418d108 100644
--- a/src/pulse/mainloop.c
+++ b/src/pulse/mainloop.c
@@ -42,10 +42,12 @@
#include <pulsecore/pipe.h>
#endif
+#include <pulse/i18n.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
-#include <pulse/i18n.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/llist.h>
#include <pulsecore/log.h>
@@ -54,6 +56,7 @@
#include <pulsecore/macro.h>
#include "mainloop.h"
+#include "internal.h"
struct pa_io_event {
pa_mainloop *mainloop;
@@ -75,7 +78,7 @@ struct pa_time_event {
pa_bool_t dead:1;
pa_bool_t enabled:1;
- struct timeval timeval;
+ pa_usec_t time;
pa_time_event_cb_t callback;
void *userdata;
@@ -317,6 +320,23 @@ static void mainloop_defer_set_destroy(pa_defer_event *e, pa_defer_event_destroy
}
/* Time events */
+static pa_usec_t timeval_load(const struct timeval *tv) {
+ pa_bool_t is_rtclock;
+ struct timeval ttv;
+
+ if (!tv)
+ return PA_USEC_INVALID;
+
+ ttv = *tv;
+ is_rtclock = !!(ttv.tv_usec & PA_TIMEVAL_RTCLOCK);
+ ttv.tv_usec &= ~PA_TIMEVAL_RTCLOCK;
+
+ if (!is_rtclock)
+ pa_rtclock_from_wallclock(&ttv);
+
+ return pa_timeval_load(&ttv);
+}
+
static pa_time_event* mainloop_time_new(
pa_mainloop_api*a,
const struct timeval *tv,
@@ -325,11 +345,14 @@ static pa_time_event* mainloop_time_new(
pa_mainloop *m;
pa_time_event *e;
+ pa_usec_t t;
pa_assert(a);
pa_assert(a->userdata);
pa_assert(callback);
+ t = timeval_load(tv);
+
m = a->userdata;
pa_assert(a == &m->api);
@@ -337,15 +360,15 @@ static pa_time_event* mainloop_time_new(
e->mainloop = m;
e->dead = FALSE;
- if ((e->enabled = !!tv)) {
- e->timeval = *tv;
+ if ((e->enabled = (t != PA_USEC_INVALID))) {
+ e->time = t;
m->n_enabled_time_events++;
if (m->cached_next_time_event) {
pa_assert(m->cached_next_time_event->enabled);
- if (pa_timeval_cmp(tv, &m->cached_next_time_event->timeval) < 0)
+ if (t < m->cached_next_time_event->time)
m->cached_next_time_event = e;
}
}
@@ -363,24 +386,30 @@ static pa_time_event* mainloop_time_new(
}
static void mainloop_time_restart(pa_time_event *e, const struct timeval *tv) {
+ pa_bool_t valid;
+ pa_usec_t t;
+
pa_assert(e);
pa_assert(!e->dead);
- if (e->enabled && !tv) {
+ t = timeval_load(tv);
+
+ valid = (t != PA_USEC_INVALID);
+ if (e->enabled && !valid) {
pa_assert(e->mainloop->n_enabled_time_events > 0);
e->mainloop->n_enabled_time_events--;
- } else if (!e->enabled && tv)
+ } else if (!e->enabled && valid)
e->mainloop->n_enabled_time_events++;
- if ((e->enabled = !!tv)) {
- e->timeval = *tv;
+ if ((e->enabled = valid)) {
+ e->time = t;
pa_mainloop_wakeup(e->mainloop);
}
if (e->mainloop->cached_next_time_event && e->enabled) {
pa_assert(e->mainloop->cached_next_time_event->enabled);
- if (pa_timeval_cmp(tv, &e->mainloop->cached_next_time_event->timeval) < 0)
+ if (t < e->mainloop->cached_next_time_event->time)
e->mainloop->cached_next_time_event = e;
} else if (e->mainloop->cached_next_time_event == e)
e->mainloop->cached_next_time_event = NULL;
@@ -428,10 +457,10 @@ static void mainloop_quit(pa_mainloop_api*a, int retval) {
static const pa_mainloop_api vtable = {
.userdata = NULL,
- .io_new= mainloop_io_new,
- .io_enable= mainloop_io_enable,
- .io_free= mainloop_io_free,
- .io_set_destroy= mainloop_io_set_destroy,
+ .io_new = mainloop_io_new,
+ .io_enable = mainloop_io_enable,
+ .io_free = mainloop_io_free,
+ .io_set_destroy = mainloop_io_set_destroy,
.time_new = mainloop_time_new,
.time_restart = mainloop_time_restart,
@@ -721,11 +750,11 @@ static pa_time_event* find_next_time_event(pa_mainloop *m) {
if (t->dead || !t->enabled)
continue;
- if (!n || pa_timeval_cmp(&t->timeval, &n->timeval) < 0) {
+ if (!n || t->time < n->time) {
n = t;
- /* Shortcut for tv = { 0, 0 } */
- if (n->timeval.tv_sec <= 0)
+ /* Shortcut for time == 0 */
+ if (n->time == 0)
break;
}
}
@@ -736,7 +765,6 @@ static pa_time_event* find_next_time_event(pa_mainloop *m) {
static int calc_next_timeout(pa_mainloop *m) {
pa_time_event *t;
- struct timeval now;
pa_usec_t usec;
if (!m->n_enabled_time_events)
@@ -745,41 +773,41 @@ static int calc_next_timeout(pa_mainloop *m) {
t = find_next_time_event(m);
pa_assert(t);
- if (t->timeval.tv_sec <= 0)
+ if (t->time == 0)
return 0;
- pa_gettimeofday(&now);
+ usec = t->time - pa_rtclock_now();
- if (pa_timeval_cmp(&t->timeval, &now) <= 0)
+ if (usec <= 0)
return 0;
- usec = pa_timeval_diff(&t->timeval, &now);
- return (int) (usec / 1000);
+ return (int) (usec / 1000); /* in milliseconds */
}
static int dispatch_timeout(pa_mainloop *m) {
pa_time_event *e;
- struct timeval now;
+ pa_usec_t now;
int r = 0;
pa_assert(m);
if (m->n_enabled_time_events <= 0)
return 0;
- pa_gettimeofday(&now);
+ now = pa_rtclock_now();
for (e = m->time_events; e && !m->quit; e = e->next) {
if (e->dead || !e->enabled)
continue;
- if (pa_timeval_cmp(&e->timeval, &now) <= 0) {
+ if (e->time <= now) {
+ struct timeval tv;
pa_assert(e->callback);
/* Disable time event */
mainloop_time_restart(e, NULL);
- e->callback(&m->api, e, &e->timeval, e->userdata);
+ e->callback(&m->api, e, pa_timeval_rtstore(&tv, e->time, TRUE), e->userdata);
r++;
}
@@ -967,3 +995,9 @@ void pa_mainloop_set_poll_func(pa_mainloop *m, pa_poll_func poll_func, void *use
m->poll_func = poll_func;
m->poll_func_userdata = userdata;
}
+
+pa_bool_t pa_mainloop_is_our_api(pa_mainloop_api*m) {
+ pa_assert(m);
+
+ return m->io_new == mainloop_io_new;
+}
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index 4c791dce..bc4dbd8a 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -206,6 +206,9 @@ PA_C_DECL_BEGIN
/** For devices: profile identifier for the profile this devices is in. e.g. "analog-stereo", "analog-surround-40", "iec958-stereo", ...*/
#define PA_PROP_DEVICE_PROFILE_NAME "device.profile.name"
+/** For devices: intended use. A comma seperated list of roles (see PA_PROP_MEDIA_ROLE) this device is particularly well suited for, due to latency, quality or form factor. \since 0.9.16 */
+#define PA_PROP_DEVICE_INTENDED_ROLES "device.intended_roles"
+
/** For devices: human readable one-line description of the profile this device is in. e.g. "Analog Stereo", ... */
#define PA_PROP_DEVICE_PROFILE_DESCRIPTION "device.profile.description"
diff --git a/src/pulsecore/rtsig.h b/src/pulse/rtclock.c
index e414122d..49ff6aae 100644
--- a/src/pulsecore/rtsig.h
+++ b/src/pulse/rtclock.c
@@ -1,6 +1,3 @@
-#ifndef foopulsertsighfoo
-#define foopulsertsighfoo
-
/***
This file is part of PulseAudio.
@@ -22,18 +19,17 @@
USA.
***/
-/* Return the next unused POSIX Realtime signals */
-int pa_rtsig_get(void);
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
-/* If not called before in the current thread, return the next unused
- * rtsig, and install it in a TLS region and give it up automatically
- * when the thread shuts down */
-int pa_rtsig_get_for_thread(void);
+#include <pulsecore/core-rtclock.h>
-/* Give an rtsig back. */
-void pa_rtsig_put(int sig);
+#include "rtclock.h"
+#include "timeval.h"
-/* Block all RT signals */
-void pa_rtsig_configure(int start, int end);
+pa_usec_t pa_rtclock_now(void) {
+ struct timeval tv;
-#endif
+ return pa_timeval_load(pa_rtclock_get(&tv));
+}
diff --git a/src/pulse/rtclock.h b/src/pulse/rtclock.h
new file mode 100644
index 00000000..6459d92d
--- /dev/null
+++ b/src/pulse/rtclock.h
@@ -0,0 +1,41 @@
+#ifndef foortclockfoo
+#define foortclockfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2009 Lennart Poettering
+
+ 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.
+***/
+
+#include <pulse/cdecl.h>
+#include <pulse/def.h>
+#include <pulse/gccmacro.h>
+
+/** \file
+ * Monotonic clock utilities. */
+
+PA_C_DECL_BEGIN
+
+/** Return the current monotonic system time in usec, if such a clock
+ * is available. If it is not available this will return the
+ * wallclock time instead. \since 0.9.16 */
+pa_usec_t pa_rtclock_now(void);
+
+PA_C_DECL_END
+
+#endif
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index 339a89e5..40556329 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -30,13 +30,14 @@
#include <pulse/def.h>
#include <pulse/timeval.h>
+#include <pulse/rtclock.h>
#include <pulse/xmalloc.h>
#include <pulsecore/pstream-util.h>
#include <pulsecore/log.h>
#include <pulsecore/hashmap.h>
#include <pulsecore/macro.h>
-#include <pulsecore/rtclock.h>
+#include <pulsecore/core-rtclock.h>
#include "fork-detect.h"
#include "internal.h"
@@ -319,14 +320,10 @@ static void request_auto_timing_update(pa_stream *s, pa_bool_t force) {
}
if (s->auto_timing_update_event) {
- struct timeval next;
-
if (force)
s->auto_timing_interval_usec = AUTO_TIMING_INTERVAL_START_USEC;
- pa_gettimeofday(&next);
- pa_timeval_add(&next, s->auto_timing_interval_usec);
- s->mainloop->time_restart(s->auto_timing_update_event, &next);
+ pa_context_rttime_restart(s->context, s->auto_timing_update_event, pa_rtclock_now() + s->auto_timing_interval_usec);
s->auto_timing_interval_usec = PA_MIN(AUTO_TIMING_INTERVAL_END_USEC, s->auto_timing_interval_usec*2);
}
@@ -373,7 +370,7 @@ static void check_smoother_status(pa_stream *s, pa_bool_t aposteriori, pa_bool_t
if (!s->smoother)
return;
- x = pa_rtclock_usec();
+ x = pa_rtclock_now();
if (s->timing_info_valid) {
if (aposteriori)
@@ -800,7 +797,7 @@ static void invalidate_indexes(pa_stream *s, pa_bool_t r, pa_bool_t w) {
request_auto_timing_update(s, TRUE);
}
-static void auto_timing_update_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *tv, void *userdata) {
+static void auto_timing_update_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
pa_stream *s = userdata;
pa_assert(s);
@@ -822,12 +819,9 @@ static void create_stream_complete(pa_stream *s) {
s->write_callback(s, (size_t) s->requested_bytes, s->write_userdata);
if (s->flags & PA_STREAM_AUTO_TIMING_UPDATE) {
- struct timeval tv;
- pa_gettimeofday(&tv);
s->auto_timing_interval_usec = AUTO_TIMING_INTERVAL_START_USEC;
- pa_timeval_add(&tv, s->auto_timing_interval_usec);
pa_assert(!s->auto_timing_update_event);
- s->auto_timing_update_event = s->mainloop->time_new(s->mainloop, &tv, &auto_timing_update_callback, s);
+ s->auto_timing_update_event = pa_context_rttime_new(s->context, pa_rtclock_now() + s->auto_timing_interval_usec, &auto_timing_update_callback, s);
request_auto_timing_update(s, TRUE);
}
@@ -1057,7 +1051,7 @@ static int create_stream(
if (flags & PA_STREAM_INTERPOLATE_TIMING) {
pa_usec_t x;
- x = pa_rtclock_usec();
+ x = pa_rtclock_now();
pa_assert(!s->smoother);
s->smoother = pa_smoother_new(
@@ -1594,7 +1588,7 @@ static void stream_get_timing_info_callback(pa_pdispatch *pd, uint32_t command,
if (o->stream->smoother) {
pa_usec_t u, x;
- u = x = pa_rtclock_usec() - i->transport_usec;
+ u = x = pa_rtclock_now() - i->transport_usec;
if (o->stream->direction == PA_STREAM_PLAYBACK && o->context->version >= 13) {
pa_usec_t su;
@@ -2103,7 +2097,7 @@ int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec) {
PA_CHECK_VALIDITY(s->context, s->direction != PA_STREAM_RECORD || !s->timing_info.write_index_corrupt, PA_ERR_NODATA);
if (s->smoother)
- usec = pa_smoother_get(s->smoother, pa_rtclock_usec());
+ usec = pa_smoother_get(s->smoother, pa_rtclock_now());
else
usec = calc_time(s, FALSE);
diff --git a/src/pulse/timeval.h b/src/pulse/timeval.h
index 651da953..48c6cdb3 100644
--- a/src/pulse/timeval.h
+++ b/src/pulse/timeval.h
@@ -40,16 +40,19 @@ PA_C_DECL_BEGIN
#define PA_USEC_PER_SEC ((pa_usec_t) 1000000ULL)
/** The number of nanoseconds in a second */
-#define PA_NSEC_PER_SEC ((pa_usec_t) 1000000000ULL)
+#define PA_NSEC_PER_SEC ((unsigned long long) 1000000000ULL)
/** The number of microseconds in a millisecond */
#define PA_USEC_PER_MSEC ((pa_usec_t) 1000ULL)
/** The number of nanoseconds in a millisecond */
-#define PA_NSEC_PER_MSEC ((pa_usec_t) 1000000ULL)
+#define PA_NSEC_PER_MSEC ((unsigned long long) 1000000ULL)
/** The number of nanoseconds in a microsecond */
-#define PA_NSEC_PER_USEC ((pa_usec_t) 1000ULL)
+#define PA_NSEC_PER_USEC ((unsigned long long) 1000ULL)
+
+/** Invalid time in usec */
+#define PA_USEC_INVALID ((pa_usec_t) -1)
struct timeval;
diff --git a/src/pulse/version.h.in b/src/pulse/version.h.in
index 3143e98e..c2c1f20a 100644
--- a/src/pulse/version.h.in
+++ b/src/pulse/version.h.in
@@ -64,8 +64,8 @@ const char* pa_get_library_version(void);
* newer than the specified. \since 0.9.16 */
#define PA_CHECK_VERSION(major,minor,micro) \
((PA_MAJOR > (major)) || \
- (PA_MAJOR == (major) && CA_MINOR > (minor)) || \
- (PA_MAJOR == (major) && CA_MINOR == (minor) && CA_MICRO >= (micro)))
+ (PA_MAJOR == (major) && PA_MINOR > (minor)) || \
+ (PA_MAJOR == (major) && PA_MINOR == (minor) && PA_MICRO >= (micro)))
PA_C_DECL_END
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 64688e0b..42cde5b9 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -27,8 +27,10 @@
#include <string.h>
#include <pulse/i18n.h>
+
#include <pulsecore/core-util.h>
#include <pulsecore/macro.h>
+#include <pulsecore/sample-util.h>
#include "volume.h"
@@ -344,7 +346,7 @@ pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const
pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
pa_return_val_if_fail(pa_cvolume_valid(b), NULL);
- for (i = 0; i < a->channels && i < b->channels && i < PA_CHANNELS_MAX; i++)
+ for (i = 0; i < a->channels && i < b->channels; i++)
dest->values[i] = pa_sw_volume_multiply(a->values[i], b->values[i]);
dest->channels = (uint8_t) i;
@@ -352,6 +354,22 @@ pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const
return dest;
}
+pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b) {
+ unsigned i;
+
+ pa_assert(dest);
+ pa_assert(a);
+
+ pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
+
+ for (i = 0; i < a->channels; i++)
+ dest->values[i] = pa_sw_volume_multiply(a->values[i], b);
+
+ dest->channels = (uint8_t) i;
+
+ return dest;
+}
+
pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
unsigned i;
@@ -362,7 +380,7 @@ pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa
pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
pa_return_val_if_fail(pa_cvolume_valid(b), NULL);
- for (i = 0; i < a->channels && i < b->channels && i < PA_CHANNELS_MAX; i++)
+ for (i = 0; i < a->channels && i < b->channels; i++)
dest->values[i] = pa_sw_volume_divide(a->values[i], b->values[i]);
dest->channels = (uint8_t) i;
@@ -370,6 +388,22 @@ pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa
return dest;
}
+pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b) {
+ unsigned i;
+
+ pa_assert(dest);
+ pa_assert(a);
+
+ pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
+
+ for (i = 0; i < a->channels; i++)
+ dest->values[i] = pa_sw_volume_divide(a->values[i], b);
+
+ dest->channels = (uint8_t) i;
+
+ return dest;
+}
+
int pa_cvolume_valid(const pa_cvolume *v) {
unsigned c;
@@ -386,65 +420,27 @@ int pa_cvolume_valid(const pa_cvolume *v) {
}
static pa_bool_t on_left(pa_channel_position_t p) {
-
- return
- p == PA_CHANNEL_POSITION_FRONT_LEFT ||
- p == PA_CHANNEL_POSITION_REAR_LEFT ||
- p == PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER ||
- p == PA_CHANNEL_POSITION_SIDE_LEFT ||
- p == PA_CHANNEL_POSITION_TOP_FRONT_LEFT ||
- p == PA_CHANNEL_POSITION_TOP_REAR_LEFT;
+ return !!(PA_CHANNEL_POSITION_MASK(p) & PA_CHANNEL_POSITION_MASK_LEFT);
}
static pa_bool_t on_right(pa_channel_position_t p) {
-
- return
- p == PA_CHANNEL_POSITION_FRONT_RIGHT ||
- p == PA_CHANNEL_POSITION_REAR_RIGHT ||
- p == PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER ||
- p == PA_CHANNEL_POSITION_SIDE_RIGHT ||
- p == PA_CHANNEL_POSITION_TOP_FRONT_RIGHT ||
- p == PA_CHANNEL_POSITION_TOP_REAR_RIGHT;
+ return !!(PA_CHANNEL_POSITION_MASK(p) & PA_CHANNEL_POSITION_MASK_RIGHT);
}
static pa_bool_t on_center(pa_channel_position_t p) {
-
- return
- p == PA_CHANNEL_POSITION_FRONT_CENTER ||
- p == PA_CHANNEL_POSITION_REAR_CENTER ||
- p == PA_CHANNEL_POSITION_TOP_CENTER ||
- p == PA_CHANNEL_POSITION_TOP_FRONT_CENTER ||
- p == PA_CHANNEL_POSITION_TOP_REAR_CENTER;
+ return !!(PA_CHANNEL_POSITION_MASK(p) & PA_CHANNEL_POSITION_MASK_CENTER);
}
static pa_bool_t on_lfe(pa_channel_position_t p) {
-
- return
- p == PA_CHANNEL_POSITION_LFE;
+ return p == PA_CHANNEL_POSITION_LFE;
}
static pa_bool_t on_front(pa_channel_position_t p) {
-
- return
- p == PA_CHANNEL_POSITION_FRONT_LEFT ||
- p == PA_CHANNEL_POSITION_FRONT_RIGHT ||
- p == PA_CHANNEL_POSITION_FRONT_CENTER ||
- p == PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER ||
- p == PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER ||
- p == PA_CHANNEL_POSITION_TOP_FRONT_LEFT ||
- p == PA_CHANNEL_POSITION_TOP_FRONT_RIGHT ||
- p == PA_CHANNEL_POSITION_TOP_FRONT_CENTER;
+ return !!(PA_CHANNEL_POSITION_MASK(p) & PA_CHANNEL_POSITION_MASK_FRONT);
}
static pa_bool_t on_rear(pa_channel_position_t p) {
-
- return
- p == PA_CHANNEL_POSITION_REAR_LEFT ||
- p == PA_CHANNEL_POSITION_REAR_RIGHT ||
- p == PA_CHANNEL_POSITION_REAR_CENTER ||
- p == PA_CHANNEL_POSITION_TOP_REAR_LEFT ||
- p == PA_CHANNEL_POSITION_TOP_REAR_RIGHT ||
- p == PA_CHANNEL_POSITION_TOP_REAR_CENTER;
+ return !!(PA_CHANNEL_POSITION_MASK(p) & PA_CHANNEL_POSITION_MASK_REAR);
}
pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa_channel_map *to) {
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index c07fd99a..05b7ebb4 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -216,16 +216,26 @@ pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) PA_GCC_CONST;
* *dest. This is only valid for software volumes! */
pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+/** Multiply a per-channel volume with a scalar volume and return the
+ * result in *dest. This is only valid for software volumes! \since
+ * 0.9.16 */
+pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
+
/** Divide two volume specifications, return the result. This uses
* PA_VOLUME_NORM as neutral element of division. This is only valid
* for software volumes! If a division by zero is tried the result
* will be 0. \since 0.9.13 */
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) PA_GCC_CONST;
-/** Multiply to per-channel volumes and return the result in
+/** Divide two per-channel volumes and return the result in
* *dest. This is only valid for software volumes! \since 0.9.13 */
pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+/** Divide a per-channel volume by a scalar volume and return the
+ * result in *dest. This is only valid for software volumes! \since
+ * 0.9.16 */
+pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
+
/** Convert a decibel value to a volume (amplitude, not power). This is only valid for software volumes! */
pa_volume_t pa_sw_volume_from_dB(double f) PA_GCC_CONST;
diff --git a/src/pulse/xmalloc.h b/src/pulse/xmalloc.h
index db20496f..f720d83f 100644
--- a/src/pulse/xmalloc.h
+++ b/src/pulse/xmalloc.h
@@ -88,9 +88,20 @@ static inline void* _pa_xnewdup_internal(const void *p, size_t n, size_t k) {
return pa_xmemdup(p, n*k);
}
-/** Same as pa_xnew() but set the memory to zero */
+/** Same as pa_xnew() but duplicate the specified data */
#define pa_xnewdup(type, p, n) ((type*) _pa_xnewdup_internal((p), (n), sizeof(type)))
+/** Internal helper for pa_xrenew() */
+static void* _pa_xrenew_internal(void *p, size_t n, size_t k) PA_GCC_MALLOC PA_GCC_ALLOC_SIZE2(2,3);
+
+static inline void* _pa_xrenew_internal(void *p, size_t n, size_t k) {
+ assert(n < INT_MAX/k);
+ return pa_xrealloc(p, n*k);
+}
+
+/** Reallocate n new structures of the specified type. */
+#define pa_xrenew(type, p, n) ((type*) _pa_xrenew_internal(p, (n), sizeof(type)))
+
PA_C_DECL_END
#endif
diff --git a/src/pulsecore/avahi-wrap.c b/src/pulsecore/avahi-wrap.c
index 56d9d3dd..f1f08bcc 100644
--- a/src/pulsecore/avahi-wrap.c
+++ b/src/pulsecore/avahi-wrap.c
@@ -23,6 +23,7 @@
#include <config.h>
#endif
+#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
#include <pulsecore/log.h>
@@ -116,14 +117,13 @@ struct AvahiTimeout {
void *userdata;
};
-static void timeout_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata) {
- AvahiTimeout *t = userdata;
+static void timeout_callback(pa_mainloop_api*a, pa_time_event* e, const struct timeval *t, void *userdata) {
+ AvahiTimeout *to = userdata;
pa_assert(a);
pa_assert(e);
- pa_assert(t);
- t->callback(t, t->userdata);
+ to->callback(to, to->userdata);
}
static AvahiTimeout* timeout_new(const AvahiPoll *api, const struct timeval *tv, AvahiTimeoutCallback callback, void *userdata) {
@@ -145,6 +145,7 @@ static AvahiTimeout* timeout_new(const AvahiPoll *api, const struct timeval *tv,
}
static void timeout_update(AvahiTimeout *t, const struct timeval *tv) {
+
pa_assert(t);
if (t->time_event && tv)
diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
index 8101a92e..2f0a3af0 100644
--- a/src/pulsecore/card.c
+++ b/src/pulsecore/card.c
@@ -148,15 +148,12 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
c->save_profile = data->save_profile;
if (!c->active_profile && c->profiles) {
- void *state = NULL;
+ void *state;
pa_card_profile *p;
- while ((p = pa_hashmap_iterate(c->profiles, &state, NULL))) {
- if (!c->active_profile ||
- p->priority > c->active_profile->priority)
-
+ PA_HASHMAP_FOREACH(p, c->profiles, state)
+ if (!c->active_profile || p->priority > c->active_profile->priority)
c->active_profile = p;
- }
}
c->userdata = NULL;
@@ -164,6 +161,7 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
pa_device_init_description(c->proplist);
pa_device_init_icon(c->proplist, TRUE);
+ pa_device_init_intended_roles(c->proplist);
pa_assert_se(pa_idxset_put(core->cards, c, &c->index) >= 0);
@@ -176,7 +174,6 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
void pa_card_free(pa_card *c) {
pa_core *core;
- pa_card_profile *profile;
pa_assert(c);
pa_assert(c->core);
@@ -199,8 +196,10 @@ void pa_card_free(pa_card *c) {
pa_idxset_free(c->sources, NULL, NULL);
if (c->profiles) {
- while ((profile = pa_hashmap_steal_first(c->profiles)))
- pa_card_profile_free(profile);
+ pa_card_profile *p;
+
+ while ((p = pa_hashmap_steal_first(c->profiles)))
+ pa_card_profile_free(p);
pa_hashmap_free(c->profiles, NULL, NULL);
}
@@ -213,26 +212,27 @@ void pa_card_free(pa_card *c) {
int pa_card_set_profile(pa_card *c, const char *name, pa_bool_t save) {
pa_card_profile *profile;
+ int r;
pa_assert(c);
if (!c->set_profile) {
- pa_log_warn("set_profile() operation not implemented for card %u \"%s\"", c->index, c->name);
- return -1;
+ pa_log_debug("set_profile() operation not implemented for card %u \"%s\"", c->index, c->name);
+ return -PA_ERR_NOTIMPLEMENTED;
}
if (!c->profiles)
- return -1;
+ return -PA_ERR_NOENTITY;
if (!(profile = pa_hashmap_get(c->profiles, name)))
- return -1;
+ return -PA_ERR_NOENTITY;
if (c->active_profile == profile) {
c->save_profile = c->save_profile || save;
return 0;
}
- if (c->set_profile(c, profile) < 0)
- return -1;
+ if ((r = c->set_profile(c, profile)) < 0)
+ return r;
pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE, c->index);
@@ -244,19 +244,28 @@ int pa_card_set_profile(pa_card *c, const char *name, pa_bool_t save) {
return 0;
}
-int pa_card_suspend(pa_card *c, pa_bool_t suspend) {
+int pa_card_suspend(pa_card *c, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink *sink;
pa_source *source;
uint32_t idx;
int ret = 0;
pa_assert(c);
+ pa_assert(cause != 0);
- for (sink = pa_idxset_first(c->sinks, &idx); sink; sink = pa_idxset_next(c->sinks, &idx))
- ret -= pa_sink_suspend(sink, suspend) < 0;
+ for (sink = pa_idxset_first(c->sinks, &idx); sink; sink = pa_idxset_next(c->sinks, &idx)) {
+ int r;
- for (source = pa_idxset_first(c->sources, &idx); source; source = pa_idxset_next(c->sources, &idx))
- ret -= pa_source_suspend(source, suspend) < 0;
+ if ((r = pa_sink_suspend(sink, suspend, cause)) < 0)
+ ret = r;
+ }
+
+ for (source = pa_idxset_first(c->sources, &idx); source; source = pa_idxset_next(c->sources, &idx)) {
+ int r;
+
+ if ((r = pa_source_suspend(source, suspend, cause)) < 0)
+ ret = r;
+ }
return ret;
}
diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
index 3b7608f6..2d691b67 100644
--- a/src/pulsecore/card.h
+++ b/src/pulsecore/card.h
@@ -63,7 +63,7 @@ struct pa_card {
pa_hashmap *profiles;
pa_card_profile *active_profile;
- pa_bool_t save_profile;
+ pa_bool_t save_profile:1;
void *userdata;
@@ -72,9 +72,8 @@ struct pa_card {
typedef struct pa_card_new_data {
char *name;
- char *description;
-
pa_proplist *proplist;
+
const char *driver;
pa_module *module;
@@ -99,6 +98,6 @@ void pa_card_free(pa_card *c);
int pa_card_set_profile(pa_card *c, const char *name, pa_bool_t save);
-int pa_card_suspend(pa_card *c, pa_bool_t suspend);
+int pa_card_suspend(pa_card *c, pa_bool_t suspend, pa_suspend_cause_t cause);
#endif
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index dad647a8..e2c3c066 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -125,6 +125,8 @@ static int pa_cli_command_update_source_proplist(pa_core *c, pa_tokenizer *t, pa
static int pa_cli_command_update_sink_input_proplist(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail);
static int pa_cli_command_update_source_output_proplist(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail);
static int pa_cli_command_card_profile(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail);
+static int pa_cli_command_sink_port(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail);
+static int pa_cli_command_source_port(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail);
/* A method table for all available commands */
@@ -176,10 +178,12 @@ static const struct command commands[] = {
{ "suspend-source", pa_cli_command_suspend_source, "Suspend source (args: index|name, bool)", 3},
{ "suspend", pa_cli_command_suspend, "Suspend all sinks and all sources (args: bool)", 2},
{ "set-card-profile", pa_cli_command_card_profile, "Change the profile of a card (args: index, name)", 3},
+ { "set-sink-port", pa_cli_command_sink_port, "Change the port of a sink (args: index, name)", 3},
+ { "set-source-port", pa_cli_command_source_port, "Change the port of a source (args: index, name)", 3},
{ "set-log-level", pa_cli_command_log_level, "Change the log level (args: numeric level)", 2},
{ "set-log-meta", pa_cli_command_log_meta, "Show source code location in log messages (args: bool)", 2},
{ "set-log-time", pa_cli_command_log_time, "Show timestamps in log messages (args: bool)", 2},
- { "set-log-backtrace", pa_cli_command_log_backtrace, "Show bakctrace in log messages (args: frames)", 2},
+ { "set-log-backtrace", pa_cli_command_log_backtrace, "Show backtrace in log messages (args: frames)", 2},
{ NULL, NULL, NULL, 0 }
};
@@ -526,7 +530,7 @@ static int pa_cli_command_sink_volume(pa_core *c, pa_tokenizer *t, pa_strbuf *bu
}
pa_cvolume_set(&cvolume, sink->sample_spec.channels, volume);
- pa_sink_set_volume(sink, &cvolume, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(sink, &cvolume, TRUE, TRUE, TRUE, TRUE);
return 0;
}
@@ -604,7 +608,7 @@ static int pa_cli_command_source_volume(pa_core *c, pa_tokenizer *t, pa_strbuf *
}
pa_cvolume_set(&cvolume, source->sample_spec.channels, volume);
- pa_source_set_volume(source, &cvolume);
+ pa_source_set_volume(source, &cvolume, TRUE);
return 0;
}
@@ -638,7 +642,7 @@ static int pa_cli_command_sink_mute(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
return -1;
}
- pa_sink_set_mute(sink, mute);
+ pa_sink_set_mute(sink, mute, TRUE);
return 0;
}
@@ -672,7 +676,7 @@ static int pa_cli_command_source_mute(pa_core *c, pa_tokenizer *t, pa_strbuf *bu
return -1;
}
- pa_source_set_mute(source, mute);
+ pa_source_set_mute(source, mute, TRUE);
return 0;
}
@@ -1278,7 +1282,7 @@ static int pa_cli_command_suspend_sink(pa_core *c, pa_tokenizer *t, pa_strbuf *b
return -1;
}
- if ((r = pa_sink_suspend(sink, suspend)) < 0)
+ if ((r = pa_sink_suspend(sink, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend sink: %s\n", pa_strerror(r));
return 0;
@@ -1314,7 +1318,7 @@ static int pa_cli_command_suspend_source(pa_core *c, pa_tokenizer *t, pa_strbuf
return -1;
}
- if ((r = pa_source_suspend(source, suspend)) < 0)
+ if ((r = pa_source_suspend(source, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend source: %s\n", pa_strerror(r));
return 0;
@@ -1339,10 +1343,10 @@ static int pa_cli_command_suspend(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, p
return -1;
}
- if ((r = pa_sink_suspend_all(c, suspend)) < 0)
+ if ((r = pa_sink_suspend_all(c, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend all sinks: %s\n", pa_strerror(r));
- if ((r = pa_source_suspend_all(c, suspend)) < 0)
+ if ((r = pa_source_suspend_all(c, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend all sources: %s\n", pa_strerror(r));
return 0;
@@ -1476,6 +1480,70 @@ static int pa_cli_command_card_profile(pa_core *c, pa_tokenizer *t, pa_strbuf *b
return 0;
}
+static int pa_cli_command_sink_port(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
+ const char *n, *p;
+ pa_sink *sink;
+
+ pa_core_assert_ref(c);
+ pa_assert(t);
+ pa_assert(buf);
+ pa_assert(fail);
+
+ if (!(n = pa_tokenizer_get(t, 1))) {
+ pa_strbuf_puts(buf, "You need to specify a sink either by its name or its index.\n");
+ return -1;
+ }
+
+ if (!(p = pa_tokenizer_get(t, 2))) {
+ pa_strbuf_puts(buf, "You need to specify a profile by its name.\n");
+ return -1;
+ }
+
+ if (!(sink = pa_namereg_get(c, n, PA_NAMEREG_SINK))) {
+ pa_strbuf_puts(buf, "No sink found by this name or index.\n");
+ return -1;
+ }
+
+ if (pa_sink_set_port(sink, p, TRUE) < 0) {
+ pa_strbuf_printf(buf, "Failed to set sink port to '%s'.\n", p);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int pa_cli_command_source_port(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
+ const char *n, *p;
+ pa_source *source;
+
+ pa_core_assert_ref(c);
+ pa_assert(t);
+ pa_assert(buf);
+ pa_assert(fail);
+
+ if (!(n = pa_tokenizer_get(t, 1))) {
+ pa_strbuf_puts(buf, "You need to specify a source either by its name or its index.\n");
+ return -1;
+ }
+
+ if (!(p = pa_tokenizer_get(t, 2))) {
+ pa_strbuf_puts(buf, "You need to specify a profile by its name.\n");
+ return -1;
+ }
+
+ if (!(source = pa_namereg_get(c, n, PA_NAMEREG_SOURCE))) {
+ pa_strbuf_puts(buf, "No source found by this name or index.\n");
+ return -1;
+ }
+
+ if (pa_source_set_port(source, p, TRUE) < 0) {
+ pa_strbuf_printf(buf, "Failed to set source port to '%s'.\n", p);
+ return -1;
+ }
+
+ return 0;
+}
+
static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
pa_module *m;
pa_sink *sink;
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index 604678be..9395513d 100644
--- a/src/pulsecore/cli-text.c
+++ b/src/pulsecore/cli-text.c
@@ -139,11 +139,10 @@ char *pa_card_list_to_string(pa_core *c) {
if (card->profiles) {
pa_card_profile *p;
- void *state = NULL;
+ void *state;
pa_strbuf_puts(s, "\tprofiles:\n");
-
- while ((p = pa_hashmap_iterate(card->profiles, &state, NULL)))
+ PA_HASHMAP_FOREACH(p, card->profiles, state)
pa_strbuf_printf(s, "\t\t%s: %s (priority %u)\n", p->name, p->description, p->priority);
}
@@ -232,6 +231,7 @@ char *pa_sink_list_to_string(pa_core *c) {
"\tdriver: <%s>\n"
"\tflags: %s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
+ "\tsuspend cause: %s%s%s%s\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
"\tbase volume: %s%s%s\n"
@@ -258,6 +258,10 @@ char *pa_sink_list_to_string(pa_core *c) {
sink->flags & PA_SINK_FLAT_VOLUME ? "FLAT_VOLUME " : "",
sink->flags & PA_SINK_DYNAMIC_LATENCY ? "DYNAMIC_LATENCY" : "",
sink_state_to_string(pa_sink_get_state(sink)),
+ sink->suspend_cause & PA_SUSPEND_USER ? "USER " : "",
+ sink->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "",
+ sink->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "",
+ sink->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "",
pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE, FALSE)),
sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "",
sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE, FALSE)) : "",
@@ -302,6 +306,22 @@ char *pa_sink_list_to_string(pa_core *c) {
t = pa_proplist_to_string_sep(sink->proplist, "\n\t\t");
pa_strbuf_printf(s, "\tproperties:\n\t\t%s\n", t);
pa_xfree(t);
+
+ if (sink->ports) {
+ pa_device_port *p;
+ void *state;
+
+ pa_strbuf_puts(s, "\tports:\n");
+ PA_HASHMAP_FOREACH(p, sink->ports, state)
+ pa_strbuf_printf(s, "\t\t%s: %s (priority %u)\n", p->name, p->description, p->priority);
+ }
+
+
+ if (sink->active_port)
+ pa_strbuf_printf(
+ s,
+ "\tactive port: <%s>\n",
+ sink->active_port->name);
}
return pa_strbuf_tostring_free(s);
@@ -335,6 +355,7 @@ char *pa_source_list_to_string(pa_core *c) {
"\tdriver: <%s>\n"
"\tflags: %s%s%s%s%s%s%s\n"
"\tstate: %s\n"
+ "\tsuspend cause: %s%s%s%s\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
"\tbase volume: %s%s%s\n"
@@ -358,6 +379,10 @@ char *pa_source_list_to_string(pa_core *c) {
source->flags & PA_SOURCE_LATENCY ? "LATENCY " : "",
source->flags & PA_SOURCE_DYNAMIC_LATENCY ? "DYNAMIC_LATENCY" : "",
source_state_to_string(pa_source_get_state(source)),
+ source->suspend_cause & PA_SUSPEND_USER ? "USER " : "",
+ source->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "",
+ source->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "",
+ source->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "",
pa_cvolume_snprint(cv, sizeof(cv), pa_source_get_volume(source, FALSE)),
source->flags & PA_SOURCE_DECIBEL_VOLUME ? "\n\t " : "",
source->flags & PA_SOURCE_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_source_get_volume(source, FALSE)) : "",
@@ -402,6 +427,21 @@ char *pa_source_list_to_string(pa_core *c) {
t = pa_proplist_to_string_sep(source->proplist, "\n\t\t");
pa_strbuf_printf(s, "\tproperties:\n\t\t%s\n", t);
pa_xfree(t);
+
+ if (source->ports) {
+ pa_device_port *p;
+ void *state;
+
+ pa_strbuf_puts(s, "\tports:\n");
+ PA_HASHMAP_FOREACH(p, source->ports, state)
+ pa_strbuf_printf(s, "\t\t%s: %s (priority %u)\n", p->name, p->description, p->priority);
+ }
+
+ if (source->active_port)
+ pa_strbuf_printf(
+ s,
+ "\tactive port: <%s>\n",
+ source->active_port->name);
}
return pa_strbuf_tostring_free(s);
diff --git a/src/pulsecore/conf-parser.c b/src/pulsecore/conf-parser.c
index a6eb581c..2dc9a223 100644
--- a/src/pulsecore/conf-parser.c
+++ b/src/pulsecore/conf-parser.c
@@ -40,19 +40,35 @@
#define COMMENTS "#;\n"
/* Run the user supplied parser for an assignment */
-static int next_assignment(const char *filename, unsigned line, const char *section, const pa_config_item *t, const char *lvalue, const char *rvalue, void *userdata) {
+static int next_assignment(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const pa_config_item *t,
+ const char *lvalue,
+ const char *rvalue,
+ void *userdata) {
+
pa_assert(filename);
pa_assert(t);
pa_assert(lvalue);
pa_assert(rvalue);
- for (; t->parse; t++)
- if (!t->lvalue ||
- (pa_streq(lvalue, t->lvalue) &&
- ((!section && !t->section) || pa_streq(section, t->section))))
- return t->parse(filename, line, section, lvalue, rvalue, t->data, userdata);
+ for (; t->parse; t++) {
+
+ if (t->lvalue && !pa_streq(lvalue, t->lvalue))
+ continue;
+
+ if (t->section && !section)
+ continue;
+
+ if (t->section && !pa_streq(section, t->section))
+ continue;
+
+ return t->parse(filename, line, section, lvalue, rvalue, t->data, userdata);
+ }
- pa_log("[%s:%u] Unknown lvalue '%s' in section '%s'.", filename, line, lvalue, pa_strnull(section));
+ pa_log("[%s:%u] Unknown lvalue '%s' in section '%s'.", filename, line, lvalue, pa_strna(section));
return -1;
}
@@ -96,6 +112,25 @@ static int parse_line(const char *filename, unsigned line, char **section, const
if (!*b)
return 0;
+ if (pa_startswith(b, ".include ")) {
+ char *path, *fn;
+ int r;
+
+ fn = strip(b+9);
+ if (!pa_is_path_absolute(fn)) {
+ const char *k;
+ if ((k = strrchr(filename, '/'))) {
+ char *dir = pa_xstrndup(filename, k-filename);
+ fn = path = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", dir, fn);
+ pa_xfree(dir);
+ }
+ }
+
+ r = pa_config_parse(fn, NULL, t, userdata);
+ pa_xfree(path);
+ return r;
+ }
+
if (*b == '[') {
size_t k;
@@ -135,6 +170,7 @@ int pa_config_parse(const char *filename, FILE *f, const pa_config_item *t, void
if (!f && !(f = fopen(filename, "r"))) {
if (errno == ENOENT) {
+ pa_log_debug("Failed to open configuration file '%s': %s", filename, pa_cstrerror(errno));
r = 0;
goto finish;
}
diff --git a/src/pulsecore/rtclock.c b/src/pulsecore/core-rtclock.c
index 65c826a6..3b3e3a64 100644
--- a/src/pulsecore/rtclock.c
+++ b/src/pulsecore/core-rtclock.c
@@ -37,7 +37,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/core-error.h>
-#include "rtclock.h"
+#include "core-rtclock.h"
pa_usec_t pa_rtclock_age(const struct timeval *tv) {
struct timeval now;
@@ -65,7 +65,7 @@ struct timeval *pa_rtclock_get(struct timeval *tv) {
pa_assert(tv);
tv->tv_sec = ts.tv_sec;
- tv->tv_usec = ts.tv_nsec / 1000;
+ tv->tv_usec = ts.tv_nsec / PA_NSEC_PER_USEC;
return tv;
@@ -82,11 +82,11 @@ pa_bool_t pa_rtclock_hrtimer(void) {
#ifdef CLOCK_MONOTONIC
if (clock_getres(CLOCK_MONOTONIC, &ts) >= 0)
- return ts.tv_sec == 0 && ts.tv_nsec <= PA_HRTIMER_THRESHOLD_USEC*1000;
+ return ts.tv_sec == 0 && ts.tv_nsec <= (long) (PA_HRTIMER_THRESHOLD_USEC*PA_NSEC_PER_USEC);
#endif
pa_assert_se(clock_getres(CLOCK_REALTIME, &ts) == 0);
- return ts.tv_sec == 0 && ts.tv_nsec <= PA_HRTIMER_THRESHOLD_USEC*1000;
+ return ts.tv_sec == 0 && ts.tv_nsec <= (long) (PA_HRTIMER_THRESHOLD_USEC*PA_NSEC_PER_USEC);
#else /* HAVE_CLOCK_GETTIME */
@@ -122,12 +122,6 @@ void pa_rtclock_hrtimer_enable(void) {
#endif
}
-pa_usec_t pa_rtclock_usec(void) {
- struct timeval tv;
-
- return pa_timeval_load(pa_rtclock_get(&tv));
-}
-
struct timeval* pa_rtclock_from_wallclock(struct timeval *tv) {
#ifdef HAVE_CLOCK_GETTIME
@@ -156,3 +150,41 @@ pa_usec_t pa_timespec_load(const struct timespec *ts) {
(pa_usec_t) ts->tv_sec * PA_USEC_PER_SEC +
(pa_usec_t) ts->tv_nsec / PA_NSEC_PER_USEC;
}
+
+
+static struct timeval* wallclock_from_rtclock(struct timeval *tv) {
+
+#ifdef HAVE_CLOCK_GETTIME
+ struct timeval wc_now, rt_now;
+
+ pa_gettimeofday(&wc_now);
+ pa_rtclock_get(&rt_now);
+
+ pa_assert(tv);
+
+ if (pa_timeval_cmp(&rt_now, tv) < 0)
+ pa_timeval_add(&wc_now, pa_timeval_diff(tv, &rt_now));
+ else
+ pa_timeval_sub(&wc_now, pa_timeval_diff(&rt_now, tv));
+
+ *tv = wc_now;
+#endif
+
+ return tv;
+}
+
+struct timeval* pa_timeval_rtstore(struct timeval *tv, pa_usec_t v, pa_bool_t rtclock) {
+ pa_assert(tv);
+
+ if (v == PA_USEC_INVALID)
+ return NULL;
+
+ pa_timeval_store(tv, v);
+
+ if (rtclock)
+ tv->tv_usec |= PA_TIMEVAL_RTCLOCK;
+ else
+ wallclock_from_rtclock(tv);
+
+ return tv;
+}
diff --git a/src/pulsecore/rtclock.h b/src/pulsecore/core-rtclock.h
index 03cc1c72..9f5ae2dd 100644
--- a/src/pulsecore/rtclock.h
+++ b/src/pulsecore/core-rtclock.h
@@ -31,8 +31,6 @@ struct timeval;
struct timeval *pa_rtclock_get(struct timeval *ts);
-pa_usec_t pa_rtclock_usec(void);
-
pa_usec_t pa_rtclock_age(const struct timeval *tv);
pa_bool_t pa_rtclock_hrtimer(void);
void pa_rtclock_hrtimer_enable(void);
@@ -40,8 +38,13 @@ void pa_rtclock_hrtimer_enable(void);
/* timer with a resolution better than this are considered high-resolution */
#define PA_HRTIMER_THRESHOLD_USEC 10
+/* bit to set in tv.tv_usec to mark that the timeval is in monotonic time */
+#define PA_TIMEVAL_RTCLOCK ((time_t) (1LU << 30))
+
struct timeval* pa_rtclock_from_wallclock(struct timeval *tv);
pa_usec_t pa_timespec_load(const struct timespec *ts);
+struct timeval* pa_timeval_rtstore(struct timeval *tv, pa_usec_t v, pa_bool_t rtclock);
+
#endif
diff --git a/src/pulsecore/core-scache.c b/src/pulsecore/core-scache.c
index 086f5fcb..4c5a4b26 100644
--- a/src/pulsecore/core-scache.c
+++ b/src/pulsecore/core-scache.c
@@ -47,6 +47,7 @@
#include <pulse/util.h>
#include <pulse/volume.h>
#include <pulse/xmalloc.h>
+#include <pulse/rtclock.h>
#include <pulsecore/sink-input.h>
#include <pulsecore/sample-util.h>
@@ -54,6 +55,7 @@
#include <pulsecore/core-subscribe.h>
#include <pulsecore/namereg.h>
#include <pulsecore/sound-file.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/log.h>
#include <pulsecore/core-error.h>
@@ -61,11 +63,10 @@
#include "core-scache.h"
-#define UNLOAD_POLL_TIME 60
+#define UNLOAD_POLL_TIME (60 * PA_USEC_PER_SEC)
-static void timeout_callback(pa_mainloop_api *m, pa_time_event*e, const struct timeval *tv, void *userdata) {
+static void timeout_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
pa_core *c = userdata;
- struct timeval ntv;
pa_assert(c);
pa_assert(c->mainloop == m);
@@ -73,9 +74,7 @@ static void timeout_callback(pa_mainloop_api *m, pa_time_event*e, const struct t
pa_scache_unload_unused(c);
- pa_gettimeofday(&ntv);
- ntv.tv_sec += UNLOAD_POLL_TIME;
- m->time_restart(e, &ntv);
+ pa_core_rttime_restart(c, e, pa_rtclock_now() + UNLOAD_POLL_TIME);
}
static void free_entry(pa_scache_entry *e) {
@@ -256,12 +255,8 @@ int pa_scache_add_file_lazy(pa_core *c, const char *name, const char *filename,
pa_proplist_sets(e->proplist, PA_PROP_MEDIA_FILENAME, filename);
- if (!c->scache_auto_unload_event) {
- struct timeval ntv;
- pa_gettimeofday(&ntv);
- ntv.tv_sec += UNLOAD_POLL_TIME;
- c->scache_auto_unload_event = c->mainloop->time_new(c->mainloop, &ntv, timeout_callback, c);
- }
+ if (!c->scache_auto_unload_event)
+ c->scache_auto_unload_event = pa_core_rttime_new(c, pa_rtclock_now() + UNLOAD_POLL_TIME, timeout_callback, c);
if (idx)
*idx = e->index;
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index b747cd84..4550344f 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -50,6 +50,10 @@
#ifdef HAVE_SCHED_H
#include <sched.h>
+
+#if defined(__linux__) && !defined(SCHED_RESET_ON_FORK)
+#define SCHED_RESET_ON_FORK 0x40000000
+#endif
#endif
#ifdef HAVE_SYS_RESOURCE_H
@@ -92,6 +96,10 @@
#include <xlocale.h>
#endif
+#ifdef HAVE_DBUS
+#include "rtkit.h"
+#endif
+
#include <pulse/xmalloc.h>
#include <pulse/util.h>
#include <pulse/utf8.h>
@@ -552,127 +560,121 @@ char *pa_strlcpy(char *b, const char *s, size_t l) {
return b;
}
-/* Make the current thread a realtime thread, and acquire the highest
- * rtprio we can get that is less or equal the specified parameter. If
- * the thread is already realtime, don't do anything. */
-int pa_make_realtime(int rtprio) {
-
-#ifdef _POSIX_PRIORITY_SCHEDULING
+static int set_scheduler(int rtprio) {
struct sched_param sp;
- int r, policy;
+ int r;
+#ifdef HAVE_DBUS
+ DBusError error;
+ DBusConnection *bus;
- memset(&sp, 0, sizeof(sp));
- policy = 0;
+ dbus_error_init(&error);
+#endif
- if ((r = pthread_getschedparam(pthread_self(), &policy, &sp)) != 0) {
- pa_log("pthread_getschedgetparam(): %s", pa_cstrerror(r));
- return -1;
+ pa_zero(sp);
+ sp.sched_priority = rtprio;
+
+#ifdef SCHED_RESET_ON_FORK
+ if ((r = pthread_setschedparam(pthread_self(), SCHED_RR|SCHED_RESET_ON_FORK, &sp)) == 0) {
+ pa_log_debug("SCHED_RR|SCHED_RESET_ON_FORK worked.");
+ return 0;
}
+#endif
- if (policy == SCHED_FIFO && sp.sched_priority >= rtprio) {
- pa_log_info("Thread already being scheduled with SCHED_FIFO with priority %i.", sp.sched_priority);
+ if ((r = pthread_setschedparam(pthread_self(), SCHED_RR, &sp)) == 0) {
+ pa_log_debug("SCHED_RR worked.");
return 0;
}
- sp.sched_priority = rtprio;
- if ((r = pthread_setschedparam(pthread_self(), SCHED_FIFO, &sp)) != 0) {
+#ifdef HAVE_DBUS
+ /* Try to talk to RealtimeKit */
- while (sp.sched_priority > 1) {
- sp.sched_priority --;
+ if (!(bus = dbus_bus_get(DBUS_BUS_SYSTEM, &error))) {
+ pa_log("Failed to connect to system bus: %s\n", error.message);
+ dbus_error_free(&error);
+ errno = -EIO;
+ return -1;
+ }
- if ((r = pthread_setschedparam(pthread_self(), SCHED_FIFO, &sp)) == 0) {
- pa_log_info("Successfully enabled SCHED_FIFO scheduling for thread, with priority %i, which is lower than the requested %i.", sp.sched_priority, rtprio);
- return 0;
- }
- }
+ r = rtkit_make_realtime(bus, 0, rtprio);
+ dbus_connection_unref(bus);
- pa_log_warn("pthread_setschedparam(): %s", pa_cstrerror(r));
- return -1;
+ if (r >= 0) {
+ pa_log_debug("RealtimeKit worked.");
+ return 0;
}
- pa_log_info("Successfully enabled SCHED_FIFO scheduling for thread, with priority %i.", sp.sched_priority);
- return 0;
+ errno = -r;
#else
+ errno = r;
+#endif
- errno = ENOTSUP;
return -1;
-#endif
}
-/* This is merely used for giving the user a hint. This is not correct
- * for anything security related */
-pa_bool_t pa_can_realtime(void) {
-
- if (geteuid() == 0)
- return TRUE;
+/* Make the current thread a realtime thread, and acquire the highest
+ * rtprio we can get that is less or equal the specified parameter. If
+ * the thread is already realtime, don't do anything. */
+int pa_make_realtime(int rtprio) {
-#if defined(HAVE_SYS_RESOURCE_H) && defined(RLIMIT_RTPRIO)
- {
- struct rlimit rl;
+#ifdef _POSIX_PRIORITY_SCHEDULING
+ int p;
- if (getrlimit(RLIMIT_RTPRIO, &rl) >= 0)
- if (rl.rlim_cur > 0 || rl.rlim_cur == RLIM_INFINITY)
- return TRUE;
+ if (set_scheduler(rtprio) >= 0) {
+ pa_log_info("Successfully enabled SCHED_RR scheduling for thread, with priority %i.", rtprio);
+ return 0;
}
-#endif
-#if defined(HAVE_SYS_CAPABILITY_H) && defined(CAP_SYS_NICE)
- {
- cap_t cap;
-
- if ((cap = cap_get_proc())) {
- cap_flag_value_t flag = CAP_CLEAR;
+ for (p = rtprio-1; p >= 1; p--)
+ if (set_scheduler(p)) {
+ pa_log_info("Successfully enabled SCHED_RR scheduling for thread, with priority %i, which is lower than the requested %i.", p, rtprio);
+ return 0;
+ }
- if (cap_get_flag(cap, CAP_SYS_NICE, CAP_EFFECTIVE, &flag) >= 0)
- if (flag == CAP_SET) {
- cap_free(cap);
- return TRUE;
- }
+ pa_log_info("Failed to acquire real-time scheduling: %s", pa_cstrerror(errno));
+ return -1;
+#else
- cap_free(cap);
- }
- }
+ errno = ENOTSUP;
+ return -1;
#endif
-
- return FALSE;
}
-/* This is merely used for giving the user a hint. This is not correct
- * for anything security related */
-pa_bool_t pa_can_high_priority(void) {
-
- if (geteuid() == 0)
- return TRUE;
+static int set_nice(int nice_level) {
+#ifdef HAVE_DBUS
+ DBusError error;
+ DBusConnection *bus;
+ int r;
-#if defined(HAVE_SYS_RESOURCE_H) && defined(RLIMIT_RTPRIO)
- {
- struct rlimit rl;
+ dbus_error_init(&error);
+#endif
- if (getrlimit(RLIMIT_NICE, &rl) >= 0)
- if (rl.rlim_cur >= 21 || rl.rlim_cur == RLIM_INFINITY)
- return TRUE;
+ if (setpriority(PRIO_PROCESS, 0, nice_level) >= 0) {
+ pa_log_debug("setpriority() worked.");
+ return 0;
}
-#endif
-#if defined(HAVE_SYS_CAPABILITY_H) && defined(CAP_SYS_NICE)
- {
- cap_t cap;
+#ifdef HAVE_DBUS
+ /* Try to talk to RealtimeKit */
- if ((cap = cap_get_proc())) {
- cap_flag_value_t flag = CAP_CLEAR;
+ if (!(bus = dbus_bus_get(DBUS_BUS_SYSTEM, &error))) {
+ pa_log("Failed to connect to system bus: %s\n", error.message);
+ dbus_error_free(&error);
+ errno = -EIO;
+ return -1;
+ }
- if (cap_get_flag(cap, CAP_SYS_NICE, CAP_EFFECTIVE, &flag) >= 0)
- if (flag == CAP_SET) {
- cap_free(cap);
- return TRUE;
- }
+ r = rtkit_make_high_priority(bus, 0, nice_level);
+ dbus_connection_unref(bus);
- cap_free(cap);
- }
+ if (r >= 0) {
+ pa_log_debug("RealtimeKit worked.");
+ return 0;
}
+
+ errno = -r;
#endif
- return FALSE;
+ return -1;
}
/* Raise the priority of the current process as much as possible that
@@ -680,22 +682,21 @@ pa_bool_t pa_can_high_priority(void) {
int pa_raise_priority(int nice_level) {
#ifdef HAVE_SYS_RESOURCE_H
- if (setpriority(PRIO_PROCESS, 0, nice_level) < 0) {
- int n;
+ int n;
- for (n = nice_level+1; n < 0; n++) {
+ if (set_nice(nice_level) >= 0) {
+ pa_log_info("Successfully gained nice level %i.", nice_level);
+ return 0;
+ }
- if (setpriority(PRIO_PROCESS, 0, n) == 0) {
- pa_log_info("Successfully acquired nice level %i, which is lower than the requested %i.", n, nice_level);
- return 0;
- }
+ for (n = nice_level+1; n < 0; n++)
+ if (set_nice(n) > 0) {
+ pa_log_info("Successfully acquired nice level %i, which is lower than the requested %i.", n, nice_level);
+ return 0;
}
- pa_log_warn("setpriority(): %s", pa_cstrerror(errno));
- return -1;
- }
-
- pa_log_info("Successfully gained nice level %i.", nice_level);
+ pa_log_info("Failed to acquire high-priority scheduling: %s", pa_cstrerror(errno));
+ return -1;
#endif
#ifdef OS_IS_WIN32
@@ -703,9 +704,10 @@ int pa_raise_priority(int nice_level) {
if (!SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS)) {
pa_log_warn("SetPriorityClass() failed: 0x%08X", GetLastError());
errno = EPERM;
- return .-1;
- } else
- pa_log_info("Successfully gained high priority class.");
+ return -1;
+ }
+
+ pa_log_info("Successfully gained high priority class.");
}
#endif
@@ -720,8 +722,8 @@ void pa_reset_priority(void) {
setpriority(PRIO_PROCESS, 0, 0);
- memset(&sp, 0, sizeof(sp));
- pa_assert_se(pthread_setschedparam(pthread_self(), SCHED_OTHER, &sp) == 0);
+ pa_zero(sp);
+ pthread_setschedparam(pthread_self(), SCHED_OTHER, &sp);
#endif
#ifdef OS_IS_WIN32
@@ -2732,3 +2734,48 @@ void pa_disable_sigpipe(void) {
}
#endif
}
+
+void pa_xfreev(void**a) {
+ void **p;
+
+ if (!a)
+ return;
+
+ for (p = a; *p; p++)
+ pa_xfree(*p);
+
+ pa_xfree(a);
+}
+
+char **pa_split_spaces_strv(const char *s) {
+ char **t, *e;
+ unsigned i = 0, n = 8;
+ const char *state = NULL;
+
+ t = pa_xnew(char*, n);
+ while ((e = pa_split_spaces(s, &state))) {
+ t[i++] = e;
+
+ if (i >= n) {
+ n *= 2;
+ t = pa_xrenew(char*, t, n);
+ }
+ }
+
+ if (i <= 0) {
+ pa_xfree(t);
+ return NULL;
+ }
+
+ t[i] = NULL;
+ return t;
+}
+
+char* pa_maybe_prefix_path(const char *path, const char *prefix) {
+ pa_assert(path);
+
+ if (pa_is_path_absolute(path))
+ return pa_xstrdup(path);
+
+ return pa_sprintf_malloc("%s" PA_PATH_SEP "%s", prefix, path);
+}
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index d073b750..96a0480a 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -80,9 +80,6 @@ int pa_make_realtime(int rtprio);
int pa_raise_priority(int nice_level);
void pa_reset_priority(void);
-pa_bool_t pa_can_realtime(void);
-pa_bool_t pa_can_high_priority(void);
-
int pa_parse_boolean(const char *s) PA_GCC_PURE;
static inline const char *pa_yes_no(pa_bool_t b) {
@@ -229,4 +226,14 @@ char *pa_realpath(const char *path);
void pa_disable_sigpipe(void);
+void pa_xfreev(void**a);
+
+static inline void pa_xstrfreev(char **a) {
+ pa_xfreev((void**) a);
+}
+
+char **pa_split_spaces_strv(const char *s);
+
+char* pa_maybe_prefix_path(const char *path, const char *prefix);
+
#endif
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index 06573f17..f5eb8352 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -28,6 +28,7 @@
#include <stdio.h>
#include <signal.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
@@ -35,6 +36,7 @@
#include <pulsecore/sink.h>
#include <pulsecore/source.h>
#include <pulsecore/namereg.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/core-scache.h>
#include <pulsecore/core-subscribe.h>
@@ -214,7 +216,7 @@ static void core_free(pa_object *o) {
pa_xfree(c);
}
-static void exit_callback(pa_mainloop_api*m, pa_time_event *e, const struct timeval *tv, void *userdata) {
+static void exit_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
pa_core *c = userdata;
pa_assert(c->exit_event == e);
@@ -229,11 +231,7 @@ void pa_core_check_idle(pa_core *c) {
c->exit_idle_time >= 0 &&
pa_idxset_size(c->clients) == 0) {
- struct timeval tv;
- pa_gettimeofday(&tv);
- tv.tv_sec+= c->exit_idle_time;
-
- c->exit_event = c->mainloop->time_new(c->mainloop, &tv, exit_callback, c);
+ c->exit_event = pa_core_rttime_new(c, pa_rtclock_now() + c->exit_idle_time * PA_USEC_PER_SEC, exit_callback, c);
} else if (c->exit_event && pa_idxset_size(c->clients) > 0) {
c->mainloop->time_free(c->exit_event);
@@ -261,3 +259,21 @@ void pa_core_maybe_vacuum(pa_core *c) {
pa_log_debug("Hmm, no streams around, trying to vacuum.");
pa_mempool_vacuum(c->mempool);
}
+
+pa_time_event* pa_core_rttime_new(pa_core *c, pa_usec_t usec, pa_time_event_cb_t cb, void *userdata) {
+ struct timeval tv;
+
+ pa_assert(c);
+ pa_assert(c->mainloop);
+
+ return c->mainloop->time_new(c->mainloop, pa_timeval_rtstore(&tv, usec, TRUE), cb, userdata);
+}
+
+void pa_core_rttime_restart(pa_core *c, pa_time_event *e, pa_usec_t usec) {
+ struct timeval tv;
+
+ pa_assert(c);
+ pa_assert(c->mainloop);
+
+ c->mainloop->time_restart(e, pa_timeval_rtstore(&tv, usec, TRUE));
+}
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index f93652e2..bb30854e 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -27,6 +27,16 @@
typedef struct pa_core pa_core;
+/* This is a bitmask that encodes the cause why a sink/source is
+ * suspended. */
+typedef enum pa_suspend_cause {
+ PA_SUSPEND_USER = 1, /* Exposed to the user via some protocol */
+ PA_SUSPEND_APPLICATION = 2, /* Used by the device reservation logic */
+ PA_SUSPEND_IDLE = 4, /* Used by module-suspend-on-idle */
+ PA_SUSPEND_SESSION = 8, /* Used by module-hal for mark inactive sessions */
+ PA_SUSPEND_ALL = 0xFFFF /* Magic cause that can be used to resume forcibly */
+} pa_suspend_cause_t;
+
#include <pulsecore/idxset.h>
#include <pulsecore/hashmap.h>
#include <pulsecore/memblock.h>
@@ -182,4 +192,8 @@ int pa_core_exit(pa_core *c, pa_bool_t force, int retval);
void pa_core_maybe_vacuum(pa_core *c);
+/* wrapper for c->mainloop->time_*() RT time events */
+pa_time_event* pa_core_rttime_new(pa_core *c, pa_usec_t usec, pa_time_event_cb_t cb, void *userdata);
+void pa_core_rttime_restart(pa_core *c, pa_time_event *e, pa_usec_t usec);
+
#endif
diff --git a/src/pulsecore/database-gdbm.c b/src/pulsecore/database-gdbm.c
index aeaac64b..e65125d3 100644
--- a/src/pulsecore/database-gdbm.c
+++ b/src/pulsecore/database-gdbm.c
@@ -71,10 +71,13 @@ pa_database* pa_database_open(const char *fn, pa_bool_t for_write) {
/* We include the host identifier in the file name because gdbm
* files are CPU dependant, and we don't want things to go wrong
* if we are on a multiarch system. */
-
path = pa_sprintf_malloc("%s."CANONICAL_HOST".gdbm", fn);
errno = 0;
- f = gdbm_open((char*) path, 0, GDBM_NOLOCK | (for_write ? GDBM_WRCREAT : GDBM_READER), 0644, NULL);
+
+ /* We need to set the block size explicitly here, since otherwise
+ * gdbm takes the native block size of the underlying file system
+ * which might be incredibly large. */
+ f = gdbm_open((char*) path, 1024, GDBM_NOLOCK | (for_write ? GDBM_WRCREAT : GDBM_READER), 0644, NULL);
if (f)
pa_log_debug("Opened GDBM database '%s'", path);
diff --git a/src/pulsecore/database-tdb.c b/src/pulsecore/database-tdb.c
index c35fd81f..b79d2837 100644
--- a/src/pulsecore/database-tdb.c
+++ b/src/pulsecore/database-tdb.c
@@ -26,6 +26,9 @@
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
+
+/* Some versions of tdb lack inclusion of signal.h in the header files but use sigatomic_t */
+#include <signal.h>
#include <tdb.h>
#include <pulse/xmalloc.h>
diff --git a/src/pulsecore/dbus-shared.c b/src/pulsecore/dbus-shared.c
index 9d9445b6..20ef9b1e 100644
--- a/src/pulsecore/dbus-shared.c
+++ b/src/pulsecore/dbus-shared.c
@@ -70,7 +70,7 @@ pa_dbus_connection* pa_dbus_bus_get(pa_core *c, DBusBusType type, DBusError *err
if ((pconn = pa_shared_get(c, prop_name[type])))
return pa_dbus_connection_ref(pconn);
- if (!(conn = pa_dbus_wrap_connection_new(c->mainloop, type, error)))
+ if (!(conn = pa_dbus_wrap_connection_new(c->mainloop, TRUE, type, error)))
return NULL;
return dbus_connection_new(c, conn, prop_name[type]);
diff --git a/src/pulsecore/dbus-util.c b/src/pulsecore/dbus-util.c
index d8bd0e0a..e047dc31 100644
--- a/src/pulsecore/dbus-util.c
+++ b/src/pulsecore/dbus-util.c
@@ -26,9 +26,11 @@
#include <stdarg.h>
-#include <pulse/xmalloc.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
+#include <pulse/xmalloc.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/log.h>
@@ -38,6 +40,12 @@ struct pa_dbus_wrap_connection {
pa_mainloop_api *mainloop;
DBusConnection *connection;
pa_defer_event* dispatch_event;
+ pa_bool_t use_rtclock:1;
+};
+
+struct timeout_data {
+ pa_dbus_wrap_connection *c;
+ DBusTimeout *timeout;
};
static void dispatch_cb(pa_mainloop_api *ea, pa_defer_event *ev, void *userdata) {
@@ -118,16 +126,18 @@ static void handle_io_event(pa_mainloop_api *ea, pa_io_event *e, int fd, pa_io_e
}
/* pa_time_event_cb_t timer event handler */
-static void handle_time_event(pa_mainloop_api *ea, pa_time_event* e, const struct timeval *tv, void *userdata) {
- DBusTimeout *timeout = userdata;
+static void handle_time_event(pa_mainloop_api *ea, pa_time_event* e, const struct timeval *t, void *userdata) {
+ struct timeval tv;
+ struct timeout_data *d = userdata;
- if (dbus_timeout_get_enabled(timeout)) {
- struct timeval next = *tv;
- dbus_timeout_handle(timeout);
+ pa_assert(d);
+ pa_assert(d->c);
+
+ if (dbus_timeout_get_enabled(d->timeout)) {
+ dbus_timeout_handle(d->timeout);
/* restart it for the next scheduled time */
- pa_timeval_add(&next, (pa_usec_t) dbus_timeout_get_interval(timeout) * 1000);
- ea->time_restart(e, &next);
+ ea->time_restart(e, pa_timeval_rtstore(&tv, pa_timeval_load(t) + dbus_timeout_get_interval(d->timeout) * PA_USEC_PER_MSEC, d->c->use_rtclock));
}
}
@@ -179,11 +189,16 @@ static void toggle_watch(DBusWatch *watch, void *data) {
c->mainloop->io_enable(ev, get_watch_flags(watch));
}
+static void time_event_destroy_cb(pa_mainloop_api *a, pa_time_event *e, void *userdata) {
+ pa_xfree(userdata);
+}
+
/* DBusAddTimeoutFunction callback for pa mainloop */
static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) {
pa_dbus_wrap_connection *c = data;
pa_time_event *ev;
struct timeval tv;
+ struct timeout_data *d;
pa_assert(timeout);
pa_assert(c);
@@ -191,10 +206,11 @@ static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) {
if (!dbus_timeout_get_enabled(timeout))
return FALSE;
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, (pa_usec_t) dbus_timeout_get_interval(timeout) * 1000);
-
- ev = c->mainloop->time_new(c->mainloop, &tv, handle_time_event, timeout);
+ d = pa_xnew(struct timeout_data, 1);
+ d->c = c;
+ d->timeout = timeout;
+ ev = c->mainloop->time_new(c->mainloop, pa_timeval_rtstore(&tv, pa_rtclock_now() + dbus_timeout_get_interval(timeout) * PA_USEC_PER_MSEC, c->use_rtclock), handle_time_event, d);
+ c->mainloop->time_set_destroy(ev, time_event_destroy_cb);
dbus_timeout_set_data(timeout, ev, NULL);
@@ -215,23 +231,20 @@ static void remove_timeout(DBusTimeout *timeout, void *data) {
/* DBusTimeoutToggledFunction callback for pa mainloop */
static void toggle_timeout(DBusTimeout *timeout, void *data) {
- pa_dbus_wrap_connection *c = data;
+ struct timeout_data *d = data;
pa_time_event *ev;
+ struct timeval tv;
+ pa_assert(d);
+ pa_assert(d->c);
pa_assert(timeout);
- pa_assert(c);
pa_assert_se(ev = dbus_timeout_get_data(timeout));
if (dbus_timeout_get_enabled(timeout)) {
- struct timeval tv;
-
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, (pa_usec_t) dbus_timeout_get_interval(timeout) * 1000);
-
- c->mainloop->time_restart(ev, &tv);
+ d->c->mainloop->time_restart(ev, pa_timeval_rtstore(&tv, pa_rtclock_now() + dbus_timeout_get_interval(timeout) * PA_USEC_PER_MSEC, d->c->use_rtclock));
} else
- c->mainloop->time_restart(ev, NULL);
+ d->c->mainloop->time_restart(ev, pa_timeval_rtstore(&tv, PA_USEC_INVALID, d->c->use_rtclock));
}
static void wakeup_main(void *userdata) {
@@ -244,7 +257,7 @@ static void wakeup_main(void *userdata) {
c->mainloop->defer_enable(c->dispatch_event, 1);
}
-pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *m, DBusBusType type, DBusError *error) {
+pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *m, pa_bool_t use_rtclock, DBusBusType type, DBusError *error) {
DBusConnection *conn;
pa_dbus_wrap_connection *pconn;
char *id;
@@ -257,6 +270,7 @@ pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *m, DBusBus
pconn = pa_xnew(pa_dbus_wrap_connection, 1);
pconn->mainloop = m;
pconn->connection = conn;
+ pconn->use_rtclock = use_rtclock;
dbus_connection_set_exit_on_disconnect(conn, FALSE);
dbus_connection_set_dispatch_status_function(conn, dispatch_status, pconn, NULL);
@@ -276,7 +290,7 @@ pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *m, DBusBus
return pconn;
}
-pa_dbus_wrap_connection* pa_dbus_wrap_connection_new_from_existing(pa_mainloop_api *m, DBusConnection *conn) {
+pa_dbus_wrap_connection* pa_dbus_wrap_connection_new_from_existing(pa_mainloop_api *m, pa_bool_t use_rtclock, DBusConnection *conn) {
pa_dbus_wrap_connection *pconn;
pa_assert(m);
@@ -285,6 +299,7 @@ pa_dbus_wrap_connection* pa_dbus_wrap_connection_new_from_existing(pa_mainloop_a
pconn = pa_xnew(pa_dbus_wrap_connection, 1);
pconn->mainloop = m;
pconn->connection = dbus_connection_ref(conn);
+ pconn->use_rtclock = use_rtclock;
dbus_connection_set_exit_on_disconnect(conn, FALSE);
dbus_connection_set_dispatch_status_function(conn, dispatch_status, pconn, NULL);
diff --git a/src/pulsecore/dbus-util.h b/src/pulsecore/dbus-util.h
index cd08485d..97328735 100644
--- a/src/pulsecore/dbus-util.h
+++ b/src/pulsecore/dbus-util.h
@@ -30,8 +30,8 @@
/* A wrap connection is not shared or refcounted, it is available in client side */
typedef struct pa_dbus_wrap_connection pa_dbus_wrap_connection;
-pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *mainloop, DBusBusType type, DBusError *error);
-pa_dbus_wrap_connection* pa_dbus_wrap_connection_new_from_existing(pa_mainloop_api *mainloop, DBusConnection *conn);
+pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *mainloop, pa_bool_t use_rtclock, DBusBusType type, DBusError *error);
+pa_dbus_wrap_connection* pa_dbus_wrap_connection_new_from_existing(pa_mainloop_api *mainloop, pa_bool_t use_rtclock, DBusConnection *conn);
void pa_dbus_wrap_connection_free(pa_dbus_wrap_connection* conn);
DBusConnection* pa_dbus_wrap_connection_get(pa_dbus_wrap_connection *conn);
diff --git a/src/pulsecore/hashmap.c b/src/pulsecore/hashmap.c
index e957c5ba..1fac97eb 100644
--- a/src/pulsecore/hashmap.c
+++ b/src/pulsecore/hashmap.c
@@ -237,6 +237,39 @@ at_end:
return NULL;
}
+void *pa_hashmap_iterate_backwards(pa_hashmap *h, void **state, const void **key) {
+ struct hashmap_entry *e;
+
+ pa_assert(h);
+ pa_assert(state);
+
+ if (*state == (void*) -1)
+ goto at_beginning;
+
+ if (!*state && !h->iterate_list_tail)
+ goto at_beginning;
+
+ e = *state ? *state : h->iterate_list_tail;
+
+ if (e->iterate_previous)
+ *state = e->iterate_previous;
+ else
+ *state = (void*) -1;
+
+ if (key)
+ *key = e->key;
+
+ return e->value;
+
+at_beginning:
+ *state = (void *) -1;
+
+ if (key)
+ *key = NULL;
+
+ return NULL;
+}
+
void* pa_hashmap_first(pa_hashmap *h) {
pa_assert(h);
@@ -246,6 +279,15 @@ void* pa_hashmap_first(pa_hashmap *h) {
return h->iterate_list_head->value;
}
+void* pa_hashmap_last(pa_hashmap *h) {
+ pa_assert(h);
+
+ if (!h->iterate_list_tail)
+ return NULL;
+
+ return h->iterate_list_tail->value;
+}
+
void* pa_hashmap_steal_first(pa_hashmap *h) {
void *data;
diff --git a/src/pulsecore/hashmap.h b/src/pulsecore/hashmap.h
index 08e18ead..ac2092a6 100644
--- a/src/pulsecore/hashmap.h
+++ b/src/pulsecore/hashmap.h
@@ -26,7 +26,8 @@
/* Simple Implementation of a hash table. Memory management is the
* user's job. It's a good idea to have the key pointer point to a
- * string in the value data. */
+ * string in the value data. The insertion order is preserved when
+ * iterating. */
typedef struct pa_hashmap pa_hashmap;
@@ -59,10 +60,24 @@ pa_bool_t pa_hashmap_isempty(pa_hashmap *h);
returned. */
void *pa_hashmap_iterate(pa_hashmap *h, void **state, const void**key);
+/* Same as pa_hashmap_iterate() but goes backwards */
+void *pa_hashmap_iterate_backwards(pa_hashmap *h, void **state, const void**key);
+
/* Remove the oldest entry in the hashmap and return it */
void *pa_hashmap_steal_first(pa_hashmap *h);
/* Return the oldest entry in the hashmap */
void* pa_hashmap_first(pa_hashmap *h);
+/* Return the newest entry in the hashmap */
+void* pa_hashmap_last(pa_hashmap *h);
+
+/* A macro to ease iteration through all entries */
+#define PA_HASHMAP_FOREACH(e, h, state) \
+ for ((state) = NULL, (e) = pa_hashmap_iterate((h), &(state), NULL); (e); (e) = pa_hashmap_iterate((h), &(state), NULL))
+
+/* A macro to ease iteration through all entries, backwards */
+#define PA_HASHMAP_FOREACH_BACKWARDS(e, h, state) \
+ for ((state) = NULL, (e) = pa_hashmap_iterate_backwards((h), &(state), NULL); (e); (e) = pa_hashmap_iterate_backwards((h), &(state), NULL))
+
#endif
diff --git a/src/pulsecore/idxset.c b/src/pulsecore/idxset.c
index 352ac977..408011f6 100644
--- a/src/pulsecore/idxset.c
+++ b/src/pulsecore/idxset.c
@@ -453,3 +453,17 @@ pa_bool_t pa_idxset_isempty(pa_idxset *s) {
return s->n_entries == 0;
}
+
+pa_idxset *pa_idxset_copy(pa_idxset *s) {
+ pa_idxset *copy;
+ struct idxset_entry *i;
+
+ pa_assert(s);
+
+ copy = pa_idxset_new(s->hash_func, s->compare_func);
+
+ for (i = s->iterate_list_head; i; i = i->iterate_next)
+ pa_idxset_put(copy, i->data, NULL);
+
+ return copy;
+}
diff --git a/src/pulsecore/idxset.h b/src/pulsecore/idxset.h
index 6b9ff472..d1e68c5c 100644
--- a/src/pulsecore/idxset.h
+++ b/src/pulsecore/idxset.h
@@ -103,7 +103,10 @@ unsigned pa_idxset_size(pa_idxset*s);
/* Return TRUE of the idxset is empty */
pa_bool_t pa_idxset_isempty(pa_idxset *s);
+/* Duplicate the idxset. This will not copy the actual indexes */
+pa_idxset *pa_idxset_copy(pa_idxset *s);
+/* A macro to ease iteration through all entries */
#define PA_IDXSET_FOREACH(e, s, idx) \
for ((e) = pa_idxset_first((s), &(idx)); (e); (e) = pa_idxset_next((s), &(idx)))
diff --git a/src/pulsecore/log.c b/src/pulsecore/log.c
index 15d192d6..8c21ee6c 100644
--- a/src/pulsecore/log.c
+++ b/src/pulsecore/log.c
@@ -38,6 +38,7 @@
#include <syslog.h>
#endif
+#include <pulse/rtclock.h>
#include <pulse/utf8.h>
#include <pulse/xmalloc.h>
#include <pulse/util.h>
@@ -45,7 +46,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
-#include <pulsecore/rtclock.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/once.h>
#include <pulsecore/ratelimit.h>
@@ -294,7 +295,7 @@ void pa_log_levelv_meta(
static pa_usec_t start, last;
pa_usec_t u, a, r;
- u = pa_rtclock_usec();
+ u = pa_rtclock_now();
PA_ONCE_BEGIN {
start = u;
diff --git a/src/pulsecore/native-common.h b/src/pulsecore/native-common.h
index d4d7f3ee..f49abb09 100644
--- a/src/pulsecore/native-common.h
+++ b/src/pulsecore/native-common.h
@@ -165,6 +165,10 @@ enum {
PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED,
PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED,
+ /* Supported since protocol v16 (0.9.16) */
+ PA_COMMAND_SET_SINK_PORT,
+ PA_COMMAND_SET_SOURCE_PORT,
+
PA_COMMAND_MAX
};
diff --git a/src/pulsecore/pdispatch.c b/src/pulsecore/pdispatch.c
index d00106b4..fc8ce76f 100644
--- a/src/pulsecore/pdispatch.c
+++ b/src/pulsecore/pdispatch.c
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
@@ -37,6 +38,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/refcnt.h>
#include <pulsecore/flist.h>
+#include <pulsecore/core-rtclock.h>
#include "pdispatch.h"
@@ -204,6 +206,7 @@ struct pa_pdispatch {
pa_pdispatch_drain_callback drain_callback;
void *drain_userdata;
const pa_creds *creds;
+ pa_bool_t use_rtclock:1;
};
static void reply_info_free(struct reply_info *r) {
@@ -220,7 +223,7 @@ static void reply_info_free(struct reply_info *r) {
pa_xfree(r);
}
-pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *mainloop, const pa_pdispatch_cb_t*table, unsigned entries) {
+pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *mainloop, pa_bool_t use_rtclock, const pa_pdispatch_cb_t *table, unsigned entries) {
pa_pdispatch *pd;
pa_assert(mainloop);
@@ -235,6 +238,7 @@ pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *mainloop, const pa_pdispatch_cb_
pd->drain_callback = NULL;
pd->drain_userdata = NULL;
pd->creds = NULL;
+ pd->use_rtclock = use_rtclock;
return pd;
}
@@ -304,7 +308,7 @@ int pa_pdispatch_run(pa_pdispatch *pd, pa_packet*packet, const pa_creds *creds,
if (command >= PA_COMMAND_MAX || !(p = command_names[command]))
pa_snprintf((char*) (p = t), sizeof(t), "%u", command);
- pa_log("[%p] Recieved opcode <%s>", pd, p);
+ pa_log("[%p] Received opcode <%s>", pd, p);
}
#endif
@@ -325,7 +329,7 @@ int pa_pdispatch_run(pa_pdispatch *pd, pa_packet*packet, const pa_creds *creds,
(*c)(pd, command, tag, ts, userdata);
} else {
- pa_log("Recieved unsupported command %u", command);
+ pa_log("Received unsupported command %u", command);
goto finish;
}
@@ -342,7 +346,7 @@ finish:
return ret;
}
-static void timeout_callback(pa_mainloop_api*m, pa_time_event*e, const struct timeval *tv, void *userdata) {
+static void timeout_callback(pa_mainloop_api*m, pa_time_event*e, const struct timeval *t, void *userdata) {
struct reply_info*r = userdata;
pa_assert(r);
@@ -371,10 +375,7 @@ void pa_pdispatch_register_reply(pa_pdispatch *pd, uint32_t tag, int timeout, pa
r->free_cb = free_cb;
r->tag = tag;
- pa_gettimeofday(&tv);
- tv.tv_sec += timeout;
-
- pa_assert_se(r->time_event = pd->mainloop->time_new(pd->mainloop, &tv, timeout_callback, r));
+ pa_assert_se(r->time_event = pd->mainloop->time_new(pd->mainloop, pa_timeval_rtstore(&tv, pa_rtclock_now() + timeout * PA_USEC_PER_SEC, pd->use_rtclock), timeout_callback, r));
PA_LLIST_PREPEND(struct reply_info, pd->replies, r);
}
diff --git a/src/pulsecore/pdispatch.h b/src/pulsecore/pdispatch.h
index 5c31d80e..dae475af 100644
--- a/src/pulsecore/pdispatch.h
+++ b/src/pulsecore/pdispatch.h
@@ -37,7 +37,7 @@ typedef struct pa_pdispatch pa_pdispatch;
typedef void (*pa_pdispatch_cb_t)(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
typedef void (*pa_pdispatch_drain_callback)(pa_pdispatch *pd, void *userdata);
-pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *m, const pa_pdispatch_cb_t*table, unsigned entries);
+pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *m, pa_bool_t use_rtclock, const pa_pdispatch_cb_t*table, unsigned entries);
void pa_pdispatch_unref(pa_pdispatch *pd);
pa_pdispatch* pa_pdispatch_ref(pa_pdispatch *pd);
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 7e7126ea..f64552aa 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -30,6 +30,7 @@
#include <stdlib.h>
#include <limits.h>
+#include <pulse/rtclock.h>
#include <pulse/sample.h>
#include <pulse/timeval.h>
#include <pulse/utf8.h>
@@ -63,7 +64,7 @@
#define MAX_CONNECTIONS 64
/* Kick a client if it doesn't authenticate within this time */
-#define AUTH_TIMEOUT 5
+#define AUTH_TIMEOUT (5*PA_USEC_PER_SEC)
#define DEFAULT_COOKIE_FILE ".esd_auth"
@@ -947,10 +948,10 @@ static int esd_proto_standby_or_resume(connection *c, esd_proto_t request, const
connection_write(c, &ok, sizeof(int32_t));
if (request == ESD_PROTO_STANDBY)
- ok = pa_sink_suspend_all(c->protocol->core, TRUE) >= 0;
+ ok = pa_sink_suspend_all(c->protocol->core, TRUE, PA_SUSPEND_USER) >= 0;
else {
pa_assert(request == ESD_PROTO_RESUME);
- ok = pa_sink_suspend_all(c->protocol->core, FALSE) >= 0;
+ ok = pa_sink_suspend_all(c->protocol->core, FALSE, PA_SUSPEND_USER) >= 0;
}
connection_write(c, &ok, sizeof(int32_t));
@@ -1459,11 +1460,10 @@ static pa_usec_t source_output_get_latency_cb(pa_source_output *o) {
/*** entry points ***/
-static void auth_timeout(pa_mainloop_api*m, pa_time_event *e, const struct timeval *tv, void *userdata) {
+static void auth_timeout(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
connection *c = CONNECTION(userdata);
pa_assert(m);
- pa_assert(tv);
connection_assert_ref(c);
pa_assert(c->auth_timeout_event == e);
@@ -1553,12 +1553,9 @@ void pa_esound_protocol_connect(pa_esound_protocol *p, pa_iochannel *io, pa_esou
c->authorized = TRUE;
}
- if (!c->authorized) {
- struct timeval tv;
- pa_gettimeofday(&tv);
- tv.tv_sec += AUTH_TIMEOUT;
- c->auth_timeout_event = p->core->mainloop->time_new(p->core->mainloop, &tv, auth_timeout, c);
- } else
+ if (!c->authorized)
+ c->auth_timeout_event = pa_core_rttime_new(p->core, pa_rtclock_now() + AUTH_TIMEOUT, auth_timeout, c);
+ else
c->auth_timeout_event = NULL;
c->defer_event = p->core->mainloop->defer_new(p->core->mainloop, defer_callback, c);
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index d4a9952a..cda7ef57 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -29,6 +29,7 @@
#include <stdlib.h>
#include <unistd.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/version.h>
#include <pulse/utf8.h>
@@ -61,7 +62,7 @@
#include "protocol-native.h"
/* Kick a client if it doesn't authenticate within this time */
-#define AUTH_TIMEOUT 60
+#define AUTH_TIMEOUT (60 * PA_USEC_PER_SEC)
/* Don't accept more connection than this */
#define MAX_CONNECTIONS 64
@@ -284,6 +285,7 @@ static void command_update_proplist(pa_pdispatch *pd, uint32_t command, uint32_t
static void command_remove_proplist(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
static void command_extension(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
static void command_set_card_profile(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
+static void command_set_sink_or_source_port(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = {
[PA_COMMAND_ERROR] = NULL,
@@ -380,6 +382,9 @@ static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = {
[PA_COMMAND_SET_CARD_PROFILE] = command_set_card_profile,
+ [PA_COMMAND_SET_SINK_PORT] = command_set_sink_or_source_port,
+ [PA_COMMAND_SET_SOURCE_PORT] = command_set_sink_or_source_port,
+
[PA_COMMAND_EXTENSION] = command_extension
};
@@ -2841,6 +2846,23 @@ static void sink_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sin
pa_tagstruct_putu32(t, sink->n_volume_steps);
pa_tagstruct_putu32(t, sink->card ? sink->card->index : PA_INVALID_INDEX);
}
+
+ if (c->version >= 16) {
+ pa_tagstruct_putu32(t, sink->ports ? pa_hashmap_size(sink->ports) : 0);
+
+ if (sink->ports) {
+ void *state;
+ pa_device_port *p;
+
+ PA_HASHMAP_FOREACH(p, sink->ports, state) {
+ pa_tagstruct_puts(t, p->name);
+ pa_tagstruct_puts(t, p->description);
+ pa_tagstruct_putu32(t, p->priority);
+ }
+ }
+
+ pa_tagstruct_puts(t, sink->active_port ? sink->active_port->name : NULL);
+ }
}
static void source_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_source *source) {
@@ -2881,6 +2903,24 @@ static void source_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_s
pa_tagstruct_putu32(t, source->n_volume_steps);
pa_tagstruct_putu32(t, source->card ? source->card->index : PA_INVALID_INDEX);
}
+
+ if (c->version >= 16) {
+
+ pa_tagstruct_putu32(t, source->ports ? pa_hashmap_size(source->ports) : 0);
+
+ if (source->ports) {
+ void *state;
+ pa_device_port *p;
+
+ PA_HASHMAP_FOREACH(p, source->ports, state) {
+ pa_tagstruct_puts(t, p->name);
+ pa_tagstruct_puts(t, p->description);
+ pa_tagstruct_putu32(t, p->priority);
+ }
+ }
+
+ pa_tagstruct_puts(t, source->active_port ? source->active_port->name : NULL);
+ }
}
static void client_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_client *client) {
@@ -3328,9 +3368,9 @@ static void command_set_volume(
CHECK_VALIDITY(c->pstream, si || sink || source, tag, PA_ERR_NOENTITY);
if (sink)
- pa_sink_set_volume(sink, &volume, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(sink, &volume, TRUE, TRUE, TRUE, TRUE);
else if (source)
- pa_source_set_volume(source, &volume);
+ pa_source_set_volume(source, &volume, TRUE);
else if (si)
pa_sink_input_set_volume(si, &volume, TRUE, TRUE);
@@ -3400,9 +3440,9 @@ static void command_set_mute(
CHECK_VALIDITY(c->pstream, si || sink || source, tag, PA_ERR_NOENTITY);
if (sink)
- pa_sink_set_mute(sink, mute);
+ pa_sink_set_mute(sink, mute, TRUE);
else if (source)
- pa_source_set_mute(source, mute);
+ pa_source_set_mute(source, mute, TRUE);
else if (si)
pa_sink_input_set_mute(si, mute, TRUE);
@@ -4098,7 +4138,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
pa_log_debug("%s all sinks", b ? "Suspending" : "Resuming");
- if (pa_sink_suspend_all(c->protocol->core, b) < 0) {
+ if (pa_sink_suspend_all(c->protocol->core, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4112,7 +4152,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
CHECK_VALIDITY(c->pstream, sink, tag, PA_ERR_NOENTITY);
- if (pa_sink_suspend(sink, b) < 0) {
+ if (pa_sink_suspend(sink, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4125,7 +4165,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
pa_log_debug("%s all sources", b ? "Suspending" : "Resuming");
- if (pa_source_suspend_all(c->protocol->core, b) < 0) {
+ if (pa_source_suspend_all(c->protocol->core, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4140,7 +4180,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
CHECK_VALIDITY(c->pstream, source, tag, PA_ERR_NOENTITY);
- if (pa_source_suspend(source, b) < 0) {
+ if (pa_source_suspend(source, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4195,6 +4235,7 @@ static void command_set_card_profile(pa_pdispatch *pd, uint32_t command, uint32_
uint32_t idx = PA_INVALID_INDEX;
const char *name = NULL, *profile = NULL;
pa_card *card = NULL;
+ int ret;
pa_native_connection_assert_ref(c);
pa_assert(t);
@@ -4220,14 +4261,72 @@ static void command_set_card_profile(pa_pdispatch *pd, uint32_t command, uint32_
CHECK_VALIDITY(c->pstream, card, tag, PA_ERR_NOENTITY);
- if (pa_card_set_profile(card, profile, TRUE) < 0) {
- pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
+ if ((ret = pa_card_set_profile(card, profile, TRUE)) < 0) {
+ pa_pstream_send_error(c->pstream, tag, -ret);
return;
}
pa_pstream_send_simple_ack(c->pstream, tag);
}
+static void command_set_sink_or_source_port(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
+ pa_native_connection *c = PA_NATIVE_CONNECTION(userdata);
+ uint32_t idx = PA_INVALID_INDEX;
+ const char *name = NULL, *port = NULL;
+ int ret;
+
+ pa_native_connection_assert_ref(c);
+ pa_assert(t);
+
+ if (pa_tagstruct_getu32(t, &idx) < 0 ||
+ pa_tagstruct_gets(t, &name) < 0 ||
+ pa_tagstruct_gets(t, &port) < 0 ||
+ !pa_tagstruct_eof(t)) {
+ protocol_error(c);
+ return;
+ }
+
+ CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS);
+ CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID);
+
+ if (command == PA_COMMAND_SET_SINK_PORT) {
+ pa_sink *sink;
+
+ if (idx != PA_INVALID_INDEX)
+ sink = pa_idxset_get_by_index(c->protocol->core->sinks, idx);
+ else
+ sink = pa_namereg_get(c->protocol->core, name, PA_NAMEREG_SINK);
+
+ CHECK_VALIDITY(c->pstream, sink, tag, PA_ERR_NOENTITY);
+
+ if ((ret = pa_sink_set_port(sink, port, TRUE)) < 0) {
+ pa_pstream_send_error(c->pstream, tag, -ret);
+ return;
+ }
+ } else {
+ pa_source *source;
+
+ pa_assert(command = PA_COMMAND_SET_SOURCE_PORT);
+
+ if (idx != PA_INVALID_INDEX)
+ source = pa_idxset_get_by_index(c->protocol->core->sources, idx);
+ else
+ source = pa_namereg_get(c->protocol->core, name, PA_NAMEREG_SOURCE);
+
+ CHECK_VALIDITY(c->pstream, source, tag, PA_ERR_NOENTITY);
+
+ if ((ret = pa_source_set_port(source, port, TRUE)) < 0) {
+ pa_pstream_send_error(c->pstream, tag, -ret);
+ return;
+ }
+ }
+
+ pa_pstream_send_simple_ack(c->pstream, tag);
+}
+
/*** pstream callbacks ***/
static void pstream_packet_callback(pa_pstream *p, pa_packet *packet, const pa_creds *creds, void *userdata) {
@@ -4381,11 +4480,10 @@ static void client_send_event_cb(pa_client *client, const char*event, pa_proplis
/*** module entry points ***/
-static void auth_timeout(pa_mainloop_api*m, pa_time_event *e, const struct timeval *tv, void *userdata) {
+static void auth_timeout(pa_mainloop_api*m, pa_time_event *e, const struct timeval *t, void *userdata) {
pa_native_connection *c = PA_NATIVE_CONNECTION(userdata);
pa_assert(m);
- pa_assert(tv);
pa_native_connection_assert_ref(c);
pa_assert(c->auth_timeout_event == e);
@@ -4443,12 +4541,9 @@ void pa_native_protocol_connect(pa_native_protocol *p, pa_iochannel *io, pa_nati
c->authorized = TRUE;
}
- if (!c->authorized) {
- struct timeval tv;
- pa_gettimeofday(&tv);
- tv.tv_sec += AUTH_TIMEOUT;
- c->auth_timeout_event = p->core->mainloop->time_new(p->core->mainloop, &tv, auth_timeout, c);
- } else
+ if (!c->authorized)
+ c->auth_timeout_event = pa_core_rttime_new(p->core, pa_rtclock_now() + AUTH_TIMEOUT, auth_timeout, c);
+ else
c->auth_timeout_event = NULL;
c->is_local = pa_iochannel_socket_is_local(io);
@@ -4467,7 +4562,7 @@ void pa_native_protocol_connect(pa_native_protocol *p, pa_iochannel *io, pa_nati
pa_pstream_set_revoke_callback(c->pstream, pstream_revoke_callback, c);
pa_pstream_set_release_callback(c->pstream, pstream_release_callback, c);
- c->pdispatch = pa_pdispatch_new(p->core->mainloop, command_table, PA_COMMAND_MAX);
+ c->pdispatch = pa_pdispatch_new(p->core->mainloop, TRUE, command_table, PA_COMMAND_MAX);
c->record_streams = pa_idxset_new(NULL, NULL);
c->output_streams = pa_idxset_new(NULL, NULL);
diff --git a/src/pulsecore/pstream.c b/src/pulsecore/pstream.c
index ef1105ba..1d4ac177 100644
--- a/src/pulsecore/pstream.c
+++ b/src/pulsecore/pstream.c
@@ -684,7 +684,7 @@ static int do_read(pa_pstream *p) {
flags = ntohl(p->read.descriptor[PA_PSTREAM_DESCRIPTOR_FLAGS]);
if (!p->use_shm && (flags & PA_FLAG_SHMMASK) != 0) {
- pa_log_warn("Recieved SHM frame on a socket where SHM is disabled.");
+ pa_log_warn("Received SHM frame on a socket where SHM is disabled.");
return -1;
}
@@ -714,7 +714,7 @@ static int do_read(pa_pstream *p) {
length = ntohl(p->read.descriptor[PA_PSTREAM_DESCRIPTOR_LENGTH]);
if (length > FRAME_SIZE_MAX_ALLOW || length <= 0) {
- pa_log_warn("Recieved invalid frame size: %lu", (unsigned long) length);
+ pa_log_warn("Received invalid frame size: %lu", (unsigned long) length);
return -1;
}
@@ -743,7 +743,7 @@ static int do_read(pa_pstream *p) {
if ((flags & PA_FLAG_SHMMASK) == PA_FLAG_SHMDATA) {
if (length != sizeof(p->read.shm_info)) {
- pa_log_warn("Recieved SHM memblock frame with Invalid frame length.");
+ pa_log_warn("Received SHM memblock frame with Invalid frame length.");
return -1;
}
@@ -758,7 +758,7 @@ static int do_read(pa_pstream *p) {
p->read.data = NULL;
} else {
- pa_log_warn("Recieved memblock frame with invalid flags value.");
+ pa_log_warn("Received memblock frame with invalid flags value.");
return -1;
}
}
diff --git a/src/pulsecore/ratelimit.c b/src/pulsecore/ratelimit.c
index e913ca19..844dd77d 100644
--- a/src/pulsecore/ratelimit.c
+++ b/src/pulsecore/ratelimit.c
@@ -23,7 +23,8 @@
#include <config.h>
#endif
-#include <pulsecore/rtclock.h>
+#include <pulse/rtclock.h>
+
#include <pulsecore/log.h>
#include <pulsecore/mutex.h>
@@ -38,7 +39,7 @@ pa_bool_t pa_ratelimit_test(pa_ratelimit *r) {
pa_usec_t now;
pa_mutex *m;
- now = pa_rtclock_usec();
+ now = pa_rtclock_now();
m = pa_static_mutex_get(&mutex, FALSE, FALSE);
pa_mutex_lock(m);
diff --git a/src/pulsecore/rtkit.c b/src/pulsecore/rtkit.c
new file mode 100644
index 00000000..aecc4e32
--- /dev/null
+++ b/src/pulsecore/rtkit.c
@@ -0,0 +1,189 @@
+/*-*- Mode: C; c-basic-offset: 8 -*-*/
+
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <errno.h>
+
+#include "rtkit.h"
+
+#ifdef __linux__
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/syscall.h>
+
+static pid_t _gettid(void) {
+ return (pid_t) syscall(SYS_gettid);
+}
+
+static int translate_error(const char *name) {
+ if (strcmp(name, DBUS_ERROR_NO_MEMORY) == 0)
+ return -ENOMEM;
+ if (strcmp(name, DBUS_ERROR_SERVICE_UNKNOWN) == 0 ||
+ strcmp(name, DBUS_ERROR_NAME_HAS_NO_OWNER) == 0)
+ return -ENOENT;
+ if (strcmp(name, DBUS_ERROR_ACCESS_DENIED) == 0 ||
+ strcmp(name, DBUS_ERROR_AUTH_FAILED) == 0)
+ return -EACCES;
+
+ return -EIO;
+}
+
+int rtkit_make_realtime(DBusConnection *connection, pid_t thread, int priority) {
+ DBusMessage *m = NULL, *r = NULL;
+ dbus_uint64_t u64;
+ dbus_uint32_t u32;
+ DBusError error;
+ int ret;
+
+ dbus_error_init(&error);
+
+ if (thread == 0)
+ thread = _gettid();
+
+ if (!(m = dbus_message_new_method_call(
+ RTKIT_SERVICE_NAME,
+ RTKIT_OBJECT_PATH,
+ "org.freedesktop.RealtimeKit1",
+ "MakeThreadRealtime"))) {
+ ret = -ENOMEM;
+ goto finish;
+ }
+
+ u64 = (dbus_uint64_t) thread;
+ u32 = (dbus_uint32_t) priority;
+
+ if (!dbus_message_append_args(
+ m,
+ DBUS_TYPE_UINT64, &u64,
+ DBUS_TYPE_UINT32, &u32,
+ DBUS_TYPE_INVALID)) {
+ ret = -ENOMEM;
+ goto finish;
+ }
+
+ if (!(r = dbus_connection_send_with_reply_and_block(connection, m, -1, &error))) {
+ ret = translate_error(error.name);
+ goto finish;
+ }
+
+
+ if (dbus_set_error_from_message(&error, r)) {
+ ret = translate_error(error.name);
+ goto finish;
+ }
+
+ ret = 0;
+
+finish:
+
+ if (m)
+ dbus_message_unref(m);
+
+ if (r)
+ dbus_message_unref(r);
+
+ dbus_error_free(&error);
+
+ return ret;
+}
+
+int rtkit_make_high_priority(DBusConnection *connection, pid_t thread, int nice_level) {
+ DBusMessage *m = NULL, *r = NULL;
+ dbus_uint64_t u64;
+ dbus_int32_t s32;
+ DBusError error;
+ int ret;
+
+ dbus_error_init(&error);
+
+ if (thread == 0)
+ thread = _gettid();
+
+ if (!(m = dbus_message_new_method_call(
+ RTKIT_SERVICE_NAME,
+ RTKIT_OBJECT_PATH,
+ "org.freedesktop.RealtimeKit1",
+ "MakeThreadHighPriority"))) {
+ ret = -ENOMEM;
+ goto finish;
+ }
+
+ u64 = (dbus_uint64_t) thread;
+ s32 = (dbus_int32_t) nice_level;
+
+ if (!dbus_message_append_args(
+ m,
+ DBUS_TYPE_UINT64, &u64,
+ DBUS_TYPE_INT32, &s32,
+ DBUS_TYPE_INVALID)) {
+ ret = -ENOMEM;
+ goto finish;
+ }
+
+
+
+ if (!(r = dbus_connection_send_with_reply_and_block(connection, m, -1, &error))) {
+ ret = translate_error(error.name);
+ goto finish;
+ }
+
+
+ if (dbus_set_error_from_message(&error, r)) {
+ ret = translate_error(error.name);
+ goto finish;
+ }
+
+ ret = 0;
+
+finish:
+
+ if (m)
+ dbus_message_unref(m);
+
+ if (r)
+ dbus_message_unref(r);
+
+ dbus_error_free(&error);
+
+ return ret;
+}
+
+#else
+
+int rtkit_make_realtime(DBusConnection *connection, pid_t thread, int priority) {
+ return -ENOTSUP;
+}
+
+int rtkit_make_high_priority(DBusConnection *connection, pid_t thread, int nice_level) {
+ return -ENOTSUP;
+}
+
+#endif
diff --git a/src/pulsecore/rtkit.h b/src/pulsecore/rtkit.h
new file mode 100644
index 00000000..2081b4e9
--- /dev/null
+++ b/src/pulsecore/rtkit.h
@@ -0,0 +1,62 @@
+/*-*- Mode: C; c-basic-offset: 8 -*-*/
+
+#ifndef foortkithfoo
+#define foortkithfoo
+
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <sys/types.h>
+#include <dbus/dbus.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* This is the reference implementation for a client for
+ * RealtimeKit. You don't have to use this, but if do, just copy these
+ * sources into your repository */
+
+#define RTKIT_SERVICE_NAME "org.freedesktop.RealtimeKit1"
+#define RTKIT_OBJECT_PATH "/org/freedesktop/RealtimeKit1"
+
+/* This is mostly equivalent to sched_setparam(thread, SCHED_RR, {
+ * .sched_priority = priority }). 'thread' needs to be a kernel thread
+ * id as returned by gettid(), not a pthread_t! If 'thread' is 0 the
+ * current thread is used. The returned value is a negative errno
+ * style error code, or 0 on success. */
+int rtkit_make_realtime(DBusConnection *system_bus, pid_t thread, int priority);
+
+/* This is mostly equivalent to setpriority(PRIO_PROCESS, thread,
+ * nice_level). 'thread' needs to be a kernel thread id as returned by
+ * gettid(), not a pthread_t! If 'thread' is 0 the current thread is
+ * used. The returned value is a negative errno style error code, or 0
+ * on success.*/
+int rtkit_make_high_priority(DBusConnection *system_bus, pid_t thread, int nice_level);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/pulsecore/rtpoll.c b/src/pulsecore/rtpoll.c
index aa8ca321..5cbec321 100644
--- a/src/pulsecore/rtpoll.c
+++ b/src/pulsecore/rtpoll.c
@@ -30,10 +30,6 @@
#include <string.h>
#include <errno.h>
-#ifdef __linux__
-#include <sys/utsname.h>
-#endif
-
#ifdef HAVE_POLL_H
#include <poll.h>
#else
@@ -44,10 +40,9 @@
#include <pulse/timeval.h>
#include <pulsecore/core-error.h>
-#include <pulsecore/rtclock.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/macro.h>
#include <pulsecore/llist.h>
-#include <pulsecore/rtsig.h>
#include <pulsecore/flist.h>
#include <pulsecore/core-util.h>
#include <pulsecore/winsock.h>
@@ -66,20 +61,9 @@ struct pa_rtpoll {
pa_bool_t scan_for_dead:1;
pa_bool_t running:1;
- pa_bool_t installed:1;
pa_bool_t rebuild_needed:1;
pa_bool_t quit:1;
-#ifdef HAVE_PPOLL
- pa_bool_t timer_armed:1;
-#ifdef __linux__
- pa_bool_t dont_use_ppoll:1;
-#endif
- int rtsig;
- sigset_t sigset_unblocked;
- timer_t timer;
-#endif
-
#ifdef DEBUG_TIMING
pa_usec_t timestamp;
pa_usec_t slept, awake;
@@ -107,52 +91,20 @@ struct pa_rtpoll_item {
PA_STATIC_FLIST_DECLARE(items, 0, pa_xfree);
-static void signal_handler_noop(int s) { /* write(2, "signal\n", 7); */ }
-
pa_rtpoll *pa_rtpoll_new(void) {
pa_rtpoll *p;
p = pa_xnew(pa_rtpoll, 1);
-#ifdef HAVE_PPOLL
-
-#ifdef __linux__
- /* ppoll is broken on Linux < 2.6.16 */
- p->dont_use_ppoll = FALSE;
-
- {
- struct utsname u;
- unsigned major, minor, micro;
-
- pa_assert_se(uname(&u) == 0);
-
- if (sscanf(u.release, "%u.%u.%u", &major, &minor, &micro) != 3 ||
- (major < 2) ||
- (major == 2 && minor < 6) ||
- (major == 2 && minor == 6 && micro < 16))
-
- p->dont_use_ppoll = TRUE;
- }
-
-#endif
-
- p->rtsig = -1;
- sigemptyset(&p->sigset_unblocked);
- p->timer = (timer_t) -1;
- p->timer_armed = FALSE;
-
-#endif
-
p->n_pollfd_alloc = 32;
p->pollfd = pa_xnew(struct pollfd, p->n_pollfd_alloc);
p->pollfd2 = pa_xnew(struct pollfd, p->n_pollfd_alloc);
p->n_pollfd_used = 0;
- memset(&p->next_elapse, 0, sizeof(p->next_elapse));
+ pa_zero(p->next_elapse);
p->timer_enabled = FALSE;
p->running = FALSE;
- p->installed = FALSE;
p->scan_for_dead = FALSE;
p->rebuild_needed = FALSE;
p->quit = FALSE;
@@ -160,53 +112,13 @@ pa_rtpoll *pa_rtpoll_new(void) {
PA_LLIST_HEAD_INIT(pa_rtpoll_item, p->items);
#ifdef DEBUG_TIMING
- p->timestamp = pa_rtclock_usec();
+ p->timestamp = pa_rtclock_now();
p->slept = p->awake = 0;
#endif
return p;
}
-void pa_rtpoll_install(pa_rtpoll *p) {
- pa_assert(p);
- pa_assert(!p->installed);
-
- p->installed = TRUE;
-
-#ifdef HAVE_PPOLL
-# ifdef __linux__
- if (p->dont_use_ppoll)
- return;
-# endif
-
- if ((p->rtsig = pa_rtsig_get_for_thread()) < 0) {
- pa_log_warn("Failed to reserve POSIX realtime signal.");
- return;
- }
-
- pa_log_debug("Acquired POSIX realtime signal %s", pa_sig2str(p->rtsig));
-
- {
- sigset_t ss;
- struct sigaction sa;
-
- pa_assert_se(sigemptyset(&ss) == 0);
- pa_assert_se(sigaddset(&ss, p->rtsig) == 0);
- pa_assert_se(pthread_sigmask(SIG_BLOCK, &ss, &p->sigset_unblocked) == 0);
- pa_assert_se(sigdelset(&p->sigset_unblocked, p->rtsig) == 0);
-
- memset(&sa, 0, sizeof(sa));
- sa.sa_handler = signal_handler_noop;
- pa_assert_se(sigemptyset(&sa.sa_mask) == 0);
-
- pa_assert_se(sigaction(p->rtsig, &sa, NULL) == 0);
-
- /* We never reset the signal handler. Why should we? */
- }
-
-#endif
-}
-
static void rtpoll_rebuild(pa_rtpoll *p) {
struct pollfd *e, *t;
@@ -250,7 +162,6 @@ static void rtpoll_rebuild(pa_rtpoll *p) {
if (ra)
p->pollfd2 = pa_xrealloc(p->pollfd2, p->n_pollfd_alloc * sizeof(struct pollfd));
-
}
static void rtpoll_item_destroy(pa_rtpoll_item *i) {
@@ -279,11 +190,6 @@ void pa_rtpoll_free(pa_rtpoll *p) {
pa_xfree(p->pollfd);
pa_xfree(p->pollfd2);
-#ifdef HAVE_PPOLL
- if (p->timer != (timer_t) -1)
- timer_delete(p->timer);
-#endif
-
pa_xfree(p);
}
@@ -321,7 +227,6 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait) {
pa_assert(p);
pa_assert(!p->running);
- pa_assert(p->installed);
p->running = TRUE;
@@ -394,7 +299,7 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait) {
#ifdef DEBUG_TIMING
{
- pa_usec_t now = pa_rtclock_usec();
+ pa_usec_t now = pa_rtclock_now();
p->awake = now - p->timestamp;
p->timestamp = now;
}
@@ -402,26 +307,19 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait) {
/* OK, now let's sleep */
#ifdef HAVE_PPOLL
-
-#ifdef __linux__
- if (!p->dont_use_ppoll)
-#endif
{
struct timespec ts;
ts.tv_sec = timeout.tv_sec;
ts.tv_nsec = timeout.tv_usec * 1000;
- r = ppoll(p->pollfd, p->n_pollfd_used, (!wait || p->quit || p->timer_enabled) ? &ts : NULL, p->rtsig < 0 ? NULL : &p->sigset_unblocked);
+ r = ppoll(p->pollfd, p->n_pollfd_used, (!wait || p->quit || p->timer_enabled) ? &ts : NULL, NULL);
}
-#ifdef __linux__
- else
-#endif
-
-#endif
+#else
r = poll(p->pollfd, p->n_pollfd_used, (!wait || p->quit || p->timer_enabled) ? (int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)) : -1);
+#endif
#ifdef DEBUG_TIMING
{
- pa_usec_t now = pa_rtclock_usec();
+ pa_usec_t now = pa_rtclock_now();
p->slept = now - p->timestamp;
p->timestamp = now;
@@ -472,73 +370,11 @@ finish:
return r < 0 ? r : !p->quit;
}
-static void update_timer(pa_rtpoll *p) {
- pa_assert(p);
-
-#ifdef HAVE_PPOLL
-
-#ifdef __linux__
- if (p->dont_use_ppoll)
- return;
-#endif
-
- if (p->timer == (timer_t) -1) {
- struct sigevent se;
-
- memset(&se, 0, sizeof(se));
- se.sigev_notify = SIGEV_SIGNAL;
- se.sigev_signo = p->rtsig;
-
- if (timer_create(CLOCK_MONOTONIC, &se, &p->timer) < 0)
- if (timer_create(CLOCK_REALTIME, &se, &p->timer) < 0) {
- pa_log_warn("Failed to allocate POSIX timer: %s", pa_cstrerror(errno));
- p->timer = (timer_t) -1;
- }
- }
-
- if (p->timer != (timer_t) -1) {
- struct itimerspec its;
- struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
- sigset_t ss;
-
- if (p->timer_armed) {
- /* First disarm timer */
- memset(&its, 0, sizeof(its));
- pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
-
- /* Remove a signal that might be waiting in the signal q */
- pa_assert_se(sigemptyset(&ss) == 0);
- pa_assert_se(sigaddset(&ss, p->rtsig) == 0);
- sigtimedwait(&ss, NULL, &ts);
- }
-
- /* And install the new timer */
- if (p->timer_enabled) {
- memset(&its, 0, sizeof(its));
-
- its.it_value.tv_sec = p->next_elapse.tv_sec;
- its.it_value.tv_nsec = p->next_elapse.tv_usec*1000;
-
- /* Make sure that 0,0 is not understood as
- * "disarming" */
- if (its.it_value.tv_sec == 0 && its.it_value.tv_nsec == 0)
- its.it_value.tv_nsec = 1;
- pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
- }
-
- p->timer_armed = p->timer_enabled;
- }
-
-#endif
-}
-
void pa_rtpoll_set_timer_absolute(pa_rtpoll *p, pa_usec_t usec) {
pa_assert(p);
pa_timeval_store(&p->next_elapse, usec);
p->timer_enabled = TRUE;
-
- update_timer(p);
}
void pa_rtpoll_set_timer_relative(pa_rtpoll *p, pa_usec_t usec) {
@@ -550,8 +386,6 @@ void pa_rtpoll_set_timer_relative(pa_rtpoll *p, pa_usec_t usec) {
pa_rtclock_get(&p->next_elapse);
pa_timeval_add(&p->next_elapse, usec);
p->timer_enabled = TRUE;
-
- update_timer(p);
}
void pa_rtpoll_set_timer_disabled(pa_rtpoll *p) {
@@ -559,8 +393,6 @@ void pa_rtpoll_set_timer_disabled(pa_rtpoll *p) {
memset(&p->next_elapse, 0, sizeof(p->next_elapse));
p->timer_enabled = FALSE;
-
- update_timer(p);
}
pa_rtpoll_item *pa_rtpoll_item_new(pa_rtpoll *p, pa_rtpoll_priority_t prio, unsigned n_fds) {
diff --git a/src/pulsecore/rtpoll.h b/src/pulsecore/rtpoll.h
index 08776ef0..d2d69cad 100644
--- a/src/pulsecore/rtpoll.h
+++ b/src/pulsecore/rtpoll.h
@@ -62,9 +62,6 @@ typedef enum pa_rtpoll_priority {
pa_rtpoll *pa_rtpoll_new(void);
void pa_rtpoll_free(pa_rtpoll *p);
-/* Install the rtpoll in the current thread */
-void pa_rtpoll_install(pa_rtpoll *p);
-
/* Sleep on the rtpoll until the time event, or any of the fd events
* is triggered. If "wait" is 0 we don't sleep but only update the
* struct pollfd. Returns negative on error, positive if the loop
diff --git a/src/pulsecore/rtsig.c b/src/pulsecore/rtsig.c
deleted file mode 100644
index 4cd6aa8f..00000000
--- a/src/pulsecore/rtsig.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/***
- This file is part of PulseAudio.
-
- Copyright 2004-2006 Lennart Poettering
- Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
-
- 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.
-***/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <signal.h>
-
-#include <pulsecore/macro.h>
-#include <pulsecore/flist.h>
-#include <pulsecore/once.h>
-#include <pulsecore/thread.h>
-#include <pulsecore/core-util.h>
-
-#include "rtsig.h"
-
-#ifdef SIGRTMIN
-
-static void _free_rtsig(void *p) {
- pa_rtsig_put(PA_PTR_TO_INT(p));
-}
-
-PA_STATIC_FLIST_DECLARE(rtsig_flist, pa_make_power_of_two((unsigned) (SIGRTMAX-SIGRTMIN+1)), NULL);
-PA_STATIC_TLS_DECLARE(rtsig_tls, _free_rtsig);
-
-static pa_atomic_t rtsig_current = PA_ATOMIC_INIT(-1);
-
-static int rtsig_start = -1, rtsig_end = -1;
-
-int pa_rtsig_get(void) {
- void *p;
- int sig;
-
- if ((p = pa_flist_pop(PA_STATIC_FLIST_GET(rtsig_flist))))
- return PA_PTR_TO_INT(p);
-
- sig = pa_atomic_dec(&rtsig_current);
-
- pa_assert(sig <= SIGRTMAX);
- pa_assert(sig <= rtsig_end);
-
- if (sig < rtsig_start) {
- pa_atomic_inc(&rtsig_current);
- return -1;
- }
-
- return sig;
-}
-
-int pa_rtsig_get_for_thread(void) {
- int sig;
- void *p;
-
- if ((p = PA_STATIC_TLS_GET(rtsig_tls)))
- return PA_PTR_TO_INT(p);
-
- if ((sig = pa_rtsig_get()) < 0)
- return -1;
-
- PA_STATIC_TLS_SET(rtsig_tls, PA_INT_TO_PTR(sig));
- return sig;
-}
-
-void pa_rtsig_put(int sig) {
- pa_assert(sig >= rtsig_start);
- pa_assert(sig <= rtsig_end);
-
- pa_assert_se(pa_flist_push(PA_STATIC_FLIST_GET(rtsig_flist), PA_INT_TO_PTR(sig)) >= 0);
-}
-
-void pa_rtsig_configure(int start, int end) {
- int s;
- sigset_t ss;
-
- pa_assert(pa_atomic_load(&rtsig_current) == -1);
-
- pa_assert(SIGRTMIN <= start);
- pa_assert(start <= end);
- pa_assert(end <= SIGRTMAX);
-
- rtsig_start = start;
- rtsig_end = end;
-
- sigemptyset(&ss);
-
- for (s = rtsig_start; s <= rtsig_end; s++)
- pa_assert_se(sigaddset(&ss, s) == 0);
-
- pa_assert(pthread_sigmask(SIG_BLOCK, &ss, NULL) == 0);
-
- /* We allocate starting from the end */
- pa_atomic_store(&rtsig_current, rtsig_end);
-}
-
-#else /* SIGRTMIN */
-
-int pa_rtsig_get(void) {
- return -1;
-}
-
-int pa_rtsig_get_for_thread(void) {
- return -1;
-}
-
-void pa_rtsig_put(int sig) {
-}
-
-void pa_rtsig_configure(int start, int end) {
-}
-
-#endif /* SIGRTMIN */
diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
index dda38834..5b8ccf59 100644
--- a/src/pulsecore/sample-util.c
+++ b/src/pulsecore/sample-util.c
@@ -1182,7 +1182,7 @@ pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool,
case PA_SAMPLE_S24LE:
case PA_SAMPLE_S24BE:
case PA_SAMPLE_S24_32LE:
- case PA_SAMPLE_S24_32RE:
+ case PA_SAMPLE_S24_32BE:
case PA_SAMPLE_FLOAT32LE:
case PA_SAMPLE_FLOAT32BE:
cache->blocks[PA_SAMPLE_S16LE] = b = silence_memblock_new(pool, 0);
diff --git a/src/pulsecore/sample-util.h b/src/pulsecore/sample-util.h
index 79af9efc..6a306c11 100644
--- a/src/pulsecore/sample-util.h
+++ b/src/pulsecore/sample-util.h
@@ -25,6 +25,7 @@
#include <pulse/sample.h>
#include <pulse/volume.h>
+#include <pulse/channelmap.h>
#include <pulsecore/memblock.h>
#include <pulsecore/memchunk.h>
@@ -85,4 +86,62 @@ void pa_memchunk_dump_to_file(pa_memchunk *c, const char *fn);
void pa_memchunk_sine(pa_memchunk *c, pa_mempool *pool, unsigned rate, unsigned freq);
+#define PA_CHANNEL_POSITION_MASK_LEFT \
+ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_SIDE_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_LEFT)) \
+
+#define PA_CHANNEL_POSITION_MASK_RIGHT \
+ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_SIDE_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_RIGHT))
+
+#define PA_CHANNEL_POSITION_MASK_CENTER \
+ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_CENTER))
+
+#define PA_CHANNEL_POSITION_MASK_FRONT \
+ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_CENTER))
+
+#define PA_CHANNEL_POSITION_MASK_REAR \
+ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_CENTER))
+
+#define PA_CHANNEL_POSITION_MASK_SIDE_OR_TOP_CENTER \
+ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_SIDE_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_SIDE_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_CENTER))
+
+#define PA_CHANNEL_POSITION_MASK_TOP \
+ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_FRONT_CENTER) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_LEFT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_RIGHT) \
+ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_TOP_REAR_CENTER))
+
+#define PA_CHANNEL_POSITION_MASK_ALL \
+ ((pa_channel_position_mask_t) (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_MAX)-1))
+
#endif
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 0d05b00a..a5f96351 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -442,7 +442,7 @@ void pa_sink_input_unlink(pa_sink_input *i) {
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
pa_cvolume new_volume;
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
}
if (i->sink->asyncmsgq)
@@ -520,7 +520,7 @@ void pa_sink_input_put(pa_sink_input *i) {
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
pa_cvolume new_volume;
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
} else
pa_sink_input_set_relative_volume(i, &i->virtual_volume);
@@ -900,7 +900,7 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
* volumes and update the flat volume of the sink */
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE, FALSE, FALSE);
} else {
@@ -1159,7 +1159,7 @@ int pa_sink_input_start_move(pa_sink_input *i) {
/* We might need to update the sink's volume if we are in flat
* volume mode. */
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
}
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_START_MOVE, i, 0, NULL) == 0);
@@ -1252,7 +1252,7 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
/* We might need to update the sink's volume if we are in flat volume mode. */
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
}
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_FINISH_MOVE, i, 0, NULL) == 0);
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 28b3440c..d8f3c7d1 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -100,11 +100,51 @@ void pa_sink_new_data_set_muted(pa_sink_new_data *data, pa_bool_t mute) {
data->muted = !!mute;
}
+void pa_sink_new_data_set_port(pa_sink_new_data *data, const char *port) {
+ pa_assert(data);
+
+ pa_xfree(data->active_port);
+ data->active_port = pa_xstrdup(port);
+}
+
void pa_sink_new_data_done(pa_sink_new_data *data) {
pa_assert(data);
- pa_xfree(data->name);
pa_proplist_free(data->proplist);
+
+ if (data->ports) {
+ pa_device_port *p;
+
+ while ((p = pa_hashmap_steal_first(data->ports)))
+ pa_device_port_free(p);
+
+ pa_hashmap_free(data->ports, NULL, NULL);
+ }
+
+ pa_xfree(data->name);
+ pa_xfree(data->active_port);
+}
+
+pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra) {
+ pa_device_port *p;
+
+ pa_assert(name);
+
+ p = pa_xmalloc(PA_ALIGN(sizeof(pa_device_port)) + extra);
+ p->name = pa_xstrdup(name);
+ p->description = pa_xstrdup(description);
+
+ p->priority = 0;
+
+ return p;
+}
+
+void pa_device_port_free(pa_device_port *p) {
+ pa_assert(p);
+
+ pa_xfree(p->name);
+ pa_xfree(p->description);
+ pa_xfree(p);
}
/* Called from main context */
@@ -118,6 +158,7 @@ static void reset_callbacks(pa_sink *s) {
s->set_mute = NULL;
s->request_rewind = NULL;
s->update_requested_latency = NULL;
+ s->set_port = NULL;
}
/* Called from main context */
@@ -140,6 +181,7 @@ pa_sink* pa_sink_new(
s = pa_msgobject_new(pa_sink);
if (!(name = pa_namereg_register(core, data->name, PA_NAMEREG_SINK, s, data->namereg_fail))) {
+ pa_log_debug("Failed to register name %s.", data->name);
pa_xfree(s);
return NULL;
}
@@ -152,6 +194,8 @@ pa_sink* pa_sink_new(
return NULL;
}
+ /* FIXME, need to free s here on failure */
+
pa_return_null_if_fail(!data->driver || pa_utf8_valid(data->driver));
pa_return_null_if_fail(data->name && pa_utf8_valid(data->name) && data->name[0]);
@@ -177,6 +221,7 @@ pa_sink* pa_sink_new(
pa_device_init_description(data->proplist);
pa_device_init_icon(data->proplist, TRUE);
+ pa_device_init_intended_roles(data->proplist);
if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_FIXATE], data) < 0) {
pa_xfree(s);
@@ -190,6 +235,7 @@ pa_sink* pa_sink_new(
s->core = core;
s->state = PA_SINK_INIT;
s->flags = flags;
+ s->suspend_cause = 0;
s->name = pa_xstrdup(name);
s->proplist = pa_proplist_copy(data->proplist);
s->driver = pa_xstrdup(pa_path_get_filename(data->driver));
@@ -217,6 +263,30 @@ pa_sink* pa_sink_new(
s->asyncmsgq = NULL;
s->rtpoll = NULL;
+ /* As a minor optimization we just steal the list instead of
+ * copying it here */
+ s->ports = data->ports;
+ data->ports = NULL;
+
+ s->active_port = NULL;
+ s->save_port = FALSE;
+
+ if (data->active_port && s->ports)
+ if ((s->active_port = pa_hashmap_get(s->ports, data->active_port)))
+ s->save_port = data->save_port;
+
+ if (!s->active_port && s->ports) {
+ void *state;
+ pa_device_port *p;
+
+ PA_HASHMAP_FOREACH(p, s->ports, state)
+ if (!s->active_port || p->priority > s->active_port->priority)
+ s->active_port = p;
+ }
+
+ s->save_volume = data->save_volume;
+ s->save_muted = data->save_muted;
+
pa_silence_memchunk_get(
&core->silence_cache,
core->mempool,
@@ -465,6 +535,15 @@ static void sink_free(pa_object *o) {
if (s->proplist)
pa_proplist_free(s->proplist);
+ if (s->ports) {
+ pa_device_port *p;
+
+ while ((p = pa_hashmap_steal_first(s->ports)))
+ pa_device_port_free(p);
+
+ pa_hashmap_free(s->ports, NULL, NULL);
+ }
+
pa_xfree(s);
}
@@ -483,6 +562,7 @@ void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) {
pa_sink_assert_ref(s);
s->rtpoll = p;
+
if (s->monitor_source)
pa_source_set_rtpoll(s->monitor_source, p);
}
@@ -499,26 +579,40 @@ int pa_sink_update_status(pa_sink*s) {
}
/* Called from main context */
-int pa_sink_suspend(pa_sink *s, pa_bool_t suspend) {
+int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink_assert_ref(s);
pa_assert(PA_SINK_IS_LINKED(s->state));
+ pa_assert(cause != 0);
+
+ if (suspend) {
+ s->suspend_cause |= cause;
+ s->monitor_source->suspend_cause |= cause;
+ } else {
+ s->suspend_cause &= ~cause;
+ s->monitor_source->suspend_cause &= ~cause;
+ }
- if (suspend)
+ if ((pa_sink_get_state(s) == PA_SINK_SUSPENDED) == !!s->suspend_cause)
+ return 0;
+
+ pa_log_debug("Suspend cause of sink %s is 0x%04x, %s", s->name, s->suspend_cause, s->suspend_cause ? "suspending" : "resuming");
+
+ if (s->suspend_cause)
return sink_set_state(s, PA_SINK_SUSPENDED);
else
return sink_set_state(s, pa_sink_used_by(s) ? PA_SINK_RUNNING : PA_SINK_IDLE);
}
/* Called from main context */
-pa_queue *pa_sink_move_all_start(pa_sink *s) {
- pa_queue *q;
+pa_queue *pa_sink_move_all_start(pa_sink *s, pa_queue *q) {
pa_sink_input *i, *n;
uint32_t idx;
pa_sink_assert_ref(s);
pa_assert(PA_SINK_IS_LINKED(s->state));
- q = pa_queue_new();
+ if (!q)
+ q = pa_queue_new();
for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = n) {
n = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx));
@@ -958,21 +1052,21 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
n = fill_mix_info(s, &length1st, info, MAX_MIX_CHANNELS);
if (n == 0) {
- pa_silence_memchunk_get(&s->core->silence_cache,
- s->core->mempool,
- result,
- &s->sample_spec,
- length1st);
+ pa_silence_memchunk_get(&s->core->silence_cache,
+ s->core->mempool,
+ result,
+ &s->sample_spec,
+ length1st);
} else if (n == 1) {
- pa_cvolume volume;
+ pa_cvolume volume;
- *result = info[0].chunk;
- pa_memblock_ref(result->memblock);
+ *result = info[0].chunk;
+ pa_memblock_ref(result->memblock);
- if (result->length > length)
- result->length = length;
+ if (result->length > length)
+ result->length = length;
- pa_sw_cvolume_multiply(&volume, &s->thread_info.soft_volume, &info[0].volume);
+ pa_sw_cvolume_multiply(&volume, &s->thread_info.soft_volume, &info[0].volume);
if (s->thread_info.soft_muted || !pa_cvolume_is_norm(&volume)) {
if (s->thread_info.soft_muted || pa_cvolume_is_muted(&volume)) {
@@ -990,10 +1084,10 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
} else {
void *ptr;
- result->index = 0;
- result->memblock = pa_memblock_new(s->core->mempool, length);
+ result->index = 0;
+ result->memblock = pa_memblock_new(s->core->mempool, length);
- ptr = pa_memblock_acquire(result->memblock);
+ ptr = pa_memblock_acquire(result->memblock);
result->length = pa_mix(info, n,
(uint8_t*) ptr + result->index, length1st,
@@ -1007,24 +1101,23 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
inputs_drop(s, info, n, result);
if (result->length < length) {
- pa_memchunk chunk;
- size_t l, d;
- pa_memchunk_make_writable(result, length);
- result->length = length;
-
- l = length - result->length;
- d = result->index + result->length;
- while (l > 0) {
- chunk = *result;
- chunk.index += d;
- chunk.length -= d - result->index;
-
- pa_sink_render_into(s, &chunk);
-
- d += chunk.length;
- l -= chunk.length;
- }
- result->length = length;
+ pa_memchunk chunk;
+ size_t l, d;
+ pa_memchunk_make_writable(result, length);
+
+ l = length - result->length;
+ d = result->index + result->length;
+ while (l > 0) {
+ chunk = *result;
+ chunk.index = d;
+ chunk.length = l;
+
+ pa_sink_render_into(s, &chunk);
+
+ d += chunk.length;
+ l -= chunk.length;
+ }
+ result->length = length;
}
pa_sink_unref(s);
@@ -1222,7 +1315,7 @@ void pa_sink_propagate_flat_volume(pa_sink *s) {
}
/* Called from main thread */
-void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference) {
+void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference, pa_bool_t save) {
pa_bool_t virtual_volume_changed;
pa_sink_assert_ref(s);
@@ -1233,6 +1326,7 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat
virtual_volume_changed = !pa_cvolume_equal(volume, &s->virtual_volume);
s->virtual_volume = *volume;
+ s->save_volume = (!virtual_volume_changed && s->save_volume) || save;
if (become_reference)
s->reference_volume = s->virtual_volume;
@@ -1303,15 +1397,17 @@ const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh, pa_boo
}
/* Called from main thread */
-void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume) {
+void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume, pa_bool_t save) {
pa_sink_assert_ref(s);
/* The sink implementor may call this if the volume changed to make sure everyone is notified */
-
- if (pa_cvolume_equal(&s->virtual_volume, new_volume))
+ if (pa_cvolume_equal(&s->virtual_volume, new_volume)) {
+ s->save_volume = s->save_volume || save;
return;
+ }
s->reference_volume = s->virtual_volume = *new_volume;
+ s->save_volume = save;
if (s->flags & PA_SINK_FLAT_VOLUME)
pa_sink_propagate_flat_volume(s);
@@ -1320,7 +1416,7 @@ void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume) {
}
/* Called from main thread */
-void pa_sink_set_mute(pa_sink *s, pa_bool_t mute) {
+void pa_sink_set_mute(pa_sink *s, pa_bool_t mute, pa_bool_t save) {
pa_bool_t old_muted;
pa_sink_assert_ref(s);
@@ -1328,6 +1424,7 @@ void pa_sink_set_mute(pa_sink *s, pa_bool_t mute) {
old_muted = s->muted;
s->muted = mute;
+ s->save_muted = (old_muted == s->muted && s->save_muted) || save;
if (s->set_mute)
s->set_mute(s);
@@ -1351,23 +1448,31 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0);
- if (old_muted != s->muted)
+ if (old_muted != s->muted) {
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+
+ /* Make sure the soft mute status stays in sync */
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0);
+ }
}
return s->muted;
}
/* Called from main thread */
-void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted) {
+void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save) {
pa_sink_assert_ref(s);
/* The sink implementor may call this if the volume changed to make sure everyone is notified */
- if (s->muted == new_muted)
+ if (s->muted == new_muted) {
+ s->save_muted = s->save_muted || save;
return;
+ }
s->muted = new_muted;
+ s->save_muted = save;
+
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
@@ -1465,7 +1570,7 @@ unsigned pa_sink_check_suspend(pa_sink *s) {
ret = 0;
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
pa_sink_input_state_t st;
st = pa_sink_input_get_state(i);
@@ -1823,17 +1928,18 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
}
/* Called from main thread */
-int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend) {
+int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink *sink;
uint32_t idx;
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert(cause != 0);
for (sink = PA_SINK(pa_idxset_first(c->sinks, &idx)); sink; sink = PA_SINK(pa_idxset_next(c->sinks, &idx))) {
int r;
- if ((r = pa_sink_suspend(sink, suspend)) < 0)
+ if ((r = pa_sink_suspend(sink, suspend, cause)) < 0)
ret = r;
}
@@ -2175,6 +2281,41 @@ size_t pa_sink_get_max_request(pa_sink *s) {
}
/* Called from main context */
+int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save) {
+ pa_device_port *port;
+
+ pa_assert(s);
+
+ if (!s->set_port) {
+ pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name);
+ return -PA_ERR_NOTIMPLEMENTED;
+ }
+
+ if (!s->ports)
+ return -PA_ERR_NOENTITY;
+
+ if (!(port = pa_hashmap_get(s->ports, name)))
+ return -PA_ERR_NOENTITY;
+
+ if (s->active_port == port) {
+ s->save_port = s->save_port || save;
+ return 0;
+ }
+
+ if ((s->set_port(s, port)) < 0)
+ return -PA_ERR_NOENTITY;
+
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+
+ pa_log_info("Changed port of sink %u \"%s\" to %s", s->index, s->name, port->name);
+
+ s->active_port = port;
+ s->save_port = save;
+
+ return 0;
+}
+
+/* Called from main context */
pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
const char *ff, *c, *t = NULL, *s = "", *profile, *bus;
@@ -2243,28 +2384,49 @@ pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
}
pa_bool_t pa_device_init_description(pa_proplist *p) {
- const char *s;
+ const char *s, *d = NULL, *k;
pa_assert(p);
if (pa_proplist_contains(p, PA_PROP_DEVICE_DESCRIPTION))
return TRUE;
if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR)))
- if (pa_streq(s, "internal")) {
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, _("Internal Audio"));
- return TRUE;
- }
+ if (pa_streq(s, "internal"))
+ d = _("Internal Audio");
- if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS)))
- if (pa_streq(s, "modem")) {
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, _("Modem"));
- return TRUE;
- }
+ if (!d)
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS)))
+ if (pa_streq(s, "modem"))
+ d = _("Modem");
+
+ if (!d)
+ d = pa_proplist_gets(p, PA_PROP_DEVICE_PRODUCT_NAME);
+
+ if (!d)
+ return FALSE;
+
+ k = pa_proplist_gets(p, PA_PROP_DEVICE_PROFILE_DESCRIPTION);
- if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PRODUCT_NAME))) {
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
+ if (d && k)
+ pa_proplist_setf(p, PA_PROP_DEVICE_DESCRIPTION, _("%s %s"), d, k);
+ else if (d)
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, d);
+
+ return TRUE;
+}
+
+pa_bool_t pa_device_init_intended_roles(pa_proplist *p) {
+ const char *s;
+ pa_assert(p);
+
+ if (pa_proplist_contains(p, PA_PROP_DEVICE_INTENDED_ROLES))
return TRUE;
- }
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR)))
+ if (pa_streq(s, "handset") || pa_streq(s, "hands-free")) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_INTENDED_ROLES, "phone");
+ return TRUE;
+ }
return FALSE;
}
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index e33b3cfc..d16fcc01 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -24,6 +24,7 @@
***/
typedef struct pa_sink pa_sink;
+typedef struct pa_device_port pa_device_port;
#include <inttypes.h>
@@ -49,13 +50,26 @@ static inline pa_bool_t PA_SINK_IS_LINKED(pa_sink_state_t x) {
return x == PA_SINK_RUNNING || x == PA_SINK_IDLE || x == PA_SINK_SUSPENDED;
}
+struct pa_device_port {
+ char *name;
+ char *description;
+
+ unsigned priority;
+
+ /* .. followed by some implementation specific data */
+};
+
+#define PA_DEVICE_PORT_DATA(d) ((void*) ((uint8_t*) d + PA_ALIGN(sizeof(pa_device_port))))
+
struct pa_sink {
pa_msgobject parent;
uint32_t index;
pa_core *core;
+
pa_sink_state_t state;
pa_sink_flags_t flags;
+ pa_suspend_cause_t suspend_cause;
char *name;
char *driver; /* may be NULL */
@@ -82,6 +96,9 @@ struct pa_sink {
pa_bool_t refresh_volume:1;
pa_bool_t refresh_muted:1;
+ pa_bool_t save_port:1;
+ pa_bool_t save_volume:1;
+ pa_bool_t save_muted:1;
pa_asyncmsgq *asyncmsgq;
pa_rtpoll *rtpoll;
@@ -90,6 +107,9 @@ struct pa_sink {
pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */
+ pa_hashmap *ports;
+ pa_device_port *active_port;
+
/* Called when the main loop requests a state change. Called from
* main loop context. If returns -1 the state change will be
* inhibited */
@@ -125,6 +145,10 @@ struct pa_sink {
* thread context. */
void (*update_requested_latency)(pa_sink *s); /* dito */
+ /* Called whenever the port shall be changed. Called from main
+ * thread. */
+ int (*set_port)(pa_sink *s, pa_device_port *port); /* dito */
+
/* Contains copies of the above data so that the real-time worker
* thread can work without access locking */
struct {
@@ -191,6 +215,9 @@ typedef struct pa_sink_new_data {
pa_module *module;
pa_card *card;
+ pa_hashmap *ports;
+ char *active_port;
+
pa_sample_spec sample_spec;
pa_channel_map channel_map;
pa_cvolume volume;
@@ -202,6 +229,10 @@ typedef struct pa_sink_new_data {
pa_bool_t muted_is_set:1;
pa_bool_t namereg_fail:1;
+
+ pa_bool_t save_port:1;
+ pa_bool_t save_volume:1;
+ pa_bool_t save_muted:1;
} pa_sink_new_data;
pa_sink_new_data* pa_sink_new_data_init(pa_sink_new_data *data);
@@ -210,6 +241,7 @@ void pa_sink_new_data_set_sample_spec(pa_sink_new_data *data, const pa_sample_sp
void pa_sink_new_data_set_channel_map(pa_sink_new_data *data, const pa_channel_map *map);
void pa_sink_new_data_set_volume(pa_sink_new_data *data, const pa_cvolume *volume);
void pa_sink_new_data_set_muted(pa_sink_new_data *data, pa_bool_t mute);
+void pa_sink_new_data_set_port(pa_sink_new_data *data, const char *port);
void pa_sink_new_data_done(pa_sink_new_data *data);
/*** To be called exclusively by the sink driver, from main context */
@@ -235,11 +267,12 @@ void pa_sink_detach(pa_sink *s);
void pa_sink_attach(pa_sink *s);
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume);
-void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume);
-void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted);
+void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume, pa_bool_t save);
+void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save);
pa_bool_t pa_device_init_description(pa_proplist *p);
pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink);
+pa_bool_t pa_device_init_intended_roles(pa_proplist *p);
/**** May be called by everyone, from main context */
@@ -252,27 +285,29 @@ size_t pa_sink_get_max_rewind(pa_sink *s);
size_t pa_sink_get_max_request(pa_sink *s);
int pa_sink_update_status(pa_sink*s);
-int pa_sink_suspend(pa_sink *s, pa_bool_t suspend);
-int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend);
+int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause);
+int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause);
void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume);
void pa_sink_propagate_flat_volume(pa_sink *s);
-void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference);
+void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference, pa_bool_t save);
const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh, pa_bool_t reference);
-void pa_sink_set_mute(pa_sink *sink, pa_bool_t mute);
+void pa_sink_set_mute(pa_sink *sink, pa_bool_t mute, pa_bool_t save);
pa_bool_t pa_sink_get_mute(pa_sink *sink, pa_bool_t force_refresh);
pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p);
+int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save);
+
unsigned pa_sink_linked_by(pa_sink *s); /* Number of connected streams */
unsigned pa_sink_used_by(pa_sink *s); /* Number of connected streams which are not corked */
unsigned pa_sink_check_suspend(pa_sink *s); /* Returns how many streams are active that don't allow suspensions */
#define pa_sink_get_state(s) ((s)->state)
/* Moves all inputs away, and stores them in pa_queue */
-pa_queue *pa_sink_move_all_start(pa_sink *s);
+pa_queue *pa_sink_move_all_start(pa_sink *s, pa_queue *q);
void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save);
void pa_sink_move_all_fail(pa_queue *q);
@@ -305,4 +340,7 @@ void pa_sink_invalidate_requested_latency(pa_sink *s);
pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s);
+pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra);
+void pa_device_port_free(pa_device_port *p);
+
#endif
diff --git a/src/pulsecore/sndfile-util.c b/src/pulsecore/sndfile-util.c
index 032aefca..4f7f8bdb 100644
--- a/src/pulsecore/sndfile-util.c
+++ b/src/pulsecore/sndfile-util.c
@@ -113,7 +113,7 @@ int pa_sndfile_write_sample_spec(SF_INFO *sfi, pa_sample_spec *ss) {
break;
case PA_SAMPLE_S32LE:
- case PA_SAMPLE_S32RE:
+ case PA_SAMPLE_S32BE:
ss->format = PA_SAMPLE_S32NE;
sfi->format |= SF_FORMAT_PCM_32;
break;
diff --git a/src/pulsecore/socket-client.c b/src/pulsecore/socket-client.c
index dc23bff6..24535157 100644
--- a/src/pulsecore/socket-client.c
+++ b/src/pulsecore/socket-client.c
@@ -52,12 +52,14 @@
#include <asyncns.h>
#endif
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
#include <pulsecore/winsock.h>
#include <pulsecore/core-error.h>
#include <pulsecore/socket-util.h>
+#include <pulsecore/core-rtclock.h>
#include <pulsecore/core-util.h>
#include <pulsecore/socket-util.h>
#include <pulsecore/log.h>
@@ -420,12 +422,11 @@ fail:
#endif
-static void timeout_cb(pa_mainloop_api *m, pa_time_event *e, const struct timeval *tv, void *userdata) {
+static void timeout_cb(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
pa_socket_client *c = userdata;
pa_assert(m);
pa_assert(e);
- pa_assert(tv);
pa_assert(c);
if (c->fd >= 0) {
@@ -437,17 +438,16 @@ static void timeout_cb(pa_mainloop_api *m, pa_time_event *e, const struct timeva
do_call(c);
}
-static void start_timeout(pa_socket_client *c) {
+static void start_timeout(pa_socket_client *c, pa_bool_t use_rtclock) {
struct timeval tv;
+
pa_assert(c);
pa_assert(!c->timeout_event);
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, CONNECT_TIMEOUT * PA_USEC_PER_SEC);
- c->timeout_event = c->mainloop->time_new(c->mainloop, &tv, timeout_cb, c);
+ c->timeout_event = c->mainloop->time_new(c->mainloop, pa_timeval_rtstore(&tv, pa_rtclock_now() + CONNECT_TIMEOUT * PA_USEC_PER_SEC, use_rtclock), timeout_cb, c);
}
-pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*name, uint16_t default_port) {
+pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, pa_bool_t use_rtclock, const char*name, uint16_t default_port) {
pa_socket_client *c = NULL;
pa_parsed_address a;
@@ -463,7 +463,7 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam
switch (a.type) {
case PA_PARSED_ADDRESS_UNIX:
if ((c = pa_socket_client_new_unix(m, a.path_or_host)))
- start_timeout(c);
+ start_timeout(c, use_rtclock);
break;
case PA_PARSED_ADDRESS_TCP4: /* Fallthrough */
@@ -499,7 +499,7 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam
c->asyncns_io_event = m->io_new(m, asyncns_fd(c->asyncns), PA_IO_EVENT_INPUT, asyncns_cb, c);
c->asyncns_query = asyncns_getaddrinfo(c->asyncns, a.path_or_host, port, &hints);
pa_assert(c->asyncns_query);
- start_timeout(c);
+ start_timeout(c, use_rtclock);
}
#elif defined(HAVE_GETADDRINFO)
{
@@ -513,7 +513,7 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam
if (res->ai_addr) {
if ((c = pa_socket_client_new_sockaddr(m, res->ai_addr, res->ai_addrlen)))
- start_timeout(c);
+ start_timeout(c, use_rtclock);
}
freeaddrinfo(res);
@@ -546,7 +546,7 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam
s.sin_port = htons(a.port);
if ((c = pa_socket_client_new_sockaddr(m, (struct sockaddr*)&s, sizeof(s))))
- start_timeout(c);
+ start_timeout(c, use_rtclock);
}
#endif /* HAVE_LIBASYNCNS */
}
diff --git a/src/pulsecore/socket-client.h b/src/pulsecore/socket-client.h
index ed36400c..b896afa9 100644
--- a/src/pulsecore/socket-client.h
+++ b/src/pulsecore/socket-client.h
@@ -40,7 +40,7 @@ pa_socket_client* pa_socket_client_new_ipv6(pa_mainloop_api *m, uint8_t address[
#endif
pa_socket_client* pa_socket_client_new_unix(pa_mainloop_api *m, const char *filename);
pa_socket_client* pa_socket_client_new_sockaddr(pa_mainloop_api *m, const struct sockaddr *sa, size_t salen);
-pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char *a, uint16_t default_port);
+pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, pa_bool_t use_rtclock, const char *a, uint16_t default_port);
pa_socket_client* pa_socket_client_ref(pa_socket_client *c);
void pa_socket_client_unref(pa_socket_client *c);
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 8aeb5606..74f38bc5 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -93,11 +93,29 @@ void pa_source_new_data_set_muted(pa_source_new_data *data, pa_bool_t mute) {
data->muted = !!mute;
}
+void pa_source_new_data_set_port(pa_source_new_data *data, const char *port) {
+ pa_assert(data);
+
+ pa_xfree(data->active_port);
+ data->active_port = pa_xstrdup(port);
+}
+
void pa_source_new_data_done(pa_source_new_data *data) {
pa_assert(data);
- pa_xfree(data->name);
pa_proplist_free(data->proplist);
+
+ if (data->ports) {
+ pa_device_port *p;
+
+ while ((p = pa_hashmap_steal_first(data->ports)))
+ pa_device_port_free(p);
+
+ pa_hashmap_free(data->ports, NULL, NULL);
+ }
+
+ pa_xfree(data->name);
+ pa_xfree(data->active_port);
}
/* Called from main context */
@@ -110,6 +128,7 @@ static void reset_callbacks(pa_source *s) {
s->get_mute = NULL;
s->set_mute = NULL;
s->update_requested_latency = NULL;
+ s->set_port = NULL;
}
/* Called from main context */
@@ -130,6 +149,7 @@ pa_source* pa_source_new(
s = pa_msgobject_new(pa_source);
if (!(name = pa_namereg_register(core, data->name, PA_NAMEREG_SOURCE, s, data->namereg_fail))) {
+ pa_log_debug("Failed to register name %s.", data->name);
pa_xfree(s);
return NULL;
}
@@ -142,6 +162,8 @@ pa_source* pa_source_new(
return NULL;
}
+ /* FIXME, need to free s here on failure */
+
pa_return_null_if_fail(!data->driver || pa_utf8_valid(data->driver));
pa_return_null_if_fail(data->name && pa_utf8_valid(data->name) && data->name[0]);
@@ -167,6 +189,7 @@ pa_source* pa_source_new(
pa_device_init_description(data->proplist);
pa_device_init_icon(data->proplist, FALSE);
+ pa_device_init_intended_roles(data->proplist);
if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_SOURCE_FIXATE], data) < 0) {
pa_xfree(s);
@@ -180,6 +203,7 @@ pa_source* pa_source_new(
s->core = core;
s->state = PA_SOURCE_INIT;
s->flags = flags;
+ s->suspend_cause = 0;
s->name = pa_xstrdup(name);
s->proplist = pa_proplist_copy(data->proplist);
s->driver = pa_xstrdup(pa_path_get_filename(data->driver));
@@ -208,6 +232,30 @@ pa_source* pa_source_new(
s->asyncmsgq = NULL;
s->rtpoll = NULL;
+ /* As a minor optimization we just steal the list instead of
+ * copying it here */
+ s->ports = data->ports;
+ data->ports = NULL;
+
+ s->active_port = NULL;
+ s->save_port = FALSE;
+
+ if (data->active_port && s->ports)
+ if ((s->active_port = pa_hashmap_get(s->ports, data->active_port)))
+ s->save_port = data->save_port;
+
+ if (!s->active_port && s->ports) {
+ void *state;
+ pa_device_port *p;
+
+ PA_HASHMAP_FOREACH(p, s->ports, state)
+ if (!s->active_port || p->priority > s->active_port->priority)
+ s->active_port = p;
+ }
+
+ s->save_volume = data->save_volume;
+ s->save_muted = data->save_muted;
+
pa_silence_memchunk_get(
&core->silence_cache,
core->mempool,
@@ -398,6 +446,15 @@ static void source_free(pa_object *o) {
if (s->proplist)
pa_proplist_free(s->proplist);
+ if (s->ports) {
+ pa_device_port *p;
+
+ while ((p = pa_hashmap_steal_first(s->ports)))
+ pa_device_port_free(p);
+
+ pa_hashmap_free(s->ports, NULL, NULL);
+ }
+
pa_xfree(s);
}
@@ -427,14 +484,25 @@ int pa_source_update_status(pa_source*s) {
}
/* Called from main context */
-int pa_source_suspend(pa_source *s, pa_bool_t suspend) {
+int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ pa_assert(cause != 0);
if (s->monitor_of)
return -PA_ERR_NOTSUPPORTED;
if (suspend)
+ s->suspend_cause |= cause;
+ else
+ s->suspend_cause &= ~cause;
+
+ if ((pa_source_get_state(s) == PA_SOURCE_SUSPENDED) == !!s->suspend_cause)
+ return 0;
+
+ pa_log_debug("Suspend cause of source %s is 0x%04x, %s", s->name, s->suspend_cause, s->suspend_cause ? "suspending" : "resuming");
+
+ if (suspend)
return source_set_state(s, PA_SOURCE_SUSPENDED);
else
return source_set_state(s, pa_source_used_by(s) ? PA_SOURCE_RUNNING : PA_SOURCE_IDLE);
@@ -459,15 +527,15 @@ int pa_source_sync_suspend(pa_source *s) {
}
/* Called from main context */
-pa_queue *pa_source_move_all_start(pa_source *s) {
- pa_queue *q;
+pa_queue *pa_source_move_all_start(pa_source *s, pa_queue *q) {
pa_source_output *o, *n;
uint32_t idx;
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
- q = pa_queue_new();
+ if (!q)
+ q = pa_queue_new();
for (o = PA_SOURCE_OUTPUT(pa_idxset_first(s->outputs, &idx)); o; o = n) {
n = PA_SOURCE_OUTPUT(pa_idxset_next(s->outputs, &idx));
@@ -654,7 +722,7 @@ pa_usec_t pa_source_get_latency_within_thread(pa_source *s) {
}
/* Called from main thread */
-void pa_source_set_volume(pa_source *s, const pa_cvolume *volume) {
+void pa_source_set_volume(pa_source *s, const pa_cvolume *volume, pa_bool_t save) {
pa_cvolume old_virtual_volume;
pa_bool_t virtual_volume_changed;
@@ -667,6 +735,7 @@ void pa_source_set_volume(pa_source *s, const pa_cvolume *volume) {
old_virtual_volume = s->virtual_volume;
s->virtual_volume = *volume;
virtual_volume_changed = !pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume);
+ s->save_volume = (!virtual_volume_changed && s->save_volume) || save;
if (s->set_volume) {
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
@@ -712,20 +781,24 @@ const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) {
}
/* Called from main thread */
-void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume) {
+void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume, pa_bool_t save) {
pa_source_assert_ref(s);
/* The source implementor may call this if the volume changed to make sure everyone is notified */
- if (pa_cvolume_equal(&s->virtual_volume, new_volume))
+ if (pa_cvolume_equal(&s->virtual_volume, new_volume)) {
+ s->save_volume = s->save_volume || save;
return;
+ }
s->virtual_volume = *new_volume;
+ s->save_volume = save;
+
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
/* Called from main thread */
-void pa_source_set_mute(pa_source *s, pa_bool_t mute) {
+void pa_source_set_mute(pa_source *s, pa_bool_t mute, pa_bool_t save) {
pa_bool_t old_muted;
pa_source_assert_ref(s);
@@ -733,6 +806,7 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute) {
old_muted = s->muted;
s->muted = mute;
+ s->save_muted = (old_muted == s->muted && s->save_muted) || save;
if (s->set_mute)
s->set_mute(s);
@@ -756,23 +830,31 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0);
- if (old_muted != s->muted)
+ if (old_muted != s->muted) {
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+
+ /* Make sure the soft mute status stays in sync */
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0);
+ }
}
return s->muted;
}
/* Called from main thread */
-void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted) {
+void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save) {
pa_source_assert_ref(s);
/* The source implementor may call this if the mute state changed to make sure everyone is notified */
- if (s->muted == new_muted)
+ if (s->muted == new_muted) {
+ s->save_muted = s->save_muted || save;
return;
+ }
s->muted = new_muted;
+ s->save_muted = save;
+
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
@@ -849,7 +931,7 @@ unsigned pa_source_check_suspend(pa_source *s) {
ret = 0;
- for (o = PA_SOURCE_OUTPUT(pa_idxset_first(s->outputs, &idx)); o; o = PA_SOURCE_OUTPUT(pa_idxset_next(s->outputs, &idx))) {
+ PA_IDXSET_FOREACH(o, s->outputs, idx) {
pa_source_output_state_t st;
st = pa_source_output_get_state(o);
@@ -1032,12 +1114,13 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
}
/* Called from main thread */
-int pa_source_suspend_all(pa_core *c, pa_bool_t suspend) {
+int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause) {
uint32_t idx;
pa_source *source;
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert(cause != 0);
for (source = PA_SOURCE(pa_idxset_first(c->sources, &idx)); source; source = PA_SOURCE(pa_idxset_next(c->sources, &idx))) {
int r;
@@ -1045,7 +1128,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend) {
if (source->monitor_of)
continue;
- if ((r = pa_source_suspend(source, suspend)) < 0)
+ if ((r = pa_source_suspend(source, suspend, cause)) < 0)
ret = r;
}
@@ -1305,3 +1388,38 @@ size_t pa_source_get_max_rewind(pa_source *s) {
return r;
}
+
+/* Called from main context */
+int pa_source_set_port(pa_source *s, const char *name, pa_bool_t save) {
+ pa_device_port *port;
+
+ pa_assert(s);
+
+ if (!s->set_port) {
+ pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name);
+ return -PA_ERR_NOTIMPLEMENTED;
+ }
+
+ if (!s->ports)
+ return -PA_ERR_NOENTITY;
+
+ if (!(port = pa_hashmap_get(s->ports, name)))
+ return -PA_ERR_NOENTITY;
+
+ if (s->active_port == port) {
+ s->save_port = s->save_port || save;
+ return 0;
+ }
+
+ if ((s->set_port(s, port)) < 0)
+ return -PA_ERR_NOENTITY;
+
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+
+ pa_log_info("Changed port of source %u \"%s\" to %s", s->index, s->name, port->name);
+
+ s->active_port = port;
+ s->save_port = save;
+
+ return 0;
+}
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 2978f57b..7e9fd8b7 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -56,8 +56,10 @@ struct pa_source {
uint32_t index;
pa_core *core;
+
pa_source_state_t state;
pa_source_flags_t flags;
+ pa_suspend_cause_t suspend_cause;
char *name;
char *driver; /* may be NULL */
@@ -82,6 +84,10 @@ struct pa_source {
pa_bool_t refresh_volume:1;
pa_bool_t refresh_muted:1;
+ pa_bool_t save_port:1;
+ pa_bool_t save_volume:1;
+ pa_bool_t save_muted:1;
+
pa_asyncmsgq *asyncmsgq;
pa_rtpoll *rtpoll;
@@ -89,6 +95,9 @@ struct pa_source {
pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */
+ pa_hashmap *ports;
+ pa_device_port *active_port;
+
/* Called when the main loop requests a state change. Called from
* main loop context. If returns -1 the state change will be
* inhibited */
@@ -120,6 +129,10 @@ struct pa_source {
* thread context. */
void (*update_requested_latency)(pa_source *s); /* dito */
+ /* Called whenever the port shall be changed. Called from main
+ * thread. */
+ int (*set_port)(pa_source *s, pa_device_port *port); /*dito */
+
/* Contains copies of the above data so that the real-time worker
* thread can work without access locking */
struct {
@@ -173,6 +186,9 @@ typedef struct pa_source_new_data {
pa_module *module;
pa_card *card;
+ pa_hashmap *ports;
+ char *active_port;
+
pa_sample_spec sample_spec;
pa_channel_map channel_map;
pa_cvolume volume;
@@ -184,6 +200,10 @@ typedef struct pa_source_new_data {
pa_bool_t channel_map_is_set:1;
pa_bool_t namereg_fail:1;
+
+ pa_bool_t save_port:1;
+ pa_bool_t save_volume:1;
+ pa_bool_t save_muted:1;
} pa_source_new_data;
pa_source_new_data* pa_source_new_data_init(pa_source_new_data *data);
@@ -192,6 +212,7 @@ void pa_source_new_data_set_sample_spec(pa_source_new_data *data, const pa_sampl
void pa_source_new_data_set_channel_map(pa_source_new_data *data, const pa_channel_map *map);
void pa_source_new_data_set_volume(pa_source_new_data *data, const pa_cvolume *volume);
void pa_source_new_data_set_muted(pa_source_new_data *data, pa_bool_t mute);
+void pa_source_new_data_set_port(pa_source_new_data *data, const char *port);
void pa_source_new_data_done(pa_source_new_data *data);
/*** To be called exclusively by the source driver, from main context */
@@ -216,8 +237,8 @@ void pa_source_detach(pa_source *s);
void pa_source_attach(pa_source *s);
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume);
-void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume);
-void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted);
+void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume, pa_bool_t save);
+void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save);
int pa_source_sync_suspend(pa_source *s);
@@ -231,23 +252,25 @@ void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t
size_t pa_source_get_max_rewind(pa_source *s);
int pa_source_update_status(pa_source*s);
-int pa_source_suspend(pa_source *s, pa_bool_t suspend);
-int pa_source_suspend_all(pa_core *c, pa_bool_t suspend);
+int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause);
+int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause);
-void pa_source_set_volume(pa_source *source, const pa_cvolume *volume);
+void pa_source_set_volume(pa_source *source, const pa_cvolume *volume, pa_bool_t save);
const pa_cvolume *pa_source_get_volume(pa_source *source, pa_bool_t force_refresh);
-void pa_source_set_mute(pa_source *source, pa_bool_t mute);
+void pa_source_set_mute(pa_source *source, pa_bool_t mute, pa_bool_t save);
pa_bool_t pa_source_get_mute(pa_source *source, pa_bool_t force_refresh);
pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p);
+int pa_source_set_port(pa_source *s, const char *name, pa_bool_t save);
+
unsigned pa_source_linked_by(pa_source *s); /* Number of connected streams */
unsigned pa_source_used_by(pa_source *s); /* Number of connected streams that are not corked */
unsigned pa_source_check_suspend(pa_source *s); /* Returns how many streams are active that don't allow suspensions */
#define pa_source_get_state(s) ((pa_source_state_t) (s)->state)
/* Moves all inputs away, and stores them in pa_queue */
-pa_queue *pa_source_move_all_start(pa_source *s);
+pa_queue *pa_source_move_all_start(pa_source *s, pa_queue *q);
void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save);
void pa_source_move_all_fail(pa_queue *q);
diff --git a/src/tests/mainloop-test.c b/src/tests/mainloop-test.c
index 4ca63513..3ec6d115 100644
--- a/src/tests/mainloop-test.c
+++ b/src/tests/mainloop-test.c
@@ -26,10 +26,12 @@
#include <sys/time.h>
#include <assert.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/gccmacro.h>
#include <pulsecore/core-util.h>
+#include <pulsecore/core-rtclock.h>
#ifdef GLIB_MAIN_LOOP
@@ -99,9 +101,7 @@ int main(int argc, char *argv[]) {
de = a->defer_new(a, dcb, NULL);
assert(de);
- pa_gettimeofday(&tv);
- tv.tv_sec += 10;
- te = a->time_new(a, &tv, tcb, NULL);
+ te = a->time_new(a, pa_timeval_rtstore(&tv, pa_rtclock_now() + 2 * PA_USEC_PER_SEC, TRUE), tcb, NULL);
#if defined(GLIB_MAIN_LOOP)
g_main_loop_run(glib_main_loop);
diff --git a/src/tests/rtpoll-test.c b/src/tests/rtpoll-test.c
index 4ac96446..1706cdfa 100644
--- a/src/tests/rtpoll-test.c
+++ b/src/tests/rtpoll-test.c
@@ -26,7 +26,6 @@
#include <pulsecore/log.h>
#include <pulsecore/rtpoll.h>
-#include <pulsecore/rtsig.h>
static int before(pa_rtpoll_item *i) {
pa_log("before");
@@ -47,10 +46,6 @@ int main(int argc, char *argv[]) {
pa_rtpoll_item *i, *w;
struct pollfd *pollfd;
-#ifdef SIGRTMIN
- pa_rtsig_configure(SIGRTMIN+10, SIGRTMAX);
-#endif
-
p = pa_rtpoll_new();
i = pa_rtpoll_item_new(p, PA_RTPOLL_EARLY, 1);
@@ -64,7 +59,6 @@ int main(int argc, char *argv[]) {
w = pa_rtpoll_item_new(p, PA_RTPOLL_NORMAL, 0);
pa_rtpoll_item_set_before_callback(w, worker);
- pa_rtpoll_install(p);
pa_rtpoll_set_timer_relative(p, 10000000); /* 10 s */
pa_rtpoll_run(p, 1);
diff --git a/src/tests/rtstutter.c b/src/tests/rtstutter.c
index f04d43af..a4b5d596 100644
--- a/src/tests/rtstutter.c
+++ b/src/tests/rtstutter.c
@@ -93,6 +93,8 @@ static void* work(void *p) {
int main(int argc, char*argv[]) {
unsigned n;
+ pa_log_set_level(PA_LOG_DEBUG);
+
srand((unsigned) time(NULL));
if (argc >= 3) {
diff --git a/src/tests/thread-mainloop-test.c b/src/tests/thread-mainloop-test.c
index ad89414f..4696fb01 100644
--- a/src/tests/thread-mainloop-test.c
+++ b/src/tests/thread-mainloop-test.c
@@ -25,14 +25,16 @@
#include <unistd.h>
#include <stdio.h>
+#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
#include <pulse/thread-mainloop.h>
#include <pulse/gccmacro.h>
#include <pulsecore/macro.h>
+#include <pulsecore/core-rtclock.h>
-static void tcb(pa_mainloop_api*a, pa_time_event *e, const struct timeval *tv, void *userdata) {
+static void tcb(pa_mainloop_api *a, pa_time_event *e, const struct timeval *tv, void *userdata) {
pa_assert_se(pa_threaded_mainloop_in_thread(userdata));
fprintf(stderr, "TIME EVENT START\n");
pa_threaded_mainloop_signal(userdata, 1);
@@ -53,9 +55,7 @@ int main(int argc, char *argv[]) {
pa_assert_se(!pa_threaded_mainloop_in_thread(m));
- pa_gettimeofday(&tv);
- tv.tv_sec += 5;
- a->time_new(a, &tv, tcb, m);
+ a->time_new(a, pa_timeval_rtstore(&tv, pa_rtclock_now() + 5 * PA_USEC_PER_SEC, TRUE), tcb, m);
fprintf(stderr, "waiting 5s (signal)\n");
pa_threaded_mainloop_wait(m);
diff --git a/src/utils/pabrowse.c b/src/utils/pabrowse.c
index a6487b88..a349e414 100644
--- a/src/utils/pabrowse.c
+++ b/src/utils/pabrowse.c
@@ -27,8 +27,9 @@
#include <assert.h>
#include <signal.h>
-#include <pulse/pulseaudio.h>
#include <pulse/browser.h>
+#include <pulse/pulseaudio.h>
+#include <pulse/rtclock.h>
#include <pulsecore/core-util.h>
diff --git a/src/utils/pacat.c b/src/utils/pacat.c
index 0b6df3d8..f00a32eb 100644
--- a/src/utils/pacat.c
+++ b/src/utils/pacat.c
@@ -39,6 +39,7 @@
#include <pulse/i18n.h>
#include <pulse/pulseaudio.h>
+#include <pulse/rtclock.h>
#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
@@ -583,9 +584,7 @@ static void sigusr1_signal_callback(pa_mainloop_api*m, pa_signal_event *e, int s
pa_operation_unref(pa_stream_update_timing_info(stream, stream_update_timing_callback, NULL));
}
-static void time_event_callback(pa_mainloop_api*m, pa_time_event *e, const struct timeval *tv, void *userdata) {
- struct timeval next;
-
+static void time_event_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
if (stream && pa_stream_get_state(stream) == PA_STREAM_READY) {
pa_operation *o;
if (!(o = pa_stream_update_timing_info(stream, stream_update_timing_callback, NULL)))
@@ -594,10 +593,7 @@ static void time_event_callback(pa_mainloop_api*m, pa_time_event *e, const struc
pa_operation_unref(o);
}
- pa_gettimeofday(&next);
- pa_timeval_add(&next, TIME_EVENT_USEC);
-
- m->time_restart(e, &next);
+ pa_context_rttime_restart(context, e, pa_rtclock_now() + TIME_EVENT_USEC);
}
static void help(const char *argv0) {
@@ -1068,13 +1064,8 @@ int main(int argc, char *argv[]) {
}
if (verbose) {
- struct timeval tv;
-
- pa_gettimeofday(&tv);
- pa_timeval_add(&tv, TIME_EVENT_USEC);
-
- if (!(time_event = mainloop_api->time_new(mainloop_api, &tv, time_event_callback, NULL))) {
- pa_log(_("time_new() failed.\n"));
+ if (!(time_event = pa_context_rttime_new(context, pa_rtclock_now() + TIME_EVENT_USEC, time_event_callback, NULL))) {
+ pa_log(_("pa_context_rttime_new() failed.\n"));
goto quit;
}
}
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index 53c67666..c8c3a437 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -49,8 +49,21 @@
static pa_context *context = NULL;
static pa_mainloop_api *mainloop_api = NULL;
-static char *device = NULL, *sample_name = NULL, *sink_name = NULL, *source_name = NULL, *module_name = NULL, *module_args = NULL, *card_name = NULL, *profile_name = NULL;
-static uint32_t sink_input_idx = PA_INVALID_INDEX, source_output_idx = PA_INVALID_INDEX;
+static char
+ *device = NULL,
+ *sample_name = NULL,
+ *sink_name = NULL,
+ *source_name = NULL,
+ *module_name = NULL,
+ *module_args = NULL,
+ *card_name = NULL,
+ *profile_name = NULL,
+ *port_name = NULL;
+
+static uint32_t
+ sink_input_idx = PA_INVALID_INDEX,
+ source_output_idx = PA_INVALID_INDEX;
+
static uint32_t module_index;
static pa_bool_t suspend;
@@ -80,7 +93,9 @@ static enum {
UNLOAD_MODULE,
SUSPEND_SINK,
SUSPEND_SOURCE,
- SET_CARD_PROFILE
+ SET_CARD_PROFILE,
+ SET_SINK_PORT,
+ SET_SOURCE_PORT
} action = NONE;
static void quit(int ret) {
@@ -239,6 +254,18 @@ static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_
pl = pa_proplist_to_string_sep(i->proplist, "\n\t\t"));
pa_xfree(pl);
+
+ if (i->ports) {
+ pa_sink_port_info **p;
+
+ printf(_("\tPorts:\n"));
+ for (p = i->ports; *p; p++)
+ printf("\t\t%s: %s (priority. %u)\n", (*p)->name, (*p)->description, (*p)->priority);
+ }
+
+ if (i->active_port)
+ printf(_("\tActive Port: %s\n"),
+ i->active_port->name);
}
static void get_source_info_callback(pa_context *c, const pa_source_info *i, int is_last, void *userdata) {
@@ -319,6 +346,18 @@ static void get_source_info_callback(pa_context *c, const pa_source_info *i, int
pl = pa_proplist_to_string_sep(i->proplist, "\n\t\t"));
pa_xfree(pl);
+
+ if (i->ports) {
+ pa_source_port_info **p;
+
+ printf(_("\tPorts:\n"));
+ for (p = i->ports; *p; p++)
+ printf("\t\t%s: %s (priority. %u)\n", (*p)->name, (*p)->description, (*p)->priority);
+ }
+
+ if (i->active_port)
+ printf(_("\tActive Port: %s\n"),
+ i->active_port->name);
}
static void get_module_info_callback(pa_context *c, const pa_module_info *i, int is_last, void *userdata) {
@@ -753,6 +792,14 @@ static void context_state_callback(pa_context *c, void *userdata) {
pa_operation_unref(pa_context_set_card_profile_by_name(c, card_name, profile_name, simple_callback, NULL));
break;
+ case SET_SINK_PORT:
+ pa_operation_unref(pa_context_set_sink_port_by_name(c, sink_name, port_name, simple_callback, NULL));
+ break;
+
+ case SET_SOURCE_PORT:
+ pa_operation_unref(pa_context_set_source_port_by_name(c, source_name, port_name, simple_callback, NULL));
+ break;
+
default:
pa_assert_not_reached();
}
@@ -788,12 +835,14 @@ static void help(const char *argv0) {
"%s [options] unload-module ID\n"
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
- "%s [options] set-card-profile [CARD] [PROFILE] \n\n"
+ "%s [options] set-card-profile [CARD] [PROFILE] \n"
+ "%s [options] set-sink-port [SINK] [PORT] \n"
+ "%s [options] set-source-port [SOURCE] [PORT] \n\n"
" -h, --help Show this help\n"
" --version Show version\n\n"
" -s, --server=SERVER The name of the server to connect to\n"
" -n, --client-name=NAME How to call this client on the server\n"),
- argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0);
+ argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0);
}
enum {
@@ -802,7 +851,6 @@ enum {
int main(int argc, char *argv[]) {
pa_mainloop* m = NULL;
- char tmp[PATH_MAX];
int ret = 1, c;
char *server = NULL, *bn;
@@ -882,17 +930,8 @@ int main(int argc, char *argv[]) {
if (optind+2 < argc)
sample_name = pa_xstrdup(argv[optind+2]);
else {
- char *f = strrchr(argv[optind+1], '/');
- size_t n;
- if (f)
- f++;
- else
- f = argv[optind];
-
- n = strcspn(f, ".");
- strncpy(tmp, f, n);
- tmp[n] = 0;
- sample_name = pa_xstrdup(tmp);
+ char *f = pa_path_get_filename(argv[optind+1]);
+ sample_name = pa_xstrndup(f, strcspn(f, "."));
}
pa_zero(sfi);
@@ -1027,6 +1066,28 @@ int main(int argc, char *argv[]) {
card_name = pa_xstrdup(argv[optind+1]);
profile_name = pa_xstrdup(argv[optind+2]);
+ } else if (pa_streq(argv[optind], "set-sink-port")) {
+ action = SET_SINK_PORT;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink name/index and a port name\n"));
+ goto quit;
+ }
+
+ sink_name = pa_xstrdup(argv[optind+1]);
+ port_name = pa_xstrdup(argv[optind+2]);
+
+ } else if (pa_streq(argv[optind], "set-source-port")) {
+ action = SET_SOURCE_PORT;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source name/index and a port name\n"));
+ goto quit;
+ }
+
+ source_name = pa_xstrdup(argv[optind+1]);
+ port_name = pa_xstrdup(argv[optind+2]);
+
} else if (pa_streq(argv[optind], "help")) {
help(bn);
ret = 0;
diff --git a/src/utils/pasuspender.c b/src/utils/pasuspender.c
index b4bccd56..c327ee41 100644
--- a/src/utils/pasuspender.c
+++ b/src/utils/pasuspender.c
@@ -235,10 +235,7 @@ int main(int argc, char *argv[]) {
setlocale(LC_ALL, "");
bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
- if (!(bn = strrchr(argv[0], '/')))
- bn = argv[0];
- else
- bn++;
+ bn = pa_path_get_filename(argv[0]);
while ((c = getopt_long(argc, argv, "s:h", long_options, NULL)) != -1) {
switch (c) {