summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Mack <daniel@caiaq.de>2009-09-14 16:25:35 +0800
committerDaniel Mack <daniel@caiaq.de>2009-09-14 16:25:35 +0800
commitbebaa491650c48697b861ec5e76816e9af1a8803 (patch)
treeb57d38476473f8fc6e282f8c39f730c936fa10d4
parentc6d330ef91ce401660f907536b1bfd0591c14c2a (diff)
parent180ef1eebdfbdf0220af1fb5e4bf43e348207cde (diff)
Merge branch 'master' of git://0pointer.de/pulseaudio
-rwxr-xr-xbootstrap.sh8
-rw-r--r--configure.ac112
-rw-r--r--doxygen/doxygen.conf.in2
-rw-r--r--man/pulse-client.conf.5.xml.in4
-rw-r--r--man/pulse-daemon.conf.5.xml.in63
-rw-r--r--po/LINGUAS8
-rw-r--r--po/POTFILES.in4
-rw-r--r--po/as.po1289
-rw-r--r--po/bn_IN.po1382
-rw-r--r--po/ca.po1380
-rw-r--r--po/cs.po1329
-rw-r--r--po/de.po1234
-rw-r--r--po/de_CH.po1208
-rw-r--r--po/el.po956
-rw-r--r--po/es.po1350
-rw-r--r--po/fi.po1366
-rw-r--r--po/fr.po1225
-rw-r--r--po/gu.po1363
-rw-r--r--po/hi.po1283
-rw-r--r--po/it.po1406
-rw-r--r--po/ja.po2033
-rw-r--r--po/kn.po1295
-rw-r--r--po/ml.po2350
-rw-r--r--po/mr.po1306
-rw-r--r--po/nl.po1577
-rw-r--r--po/or.po1348
-rw-r--r--po/pa.po1283
-rw-r--r--po/pl.po1189
-rw-r--r--po/pt.po1278
-rw-r--r--po/pt_BR.po1743
-rw-r--r--po/sr.po1398
-rw-r--r--po/sr@latin.po1399
-rw-r--r--po/sv.po1057
-rw-r--r--po/ta.po1316
-rw-r--r--po/te.po1276
-rw-r--r--po/uk.po1308
-rw-r--r--po/zh_CN.po1186
-rw-r--r--pulseaudio.vapi1463
-rw-r--r--src/.gitignore1
-rw-r--r--src/Makefile.am110
-rw-r--r--src/daemon/caps.c15
-rw-r--r--src/daemon/cmdline.c5
-rw-r--r--src/daemon/daemon-conf.c40
-rw-r--r--src/daemon/daemon.conf.in12
-rw-r--r--src/daemon/main.c66
-rw-r--r--src/daemon/polkit.c172
-rw-r--r--src/daemon/pulseaudio-system.conf37
-rw-r--r--src/map-file7
-rw-r--r--src/modules/alsa/alsa-mixer.c49
-rw-r--r--src/modules/alsa/alsa-mixer.h2
-rw-r--r--src/modules/alsa/alsa-sink.c324
-rw-r--r--src/modules/alsa/alsa-source.c306
-rw-r--r--src/modules/alsa/alsa-util.c250
-rw-r--r--src/modules/alsa/alsa-util.h10
l---------src/modules/alsa/mixer/Makefile1
l---------src/modules/alsa/mixer/paths/Makefile1
-rw-r--r--src/modules/alsa/mixer/paths/analog-input.conf.common8
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-headphones.conf4
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf13
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-mono.conf13
-rw-r--r--src/modules/alsa/mixer/paths/analog-output.conf13
-rw-r--r--src/modules/alsa/mixer/paths/analog-output.conf.common4
l---------src/modules/alsa/mixer/profile-sets/Makefile1
-rw-r--r--src/modules/alsa/module-alsa-card.c2
-rw-r--r--src/modules/bluetooth/bluetooth-util.c61
-rw-r--r--src/modules/bluetooth/bluetooth-util.h10
-rw-r--r--src/modules/bluetooth/module-bluetooth-device.c233
-rw-r--r--src/modules/bluetooth/module-bluetooth-discover.c7
-rw-r--r--src/modules/gconf/module-gconf.c9
-rw-r--r--src/modules/hal-util.c2
-rw-r--r--src/modules/module-always-sink.c6
-rw-r--r--src/modules/module-combine.c572
-rw-r--r--src/modules/module-console-kit.c2
-rw-r--r--src/modules/module-detect.c6
-rw-r--r--src/modules/module-device-restore.c2
-rw-r--r--src/modules/module-hal-detect-compat.c84
-rw-r--r--src/modules/module-hal-detect.c42
-rw-r--r--src/modules/module-intended-roles.c54
-rw-r--r--src/modules/module-ladspa-sink.c239
-rw-r--r--src/modules/module-lirc.c28
-rw-r--r--src/modules/module-loopback.c784
-rw-r--r--src/modules/module-match.c5
-rw-r--r--src/modules/module-mmkbd-evdev.c49
-rw-r--r--src/modules/module-null-sink.c5
-rw-r--r--src/modules/module-pipe-sink.c6
-rw-r--r--src/modules/module-pipe-source.c2
-rw-r--r--src/modules/module-position-event-sounds.c57
-rw-r--r--src/modules/module-remap-sink.c168
-rw-r--r--src/modules/module-rescue-streams.c179
-rw-r--r--src/modules/module-sine.c2
-rw-r--r--src/modules/module-solaris.c104
-rw-r--r--src/modules/module-stream-restore.c134
-rw-r--r--src/modules/module-suspend-on-idle.c30
-rw-r--r--src/modules/module-tunnel.c49
-rw-r--r--src/modules/module-udev-detect.c391
-rw-r--r--src/modules/module-volume-restore.c9
-rw-r--r--src/modules/oss/module-oss.c16
-rw-r--r--src/modules/raop/base64.c1
-rw-r--r--src/modules/raop/module-raop-sink.c6
-rw-r--r--src/modules/reserve-monitor.c51
-rw-r--r--src/modules/reserve.c25
-rw-r--r--src/modules/rtp/module-rtp-recv.c5
-rw-r--r--src/modules/rtp/module-rtp-send.c3
-rw-r--r--src/modules/rtp/rtsp_client.c12
-rw-r--r--src/modules/x11/module-x11-publish.c2
-rw-r--r--src/pulse/channelmap.c18
-rw-r--r--src/pulse/channelmap.h18
-rw-r--r--src/pulse/client-conf.c21
-rw-r--r--src/pulse/client.conf.in2
-rw-r--r--src/pulse/context.c46
-rw-r--r--src/pulse/context.h7
-rw-r--r--src/pulse/def.h1
-rw-r--r--src/pulse/error.c4
-rw-r--r--src/pulse/ext-stream-restore.c18
-rw-r--r--src/pulse/glib-mainloop.h4
-rw-r--r--src/pulse/internal.h5
-rw-r--r--src/pulse/introspect.c2
-rw-r--r--src/pulse/introspect.h12
-rw-r--r--src/pulse/mainloop.c13
-rw-r--r--src/pulse/mainloop.h4
-rw-r--r--src/pulse/operation.h6
-rw-r--r--src/pulse/proplist.c5
-rw-r--r--src/pulse/proplist.h20
-rw-r--r--src/pulse/pulseaudio.h16
-rw-r--r--src/pulse/sample.c53
-rw-r--r--src/pulse/sample.h7
-rw-r--r--src/pulse/scache.c14
-rw-r--r--src/pulse/scache.h4
-rw-r--r--src/pulse/simple.c63
-rw-r--r--src/pulse/stream.c162
-rw-r--r--src/pulse/stream.h87
-rw-r--r--src/pulse/thread-mainloop.c13
-rw-r--r--src/pulse/thread-mainloop.h22
-rw-r--r--src/pulse/utf8.c9
-rw-r--r--src/pulse/util.c52
-rw-r--r--src/pulse/volume.c172
-rw-r--r--src/pulse/volume.h44
-rw-r--r--src/pulsecore/asyncmsgq.c42
-rw-r--r--src/pulsecore/asyncmsgq.h4
-rw-r--r--src/pulsecore/aupdate.c8
-rw-r--r--src/pulsecore/aupdate.h4
-rw-r--r--src/pulsecore/authkey.c37
-rw-r--r--src/pulsecore/cli-command.c58
-rw-r--r--src/pulsecore/cli-text.c24
-rw-r--r--src/pulsecore/conf-parser.c26
-rw-r--r--src/pulsecore/conf-parser.h1
-rw-r--r--src/pulsecore/core-scache.c9
-rw-r--r--src/pulsecore/core-util.c325
-rw-r--r--src/pulsecore/core-util.h13
-rw-r--r--src/pulsecore/core.c2
-rw-r--r--src/pulsecore/core.h3
-rw-r--r--src/pulsecore/cpu-arm.c139
-rw-r--r--src/pulsecore/cpu-arm.h (renamed from src/daemon/polkit.h)25
-rw-r--r--src/pulsecore/cpu-x86.c125
-rw-r--r--src/pulsecore/cpu-x86.h71
-rw-r--r--src/pulsecore/database-simple.c510
-rw-r--r--src/pulsecore/flist.c22
-rw-r--r--src/pulsecore/hook-list.c2
-rw-r--r--src/pulsecore/llist.h3
-rw-r--r--src/pulsecore/lock-autospawn.c66
-rw-r--r--src/pulsecore/macro.h79
-rw-r--r--src/pulsecore/memblock.c28
-rw-r--r--src/pulsecore/memblockq.c6
-rw-r--r--src/pulsecore/memblockq.h3
-rw-r--r--src/pulsecore/memtrap.c6
-rw-r--r--src/pulsecore/msgobject.c14
-rw-r--r--src/pulsecore/msgobject.h8
-rw-r--r--src/pulsecore/namereg.c75
-rw-r--r--src/pulsecore/namereg.h1
-rw-r--r--src/pulsecore/object.c18
-rw-r--r--src/pulsecore/object.h51
-rw-r--r--src/pulsecore/pdispatch.c36
-rw-r--r--src/pulsecore/pdispatch.h6
-rw-r--r--src/pulsecore/pid.c4
-rw-r--r--src/pulsecore/play-memblockq.c5
-rw-r--r--src/pulsecore/proplist-util.c6
-rw-r--r--src/pulsecore/protocol-esound.c11
-rw-r--r--src/pulsecore/protocol-http.c2
-rw-r--r--src/pulsecore/protocol-native.c154
-rw-r--r--src/pulsecore/protocol-native.h2
-rw-r--r--src/pulsecore/protocol-simple.c12
-rw-r--r--src/pulsecore/ratelimit.h18
-rw-r--r--src/pulsecore/remap.c204
-rw-r--r--src/pulsecore/remap.h48
-rw-r--r--src/pulsecore/remap_mmx.c161
-rw-r--r--src/pulsecore/remap_sse.c159
-rw-r--r--src/pulsecore/resampler.c240
-rw-r--r--src/pulsecore/rtpoll.c28
-rw-r--r--src/pulsecore/rtpoll.h4
-rw-r--r--src/pulsecore/sample-util.c410
-rw-r--r--src/pulsecore/sample-util.h7
-rw-r--r--src/pulsecore/sconv-s16le.c42
-rw-r--r--src/pulsecore/sconv.c188
-rw-r--r--src/pulsecore/sconv.h6
-rw-r--r--src/pulsecore/sconv_sse.c235
-rw-r--r--src/pulsecore/shm.c3
-rw-r--r--src/pulsecore/sink-input.c399
-rw-r--r--src/pulsecore/sink-input.h61
-rw-r--r--src/pulsecore/sink.c801
-rw-r--r--src/pulsecore/sink.h51
-rw-r--r--src/pulsecore/socket-client.c4
-rw-r--r--src/pulsecore/sound-file-stream.c8
-rw-r--r--src/pulsecore/source-output.c92
-rw-r--r--src/pulsecore/source-output.h24
-rw-r--r--src/pulsecore/source.c286
-rw-r--r--src/pulsecore/source.h33
-rw-r--r--src/pulsecore/start-child.c20
-rw-r--r--src/pulsecore/svolume_arm.c195
-rw-r--r--src/pulsecore/svolume_c.c335
-rw-r--r--src/pulsecore/svolume_mmx.c316
-rw-r--r--src/pulsecore/svolume_sse.c317
-rw-r--r--src/pulsecore/thread-mq.c11
-rw-r--r--src/pulsecore/thread-mq.h8
-rw-r--r--src/pulsecore/time-smoother.c41
-rw-r--r--src/pulsecore/time-smoother.h2
-rw-r--r--src/pulsecore/usergroup.c372
-rw-r--r--src/pulsecore/usergroup.h51
-rw-r--r--src/pulsecore/vector.h3
-rw-r--r--src/tests/envelope-test.c3
-rw-r--r--src/tests/get-binary-name-test.c25
-rw-r--r--src/tests/interpol-test.c81
-rw-r--r--src/tests/mix-test.c81
-rw-r--r--src/tests/remix-test.c3
-rw-r--r--src/tests/resampler-test.c3
-rw-r--r--src/tests/stripnul.c2
-rw-r--r--src/tests/usergroup-test.c161
-rw-r--r--src/tests/voltest.c70
-rw-r--r--src/utils/pacat.c135
-rw-r--r--src/utils/pacmd.c62
-rw-r--r--src/utils/pactl.c268
-rw-r--r--src/utils/padsp.c14
231 files changed, 34672 insertions, 22084 deletions
diff --git a/bootstrap.sh b/bootstrap.sh
index 79e0a7dc..c7c85823 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -47,9 +47,9 @@ case $(uname) in
esac
if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
- echo "Activating pre-commit hook."
- cp -pv .git/hooks/pre-commit.sample .git/hooks/pre-commit
- chmod -v +x .git/hooks/pre-commit
+ cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \
+ chmod +x .git/hooks/pre-commit && \
+ echo "Activated pre-commit hook."
fi
if [ -f .tarball-version ]; then
@@ -94,7 +94,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 "$@"
+ CFLAGS="$CFLAGS -g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen "$@"
make clean
fi
fi
diff --git a/configure.ac b/configure.ac
index 18007357..adf5d90a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,11 +45,11 @@ AC_SUBST(PA_PROTOCOL_VERSION, 16)
# The stable ABI for client applications, for the version info x:y:z
# always will hold y=z
-AC_SUBST(LIBPULSE_VERSION_INFO, [8:0:8])
+AC_SUBST(LIBPULSE_VERSION_INFO, [10:0:10])
# A simplified, synchronous, ABI-stable interface for client
# applications, for the version info x:y:z always will hold y=z
-AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:2:0])
+AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:3:0])
# The ABI-stable network browsing interface for client applications,
# for the version info x:y:z always will hold y=z
@@ -626,10 +626,11 @@ AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1])
HAVE_TDB=0
HAVE_GDBM=0
+HAVE_SIMPLEDB=0
AC_ARG_WITH(
[database],
- AS_HELP_STRING([--with-database=auto|tdb|gdbm],[Choose database backend.]),[],[with_database=auto])
+ AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto])
if test "x${with_database}" = "xauto" -o "x${with_database}" = "xtdb" ; then
PKG_CHECK_MODULES(TDB, [ tdb ],
@@ -659,7 +660,12 @@ if test "x${with_database}" = "xauto" -o "x${with_database}" = "xgdbm" ; then
fi
fi
-if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1; then
+if test "x${with_database}" = "xauto" -o "x${with_database}" = "xsimple" ; then
+ HAVE_SIMPLEDB=1
+ with_database=simple
+fi
+
+if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1 -a "x${HAVE_SIMPLEDB}" != x1; then
AC_MSG_ERROR([*** missing database backend])
fi
@@ -671,6 +677,10 @@ if test "x${HAVE_GDBM}" = x1 ; then
AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?])
fi
+if test "x${HAVE_SIMPLEDB}" = x1 ; then
+ AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?])
+fi
+
AC_SUBST(TDB_CFLAGS)
AC_SUBST(TDB_LIBS)
AC_SUBST(HAVE_TDB)
@@ -681,28 +691,47 @@ AC_SUBST(GDBM_LIBS)
AC_SUBST(HAVE_GDBM)
AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1])
+AC_SUBST(HAVE_SIMPLEDB)
+AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1])
+
#### OSS support (optional) ####
-AC_ARG_ENABLE([oss],
- AS_HELP_STRING([--disable-oss],[Disable optional OSS support]),
+AC_ARG_ENABLE([oss-output],
+ AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support]),
[
case "${enableval}" in
- yes) oss=yes ;;
- no) oss=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss) ;;
+ yes) oss_output=yes ;;
+ no) oss_output=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-output) ;;
esac
],
- [oss=auto])
+ [oss_output=auto])
-if test "x${oss}" != xno ; then
+AC_ARG_ENABLE([oss-wrapper],
+ AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support]),
+ [
+ case "${enableval}" in
+ yes) oss_wrapper=yes ;;
+ no) oss_wrapper=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-wrapper) ;;
+ esac
+ ],
+ [oss_wrapper=auto])
+
+if test "x${oss_output}" != xno || test "x${oss_wrapper}" != "xno"; then
AC_CHECK_HEADERS([sys/soundcard.h],
[
+ if test "x${oss_output}" != "xno"; then
+ AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?])
+ fi
+ if test "x${oss_wrapper}" != "xno"; then
+ AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?])
+ fi
HAVE_OSS=1
- AC_DEFINE([HAVE_OSS], 1, [Have OSS?])
],
[
HAVE_OSS=0
- if test "x$oss" = xyes ; then
+ if test "x$oss_output" = xyes || test "x$oss_wrapper" = "xyes"; then
AC_MSG_ERROR([*** OSS support not found])
fi
])
@@ -711,8 +740,8 @@ else
fi
AC_SUBST(HAVE_OSS)
-AM_CONDITIONAL([HAVE_OSS], [test "x$HAVE_OSS" = x1])
-
+AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS" = x1 && test "x${oss_output}" != "xno"])
+AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS" = x1 && test "x${oss_wrapper}" != "xno"])
#### ALSA support (optional) ####
@@ -912,12 +941,6 @@ AC_SUBST(AVAHI_LIBS)
AC_SUBST(HAVE_AVAHI)
AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1])
-### LIBOIL ####
-
-PKG_CHECK_MODULES(LIBOIL, [ liboil-0.3 >= 0.3.0 ])
-AC_SUBST(LIBOIL_CFLAGS)
-AC_SUBST(LIBOIL_LIBS)
-
### JACK (optional) ####
AC_ARG_ENABLE([jack],
@@ -1100,7 +1123,27 @@ AC_SUBST(UDEV_LIBS)
AC_SUBST(HAVE_UDEV)
AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1])
-AC_DEFINE([LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE], 1, [I know the API is subject to change.])
+#### HAL compat support (optional) ####
+
+AC_ARG_ENABLE([hal-compat],
+ AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support]),
+ [
+ case "${enableval}" in
+ yes) halcompat=yes ;;
+ no) halcompat=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-hal-compat) ;;
+ esac
+ ],
+ [halcompat=auto])
+if test "x${halcompat}" != xno -a "x$HAVE_HAL" = "x0" -a "x$HAVE_UDEV" = "x1" ; then
+ HAVE_HAL_COMPAT=1
+ AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.])
+else
+ HAVE_HAL_COMPAT=0
+fi
+
+AC_SUBST(HAVE_HAL_COMPAT)
+AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1])
#### BlueZ support (optional) ####
@@ -1359,9 +1402,15 @@ if test "x$HAVE_X11" = "x1" ; then
ENABLE_X11=yes
fi
-ENABLE_OSS=no
+ENABLE_OSS_OUTPUT=no
+ENABLE_OSS_WRAPPER=no
if test "x$HAVE_OSS" = "x1" ; then
- ENABLE_OSS=yes
+ if test "x$enable_oss_output" != "xno"; then
+ ENABLE_OSS_OUTPUT=yes
+ fi
+ if test "x$enable_oss_wrapper" != "xno"; then
+ ENABLE_OSS_WRAPPER=yes
+ fi
fi
ENABLE_ALSA=no
@@ -1419,6 +1468,11 @@ if test "x$HAVE_UDEV" = "x1" ; then
ENABLE_UDEV=yes
fi
+ENABLE_HAL_COMPAT=no
+if test "x$HAVE_HAL_COMPAT" = "x1" ; then
+ ENABLE_HAL_COMPAT=yes
+fi
+
ENABLE_TCPWRAP=no
if test "x${LIBWRAP_LIBS}" != x ; then
ENABLE_TCPWRAP=yes
@@ -1444,6 +1498,11 @@ if test "x${HAVE_TDB}" = "x1" ; then
ENABLE_TDB=yes
fi
+ENABLE_SIMPLEDB=no
+if test "x${HAVE_SIMPLEDB}" = "x1" ; then
+ ENABLE_SIMPLEDB=yes
+fi
+
ENABLE_OPENSSL=no
if test "x${HAVE_OPENSSL}" = "x1" ; then
ENABLE_OPENSSL=yes
@@ -1472,7 +1531,8 @@ echo "
CFLAGS: ${CFLAGS}
Have X11: ${ENABLE_X11}
- Enable OSS: ${ENABLE_OSS}
+ Enable OSS Output: ${ENABLE_OSS_OUTPUT}
+ Enable OSS Wrapper: ${ENABLE_OSS_WRAPPER}
Enable Alsa: ${ENABLE_ALSA}
Enable Solaris: ${ENABLE_SOLARIS}
Enable GLib 2.0: ${ENABLE_GLIB20}
@@ -1484,6 +1544,7 @@ echo "
Enable LIRC: ${ENABLE_LIRC}
Enable HAL: ${ENABLE_HAL}
Enable udev: ${ENABLE_UDEV}
+ Enable HAL->udev compat: ${ENABLE_HAL_COMPAT}
Enable BlueZ: ${ENABLE_BLUEZ}
Enable TCP Wrappers: ${ENABLE_TCPWRAP}
Enable libsamplerate: ${ENABLE_LIBSAMPLERATE}
@@ -1491,6 +1552,7 @@ echo "
Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
Enable tdb: ${ENABLE_TDB}
Enable gdbm: ${ENABLE_GDBM}
+ Enable simple database: ${ENABLE_SIMPLEDB}
System User: ${PA_SYSTEM_USER}
System Group: ${PA_SYSTEM_GROUP}
diff --git a/doxygen/doxygen.conf.in b/doxygen/doxygen.conf.in
index 6c2021ce..7dc0f8b1 100644
--- a/doxygen/doxygen.conf.in
+++ b/doxygen/doxygen.conf.in
@@ -417,7 +417,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = ../src/pulse/context.h ../src/pulse/stream.h ../src/pulse/pulseaudio.h ../src/pulse/sample.h ../src/pulse/def.h ../src/pulse/subscribe.h ../src/pulse/introspect.h ../src/pulse/scache.h ../src/pulse/mainloop-api.h ../src/pulse/glib-mainloop.h ../src/pulse/mainloop.h ../src/pulse/mainloop-signal.h ../src/pulse/error.h ../src/pulse/operation.h ../src/pulse/simple.h ../src/pulse/version.h ../src/pulse/volume.h ../src/pulse/channelmap.h ../src/pulse/thread-mainloop.h ../src/pulse/xmalloc.h ../src/pulse/utf8.h ../src/pulse/util.h ../src/pulse/timeval.h ../src/pulse/proplist.h ../src/pulse/gccmacro.h ../src/pulse/ext-stream-restore.h
+INPUT = ../src/pulse/context.h ../src/pulse/stream.h ../src/pulse/pulseaudio.h ../src/pulse/sample.h ../src/pulse/def.h ../src/pulse/subscribe.h ../src/pulse/introspect.h ../src/pulse/scache.h ../src/pulse/mainloop-api.h ../src/pulse/glib-mainloop.h ../src/pulse/mainloop.h ../src/pulse/mainloop-signal.h ../src/pulse/error.h ../src/pulse/operation.h ../src/pulse/simple.h ../src/pulse/version.h ../src/pulse/volume.h ../src/pulse/channelmap.h ../src/pulse/thread-mainloop.h ../src/pulse/xmalloc.h ../src/pulse/utf8.h ../src/pulse/util.h ../src/pulse/timeval.h ../src/pulse/proplist.h ../src/pulse/gccmacro.h ../src/pulse/ext-stream-restore.h ../src/pulse/rtclock.h
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in
index 26e38908..46cc8450 100644
--- a/man/pulse-client.conf.5.xml.in
+++ b/man/pulse-client.conf.5.xml.in
@@ -92,9 +92,9 @@ USA.
</option>
<option>
- <p><opt>disable-shm=</opt> Disable data transfer via POSIX
+ <p><opt>enable-shm=</opt> Enable data transfer via POSIX
shared memory. Takes a boolean argument, defaults to
- <opt>no</opt>.</p>
+ <opt>yes</opt>.</p>
</option>
<option>
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index 68bcb77f..e6b1e190 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -65,20 +65,21 @@ USA.
</option>
<option>
- <p><opt>disallow-module-loading=</opt> Disallow module loading
- after startup. This is a security feature that makes sure that
- no further modules may be loaded into the PulseAudio server
- after startup completed. It is recommended to enable this when
- <opt>system-instance</opt> is enabled. Please note that certain
- features like automatic hot-plug support will not work if this
- option is enabled. Takes a boolean argument, defaults to
- <opt>no</opt>. The <opt>--disallow-module-loading</opt> command line
- option takes precedence.</p>
+ <p><opt>allow-module-loading=</opt> Allow/disallow module
+ loading after startup. This is a security feature that if
+ dsabled makes sure that no further modules may be loaded into
+ the PulseAudio server after startup completed. It is recommended
+ to disable this when <opt>system-instance</opt> is
+ enabled. Please note that certain features like automatic
+ hot-plug support will not work if this option is enabled. Takes
+ a boolean argument, defaults to <opt>yes</opt>. The
+ <opt>--disallow-module-loading</opt> command line option takes
+ precedence.</p>
</option>
<option>
- <p><opt>disallow-exit=</opt> Disallow exit on user
- request. Defaults to <opt>no</opt>.</p>
+ <p><opt>allow-exit=</opt> Allow/disallow exit on user
+ request. Defaults to <opt>yes</opt>.</p>
</option>
<option>
@@ -105,19 +106,19 @@ USA.
</option>
<option>
- <p><opt>disable-remixing=</opt> Never upmix or downmix channels
- to different channel maps. Instead, do a simple name-based
- matching only.</p>
+ <p><opt>enable-remixing=</opt> If disabled never upmix or
+ downmix channels to different channel maps. Instead, do a simple
+ name-based matching only. Defaults to <opt>yes.</opt></p>
</option>
<option>
- <p><opt>disable-lfe-remixing=</opt> When upmixing or downmixing
- ignore LFE channels. When this option is on the output LFE
- channel will only get a signal when an input LFE channel is
- available as well. If no input LFE channel is available the
- output LFE channel will always be 0. If no output LFE channel is
- available the signal on the input LFE channel will be
- ignored. Defaults to "on".</p>
+ <p><opt>enable-lfe-remixing=</opt> if disabeld when upmixing or
+ downmixing ignore LFE channels. When this option is dsabled the
+ output LFE channel will only get a signal when an input LFE
+ channel is available as well. If no input LFE channel is
+ available the output LFE channel will always be 0. If no output
+ LFE channel is available the signal on the input LFE channel
+ will be ignored. Defaults to <opt>no</opt>.</p>
</option>
<option>
@@ -132,12 +133,12 @@ USA.
</option>
<option>
- <p><opt>no-cpu-limit=</opt> Do not install the CPU load limiter,
- even on platforms where it is supported. This option is useful
- when debugging/profiling PulseAudio to disable disturbing
- SIGXCPU signals. Takes a boolean argument, defaults to <opt>no</opt>. The
- <opt>--no-cpu-limit</opt> command line argument takes
- precedence.</p>
+ <p><opt>cpu-limit=</opt> If disabled do not install the CPU load
+ limiter, even on platforms where it is supported. This option is
+ useful when debugging/profiling PulseAudio to disable disturbing
+ SIGXCPU signals. Takes a boolean argument, defaults to
+ <opt>no</opt>. The <opt>--no-cpu-limit</opt> command line
+ argument takes precedence.</p>
</option>
<option>
@@ -148,9 +149,9 @@ USA.
</option>
<option>
- <p><opt>disable-shm=</opt> Disable data transfer via POSIX
+ <p><opt>enable-shm=</opt> Enable data transfer via POSIX
shared memory. Takes a boolean argument, defaults to
- <opt>no</opt>. The <opt>--disable-shm</opt> command line
+ <opt>yes</opt>. The <opt>--disable-shm</opt> command line
argument takes precedence.</p>
</option>
@@ -204,7 +205,7 @@ USA.
real-time. The controlling thread is left a normally scheduled
thread. Thus enabling the high-priority option is orthogonal.
See <manref section="1" name="pulseaudio"/> for more
- information. Takes a boolean argument, defaults to "no". The
+ information. Takes a boolean argument, defaults to "yes". The
<opt>--realtime</opt> command line option takes precedence.</p>
</option>
@@ -230,7 +231,7 @@ USA.
<option>
<p><opt>exit-idle-time=</opt> Terminate the daemon after the
last client quit and this time in seconds passed. Use a negative value to
- disable this feature. Defaults to -1. The
+ disable this feature. Defaults to 20. The
<opt>--exit-idle-time</opt> command line option takes
precedence.</p>
</option>
diff --git a/po/LINGUAS b/po/LINGUAS
index 660ebee9..14414f46 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -2,8 +2,8 @@ as
bn_IN
ca
cs
-de_CH
de
+de_CH
el
es
fi
@@ -11,16 +11,18 @@ fr
gu
hi
it
+ja
kn
+ml
mr
nl
or
pa
pl
-pt_BR
pt
-sr@latin
+pt_BR
sr
+sr@latin
sv
ta
te
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 534feb15..a6172442 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -55,7 +55,6 @@ src/pulsecore/queue.c
src/pulsecore/core.c
#src/pulsecore/shmasyncq.c
src/pulsecore/x11wrap.c
-src/pulsecore/rtclock.c
src/pulsecore/ioline.c
src/pulsecore/asyncq.c
src/pulsecore/mutex-posix.c
@@ -99,7 +98,6 @@ src/pulsecore/strlist.c
src/pulsecore/msgobject.c
src/pulsecore/mutex-win32.c
src/pulsecore/dynarray.c
-src/pulsecore/rtsig.c
src/pulsecore/once.c
src/pulsecore/source.c
src/pulsecore/memchunk.c
@@ -149,14 +147,12 @@ src/pulsecore/protocol-http.c
src/pulsecore/semaphore-win32.c
src/daemon/cpulimit.c
src/daemon/ltdl-bind-now.c
-src/daemon/polkit.c
src/daemon/main.c
src/daemon/cmdline.c
src/daemon/dumpmodules.c
src/daemon/daemon-conf.c
src/daemon/caps.c
src/daemon/pulseaudio.desktop.in
-src/daemon/org.pulseaudio.policy.in
src/pulse/channelmap.c
src/pulse/error.c
src/pulse/proplist.c
diff --git a/po/as.po b/po/as.po
index b2468a43..a7aa34e7 100644
--- a/po/as.po
+++ b/po/as.po
@@ -1,22 +1,28 @@
+# translation of pulseaudio.master-tx.as.po to Assamese
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Amitakhya Phukan <aphukan@fedoraproject.org>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n"
+"Project-Id-Version: pulseaudio.master-tx.as\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-08 12:35+0530\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-08 21:04+0530\n"
"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n"
-"Language-Team: Assamese <fedora-trans-as@redhat.com>\n"
+"Language-Team: Assamese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 0.3\n"
+"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -28,7 +34,7 @@ msgstr ""
"অতি সমà§à¦­à§± à¦à¦‡à¦Ÿà§‹ ALSA চালক '%s' ৰ à¦à¦Ÿà¦¾ বাগ । অনà§à¦—à§à§°à¦¹ কৰি à¦à¦‡ সমসà§à¦¯à¦¾ ALSA বিকাশকক "
"জনাওক ।"
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -40,7 +46,7 @@ msgstr ""
"অতি সমà§à¦­à§± à¦à¦‡à¦Ÿà§‹ ALSA চালক '%s' ৰ à¦à¦Ÿà¦¾ বাগ । অনà§à¦—à§à§°à¦¹ কৰি à¦à¦‡ সমসà§à¦¯à¦¾ ALSA বিকাশকক "
"জনাওক ।"
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -52,9 +58,17 @@ msgstr ""
"অতি সমà§à¦­à§± à¦à¦‡à¦Ÿà§‹ ALSA চালক '%s' ৰ à¦à¦Ÿà¦¾ বাগ । অনà§à¦—à§à§°à¦¹ কৰি à¦à¦‡ সমসà§à¦¯à¦¾ ALSA বিকাশকক "
"জনাওক ।"
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "ভারà§à¦šà§à§Ÿà¦¾à¦² LADSPA sink"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -64,12 +78,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"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>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "আভà§à¦¯à¦¨à§à¦¤à§°à§€à¦£ অ'ডিঅ'"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "মোডেম"
@@ -85,371 +112,248 @@ msgstr "নতà§à¦¨ dl loader বিতৰণ কৰিবলৈ বিফল à
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 "পà§à§°à¦£à¦¾à¦²à§€à§° bus লৈ সংযোগ কৰিব পৰা ন'গ'ল: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "PID ৰ পৰা caller পোৱা ন'গ'ল: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "caller বসà§à¦¤à§à¦¤ 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 "caller ৰ অনà§à¦®à¦¤à¦¿ আছে নে নাই নিৰà§à¦§à¦¾à§°à¦£ কৰিব নোৱাৰি: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "auth পাব নোৱাৰি: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit ঠ'%s' উতà§à¦¤à§° দিলে"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "চিগà§à¦¨à§‡à¦² %s পোৱা গ'ল ।"
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা হৈছে ।"
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾ '%s' পোৱা ন'গ'ল ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' সমষà§à¦Ÿà¦¿ পোৱা ন'গ'ল ।"
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾ '%s' আৰৠসমষà§à¦Ÿà¦¿ '%s' ৰ GID অমিল ।"
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' সৃষà§à¦Ÿà¦¿ কৰিবলৈ বিফল: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "সমষà§à¦Ÿà¦¿à§° তালিকা সলনি কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID সলনি কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID সলনি কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "ৰূটৰ অধিকাৰ সফলভাবে à¦à§°à§‹à§±à¦¾ গ'ল ।"
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦‡ সà§à¦¥à¦¾à¦ªà¦¤à§à¦¯à¦¤ পà§à§°à¦£à¦¾à¦²à§€ বà§à¦¯à¦¾à¦ªà¦• মোড অসমৰà§à¦¥à¦¿à¦¤ ।"
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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' সমষà§à¦Ÿà¦¿à¦¤, য'ত high-priority scheduling ৰ অনà§à¦®à¦¤à¦¿ আছে ।"
-
-#: ../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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit ঠআমাক acquire-high-priority অধিকাৰ দিয়ে ।"
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit ঠacquire-high-priority অধিকাৰ নিদিয়ে ।"
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit ঠআমাক acquire-real-time অধিকাৰ দিয়ে ।"
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit ঠacquire-real-time অধিকাৰ নিদিয়ে ।"
-
-#: ../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 ""
-"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:585
-msgid ""
-"High-priority scheduling enabled in configuration but not allowed by policy."
-msgstr ""
-"বিনà§à¦¯à¦¾à¦¸ দà§à¦¬à¦¾à§°à¦¾ high-priority scheduling ৰ সকà§à§°à¦¿à§Ÿ হ'লেও নিয়মনীতি দà§à¦¬à¦¾à§°à¦¾ সেইটো "
-"অনà§à¦®à§‹à¦¦à¦¿à¦¤ নহয় ।"
-
-#: ../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 ""
-"বিনà§à¦¯à¦¾à¦¸ দà§à¦¬à¦¾à§°à¦¾ real-time scheduling ৰ সকà§à§°à¦¿à§Ÿ হ'লেও নিয়মনীতি দà§à¦¬à¦¾à§°à¦¾ সেইটো অনà§à¦®à§‹à¦¦à¦¿à¦¤ "
-"নহয় ।"
-
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "ডেমন নাই চলা"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u ৰূপে ডেমন চলিছে"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডেমন kill কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পৰিচয়ে à¦à¦‡ পà§à§°à§‹à¦—à§à§°à¦¾à¦® সঞà§à¦šà¦¾à¦²à¦¿à¦¤ হোৱা উচিত নহয় (ন'হ'লে --system উলà§à¦²à¦¿à¦–িত হয়) ।"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Root-ৰ অধিকাৰ আৱশà§à¦¯à¦• ।"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "পà§à§°à¦£à¦¾à¦²à§€ চানেকিৰ কà§à¦·à§‡à¦¤à§à§°à¦¤ --start সমৰà§à¦¥à¦¿à¦¤ নহয় ।"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, কিনà§à¦¤à§ --disallow-exit নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহয়!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, কিনà§à¦¤à§ --disallow-module-loading নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহয়!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, SHM মোড বলপূৰà§à¦¬à¦• নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে, কাম নকৰা সময়ৰ পৰা পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা বলপূৰà§à¦¬à¦• নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe বিফল: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "ডেমন আৰমà§à¦­ কৰিবলৈ বিফল ।"
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "সফলতাৰে ডেমন আৰমà§à¦­ কৰা হৈছে ।"
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦‡à¦Ÿà§‹ PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "সঙà§à¦•à¦²à¦¨à§° গৃহসà§à¦¥: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "সঙà§à¦•à¦²à¦¨à§° CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "গৃহসà§à¦¥à¦¤ চলোৱা হৈছে: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পোৱা গৈছে ।"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "পেজৰ মাপ %lu bytes"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে: হয়"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে: নহয়"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মোডত চলিছে: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimized build: হয়"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Optimized build: নহয়"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ কৰা হৈছে, সকলো asserts নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে ।"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ কৰা হৈছে, অকল fast path asserts নিষà§à¦•à§à§°à¦¿à§Ÿ কৰা হৈছে ।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "সকলো asserts সকà§à§°à¦¿à§Ÿ কৰা হৈছে ।"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "যনà§à¦¤à§à§° ID পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
+msgstr "সেশান ID হল %s।"
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "ৰান-টাইম পঞà§à¦œà¦¿à¦•à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° কৰা হৈছে ।"
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "অৱসà§à¦¥à¦¾à¦¸à§‚চক পঞà§à¦œà¦¿à¦•à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° কৰা হৈছে ।"
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "মডিউল ডিরেকà§à¦Ÿà¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "পà§à§°à¦£à¦¾à¦²à§€ মোডত চলিছে: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -458,16 +362,20 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"আপনি সিসà§à¦Ÿà§‡à¦® মোডে PA সঞà§à¦šà¦¾à¦²à¦¿à¦¤ করছেন à¦à¦¬à¦‚ à¦à¦Ÿà¦¿ না করাই বাঞà§à¦›à¦¨à§€à§Ÿà¥¤\n"
+"à¦à¦° ফলে পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¾à¦®à¦¤ ফলাফল না পাওয়ার সমà§à¦­à¦¾à¦¬à¦¨à¦¾ রয়েছে।\n"
+"সিসà§à¦Ÿà§‡à¦® মোডে বà§à¦¯à¦¬à¦¹à¦¾à¦°à§‡à¦° সমসà§à¦¯à¦¾ সমà§à¦ªà¦°à§à¦•à§‡ জানতে হলে http://pulseaudio.org/wiki/"
+"WhatIsWrongWithSystemMode দেখà§à¦¨à¥¤"
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "নতà§à¦¨ high-resolution timers পোৱা হয়! অভিননà§à¦¦à¦¨!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -475,28 +383,28 @@ msgstr ""
"শà§à§°à§€à¦®à¦¾à¦¨, আপোনাৰ কাৰà§à¦£à§‡à¦² পূৰণি! high-resolution timer সকà§à§°à¦¿à§Ÿ থকা Linux ক আজি "
"উপদেশ দিয়া হয়!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "ডেমন আৰমà§à¦­ কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"তà§à¦²à¦¿ লোৱা মডিউল নোহোৱাকে ডেমন আৰমà§à¦­ কৰা হৈছে, কোনো কাম সঞà§à¦šà¦¾à¦²à¦¨ কৰা সমà§à¦­à§± নহয় ।"
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "ডেমন আৰমà§à¦­ কৰা সমà§à¦ªà§‚ৰà§à¦£ ।"
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "ডেমন বনà§à¦§ কৰাৰ পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾ আৰমà§à¦­ কৰা হৈছে ।"
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "ডেমন বনà§à¦§ কৰা হৈছে ।"
@@ -746,79 +654,79 @@ msgstr "à¦à¦¬à¦¾à§° তà§à¦²à¦¿ লোৱা হ'ব: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "অবচিত করার সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ লকà§à¦·à§à¦¯ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগৰ সà§à¦¤à§° '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] resample পদà§à¦§à¦¤à¦¿ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] à¦à¦‡ সà§à¦¥à¦¾à¦ªà¦¤à§à¦¯à¦¤ rlimit সমৰà§à¦¥à¦¿à¦¤ নহয় ।"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] চানেকিৰ বিনà§à¦¯à¦¾à¦¸ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] চানেকিৰ মাতà§à§°à¦¾ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] চানেকিৰ চেনেল '%s' বৈধ নহয়"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চেনেল মেপ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশৰ সংখà§à¦¯à¦¾ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশৰ মাপ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à§° '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -826,18 +734,14 @@ msgstr ""
"নিৰà§à¦§à¦¾à§°à¦¿à¦¤ অবিকলà§à¦ªà¦¿à¦¤ চেনেল মেপত নিৰà§à¦§à¦¾à§°à¦¿à¦¤ অবিকলà§à¦ªà¦¿à¦¤ চেনেলৰ সংখà§à¦¯à¦¾à¦¤à¦•à§‡ বেলেগ সংখà§à¦¯à¦• "
"চেনেল আছে ।"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### চিহà§à¦¨à¦¿à¦¤ বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§°à§° পৰা পà§à¦¾ হ'ব: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "root-ৰ অধিকাৰ বৰà§à¦œà¦¨ কৰা হৈছে ।"
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "CAP_SYS_NICE লৈ কাৰà§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾ সফলভাবে সীমিত কৰা হ'ল ।"
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "অধিকার বরà§à¦œà¦¨ করা হচà§à¦›à§‡à¥¤"
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -847,25 +751,7 @@ msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à§±à¦¸à§à¦¥à¦¾"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à§±à¦¸à§à¦¥à¦¾ আৰমà§à¦­ কৰা হ'ব"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "PulseAudio ডেমনৰ কাৰণে High-priority scheduling (ঋণাতà§à¦®à¦• Unix nice সà§à¦¤à§°)"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio ডেমনৰ কাৰণে Real-time scheduling"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr "পà§à§°à¦£à¦¾à¦²à§€à§° নীতিয়ে PulseAudio ক high-priority scheduling পাবলৈ নিদিয়ে ।"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr "পà§à§°à¦£à¦¾à¦²à§€à§° নীতিয়ে PulseAudio ক real-time scheduling পাবলৈ নিদিয়ে ।"
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "মোনো"
@@ -1069,33 +955,33 @@ msgstr "ওপৰত পিছত বাওà¦à¦«à¦¾à¦²à§‡"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(অবৈধ)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "সà§à¦Ÿà¦¿à§°à¦¿à¦“"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ছাৰাউণà§à¦¡ ৪.০"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ছাৰাউণà§à¦¡ ৪.১"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ছাৰাউণà§à¦¡ ৫.০"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ছাৰাউণà§à¦¡ ৫.১"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ছাৰাউণà§à¦¡ ৭.১"
@@ -1199,27 +1085,35 @@ msgstr "অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤ বাসà§à¦¤à¦¬à¦¾à§Ÿà¦¨"
msgid "Client forked"
msgstr "গà§à§°à¦¾à¦¹à¦• ফৰà§à¦• কৰা হৈছে"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1232,192 +1126,191 @@ msgstr "XOpenDisplay() বà§à¦¯à§°à§à¦¥"
msgid "Failed to parse cookie data"
msgstr "কà§à¦•à¦¿à§° তথà§à¦¯ বিশà§à¦²à§‡à¦·à¦£ কৰিবলৈ বà§à¦¯à§°à§à¦¥"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§° '%s' খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "কোনো কà§à¦•à¦¿ তà§à¦²à¦¿ লোৱা নহয় । কà§à¦•à¦¿ নোহোৱাকে সংযোগৰ পà§à§°à¦šà§‡à¦·à§à¦Ÿà¦¾ কৰা হৈছে ।"
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "অজানা à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ '%s'-ৰ বাবে বাৰà§à¦¤à¦¾ পà§à§°à¦¾à¦ªà§à¦¤ হৈছে"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "সà§à¦Ÿà§à§°à¦¿à¦® drain কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডà§à¦°à§‡à¦‡à¦¨ (অরà§à¦¥à¦¾à§Ž ফাà¦à¦•à¦¾) করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "পà§à¦²à§‡à¦¬à§‡à¦• সà§à¦Ÿà§à§°à¦¿à¦®à¦• drain কৰা হ'ল ।\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "পà§à¦²à§‡-বà§à¦¯à¦¾à¦• সà§à¦Ÿà§à¦°à¦¿à¦® ফাà¦à¦•à¦¾ করা হয়েছে।"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "সেৱকৰ সৈতে সংযোগ Drain কৰা হৈছে ।\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "সারà§à¦­à¦¾à¦°à§‡à¦° সাথে সà§à¦¥à¦¾à¦ªà¦¿à¦¤ সংযোগ ফাà¦à¦•à¦¾ করা হচà§à¦›à§‡à¥¤"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "সফলতাৰে সà§à¦Ÿà§à§°à¦¿à¦® নিৰà§à¦®à¦¿à¦¤ হৈছে ।\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "সাফলà§à¦¯à§‡à¦° সাথে সà§à¦Ÿà§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হয়েছে।"
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "বাফারের মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "চানেকি spec '%s', চেনেল মেপ '%s'পà§à§°à§Ÿà§‹à¦— কৰা হৈছে\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° spec '%s', ও চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "যনà§à¦¤à§à§° %s-ৰ সৈতে সংযোগ কৰা হৈছে (%u, %ssuspended) ।\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।"
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "ষà§à¦Ÿà§à§°à¦¿à¦® সংকà§à§°à¦¾à¦¨à§à¦¤ তà§à§°à§à¦Ÿà¦¿: %s\n"
+msgid "Stream error: %s"
+msgstr "ষà§à¦Ÿà§à¦°à¦¿à¦® সংকà§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦Ÿà¦¿: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "সà§à¦Ÿà§à§°à¦¿à¦® যনà§à¦¤à§à§° সà§à¦¥à¦—িত কৰা হৈছে । %s \n"
+msgid "Stream device suspended.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস সà§à¦¥à¦—িত করা হয়েছে। %s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "সà§à¦Ÿà§à§°à¦¿à¦® যনà§à¦¤à§à§° পà§à¦¨à§°à¦¾à§°à¦®à§à¦­ কৰা হৈছে । %s \n"
+msgid "Stream device resumed.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ করা হয়েছে। %s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "ষà§à¦Ÿà§à§°à¦¿à¦® underrun: %s\n"
+msgid "Stream underrun.%s"
+msgstr "ধীর গতির সà§à¦Ÿà§à¦°à¦¿à¦®.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "ষà§à¦Ÿà§à§°à¦¿à¦® overrun: %s\n"
+msgid "Stream overrun.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® মাতà§à¦°à¦¾ অতিকà§à¦°à¦® করেছে।%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "সà§à¦Ÿà§à§°à¦¿à¦® আৰমà§à¦­ কৰা হৈছে । %s \n"
+msgid "Stream started.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® আরমà§à¦­ করা হয়েছে। %s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "%s যনà§à¦¤à§à§°à¦²à§ˆ সà§à¦Ÿà§à§°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° কৰা হৈছে (%u, %ssuspended) ।%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "%s ডিভাইসে সà§à¦Ÿà§à¦°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হয়েছে (%u, %ssuspended)।%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "সà§à¦Ÿà§à§°à¦¿à¦® পà§à§°à¦¶à¦®à¦•à§° গà§à¦£ পৰিবৰà§à¦¤à¦¿à¦¤ হৈছে । %s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® বাফারের অà§à¦¯à¦¾à¦Ÿà§à¦°à¦¿à¦¬à¦¿à¦‰à¦Ÿ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে। %s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হৈছে ।%s \n"
+msgid "Connection established.%s"
+msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হয়েছে।%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "<b>সংযোগৰ মোড</b>: %s<br>\n"
+msgid "Connection failure: %s"
+msgstr "সংযোগ বিফল: %s"
-#: ../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:499
+msgid "Got EOF."
+msgstr "ফাইলের সমাপà§à¦¤à¦¿ সনাকà§à¦¤ হয়েছে।"
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "write() failed: %s"
+msgstr "write() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "চিগà§à¦¨à§‡à¦² পোৱা গ'ল, পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা হৈছে ।\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "সিগনà§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হবে।"
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "latency পাবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "লেটেনà§à¦¸à¦¿à¦° পরিমাণ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "সময়: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() বà§à¦¯à¦°à§à¦¥: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1499,8 +1392,10 @@ msgstr ""
"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"
@@ -1523,6 +1418,11 @@ msgstr ""
"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"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1535,136 +1435,131 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° নাম '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বৈধ নহয় ।"
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° নাম '%s' বৈধ নয়।"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "চেনেল মেপ '%s' বৈধ নহয়\n"
+msgid "Invalid channel map '%s'"
+msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "অবৈধ latency নিৰà§à¦§à¦¾à§°à¦£ '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "লেটেনà§à¦¸à¦¿à¦° জনà§à¦¯ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "অবৈধ পà§à§°à¦•à§à§°à¦¿à§Ÿà¦¾à§° সময়ৰ নিৰà§à¦§à¦¾à§°à¦£ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "পà§à¦°à¦¸à§‡à¦¸à§‡à¦° সময়ের বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বৈধ নহয় ।"
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়।"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "ফাইলের অজানা বিনà§à¦¯à¦¾à¦¸ %s।"
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "অবৈধ চানেকি নিৰà§à¦§à¦¾à§°à¦¿à¦¤\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "অবৈধ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² নিরà§à¦§à¦¾à¦°à¦¿à¦¤"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• তৰà§à¦• ।\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿà¥¤"
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "চানেকি সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° মান নিরà§à¦§à¦¾à¦°à¦£à§‡à¦° ফাইল নিরà§à¦®à¦¾à¦£ করতে বà§à¦¯à¦°à§à¦¥"
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "শবà§à¦¦à§‡à§° নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥ ।\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ফাইল থেকে সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: ফাইল থেকে চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª নিরà§à¦§à¦¾à¦°à¦£ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "চেনেল মেপ আৰৠনথিপতà§à§° অমিল ।\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª ও সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° নিরà§à¦§à¦¾à¦°à¦¿à¦¤ মানে গরমিল"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: ফাইলের মধà§à¦¯à§‡ চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª লিখতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "à¦à¦Ÿà¦¾ %s সà§à¦Ÿà§à§°à¦¿à¦® চানেকি নিৰà§à¦§à¦¾à§°à¦£ '%s' ৰ সৈতে খোলা হৈছে ।\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"à¦à¦•à¦Ÿà¦¿ %s সà§à¦Ÿà§à¦°à¦¿à¦® খোলা হচà§à¦›à§‡à¥¤ à¦à¦Ÿà¦¿à¦° জনà§à¦¯ '%s'-র সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° নিরà§à¦§à¦¾à¦°à¦¿à¦¤ মান ও '%s' "
+"চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª পà§à¦°à§Ÿà§‹à¦— করা হবে।"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "ৰেকৰà§à¦¡ কৰা হৈছে"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() বà§à¦¯à§°à§à¦¥ ।\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() বà§à¦¯à§°à§à¦¥ ।\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() বà§à¦¯à¦°à§à¦¥à¥¤"
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1691,7 +1586,12 @@ msgstr "পà§à¦¨à§°à¦¾à§°à¦®à§à¦­ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "সতৰà§à¦•à¦¬à¦¾à§°à§à¦¤à¦¾: ধà§à¦¬à¦¨à¦¿ সেৱক সà§à¦¥à¦¾à¦¨à§€à§Ÿ নহয়, সà§à¦¥à¦—িত কৰা নহয় ।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "<b>সংযোগৰ মোড</b>: %s<br>\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT পà§à§°à¦¾à¦ªà§à¦¤ হৈছে, পà§à§°à¦¸à§à¦¥à¦¾à¦¨ কৰা হৈছে ।\n"
@@ -1731,32 +1631,47 @@ msgstr ""
"libpulse ৰ সৈতে সঙà§à¦•à¦²à¦¨ কৰা হৈছে %s\n"
"libpulse ৰ সৈতে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() বà§à¦¯à§°à§à¦¥ ।\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() বà§à¦¯à§°à§à¦¥ ।\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() বà§à¦¯à§°à§à¦¥ ।\n"
+
+#: ../src/utils/pactl.c:135
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "পৰিসংখà§à¦¯à¦¾à¦¨ পাবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get statistics: %s"
+msgstr "পরিসংখà§à¦¯à¦¾à¦¨ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "চানেকি কেশà§à¦¬à§° মাপ: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "সেৱক সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "সারà§à¦­à¦¾à¦° সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1779,12 +1694,12 @@ msgstr ""
"অবিকলà§à¦ªà¦¿à¦¤ উৎস: %s\n"
"কà§à¦•à¦¿: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "চিঙà§à¦• সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "sink সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1823,22 +1738,22 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tপাৰà§à¦¶à§à¦¬à§°à§‚প:\n"
+msgstr "\tপোরà§à¦Ÿ:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tসকà§à§°à¦¿à§Ÿ পাৰà§à¦¶à§à¦¬à§°à§‚প: %s\n"
+msgstr "\tসকà§à¦°à¦¿à§Ÿ পোরà§à¦Ÿ: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "উৎস সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "উৎস সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1877,20 +1792,20 @@ msgstr ""
"\tগà§à¦£:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "মডিউল সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "মডিউল সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1907,12 +1822,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "গà§à§°à¦¾à¦¹à¦• সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1927,12 +1842,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "কাৰà§à¦¡ সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "কারà§à¦¡ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1949,22 +1864,22 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tপাৰà§à¦¶à§à¦¬à§°à§‚প:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tসকà§à§°à¦¿à§Ÿ পাৰà§à¦¶à§à¦¬à§°à§‚প: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "চিঙà§à¦• নিবেশ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "sink ইনপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2001,12 +1916,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "উৎস আউটপà§à¦Ÿ সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "উৎস আউটপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2035,12 +1950,12 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "চানেকি সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ কৰিবলৈ বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2071,22 +1986,26 @@ msgstr ""
"\tগà§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "বà§à¦¯à§°à§à¦¥à¦¤à¦¾: %s\n"
+msgid "Failure: %s"
+msgstr "বà§à¦¯à¦°à§à¦¥à¦¤à¦¾: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "চানেকি আপল'ড বà§à¦¯à§°à§à¦¥: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² আপলোড করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "নথিপতà§à§°à§° অসময়ত হোৱা সমাপà§à¦¤à¦¿\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "সমà§à¦ªà§‚রà§à¦£ হওয়ার পূরà§à¦¬à§‡ ফাইল সমাপà§à¦¤ হয়েছে"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হয়েছে।"
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2094,15 +2013,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2118,13 +2043,21 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2134,7 +2067,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2145,77 +2078,106 @@ msgstr ""
"libpulseৰ সৈতে সঙà§à¦•à¦²à¦¨ কৰা %s\n"
"libpulse-ৰ সৈতে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "তà§à¦²à¦¿ লোৱাৰ উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অনà§à¦—à§à§°à¦¹ কৰে à¦à¦•à¦Ÿà¦¿ চানেকি নথিপতà§à§° উলà§à¦²à§‡à¦– কৰà§à¦¨\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "লোড করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অনà§à¦—à§à¦°à¦¹ করে à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করà§à¦¨"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "শবà§à¦¦à§‡à§° নথিপতà§à§° খà§à¦²à¦¿à¦¬à¦²à§ˆ বà§à¦¯à§°à§à¦¥ ।\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "à¦à¦Ÿà¦¾ %s সà§à¦Ÿà§à§°à¦¿à¦® চানেকি নিৰà§à¦§à¦¾à§°à¦£ '%s' ৰ সৈতে খোলা হৈছে ।\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: ফাইল থেকে সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° নিরà§à¦§à¦¾à¦°à¦¿à¦¤ মাপ নিরà§à¦®à¦¾à¦£ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "বাজানোৰ উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ চানেকি নথিপতà§à§° উলà§à¦²à§‡à¦– কৰা আৱশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "বাজানোর উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "আà¦à¦¤à§°à¦¾à¦¬à¦²à§ˆ à¦à¦Ÿà¦¾ চানেকি নাম দিব লাগিব \n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "অপসারণের উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "চিঙà§à¦• ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ আৰৠà¦à¦Ÿà¦¾ চিঙà§à¦• নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সিংক নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "উৎস আউটপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦Ÿà¦¿ উৎস নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "সোরà§à¦¸ আউটপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "মডিউলৰ নাম আৰৠতৰà§à¦• নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "মডিউলের নাম ও আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "মডিউল ইনà§à¦¡à§‡à¦•à§à¦¸ নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "মডিউল ইনà§à¦¡à§‡à¦•à§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
-msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• চিঙà§à¦• নিৰà§à¦§à¦¾à§°à¦£ কৰা যাবে না । বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦• ।\n"
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সিংক নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
-msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• উৎস নিৰà§à¦§à¦¾à§°à¦£ কৰা যাবে না । বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিৰà§à¦§à¦¾à§°à¦£ কৰা আৱশà§à¦¯à¦• ।\n"
+"value."
+msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤"
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "কারà§à¦¡à§‡à¦° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "sink-র নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পোরà§à¦Ÿà§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "উৎসের নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পোরà§à¦Ÿà§‡ নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "সঞà§à¦šà¦¾à¦²à¦¨à§° বাবে আদেশ নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহয় ।\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "sink-র নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পোরà§à¦Ÿà§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() বà§à¦¯à§°à§à¦¥: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "অবৈধ শবà§à¦¦à§‡à¦° মাতà§à¦°à¦¾ নিরà§à¦§à¦¾à¦°à¦¿à¦¤"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "উৎসের নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ শবà§à¦¦à§‡à¦° মাতà§à¦°à¦¾ উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও শবà§à¦¦à§‡à¦° মাতà§à¦°à¦¾ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ বৈধ নয়"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "sink-র নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ নিঃশবà§à¦¦à¦¤à¦¾à¦° বà§à¦²à¦¿à§Ÿà¦¾à¦¨ উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "উৎসের নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও নিঃশবà§à¦¦à¦¤à¦¾à¦° বà§à¦²à¦¿à§Ÿà¦¾à¦¨ উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও নিঃশবà§à¦¦à¦¤à¦¾à¦° বà§à¦²à¦¿à§Ÿà¦¾à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "অবৈধ সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ নিরà§à¦§à¦¾à¦°à¦¿à¦¤"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "কোনো বৈধ কমানà§à¦¡ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি।"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2296,48 +2258,48 @@ msgstr "কà§à¦•à¦¿ সংকà§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ তà§à¦²à¦¿à¦¬à¦²
msgid "Not yet implemented.\n"
msgstr "à¦à¦¤à¦¿à§Ÿà¦¾à¦“ বাসà§à¦¤à¦¬à¦¾à§Ÿà¦¿à¦¤ নহয় ।\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "PulseAudio ডেমন চলছে না অথবা সেশানের ডেমন রূপে চলছে না।"
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডেমন kill কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ডেমনৰ পৰা কোনো পà§à§°à¦¤à¦¿à¦•à§à§°à¦¿à§Ÿà¦¾ পোৱা নাযায় ।"
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn লক পà§à§°à§Ÿà§‹à¦— কৰিবলৈ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2353,7 +2315,7 @@ msgstr ""
"POLLOUT নিৰà§à¦§à¦¾à§°à¦¿à¦¤ হোৱাৰি পিছতো আমি উথিলো -- কিনà§à¦¤à§ তাৰ পিছৰ snd_pcm_avail() ঠ০ "
"দিলে বা অনà§à¦¯ à¦à¦Ÿà¦¾ মান < min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2370,129 +2332,22 @@ msgstr ""
"দিলে বা অনà§à¦¯ à¦à¦Ÿà¦¾ মান < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "হাই-ফিডেলিটি কà§à¦¯à¦¾à¦ªà¦šà¦¾à¦° (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
#: ../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 9214f16c..5a634159 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -1,23 +1,29 @@
-# translation of pulseaudio.master-tx.po to Bengali INDIA
+# translation of pulseaudio.master-tx.bn_IN.po to Bengali INDIA
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Runa Bhattacharjee <runab@fedoraproject.org>, 2009.
+# Runa Bhattacharjee <runab@redhat.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio.master-tx\n"
+"Project-Id-Version: pulseaudio.master-tx.bn_IN\n"
"Report-Msgid-Bugs-To: \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"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 17:08+0530\n"
+"Last-Translator: Runa Bhattacharjee <runab@redhat.com>\n"
+"Language-Team: Bengali INDIA <anubad@lists.ankur.org.in>\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"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -29,7 +35,7 @@ msgstr ""
"সমà§à¦­à¦¬à¦¤ à¦à¦Ÿà¦¿ ALSA ডà§à¦°à¦¾à¦‡à¦­à¦¾à¦° '%s'-র à¦à¦•à¦Ÿà¦¿ বাগ। অনà§à¦—à§à¦°à¦¹ করে à¦à¦‡ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§‡ ALSA "
"ডিভেলপরদের সূচিত করà§à¦¨à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -41,7 +47,7 @@ msgstr ""
"সমà§à¦­à¦¬à¦¤ à¦à¦Ÿà¦¿ ALSA ডà§à¦°à¦¾à¦‡à¦­à¦¾à¦° '%s'-র à¦à¦•à¦Ÿà¦¿ বাগ। অনà§à¦—à§à¦°à¦¹ করে à¦à¦‡ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§‡ ALSA "
"ডিভেলপরদের সূচিত করà§à¦¨à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -53,9 +59,18 @@ msgstr ""
"সমà§à¦­à¦¬à¦¤ à¦à¦Ÿà¦¿ ALSA ডà§à¦°à¦¾à¦‡à¦­à¦¾à¦° '%s'-র à¦à¦•à¦Ÿà¦¿ বাগ। অনà§à¦—à§à¦°à¦¹ করে à¦à¦‡ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§‡ ALSA "
"ডিভেলপরদের সূচিত করà§à¦¨à¥¤"
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+"সরà§à¦¬à¦¦à¦¾ অনà§à¦¤à¦¤ à¦à¦•à¦Ÿà¦¿ sink লোড করে রাখা হবে, পà§à¦°à§Ÿà§‹à¦œà¦¨à§‡ null sink বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হবে"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "ডামি আউটপà§à¦Ÿ"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "ভারà§à¦šà§à§Ÿà¦¾à¦² LADSPA sink"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -65,12 +80,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"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>"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "NULL sink-র সময় নিরà§à¦§à¦¾à¦°à¦£"
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "Null ফলাফল"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "অভà§à¦¯à¦¨à§à¦¤à¦°à§€à¦£ অডিও"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "মোডেম"
@@ -86,373 +114,251 @@ msgstr "নতà§à¦¨ dl লোডার বরাদà§à¦¦ করতে বà§à¦
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 "auth পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit থেকে '%s' পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s সিগনà§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হচà§à¦›à§‡à¥¤"
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ সনà§à¦§à¦¾à¦¨ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "দল '%s' সনà§à¦§à¦¾à¦¨ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° ও '%s' দলের GID-র মধà§à¦¯à§‡ গরমিল।"
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' নিরà§à¦®à¦¾à¦£ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "দলের তালিকা পরিবরà§à¦¤à¦¨ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID পরিবরà§à¦¤à¦¨ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID পরিবরà§à¦¤à¦¨ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "root-র অধিকার সাফলà§à¦¯à§‡à¦° সাথে বরà§à¦œà¦¨ করা হয়েছে।"
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡, সিসà§à¦Ÿà§‡à¦®à¦¬à§à¦¯à¦¾à¦ªà§€ মোড সমরà§à¦¥à¦¿à¦¤ নয়।"
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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-র পকà§à¦· থেকে acquire-high-priority অধিকার পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit-র পকà§à¦· থেকে acquire-high-priority অধিকার পà§à¦°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¤ হয়েছে।"
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit-র পকà§à¦· থেকে acquire-real-priority অধিকার পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit-র পকà§à¦· থেকে acquire-real-priority অধিকার পà§à¦°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¤ হয়েছে।"
-
-#: ../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 root কল করা হয়েছে à¦à¦¬à¦‚ কনফিগারেশনের মধà§à¦¯à§‡ রিয়েল-টাইম à¦à¦¬à¦‚/অথবা উচà§à¦š-গà§à¦°à§à¦¤à§à¦¬à§‡à¦° "
-"শিডিউলিংয়ের অনà§à¦°à§‹à¦§ জানানো হয়েছে, কিনà§à¦¤à§ পরà§à¦¯à¦¾à¦ªà§à¦¤ অনà§à¦®à¦¤à¦¿ উপসà§à¦¥à¦¿à¦¤ নেই:\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 ""
-"কনফিগারেশন দà§à¦¬à¦¾à¦°à¦¾ high-priority শিডিইলিংয়ের সà§à¦¬à¦¿à¦§à¦¾ উপলবà§à¦§ হলেও নিয়মনীতি দà§à¦¬à¦¾à¦°à¦¾ "
-"তা অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়।"
-
-#: ../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 ""
-"কনফিগারেশন দà§à¦¬à¦¾à¦°à¦¾ real-time শিডিইলিংয়ের সà§à¦¬à¦¿à¦§à¦¾ উপলবà§à¦§ হলেও নিয়মনীতি দà§à¦¬à¦¾à¦°à¦¾ তা "
-"অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়।"
-
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "ডেমন চলছে না"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u রূপে ডেমন চলছে"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডেমন kill করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পরিচয়ে à¦à¦‡ পà§à¦°à§‹à¦—à§à¦°à¦¾à¦®à¦Ÿà¦¿ সঞà§à¦šà¦¾à¦²à¦¿à¦¤ হওয়া উচিত নয় (যদি না --system উলà§à¦²à¦¿à¦–িত হয়)।"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Root-র অধিকার আবশà§à¦¯à¦•à¥¤"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "সিসà§à¦Ÿà§‡à¦® ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸à§‡à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡ --start সমরà§à¦¥à¦¿à¦¤ নয়।"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে, কিনà§à¦¤à§ --disallow-exit নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে, কিনà§à¦¤à§ --disallow-module-loading নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে, SHM মোড বলপূরà§à¦¬à¦• নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হচà§à¦›à§‡!"
# http://linux.die.net/man/1/pulseaudio à¦à¦–ানে রেফারেনà§à¦¸ পাওয়া যাবে
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"সিসà§à¦Ÿà§‡à¦® মোডে চলছে, করà§à¦®à¦¹à§€à¦¨ অবসà§à¦¥à¦¾à¦° জনà§à¦¯ ধারà§à¦¯ সময়সীমা পূরà§à¦¤à§€ পরে পà§à¦°à¦¸à§à¦¥à¦¾à¦¨à§‡à¦° বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾ "
"বলপূরà§à¦¬à¦• নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হচà§à¦›à§‡!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "পাইপ বিফল: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "ডেমন আরমà§à¦­ করতে বিফল।"
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "সাফলà§à¦¯à§‡à¦° সাথে ডেমন আরমà§à¦­ করা হয়েছে।"
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦Ÿà¦¿ PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "কমà§à¦ªà¦¾à¦‡à¦²à§‡à¦¶à¦¨à§‡à¦° হোসà§à¦Ÿ: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "কমà§à¦ªà¦¾à¦‡à¦²à¦¶à¦¨à§‡à¦° CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "চিহà§à¦¨à¦¿à¦¤ হোসà§à¦Ÿà§‡ চলছে: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পাওয়া গিয়েছে।"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "পেজের মাপ %lu বাইট"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে: না"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মোডে চলছে: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "সরà§à¦¬à¦¾à¦ªà§‡à¦•à§à¦· উতà§à¦¤à¦® বিলà§à¦¡: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "সরà§à¦¬à¦¾à¦ªà§‡à¦•à§à¦· উতà§à¦¤à¦® বিলà§à¦¡: না"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ করা হয়েছে, সকল অà§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦Ÿ নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হয়েছে।"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ করা হয়েছে, শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ফাসà§à¦Ÿ পাথ অà§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦Ÿ নিষà§à¦•à§à¦°à¦¿à§Ÿ করা হয়েছে।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "সকল অà§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦Ÿ সকà§à¦°à¦¿à§Ÿ করা হয়েছে।"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "মেশিন ID পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "মেশিন ID হল %s।"
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "মেশিন ID হল %s।"
+msgstr "সেশান ID হল %s।"
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "রান-টাইম ডিরেকà§à¦Ÿà¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "অবসà§à¦¥à¦¾à¦¸à§‚চক ডিরেকà§à¦Ÿà¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "মডিউল ডিরেকà§à¦Ÿà¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "সিসà§à¦Ÿà§‡à¦® মোডে চলছে: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -461,43 +367,47 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"আপনি সিসà§à¦Ÿà§‡à¦® মোডে PA সঞà§à¦šà¦¾à¦²à¦¿à¦¤ করছেন à¦à¦¬à¦‚ à¦à¦Ÿà¦¿ না করাই বাঞà§à¦›à¦¨à§€à§Ÿà¥¤\n"
+"à¦à¦° ফলে পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¾à¦®à¦¤ ফলাফল না পাওয়ার সমà§à¦­à¦¾à¦¬à¦¨à¦¾ রয়েছে।\n"
+"সিসà§à¦Ÿà§‡à¦® মোডে বà§à¦¯à¦¬à¦¹à¦¾à¦°à§‡à¦° সমসà§à¦¯à¦¾ সমà§à¦ªà¦°à§à¦•à§‡ জানতে হলে http://pulseaudio.org/wiki/"
+"WhatIsWrongWithSystemMode দেখà§à¦¨à¥¤"
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "উচà§à¦š-রেসোলিউশনের নতà§à¦¨ টাইমার উপলবà§à¦§ রয়েছে! পরীকà§à¦·à¦¾ করে দেখà§à¦¨!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "উচà§à¦š-রেসোলিউশনের নতà§à¦¨ টাইমার সহ Linux সকà§à¦°à¦¿à§Ÿ করা বাঞà§à¦›à¦¨à§€à§Ÿ!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "ডেমন আরমà§à¦­ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"লোড করা মডিউল বিনা ডেমন আরমà§à¦­ করা হয়েছে à¦à¦¬à¦‚ কোনো করà§à¦® সঞà§à¦šà¦¾à¦²à¦¨ করা সমà§à¦­à¦¬ নয়।"
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "ডেমন আরমà§à¦­ করা হয়েছে।"
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "ডেমন বনà§à¦§ করার পà§à¦°à¦•à§à¦°à¦¿à§Ÿà¦¾ আরমà§à¦­ করা হয়েছে।"
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "ডেমন বনà§à¦§ করা হয়েছে।"
@@ -756,79 +666,79 @@ msgstr "à¦à¦•à¦¬à¦¾à¦° লোড করা হবে: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "অবচিত করার সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ টারà§à¦—েট '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগের সà§à¦¤à¦° '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] রি-সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² পদà§à¦§à¦¤à¦¿ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡ rlimit সমরà§à¦¥à¦¿à¦¤ নয়।"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° বিনà§à¦¯à¦¾à¦¸ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° মাতà§à¦°à¦¾ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° চà§à¦¯à¦¾à¦¨à§‡à¦² '%s' বৈধ নয়"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশ সংখà§à¦¯à¦¾ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশের মাপ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à¦° '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "কনফিগারেশন ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -836,18 +746,14 @@ msgstr ""
"ডিফলà§à¦Ÿ চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ªà§‡à¦° মধà§à¦¯à§‡ অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° সংখà§à¦¯à¦¾ ও চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° ডিফলà§à¦Ÿ সংখà§à¦¯à¦¾à¦° মধà§à¦¯à§‡ "
"গরমিল।"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### চিহà§à¦¨à¦¿à¦¤ কনফিগারেশন ফাইল থেকে পড়া হবে: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "root-র অধিকার বরà§à¦œà¦¨ করা হচà§à¦›à§‡à¥¤"
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "সাফলà§à¦¯à§‡à¦° সাথে CAP_SYS_NICE-ঠকরà§à¦®à¦•à§à¦·à¦®à¦¤à¦¾ সীমিত করা হয়েছে।"
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "অধিকার বরà§à¦œà¦¨ করা হচà§à¦›à§‡à¥¤"
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -857,29 +763,7 @@ msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾ আরমà§à¦­ করা হবে"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "PulseAudio ডেমনের জনà§à¦¯ উচà§à¦š-গà§à¦°à§à¦¤à§à¦¬à§‡à¦° শিডিউলিং (Unix nice-র মাতà§à¦°à¦¾ নঞরà§à¦¥à¦•)"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio ডেমনের জনà§à¦¯ রিয়েল-টাইম শিডিউলিং"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "মোনো"
@@ -1083,33 +967,33 @@ msgstr "উপরে পিছনে বাà¦à¦¦à¦¿à¦•à§‡"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(অবৈধ)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "সà§à¦Ÿà¦¿à¦°à¦¿à¦“"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "সারাউনà§à¦¡ ৪.০"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "সারাউনà§à¦¡ ৪.১"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "সারাউনà§à¦¡ ৫.০"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "সারাউনà§à¦¡ ৫.১"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "সারাউনà§à¦¡ ৭.১"
@@ -1213,27 +1097,35 @@ msgstr "অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤ বাসà§à¦¤à¦¬à¦¾à§Ÿà¦¨"
msgid "Client forked"
msgstr "কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ ফরà§à¦• করা হয়েছে"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f গিবিবাইট"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f মিবিবাইট"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f কিবিবাইট"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u বাইট"
@@ -1246,196 +1138,196 @@ msgstr "XOpenDisplay() বà§à¦¯à¦°à§à¦¥"
msgid "Failed to parse cookie data"
msgstr "কà§à¦•à¦¿à¦° তথà§à¦¯ পারà§à¦¸ করতে বà§à¦¯à¦°à§à¦¥"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "কনফিগারেশন ফাইল '%s' খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "কোনো কà§à¦•à¦¿ লোড করা হয়নি। কà§à¦•à¦¿ বিনা সংযোগের পà§à¦°à¦šà§‡à¦·à§à¦Ÿà¦¾ করা হচà§à¦›à§‡à¥¤"
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "অজানা à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ '%s'-র জনà§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে"
# drain a stream = যখন সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° মধà§à¦¯à§‡ উপসà§à¦¥à¦¿à¦¤ সকল তথà§à¦¯ আহরণ করা হয় ও সà§à¦Ÿà§à¦°à¦¿à¦®à¦Ÿà¦¿ সমà§à¦ªà§‚রà§à¦£à¦°à§‚পে ফাà¦à¦•à¦¾ হয়ে যায়।
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডà§à¦°à§‡à¦‡à¦¨ (অরà§à¦¥à¦¾à§Ž ফাà¦à¦•à¦¾) করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডà§à¦°à§‡à¦‡à¦¨ (অরà§à¦¥à¦¾à§Ž ফাà¦à¦•à¦¾) করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "পà§à¦²à§‡-বà§à¦¯à¦¾à¦• সà§à¦Ÿà§à¦°à¦¿à¦® ফাà¦à¦•à¦¾ করা হয়েছে।\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "পà§à¦²à§‡-বà§à¦¯à¦¾à¦• সà§à¦Ÿà§à¦°à¦¿à¦® ফাà¦à¦•à¦¾ করা হয়েছে।"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "সারà§à¦­à¦¾à¦°à§‡à¦° সাথে সà§à¦¥à¦¾à¦ªà¦¿à¦¤ সংযোগ ফাà¦à¦•à¦¾ করা হচà§à¦›à§‡à¥¤\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "সারà§à¦­à¦¾à¦°à§‡à¦° সাথে সà§à¦¥à¦¾à¦ªà¦¿à¦¤ সংযোগ ফাà¦à¦•à¦¾ করা হচà§à¦›à§‡à¥¤"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "সাফলà§à¦¯à§‡à¦° সাথে সà§à¦Ÿà§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হয়েছে।\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() বà§à¦¯à¦°à§à¦¥: %s"
+
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "সাফলà§à¦¯à§‡à¦° সাথে সà§à¦Ÿà§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হয়েছে।"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "বাফারের মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "বাফারের মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° spec '%s', ও চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° spec '%s', ও চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হচà§à¦›à§‡à¥¤"
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।"
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "ষà§à¦Ÿà§à¦°à¦¿à¦® সংকà§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦Ÿà¦¿: %s\n"
+msgid "Stream error: %s"
+msgstr "ষà§à¦Ÿà§à¦°à¦¿à¦® সংকà§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦Ÿà¦¿: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস সà§à¦¥à¦—িত করা হয়েছে। %s \n"
+msgid "Stream device suspended.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস সà§à¦¥à¦—িত করা হয়েছে। %s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ করা হয়েছে। %s \n"
+msgid "Stream device resumed.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® ডিভাইস পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ করা হয়েছে। %s"
# underrun = ধীর গতির সà§à¦Ÿà§à¦°à¦¿à¦®
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "ধীর গতির সà§à¦Ÿà§à¦°à¦¿à¦®.%s \n"
+msgid "Stream underrun.%s"
+msgstr "ধীর গতির সà§à¦Ÿà§à¦°à¦¿à¦®.%s"
# overrun=the stream fills up the allocated buffer space and there is no more space for it
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® মাতà§à¦°à¦¾ অতিকà§à¦°à¦® করেছে।%s \n"
+msgid "Stream overrun.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® মাতà§à¦°à¦¾ অতিকà§à¦°à¦® করেছে।%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® আরমà§à¦­ করা হয়েছে। %s \n"
+msgid "Stream started.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® আরমà§à¦­ করা হয়েছে। %s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "%s ডিভাইসে সà§à¦Ÿà§à¦°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হয়েছে (%u, %ssuspended)।%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "%s ডিভাইসে সà§à¦Ÿà§à¦°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা হয়েছে (%u, %ssuspended)।%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "না "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® বাফারের অà§à¦¯à¦¾à¦Ÿà§à¦°à¦¿à¦¬à¦¿à¦‰à¦Ÿ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে। %s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦® বাফারের অà§à¦¯à¦¾à¦Ÿà§à¦°à¦¿à¦¬à¦¿à¦‰à¦Ÿ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে। %s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হয়েছে।%s \n"
+msgid "Connection established.%s"
+msgstr "সংযোগ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হয়েছে।%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "সংযোগ বিফল: %s\n"
+msgid "Connection failure: %s"
+msgstr "সংযোগ বিফল: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "ফাইলের সমাপà§à¦¤à¦¿ সনাকà§à¦¤ হয়েছে। \n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "ফাইলের সমাপà§à¦¤à¦¿ সনাকà§à¦¤ হয়েছে।"
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "write() failed: %s"
+msgstr "write() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../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:557
+msgid "Got signal, exiting."
+msgstr "সিগনà§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হবে।"
# latency here = delay (technical term
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "লেটেনà§à¦¸à¦¿à¦° পরিমাণ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "লেটেনà§à¦¸à¦¿à¦° পরিমাণ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "সময়: %0.3f সেকেনà§à¦¡; লেটেনà§à¦¸à¦¿: %0.0f usec. \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "সময়: %0.3f সেকেনà§à¦¡; লেটেনà§à¦¸à¦¿: %0.0f usec।"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() বà§à¦¯à¦°à§à¦¥: %s"
+# reverting this to english because the command line text gets messed up
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1495,49 +1387,59 @@ msgid ""
msgstr ""
"%s [options]\n"
"\n"
-" -h, --help à¦à¦‡ সাহাযà§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
-" --version সংসà§à¦•à¦°à¦£ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
"\n"
-" -r, --record রেকরà§à¦¡à¦¿à¦‚য়ের জনà§à¦¯ সংযোগ সà§à¦¥à¦¾à¦ªà¦¨ করা হবে\n"
-" -p, --playback পà§à¦²à§‡-বà§à¦¯à¦¾à¦•à§‡à¦° জনà§à¦¯ সংযোগ সà§à¦¥à¦¾à¦ªà¦¨ করা হবে\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
"\n"
-" -v, --verbose ভারà§à¦¬à§‹à¦¸ করà§à¦® সকà§à¦°à¦¿à§Ÿ করা হবে\n"
+" -v, --verbose Enable verbose operations\n"
"\n"
-" -s, --server=SERVER সংযোগ করার জনà§à¦¯ চিহà§à¦¨à¦¿à¦¤ সারà§à¦­à¦¾à¦°à§‡à¦° নাম\n"
-" -d, --device=DEVICE সংযোগ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ চিহà§à¦¨à¦¿à¦¤ সিংক/"
-"সোরà§à¦¸à§‡à¦° নাম\n"
-" -n, --client-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° পরিচয়\n"
-" --stream-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° পরিচয়\n"
-" --volume=VOLUME 0...65536 সীমার মধà§à¦¯à§‡ পà§à¦°à¦¾à¦°à¦®à§à¦­à¦¿à¦• "
-"(লিনিয়ার) আওয়াজ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨\n"
-" --rate=SAMPLERATE Hz অনà§à¦¯à¦¾à§Ÿà§€ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ ডিফলà§à¦Ÿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° "
-"মাতà§à¦°à¦¾ (ডিফলà§à¦Ÿ মান 44100)\n"
-" --format=SAMPLEFORMAT সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° ধরন, সমà§à¦­à¦¾à¦¬à§à¦¯ মান হল s16le, "
+" -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 "
-"(ডিফলà§à¦Ÿ মান s16ne)\n"
-" --channels=CHANNELS চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° সংখà§à¦¯à¦¾, মোনোর কà§à¦·à§‡à¦¤à§à¦°à§‡ 1, "
-"সà§à¦Ÿà¦¿à¦°à¦¿à¦“র কà§à¦·à§‡à¦¤à§à¦°à§‡ 2\n"
-" (ডিফলà§à¦Ÿ মান 2)\n"
-" --channel-map=CHANNELMAP ডিফলà§à¦Ÿà§‡à¦° পরিবরà§à¦¤à§‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° "
-"মà§à¦¯à¦¾à¦ª\n"
-" --fix-format যে সিংকের সাথে সà§à¦Ÿà§à¦°à¦¿à¦® সংযোগ সà§à¦¥à¦¾à¦ªà¦¨ "
-"করেছে, সেটি থেকে সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦°\n"
-" বিনà§à¦¯à¦¾à¦¸ পà§à¦°à¦¾à¦ªà§à¦¤ করà§à¦¨à¥¤\n"
-" --fix-rate যে সিংকের সাথে সà§à¦Ÿà§à¦°à¦¿à¦® সংযোগ সà§à¦¥à¦¾à¦ªà¦¨ "
-"করেছে, সেটি থেকে সà§à¦¯à¦¾à¦®à§à¦ªà¦²à¦¿à¦‚য়ের\n"
-" হার পà§à¦°à¦¾à¦ªà§à¦¤ করà§à¦¨à¥¤\n"
-" --fix-channels যে সিংকের সাথে সà§à¦Ÿà§à¦°à¦¿à¦® সংযোগ সà§à¦¥à¦¾à¦ªà¦¨ "
-"করেছে, সেটি থেকে চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° সংখà§à¦¯à¦¾ ও\n"
-" চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° নাম পà§à¦°à¦¾à¦ªà§à¦¤ করà§à¦¨à¥¤\n"
-" --no-remix চà§à¦¯à¦¾à¦¨à§‹à¦² আপ-মিকà§à¦¸ অথবা ডাউন-মিকà§à¦¸ করা "
-"হবে না।\n"
-" --no-remap নামের পরিবরà§à¦¤à§‡ ইনà§à¦¡à§‡à¦•à§à¦¸ অনà§à¦¯à¦¾à§Ÿà§€ চà§à¦¯à¦¾à¦¨à§‡à¦² "
-"মà§à¦¯à¦¾à¦ª করা হয়।\n"
-" --latency=BYTES বাইট অনà§à¦¯à¦¾à§Ÿà§€ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ লেটেনà§à¦¸à¦¿à¦° অনà§à¦°à§‹à¦§ "
-"জানান।\n"
-" --process-time=BYTES বাইট অনà§à¦¯à¦¾à§Ÿà§€, পà§à¦°à¦¤à¦¿à¦Ÿà¦¿ অনà§à¦°à§‹à¦§à§‡à¦° জনà§à¦¯ "
-"নিরà§à¦§à¦¾à¦°à¦¿à¦¤ পà§à¦°à¦¸à§‡à¦¸ সময় অনà§à¦°à§‹à¦§ জানিয়ে দিন।\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"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1550,136 +1452,131 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° নাম '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² পদà§à¦§à¦¤à¦¿ '%s' বৈধ নয়।"
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "সà§à¦Ÿà§à¦°à¦¿à¦®à§‡à¦° নাম '%s' বৈধ নয়।"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বৈধ নয়\n"
+msgid "Invalid channel map '%s'"
+msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦² মà§à¦¯à¦¾à¦ª '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "লেটেনà§à¦¸à¦¿à¦° জনà§à¦¯ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়\n"
+msgid "Invalid latency specification '%s'"
+msgstr "লেটেনà§à¦¸à¦¿à¦° জনà§à¦¯ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "পà§à¦°à¦¸à§‡à¦¸à§‡à¦° সময়ের বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়\n"
+msgid "Invalid process time specification '%s'"
+msgstr "পà§à¦°à¦¸à§‡à¦¸à§‡à¦° সময়ের বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² পদà§à¦§à¦¤à¦¿ '%s' বৈধ নয়।"
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "বৈশিষà§à¦Ÿà§à¦¯ '%s' বৈধ নয়।"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "ফাইলের অজানা বিনà§à¦¯à¦¾à¦¸ %s।"
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "অবৈধ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² নিরà§à¦§à¦¾à¦°à¦¿à¦¤\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "অবৈধ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² নিরà§à¦§à¦¾à¦°à¦¿à¦¤"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿà¥¤\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "অতà§à¦¯à¦¾à¦§à¦¿à¦• আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿà¥¤"
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° মান নিরà§à¦§à¦¾à¦°à¦£à§‡à¦° ফাইল নিরà§à¦®à¦¾à¦£ করতে বà§à¦¯à¦°à§à¦¥"
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ফাইল থেকে সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: ফাইল থেকে চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª নিরà§à¦§à¦¾à¦°à¦£ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª ও সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° মাপে গরমিল\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª ও সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° নিরà§à¦§à¦¾à¦°à¦¿à¦¤ মানে গরমিল"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: ফাইলের মধà§à¦¯à§‡ চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª লিখতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "à¦à¦•à¦Ÿà¦¿ %s সà§à¦Ÿà§à¦°à¦¿à¦® '%s' সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² বৈশিষà§à¦Ÿà§à¦¯ সহ খোলা হচà§à¦›à§‡à¥¤\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"à¦à¦•à¦Ÿà¦¿ %s সà§à¦Ÿà§à¦°à¦¿à¦® খোলা হচà§à¦›à§‡à¥¤ à¦à¦Ÿà¦¿à¦° জনà§à¦¯ '%s'-র সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° নিরà§à¦§à¦¾à¦°à¦¿à¦¤ মান ও '%s' "
+"চà§à¦¯à¦¾à¦¨à§‡à¦²à§‡à¦° মà§à¦¯à¦¾à¦ª পà§à¦°à§Ÿà§‹à¦— করা হবে।"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "রেকরà§à¦¡ করা হচà§à¦›à§‡"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() বà§à¦¯à¦°à§à¦¥à¥¤"
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1706,7 +1603,12 @@ msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: শবà§à¦¦à§‡à¦° সারà§à¦­à¦¾à¦°à¦Ÿà¦¿ সà§à¦¥à¦¾à¦¨à§€à§Ÿ নয় ও সà§à¦¥à¦—িত করা হচà§à¦›à§‡ না।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "সংযোগ বিফল: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হয়েছে।\n"
@@ -1746,33 +1648,48 @@ msgstr ""
"libpulse সহযোগে কমà§à¦ªà¦¾à¦‡à¦² করা হয়েছে %s\n"
"libpulse-র সাথে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
+
+#: ../src/utils/pasuspender.c:298
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "পরিসংখà§à¦¯à¦¾à¦¨: %s\n"
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "পরিসংখà§à¦¯à¦¾à¦¨ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "বরà§à¦¤à¦®à¦¾à¦¨à§‡ বà§à¦¯à¦¬à¦¹à§ƒà¦¤: %u বà§à¦²à¦•à§‡à¦° মধà§à¦¯à§‡ উপসà§à¦¥à¦¿à¦¤ সরà§à¦¬à¦®à§‹à¦Ÿ %s বাইট।\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"সমà§à¦ªà§‚রà§à¦£ করà§à¦®à¦•à¦¾à¦²à§‡à¦° জনà§à¦¯ বরাদà§à¦¦ করা হয়েছে: %u বà§à¦²à¦•à§‡à¦° মধà§à¦¯à§‡ উপসà§à¦¥à¦¿à¦¤ সরà§à¦¬à¦®à§‹à¦Ÿ %s বাইট।\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² কà§à¦¯à¦¾à¦¶à§‡à¦° মাপ: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "সারà§à¦­à¦¾à¦° সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "সারà§à¦­à¦¾à¦° সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1795,12 +1712,12 @@ msgstr ""
"ডিফলà§à¦Ÿ সোরà§à¦¸: %s\n"
"কà§à¦•à¦¿: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "সিংক সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "sink সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1839,22 +1756,22 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tপà§à¦°à§‹à¦«à¦¾à¦‡à¦²:\n"
+msgstr "\tপোরà§à¦Ÿ:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tসকà§à¦°à¦¿à§Ÿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²: %s\n"
+msgstr "\tসকà§à¦°à¦¿à§Ÿ পোরà§à¦Ÿ: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "সোরà§à¦¸ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "উৎস সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1893,20 +1810,20 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "মডিউল সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "মডিউল সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1923,12 +1840,12 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1943,12 +1860,12 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "কারà§à¦¡ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "কারà§à¦¡ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1965,22 +1882,22 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tপà§à¦°à§‹à¦«à¦¾à¦‡à¦²:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tসকà§à¦°à¦¿à§Ÿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "সিংক ইনপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "sink ইনপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2017,12 +1934,12 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "সোরà§à¦¸ আউটপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "উৎস আউটপà§à¦Ÿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2051,13 +1968,13 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ করতে বà§à¦¯à¦°à§à¦¥: %s"
# Lazy = low quality sample
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2088,22 +2005,27 @@ msgstr ""
"\tবিবিধ বৈশিষà§à¦Ÿà§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "বà§à¦¯à¦°à§à¦¥à¦¤à¦¾: %s\n"
+msgid "Failure: %s"
+msgstr "বà§à¦¯à¦°à§à¦¥à¦¤à¦¾: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² আপলোড করতে বà§à¦¯à¦°à§à¦¥: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² আপলোড করতে বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "সমà§à¦ªà§‚রà§à¦£ হওয়ার পূরà§à¦¬à§‡ ফাইল সমাপà§à¦¤ হয়েছে\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "সমà§à¦ªà§‚রà§à¦£ হওয়ার পূরà§à¦¬à§‡ ফাইল সমাপà§à¦¤ হয়েছে"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করা হয়েছে।"
+
+# reverting to english because the command line output gets messed up
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2111,15 +2033,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2135,21 +2063,31 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
-" -h, --help à¦à¦‡ সাহাযà§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
-" --version সংসà§à¦•à¦°à¦£ সংখà§à¦¯à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
"\n"
-" -s, --server=SERVER সংযোগ করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ চিহà§à¦¨à¦¿à¦¤ সারà§à¦­à¦¾à¦°\n"
-" -n, --client-name=NAME সারà§à¦­à¦¾à¦°à§‡à¦° মধà§à¦¯à§‡ à¦à¦‡ কà§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° পরিচয়\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
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2160,77 +2098,106 @@ msgstr ""
"libpulse সহযোগে কমà§à¦ªà¦¾à¦‡à¦² করা %s\n"
"libpulse-র সাথে যà§à¦•à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "লোড করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অনà§à¦—à§à¦°à¦¹ করে à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করà§à¦¨\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "লোড করার উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ অনà§à¦—à§à¦°à¦¹ করে à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করà§à¦¨"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "শবà§à¦¦à§‡à¦° ফাইল খà§à¦²à¦¤à§‡ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "à¦à¦•à¦Ÿà¦¿ %s সà§à¦Ÿà§à¦°à¦¿à¦® '%s' সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² বৈশিষà§à¦Ÿà§à¦¯ সহ খোলা হচà§à¦›à§‡à¥¤\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: ফাইল থেকে সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦²à§‡à¦° নিরà§à¦§à¦¾à¦°à¦¿à¦¤ মাপ নিরà§à¦®à¦¾à¦£ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "বাজানোর উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "বাজানোর উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "অপসারণের উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "অপসারণের উদà§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§‡à¦² ফাইল উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সিংক নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সিংক নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "সোরà§à¦¸ আউটপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "সোরà§à¦¸ আউটপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "মডিউলের নাম ও আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "মডিউলের নাম ও আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "মডিউল ইনà§à¦¡à§‡à¦•à§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "মডিউল ইনà§à¦¡à§‡à¦•à§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
-msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সিংক নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤\n"
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সিংক নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
-msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤\n"
+"value."
+msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• সোরà§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ করা যাবে না। বà§à¦²à¦¿à§Ÿà§‡à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•à¥¤"
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "কারà§à¦¡à§‡à¦° নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "sink-র নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পোরà§à¦Ÿà§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "উৎসের নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পোরà§à¦Ÿà§‡ নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "কোনো কমানà§à¦¡ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি।\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "sink-র নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ পোরà§à¦Ÿà§‡à¦° নাম উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() বà§à¦¯à¦°à§à¦¥: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "অবৈধ শবà§à¦¦à§‡à¦° মাতà§à¦°à¦¾ নিরà§à¦§à¦¾à¦°à¦¿à¦¤"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "উৎসের নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ শবà§à¦¦à§‡à¦° মাতà§à¦°à¦¾ উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও শবà§à¦¦à§‡à¦° মাতà§à¦°à¦¾ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ বৈধ নয়"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "sink-র নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও à¦à¦•à¦Ÿà¦¿ নিঃশবà§à¦¦à¦¤à¦¾à¦° বà§à¦²à¦¿à§Ÿà¦¾à¦¨ উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "উৎসের নাম/ইনà§à¦¡à§‡à¦•à§à¦¸ ও নিঃশবà§à¦¦à¦¤à¦¾à¦° বà§à¦²à¦¿à§Ÿà¦¾à¦¨ উলà§à¦²à§‡à¦– করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ ও নিঃশবà§à¦¦à¦¤à¦¾à¦° বà§à¦²à¦¿à§Ÿà¦¾à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করা আবশà§à¦¯à¦•"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "অবৈধ সিংক ইনপà§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ নিরà§à¦§à¦¾à¦°à¦¿à¦¤"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "কোনো বৈধ কমানà§à¦¡ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হয়নি।"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2311,48 +2278,48 @@ msgstr "কà§à¦•à¦¿ সংকà§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ লোড করà¦
msgid "Not yet implemented.\n"
msgstr "à¦à¦–নো বাসà§à¦¤à¦¬à¦¾à§Ÿà¦¿à¦¤ হয়নি।\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "PulseAudio ডেমন চলছে না অথবা সেশানের ডেমন রূপে চলছে না।"
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডেমন kill করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ডেমন থেকে কোনো পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à§Ÿà¦¾ পাওয়া যাচà§à¦›à§‡ না।"
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn লক পà§à¦°à§Ÿà§‹à¦— করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2369,7 +2336,7 @@ msgstr ""
"POLLOUT set দà§à¦¬à¦¾à¦°à¦¾ চেতাবনী সৃষà§à¦Ÿà¦¿ হয়েছে -- পরবরà§à¦¤à§€ snd_pcm_avail() থেকে 0 অথবা < "
"min_avail-র থেকে কম অনà§à¦¯ à¦à¦•à¦Ÿà¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2387,127 +2354,22 @@ msgstr ""
"min_avail-র থেকে কম অনà§à¦¯ à¦à¦•à¦Ÿà¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হয়েছে।"
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "হাই-ফিডেলিটি পà§à¦²à§‡-বà§à¦¯à¦¾à¦• (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "হাই-ফিডেলিটি কà§à¦¯à¦¾à¦ªà¦šà¦¾à¦° (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "টেলিফোনি ডà§à¦ªà§à¦²à§‡ (HSP/HFP)"
#: ../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 878e2293..ff8113cd 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -5,6 +5,7 @@
# Xavier Conde Rueda <xavi.conde@gmail.com>, 2008.
# Agustí Grau <fletxa@gmail.com>, 2009.
# Judith Pintó Subirada <judithp@gmail.com>
+# Josep Torné Llavall <josep.torne@gmail.com>, 2009
#
# 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
@@ -23,15 +24,20 @@ 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: 2009-06-10 18:47+0200\n"
-"Last-Translator: Judith Pintó Subirada <judithp@gmail.com>\n"
-"Language-Team: \n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-05 11:40+0100\n"
+"Last-Translator: Tomàs Bigordà <t0mynoker@gmail.com>\n"
+"Language-Team: Catalan <fedora@softcatala.net>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -44,7 +50,7 @@ msgstr ""
"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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -57,7 +63,7 @@ msgstr ""
"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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -70,9 +76,17 @@ msgstr ""
"Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu "
"d'aquest incident als desenvolupadors de l'ALSA."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Conducte virtual LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -82,12 +96,26 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<nom per al conducte> sink_properties=<propietats per al conducte> "
+"master=<nom del conducte del filtre> format=<format de mostra> rate=<ràtio "
+"de mostra> channels=<nombre de canals> channel_map=<mapa de canals> "
+"pulgin=<nom del connector ladspa> label=<etiqueta del connector ladspa> "
+"control=<llista separada per comes dels valors de control d'entrada>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Sortida %s"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Audio intern"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Mòdem"
@@ -103,223 +131,92 @@ msgstr "No s'ha pogut allotjar el nou carregador dl."
msgid "Failed to add bind-now-loader."
msgstr "No s'ha pogut afegir bind-now-loader."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "No s'ha pogut connectar al bus del sistema: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-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 l'UID en l'objecte crida."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-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 definir l'UID en l'objecte sessió."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "No s'ha pogut assignar PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "No s'ha pogut definir action_id"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "No s'ha pogut assignar PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-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 "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 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:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "S'ha obtingut la senyal %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "S'està sortint."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "No s'ha trobat l'usuari '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "No s'ha trobat el grup '%s'."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "No s'ha pogut crear '%s': %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
-msgstr "No s'ha pogut canviar la llista del grup :%s"
+msgstr "No s'ha pogut canviar la llista del grup: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "No s'ha pogut canviar el GID: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "No s'ha pogut canviar l'UID: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "S'han alliberat els permisos de root."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "El mode de sistema global no és compatible amb aquesta plataforma."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, 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:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "No s'ha pogut interpretar la línia d'ordres."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit ha permés el privilegi acquire-high-priority."
-
-#: ../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:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit ha permés el privilegi acquire-real-time."
-
-#: ../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: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 ""
-"S'ha demanat SUID de root i una planificació de temps real i/o d'alta "
-"prioritat. De totes formes, falten els privilegis necessaris:\n"
-"No es pertany al grup '%s'. PolicyKit no atorga els privilegis demanats i no "
-"s'ha incrementat els límits de recursos RLIMIT_NICE/RLIMIT_RTPRIO.\n"
-"Per habilitar la planificació en temps real o d'alta prioritat, heu "
-"d'obtenir els privilegis de PolicyKits adequats, o pertànyer al grup '%s', o "
-"incrementar els límits de recursos de RLIMIT_NICE/RLIMIT_RTPRIO per a aquest "
-"usuari."
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit."
-
-#: ../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:624
-msgid "Giving up CAP_NICE"
-msgstr "S'abandona CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "El dimoni no s'està executant"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "El dimoni s'està executant amb PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "S'ha produït un error en matar el dimoni: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -327,158 +224,163 @@ msgstr ""
"No és necessari executar aquesta aplicació com a root (excepte si "
"s'especifica --system)"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Es requereixen privilegis de root."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "La opció --start no està suportada per a instàncies de sistema."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
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:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "S'ha produït un error en adquirir stdio."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "Ha fallat la canonada: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "Ha fallat fork(): %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "Ha fallat read(): %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "S'ha produït un error en iniciar el dimoni."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "S'ha iniciat el dimoni."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Aquest és el PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilació: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilació: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "S'està executant en el host: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "S'han trobat %u CPU's"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "La mida de pàgina és de %lu bytes."
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Compilat amb suport per a Valgrind: sí"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Compilat amb suport per a Valgrind: no"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "S'està executant amb el mode valgrind: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Construcció optimitzada: sí"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Construcció optmitzada: no"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG està definit, s'han desactivat totes les assercions."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
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:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "S'han habilitat totes les assercions."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "No s'ha pogut obtenir l'ID de la màquina"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la màquina és %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "L'ID de la màquina és %s."
+msgstr "L'ID de la sessió és %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "S'està utilitzant el directori d'execució %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "S'està utilitzant el directori dels móduls %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -487,16 +389,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"Esteu utilitzant el PA en mode sistema. Tingueu en compte que molt "
+"probablement no hauríeu de fer-ho.\n"
+"No obstant això, si ho feu és la vostra responsabilitat si no funciona com "
+"s'esperava.\n"
+"Si us plau, llegiu http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per "
+"a una explicació de per què el mode sistema sol ser una mala idea."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Estan disponibles els temporitzadors frescos d'alta resolució."
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -504,27 +412,27 @@ msgstr ""
"Es recomana la utilització d'un nucli amb els temporitzadors d'alta "
"resolució habilitats."
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "El dimoni s'ha iniciat sense cap mòdul carregat, no funcionarà."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
@@ -624,7 +532,7 @@ msgstr ""
"inicialització\n"
" --fail[=BOOL] Surt quan falli la inicialització\n"
" --high-priority[=BOOL] Prova d'establir un nivell de \n"
-" prioritat alt (només disponible com "
+" Prioritat alta (només disponible com "
"a root,\n"
" amb SUID o amb un RLIMIT_NICE "
"elevat)\n"
@@ -658,12 +566,12 @@ msgstr ""
"missatges de registre\n"
" --log-time[=BOOL] Inclou marques de temps en els "
"missatges de registre\n"
-" --log-backtrace=FRAMES Inclou una traça en els missatges de "
+" --log-backtrace=MARCS Inclou una traça en els missatges de "
"registre\n"
-" -p, --dl-search-path=CAMI Estableix el camí de cerca "
+" -p, --dl-search-path=CAMà Estableix el camí de cerca "
"d'objectes dinàmics\n"
" compartits (plugins)\n"
-" --resample-method=METODE Utilitza el mètode de remostreig\n"
+" --resample-method=MÈTODE Utilitza el mètode de remostreig\n"
" (Per veure els valors possibles "
"utilitza --dump-resample-methods)\n"
" --use-pid-file[=BOOL] Crea un fitxer PID\n"
@@ -674,7 +582,7 @@ msgstr ""
"compartida.\n"
"\n"
"SCRIPT D'INICI:\n"
-" -L, --load=\"ARGUMENTS MODUL\" Carrega el mòdul especificat amb\n"
+" -L, --load=\"ARGUMENTS MÒDUL\" Carrega el mòdul especificat amb\n"
" els arguments especificats\n"
" -F, --file=NOMFITXER Executa l'script especificat\n"
" -C Obre una línia d'ordres en la TTY "
@@ -787,79 +695,79 @@ msgstr "Càrrega: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "Advertència d'obsolescència: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destí de registre incorrecte '%s'"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivell de registre incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format de mostra incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Velocitat de mostreig '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canals incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -867,18 +775,14 @@ msgstr ""
"El mapa de canals especificat per omissió té un número de canals diferent "
"del número de canals especificat per omissió."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lectura del fitxer de configuració: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Alliberant els privilegis de root."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "S'han limitat les capacitats cap a CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Alliberant els privilegis."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -888,31 +792,7 @@ msgstr "Sistema de so PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Inicialitza el sistema de so PulseAudio"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-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
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Programació en temps real per al dimoni PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"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:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1116,33 +996,33 @@ msgstr "Superior posterior esquerra"
msgid "Top Rear Right"
msgstr "Superior posterior dreta"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(incorrecte)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Estèreo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Envolvent 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Envolvent 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Envolvent 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Envolvent 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Envolvent 7.1"
@@ -1246,27 +1126,35 @@ msgstr "Manca la implementació"
msgid "Client forked"
msgstr "Client bifurcat"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1279,194 +1167,193 @@ msgstr "Ha fallat XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "Ha fallat el parseig de les dades de la cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "S'ha produït un error en obrir el fitxer de configuració '%s': %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "No s'ha carregat cap cookie. S'està intentant connectar sense aquesta."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "S'ha rebut un missatge per a una extensió desconeguda '%s'"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "S'ha produït un error en drenar el fluxe: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "S'ha produït un error en drenar el fluxe: %s"
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Flux de reproducció drenat."
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Flux de reproducció drenat.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "S'està drenant la connexió amb el servidor."
-#: ../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:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "Ha fallat pa_stream_write(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "Ha fallat pa_stream_write(): %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "Ha fallat pa_stream_begin_write(): %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "Ha fallat pa_stream_peek(): %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "Ha fallat pa_stream_peek(): %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Flux creat correctament.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Flux creat correctament."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "Ha fallat pa_stream_get_buffer_attr(): %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "Ha fallat pa_stream_get_buffer_attr(): %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Mètriques del búffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Mètriques del búffer: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Mètriques del búffer: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
msgstr ""
"S'estan utilitzant les especificacions de mostreig '%s', mapejat del canal '%"
-"s'.\n"
+"s'."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "S'ha connectat al dispositiu %s (%u, %ssuspés).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "S'ha connectat al dispositiu %s (%u, %ssuspès)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "S'ha produït un error en l'stream: %s\n"
+msgid "Stream error: %s"
+msgstr "S'ha produït un error en l'stream: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Flux del dispositiu suspés.%s\n"
+msgid "Stream device suspended.%s"
+msgstr "Flux del dispositiu suspès.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Flux del dispositiu représ.%s\n"
+msgid "Stream device resumed.%s"
+msgstr "Flux del dispositiu reprès.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Dades insuficients al flux .%s\n"
+msgid "Stream underrun.%s"
+msgstr "Dades insuficients al flux.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Desbordament de flux.%s\n"
+msgid "Stream overrun.%s"
+msgstr "Desbordament de flux.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "S'ha iniciat el flux.%s\n"
+msgid "Stream started.%s"
+msgstr "S'ha iniciat el flux.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "S'ha mogut el flux al dispositiu %s (%u, %ssuspés).%s\n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "S'ha mogut el flux al dispositiu %s (%u, %ssuspès).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
-msgstr "no"
+msgstr "no "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Atributs del fluxe de la memòria intermèdia canviats.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Els atributs del flux de memòria intermèdia han canviat.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "S'ha establert la connexió.%s\n"
+msgid "Connection established.%s"
+msgstr "S'ha establert la connexió.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "Ha fallat pa_stream_new(): %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "Ha fallat pa_stream_new(): %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "Ha fallat pa_stream_connect_playback(): %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "Ha fallat pa_stream_connect_playback(): %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "Ha fallat pa_stream_connect_record(): %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "Ha fallat pa_stream_connect_record(): %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Ha fallat la connexió: %s\n"
+msgid "Connection failure: %s"
+msgstr "Ha fallat la connexió: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "S'ha llegit EOF.\n"
-
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "Ha fallat read(): %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "S'ha llegit el fi del fitxer."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "Ha fallat write(): %s\n"
+msgid "write() failed: %s"
+msgstr "Ha fallat write(): %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "S'ha rebut un senyal, s'està sortint.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "S'ha rebut un senyal, s'està sortint."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "No s'ha pogut obtenir la latència: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "No s'ha pogut obtenir la latència: %s"
-#: ../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:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "Temps: %0.3f segs; Latència: %0.0f microsegs. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "Ha fallat pa_stream_update_timing_info(): %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "Ha fallat pa_stream_update_timing_info(): %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1542,7 +1429,8 @@ msgstr ""
"connectar-se\n"
" -n, --client-name=NOM Com cridar aquest client al "
"servidor\n"
-" --stream-name=NOM Com cridar aquest flux al servidor\n"
+" --stream-name=NOM Com cridar aquest flux de dades 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 "
@@ -1555,7 +1443,7 @@ msgstr ""
"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 "
+" --format-fix Pren el format de mostra del "
"conducte al qual s'està connectant\n"
" el flux.\n"
" --fix-rate Pren la velocitat de mostreig del "
@@ -1564,13 +1452,21 @@ msgstr ""
" --fix-channels Pren el número de canals i el mapa "
"de canals del\n"
" conducte al qual s'està connectant "
-"el flux.\n"
+"el flux de dades.\n"
" --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"
+" --latencia=BYTES Sol·licita la latència en bytes.\n"
" --process-time=BYTES Sol·licita el temps de procés per "
"petició en bytes.\n"
+" --property=PROPIETAT=VALOR Establir la propietat especificada "
+"per al valor especificat.\n"
+" --raw Gravació/reproducció de dades crues "
+"PCM.\n"
+" --format-fitxer=FFORMAT Gravació/reproducció de dades amb "
+"format PCM.\n"
+" --list-file-formats Llista disponible de formats de "
+"fitxer.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1583,136 +1479,132 @@ msgstr ""
"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Nom del client invàlid '%s'"
-#: ../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:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Nom de flux de dades invàlid '%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Mapa de canals invàlid '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "Mapa de canals invàlid '%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Especificació de latència invàlida '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Especificació de latència invàlida '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Especificació de temps de procés invàlida '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Especificació de temps de procés invàlida '%s'"
-#: ../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:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Propietat invàlida '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Format desconegut de fitxer %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Especificació de mostra invàlida\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Especificació de mostra invàlida"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Hi han massa arguments.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Massa arguments."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "No s'ha pogut generar l'especificació de mostra del fitxer."
-#: ../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:949
+msgid "Failed to open audio file."
+msgstr "No s'ha pogut obrir el fitxer d'àudio."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Advertència: l'especificació de mostra especificada se sobreescriurà amb "
+"l'especificació del fitxer."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "No s'ha pogut determinar l'especificació de mostra del fitxer."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
msgstr ""
+"Advertència: no s'ha pogut determinar el mapeig de canals des del fitxer."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "El mapa de canals no coincideix amb l'especificació de mostra"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Advertència: no s'ha pogut escriure el mapa de canals en un fitxer."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, 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"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"S'està obrint un flux de dades %s amb especificació de mostra '%s' i mapa de "
+"canals '%s'."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "enregistrant"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "reproducció"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "Ha fallat el pa_mainloop_new()."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "Ha fallat io_new().\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "Ha fallat el io_new()."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "Ha fallat el pa_context_new()."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "Ha fallat pa_context_connect(): %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "Ha fallat time_new().\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "Ha fallat el pa_context_new()."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "Ha fallat el pa_mainloop_run()."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1739,7 +1631,12 @@ msgstr "No s'ha pogut en rependre: %s\n"
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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Ha fallat la connexió: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "S'ha rebut SIGINT, s'està sortint.\n"
@@ -1779,34 +1676,49 @@ msgstr ""
"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "No s'han pogut obtenir les estadístiques: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "Ha fallat el pa_mainloop_new().\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "Ha fallat el pa_context_new().\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "Ha fallat el pa_mainloop_run().\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "No s'han pogut obtenir les estadístiques: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
"Actualment s'estan utilitzant: %u blocs que contenen %s bytes en total.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Allotjats durant el temps de vida: %u blocs que contenen %s bytes en total.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Mida de la memòria cau de mostres: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "No s'ha pogut obtenir la informació del servidor: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "No s'ha pogut obtenir la informació del servidor: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1829,12 +1741,12 @@ msgstr ""
"Font per omissió: %s\n"
"Galeta: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "No s'ha pogut obtenir la informació del conducte: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "No s'ha pogut obtenir la informació del conducte: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1873,22 +1785,22 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tPerfils:\n"
+msgstr "\tPorts:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tPerfil actiu: %s\n"
+msgstr "\tPort actiu: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "No s'ha pogut obtenir la informació de la font: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "No s'ha pogut obtenir la informació de la font: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1927,20 +1839,20 @@ msgstr ""
"\tPropietats:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
-msgstr "n/d"
+msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "No s'ha pogut obtenir informació del mòdul: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "No s'ha pogut obtenir informació del mòdul: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1957,12 +1869,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "No s'ha pogut obtenir informació del client: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "No s'ha pogut obtenir informació del client: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1977,12 +1889,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "No s'ha pogut obtenir la informació de la targeta: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "No s'ha pogut obtenir la informació de la targeta: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1999,22 +1911,22 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPerfils:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tPerfil actiu: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "No s'ha pogut obtenir informació del conducte d'entrada: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "No s'ha pogut obtenir informació del conducte d'entrada: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2051,12 +1963,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "No s'ha pogut obtenir la informació del conducte de sortida: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "No s'ha pogut obtenir la informació del conducte de sortida: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2085,12 +1997,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "No s'ha pogut obtenir informació de la mostra: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "No s'ha pogut obtenir informació de la mostra: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2121,22 +2033,26 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "Ha fallat: %s\n"
+msgid "Failure: %s"
+msgstr "Ha fallat: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "No s'ha pogut pujar la mostra: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "No s'ha pogut pujar la mostra: %s"
-#: ../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:704
+msgid "Premature end of file"
+msgstr "S'ha trobat un fi de fitxer prematurament"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "S'ha rebut SIGINT, s'està sortint."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2144,15 +2060,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2168,23 +2090,30 @@ msgstr ""
"%s [opcions] upload-sample NOMFITXER [NOM]\n"
"%s [opcions] play-sample NOM [CONDUCTE]\n"
"%s [opcions] remove-sample NOM\n"
-"%s [opcions] move-sink-input ID CONDUCTE\n"
-"%s [opcions] move-source-output ID FONT\n"
-"%s [opcions] load-module NOM [ARGS ...]\n"
-"%s [opcions] unload-module ID\n"
-"%s [opcions] suspend-sink [CONDUCTE] 1|0\n"
-"%s [opcions] suspend-source [FONT] 1|0\n"
-"%s [opcions] set-card-profile [TARGETA] [PERFIL] \n"
+"%s [opcions] move-sink-input CONDUCTEENTRADA CONDUCTE\n"
+"%s [opcions] move-source-output FONTSORTIDA FONT\n"
+"%s [opcions] load-module NOM [ARGUMENTS ...]\n"
+"%s [opcions] unload-module MÃ’DUL\n"
+"%s [opcions] suspend-sink CONDUCTE 1|0\n"
+"%s [opcions] suspend-source FONT 1|0\n"
+"%s [opcions] set-card-profile TARGETA PERFIL \n"
+"%s [opcions] set-sink-port CONDUCTE PORT \n"
+"%s [opcions] set-source-port FONT PORT \n"
+"%s [options] set-sink-volume CONDUCTE VOLUM\n"
+"%s [options] set-source-volume FONT VOLUM\n"
+"%s [options] set-sink-input-volume CONDUCTEENTRADA VOLUM\n"
+"%s [options] set-sink-mute CONDUCTE 1|0\n"
+"%s [options] set-source-mute FONT 1|0\n"
+"%s [options] set-sink-input-mute CONDUCTEENTRADA 1|0\n"
"\n"
" -h, --help Mostra aquesta ajuda\n"
" --version Mostra la versió\n"
"\n"
-" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
-"se\n"
-" -n, --client-name=NOM Com cridar aquest client al "
+" -s, --server=SERVIDOR Nom del servidor on connectar-s'hi\n"
+" -n, --client-name=NOM Com cridar aquest client en el "
"servidor\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2195,80 +2124,113 @@ msgstr ""
"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../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:979
+msgid "Please specify a sample file to load"
+msgstr "Si us plau, especifiqueu un fitxer de mostra per a carregar"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "No s'ha pogut obrir el fitxer de so.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "No s'ha pogut obrir el fitxer de so."
-#: ../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:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr ""
+"Advertiment: No s'ha pogut determinar l'especificació de mostra a partir del "
+"fitxer."
-#: ../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:1014
+msgid "You have to specify a sample name to play"
+msgstr "Heu d'especificar un nom de mostra a reproduir"
-#: ../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:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Heu d'especificar un nom de mostra a suprimir"
-#: ../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:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Heu d'especificar una entrada del conducte i un conducte"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "Heu d'especificar un índex de la font de sortida i una font\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Heu d'especificar un índex de font de sortida i una font"
-#: ../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:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Heu d'especificar un nom de mòdul i els seus arguments."
-#: ../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:1080
+msgid "You have to specify a module index"
+msgstr "Heu d'especificar un índex de mòdul"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"No haríeu d'especificar més d'un conducte. Heu d'especifcar un valor "
-"booleà.\n"
+"No haríeu d'especificar més d'un conducte. Heu d'especificar un valor booleà."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
-"No haríeu d'especificar més d'una font. Heu d'especificar un valor booleà.\n"
+"No haríeu d'especificar més d'una font. Heu d'especificar un valor booleà."
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Heu d'especificar un nom o un índex de conducte i un nom de port"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Heu d'especificar un nom o un índex de font i un nom de port"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "S'ha especificat una ordre invàlida.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Heu d'especificar un nom o un índex de conducte i un volum"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "Ha fallat pa_context_connect(): %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Especificació de volum invàlida"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Heu d'especificar un nom o un índex de font i un volum"
+
+#
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Heu d'especificar un índex entrada del conducte i un volum"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Ãndex d'entrada del conducte invàlid"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr ""
+"Heu d'especificar un nom o un índex de conducte i un booleà de silenciat"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Heu d'especificar un nom o un índex de font i un booleà de silenciat"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+"Heu d'especificar un índex d'entrada del conducte i un booleà de silenciat"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Especificació d'índex d'entrada del conducte invàlida"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Ordre especificada no vàlida."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2294,7 +2256,7 @@ msgstr ""
#: ../src/utils/pax11publish.c:94
#, c-format
msgid "Failed to parse command line.\n"
-msgstr "No s'ha pogut parsejar la línia d'ordres.\n"
+msgstr "No s'ha pogut analitzar la línia d'ordres.\n"
#: ../src/utils/pax11publish.c:108
#, c-format
@@ -2351,48 +2313,50 @@ msgstr "No s'han pogut carregar les dades de la galeta\n"
msgid "Not yet implemented.\n"
msgstr "Encara no s'ha implementat.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"El dimoni PulseAudio no s'està executant, o no s'està executant com a dimoni "
+"de la sessió."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "No s'ha pogut matar el dimoni PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "El dimoni no respon."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "No s'ha pogut accedir al bloqueig d'autospawn."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2406,10 +2370,10 @@ msgstr ""
"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 "
+"Ens han aixecat amb POLLOUT activat -- tanmateix una crida posterior a "
"snd_pcm_avail() ha retornat 0 o un altre valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2423,19 +2387,23 @@ msgstr ""
"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 "
+"Ens han aixecat amb POLLIN activat -- tanmateix una crida posterior a "
"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
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Inactiu"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Reproducció d'alta fidelitat (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Captura d'alta fidelitat (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Dúplex de telefonia (HSP/HFP)"
@@ -2443,6 +2411,149 @@ msgstr "Dúplex de telefonia (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Servidor de so PulseAudio"
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Nom del client invàlid '%s'\n"
+
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "No s'ha pogut determinar l'especificació de mostra del fitxer.\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "No s'ha pogut connectar al bus del sistema: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "No s'ha pogut obtenir una crida del PID: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "No s'ha pogut especificar l'UID en l'objecte crida."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "No s'ha pogut obtenir la sessió CK."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "No s'ha pogut definir l'UID en l'objecte sessió."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "No s'ha pogut assignar PolKitAction."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "No s'ha pogut definir action_id"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "No s'ha pogut assignar PolKitContext."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "No s'ha pogut inicialitzar PolKitContext: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "No s'ha pogut determinar si la crida està autoritzada: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "No s'ha pogut obtenir l'autorització: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit ha respós '%s'"
+
+#~ 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"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Programació en temps real per al dimoni PulseAudio"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "Les normes d'ús del sistema no permeten PulseAudio adquirir programació "
+#~ "d'alta prioritat."
+
+#~ 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."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "Ha fallat read(): %s\n"
+
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "Ha fallat el pa_context_connect(): %s\n"
+
+#~ 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."
+
+#~ 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."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "PolicyKit ha permés el privilegi acquire-high-priority."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "PolicyKit ha rebutjat el privilegi acquire-high-priority."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "PolicyKit ha permés el privilegi acquire-real-time."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "PolicyKit ha rebutjat el privilegi acquire-real-time."
+
+#~ 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 ""
+#~ "S'ha demanat SUID de root i una planificació de temps real i/o d'alta "
+#~ "prioritat. Tanmateix, falten els privilegis necessaris:\n"
+#~ "No es pertany al grup '%s'. PolicyKit no atorga els privilegis demanats i "
+#~ "no s'ha incrementat els límits de recursos RLIMIT_NICE/RLIMIT_RTPRIO.\n"
+#~ "Per habilitar la planificació en temps real o d'alta prioritat, heu "
+#~ "d'obtenir els privilegis de PolicyKit adequats, o pertànyer al grup '%s', "
+#~ "o incrementar els límits de recursos de RLIMIT_NICE/RLIMIT_RTPRIO per a "
+#~ "aquest usuari."
+
+#~ 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."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit."
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "S'abandona CAP_NICE"
+
+#~ 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."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "S'han limitat les capacitats cap a CAP_SYS_NICE."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "Ha fallat el time_new().\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Mono analògic"
@@ -2574,9 +2685,6 @@ msgstr "Servidor de so PulseAudio"
#~ msgid "Output %s + Input %s"
#~ msgstr "Sortida %s + Entrada %s"
-#~ msgid "Output %s"
-#~ msgstr "Sortida %s"
-
#~ msgid "Input %s"
#~ msgstr "Entrada %s"
diff --git a/po/cs.po b/po/cs.po
index 51ce0850..8aa4dd96 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -2,22 +2,25 @@
# 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, 2009.
-#
msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-05-03 23:57+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-09 02:43+0100\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.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=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -30,7 +33,7 @@ msgstr ""
"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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -43,7 +46,7 @@ msgstr ""
"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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -56,9 +59,17 @@ msgstr ""
"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/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Virtuální cíl LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -68,12 +79,26 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<název cíle> sink_properties=<vlastnosti cíle> master=<název "
+"filtrovaného cíle> format=<vzorkovací formát> rate=<vzorkovací frekvence> "
+"channels=<poÄet kanálů> channel_map=<mapa kanálů> plugin=<název zásuvného "
+"modulu ladspa> label=<popisek zásuvného modulu ladspa> control=<Äárkou "
+"oddělený seznam hodnot ovládání vstupu>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Výstup %s"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Vnitřní zvukový systém"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -89,218 +114,92 @@ msgstr "Nezdařilo se přidělení nového nahrávacího programu dl."
msgid "Failed to add bind-now-loader."
msgstr "Nezdařilo se přidat bind-now-loader."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Nelze se spojit se systémovou sběrnicí: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Nelze získat volajícího z PID: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Nelze nastavit UID na objekt volajícího."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Nezdařilo se získání sezení CK."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Nelze nastavit UID na objekt sezení."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Nelze alokovat PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Nelze nastavit action_id"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Nelze alokovat PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Nelze spustit PolKitContext: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "NezdaÅ™ilo se urÄit, zda je volající oprávnÄ›n: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Nezdařilo se získat oprávnění: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit odpověděl s \"%s\""
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Získán signál %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "UkonÄování."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Nezdařilo se nalézt uživatele \"%s\"."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Nezdařilo se nalézt skupinu \"%s\"."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Nezdařilo se vytvořit \"%s\": %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Nezdařilo se změnit seznam skupin: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Nezdařilo se změnit GID: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Nezdařilo se změnit UID: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Oprávnění superuživatele úspěšně zrušena."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
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:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) selhalo: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Nezdařila se analýza příkazového řádku."
-#: ../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: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: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:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit nám neudělil oprávnění acquire-high-priority."
-
-#: ../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:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit nám neudělil oprávnění acquire-real-time."
-
-#: ../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 ""
-"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: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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "Úspěšně zvýšeno RLIMIT_RTPRIO"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO selhalo: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Vzdávání se CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Démon neběží"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Démon běží jako PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zabití démona se nezdařilo: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -308,150 +207,155 @@ msgstr ""
"Tento program není urÄen ke spuÅ¡tÄ›ní pod superuživatelem (není-li zadáno --"
"system)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Jsou vyžadována oprávnění superuživatele."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start nepodporováno u systémových instancí."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
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:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Nezdařilo se získání stdio."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe selhalo: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() selhalo: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() selhalo: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Spuštění démona selhalo."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Spuštění démona bylo úspěšné."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Toto je PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "PÅ™ekladový poÄítaÄ: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Překladové CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Běží na poÄítaÄi: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Nalezen následující poÄet CPU: %u."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Velikost stránky je %lu bajtů"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Přeloženo s podporou Valgrind: ano"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Přeloženo s podporou Valgrind: ne"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Běží v režimu valgrind: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimalizované sestavení: ano"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Optimalizované sestavení: ne"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definováno, všechny výrazy zakázány."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definováno, zakázány pouze výrazy rychlých cest."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Všechny výrazy povoleny."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "NezdaÅ™ilo se získání ID poÄítaÄe"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "ID poÄítaÄe je %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "ID poÄítaÄe je %s."
+msgstr "ID sezení je %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Používán běhový adresář %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Používán stavový adresář %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Používán adresář modulů %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Běží v systémovém režimu: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -460,17 +364,23 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"Dobrá, máte tedy PA spuštěn v systémovém režimu. Vemte prosím na vědomí, že "
+"k tomuto by až na výjimeÄné situace nÄ›melo docházet.\n"
+"Pokud v této Äinnosti pÅ™esto budete pokraÄovat, nesete riziko za možné "
+"špatné a nepředvídatelné chování systému.\n"
+"VysvÄ›tlení, proÄ je systémový režim obvykle velmi Å¡patný nápad, si můžete "
+"pÅ™eÄíst na http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
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:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -478,27 +388,27 @@ 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:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Selhalo spuštění démona."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "SpuÅ¡tÄ›ní démona dokonÄeno."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Vypínání démona spuštěno."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Démon ukonÄen."
@@ -752,79 +662,79 @@ msgstr "NaÄíst jednou: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "VAROVÃNÃ ZASTARALOSTI: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Cesta: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neplatný protokolovací cíl \"%s\"."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neplatná protokolovací úroveň \"%s\"."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neplatná metoda převzorkování \"%s\"."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neplatné rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neplatný vzorkovací formát \"%s\"."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neplatná vzorkovací frekvence \"%s\"."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neplatné vzorkovací kanály \"%s\"."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neplatná mapa kanálů \"%s\"."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neplatný poÄet fragmentů \"%s\"."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveň nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "NezdaÅ™ilo se otevřít konfiguraÄní soubor: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -832,18 +742,14 @@ 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
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ÄŒtení z konfiguraÄního souboru: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Rušení superuživatelských oprávnění."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Schopnosti úspěšně omezeny na CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Rušení oprávnění."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -853,30 +759,7 @@ msgstr "Zvukový systém PulseAudio"
msgid "Start the PulseAudio Sound System"
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
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Plánování v reálném Äase démona PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"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:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1080,33 +963,33 @@ msgstr "Horní zadní levý"
msgid "Top Rear Right"
msgstr "Horní zadní pravý"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(neplatné)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1210,27 +1093,35 @@ msgstr "Scházející implementace"
msgid "Client forked"
msgstr "Klient rozvětven"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1243,193 +1134,192 @@ msgstr "XOpenDisplay() selhalo"
msgid "Failed to parse cookie data"
msgstr "Selhala analýza dat cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Selhalo otevÅ™ení konfiguraÄního souboru \"%s\": %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Žádný soubor cookie nenahrán. Pokus o spojení bez tohoto kroku."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Přijata zpráva pro neznámé rozšíření \"%s\""
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Nezdařilo se vyprázdnit proud: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Nezdařilo se vyprázdnit proud: %s"
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Proud přehrávání vyprázdně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:123
+msgid "Draining connection to server."
+msgstr "Vyprazdňování spojení se serverem."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Vyprazdňování spojení se serverem.\n"
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() selhalo: %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() selhalo: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() selhalo: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() selhalo: %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() selhalo: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Proud úspěšně vytvořen.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Proud úspěšně vytvořen."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() selhalo: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() selhalo: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
msgstr ""
-"Metrika vyrovnávací paměti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+"Metrika vyrovnávací paměti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Metrika vyrovnávací paměti: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Metrika vyrovnávací paměti: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "Používána vzorkovací specifikace \"%s\", mapa kanálů \"%s\".\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Používáno urÄení vzorku \"%s\", mapa kanálů \"%s\"."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "Připojeno k zařízení %s (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Připojeno k zařízení %s (%u, %ssuspended)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Chyba proudu: %s\n"
+msgid "Stream error: %s"
+msgstr "Chyba proudu: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Proudové zařízení pozastaveno.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "Proudové zařízení pozastaveno.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Proudové zařízení obnoveno.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "Proudové zařízení obnoveno.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Podběhnutí proudu.%s \n"
+msgid "Stream underrun.%s"
+msgstr "Podběhnutí proudu.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Přeběhnutí proudu.%s \n"
+msgid "Stream overrun.%s"
+msgstr "Přeběhnutí proudu.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Proud spuštěn.%s \n"
+msgid "Stream started.%s"
+msgstr "Proud spuštěn.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "Proud přesunut na zařízení %s (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Proud přesunut na zařízení %s (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "nikoliv "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Změněny atributy vyrovnávací paměti proudu.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Změněny atributy vyrovnávací paměti proudu.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Spojení navázáno.%s \n"
+msgid "Connection established.%s"
+msgstr "Spojení navázáno.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() selhalo: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() selhalo: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() selhalo: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() selhalo: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() selhalo: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() selhalo: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Spojení selhalo: %s\n"
+msgid "Connection failure: %s"
+msgstr "Spojení selhalo: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Získáno EOF.\n"
-
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() selhalo: %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Získáno EOF."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() selhalo: %s\n"
+msgid "write() failed: %s"
+msgstr "write() selhalo: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Získán signál, ukonÄování.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Získán signál, ukonÄování."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Nezdařilo se získat latenci: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Nezdařilo se získat latenci: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Čas: %0.3f sekund; latence: %0.0f μs. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() selhalo: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() selhalo: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1531,6 +1421,13 @@ msgstr ""
" --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"
+" --property=VLASTNOST=HODNOTA Nastaví urÄenou vlastnost na urÄenou "
+"hodnotu.\n"
+" --raw Nahrává/přehrává surová data PCM.\n"
+" --file-format=FORMÃT Nahrává/pÅ™ehrává formátovaná data "
+"PCM.\n"
+" --list-file-formats Zobrazí seznam dostupných formátů "
+"souborů.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1543,136 +1440,128 @@ msgstr ""
"Přeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Neplatný název klienta \"%s\""
-#: ../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:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Neplatný název proudu \"%s\""
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Neplatná mapa kanálů \"%s\"\n"
+msgid "Invalid channel map '%s'"
+msgstr "Neplatná mapa kanálů \"%s\""
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Neplatné upřesnění latence \"%s\"\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Neplatné upřesnění latence \"%s\""
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Neplatné upÅ™esnÄ›ní Äasu zpracování \"%s\"\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Neplatné upÅ™esnÄ›ní Äasu zpracování \"%s\""
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Neplatná metoda převzorkování \"%s\"."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Neplatná vlastnost \"%s\""
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Neznámý formát souboru %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Neplatné upřesnění vzorkování\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Neplatné urÄení vzorku"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Příliš mnoho argumentů.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Příliš mnoho argumentů."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "Selhalo vytvoÅ™ení urÄení vzorku souboru."
-#: ../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:949
+msgid "Failed to open audio file."
+msgstr "Selhalo otevření zvukového souboru."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Varování: zadané urÄení vzorku bude pÅ™epsáno urÄením získaným ze souboru."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Selhalo zjiÅ¡tÄ›ní urÄení vzorku ze souboru."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Varování: Selhalo zjištění mapy kanálů ze souboru."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "Mapa kanálů se neshoduje s urÄením vzorku"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Varování: selhal zápis mapy kanálů do souboru."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, 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"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "Otevírání proudu %s s urÄením vzorku \"%s\" a mapou kanálů \"%s\"."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "nahrávání"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "přehrávání"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() selhalo."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() selhalo.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() selhalo."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() selhalo."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() selhalo: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() selhalo.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() selhalo."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() selhalo."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1699,7 +1588,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Spojení selhalo: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Získáno SIGINT, ukonÄování.\n"
@@ -1738,32 +1632,47 @@ msgstr ""
"Přeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() selhalo.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() selhalo.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() selhalo.\n"
+
+#: ../src/utils/pactl.c:135
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "Selhalo získání statistik: %s\n"
+msgid "Failed to get statistics: %s"
+msgstr "Selhalo získání statistik: %s"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Velikost vzorkovací vyrovnávací paměti: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "Nezdařilo se získání informací o serveru: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "Nezdařilo se získání informací o serveru: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1780,18 +1689,18 @@ msgstr ""
"Název poÄítaÄe: %s\n"
"Název serveru: %s\n"
"Verze serveru: %s\n"
-"Výchozí upřesnění vzorkování: %s\n"
+"Výchozí urÄení vzorku: %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:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "Nezdařilo se získání informací o cíli: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "Nezdařilo se získání informací o cíli: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1817,7 +1726,7 @@ msgstr ""
"\tNázev: %s\n"
"\tPopis: %s\n"
"\tOvladaÄ: %s\n"
-"\tUpřesnění vzorkování: %s\n"
+"\tUrÄení vzorku: %s\n"
"\tMapa kanálů: %s\n"
"\tModul vlastníka: %u\n"
"\tZtlumení: %s\n"
@@ -1830,22 +1739,22 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tProfily:\n"
+msgstr "\tPorty:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tAktivní profil: %s\n"
+msgstr "\tAktivní port: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "Nezdařilo se získání informací o zdroji: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "Nezdařilo se získání informací o zdroji: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1871,7 +1780,7 @@ msgstr ""
"\tNázev: %s\n"
"\tPopis: %s\n"
"\tOvladaÄ: %s\n"
-"\tUpřesnění vzorkování: %s\n"
+"\tUrÄení vzorku: %s\n"
"\tMapa kanálů: %s\n"
"\tModul vlastníka: %u\n"
"\tZtlumení: %s\n"
@@ -1884,20 +1793,20 @@ msgstr ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "nic"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "Selhalo získání informací o modulu: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "Selhalo získání informací o modulu: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1914,12 +1823,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "Selhalo získání informací o klientu: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "Selhalo získání informací o klientu: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1934,12 +1843,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "Selhalo získání informací o kartě: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "Selhalo získání informací o kartě: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1956,22 +1865,22 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfily:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktivní profil: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, 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"
+msgid "Failed to get sink input information: %s"
+msgstr "Nezdařilo se získání informací o vstupu cíle: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1996,7 +1905,7 @@ msgstr ""
"\tModul vlastníka: %s\n"
"\tKlient: %s\n"
"\tCíl: %u\n"
-"\tUpřesnění vzorkování: %s\n"
+"\tUrÄení vzorku: %s\n"
"\tMapa kanálů: %s\n"
"\tZtlumení: %s\n"
"\tHlasitost: %s\n"
@@ -2008,12 +1917,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "Selhalo získání informace o výstupu zdroje: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "Selhalo získání informace o výstupu zdroje: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2034,7 +1943,7 @@ msgstr ""
"\tModul vlastníka: %s\n"
"\tKlient: %s\n"
"\tZdroj: %u\n"
-"\tUpřesnění vzorkování: %s\n"
+"\tUrÄení vzorku: %s\n"
"\tMapa kanálů: %s\n"
"\tLatence vyrovnávací paměti: %0.0f μs\n"
"\tLatence zdroje: %0.0f μs\n"
@@ -2042,12 +1951,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "Selhalo získání informace o vzorku: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "Selhalo získání informace o vzorku: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2066,7 +1975,7 @@ msgid ""
msgstr ""
"Vzorek Ä. %u\n"
"\tNázev: %s\n"
-"\tUpřesnění vzorkování: %s\n"
+"\tUrÄení vzorku: %s\n"
"\tMapa kanálů: %s\n"
"\tHlasitost: %s\n"
"\t %s\n"
@@ -2078,22 +1987,26 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "Selhání: %s\n"
+msgid "Failure: %s"
+msgstr "Selhání: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "Selhalo nahrání vzorku: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "Selhalo nahrání vzorku: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "PÅ™edÄasný konec souboru\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "PÅ™edÄasný konec souboru"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Získáno SIGINT, ukonÄování."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2101,15 +2014,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2125,13 +2044,21 @@ msgstr ""
"%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] move-sink-input VSTUPCÃLE CÃL\n"
+"%s [pÅ™epínaÄe] move-source-output VÃSTUPZDROJE 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"
+"%s [pÅ™epínaÄe] unload-module MODUL\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"
+"%s [pÅ™epínaÄe] set-sink-port CÃL PORT\n"
+"%s [pÅ™epínaÄe] set-source-port ZDROJ PORT\n"
+"%s [pÅ™epínaÄe] set-sink-volume CÃL HLASITOST\n"
+"%s [pÅ™epínaÄe] set-source-volume ZDROJ HLASITOST\n"
+"%s [pÅ™epínaÄe] set-sink-input-volume VSTUPCÃLE HLASITOST\n"
+"%s [pÅ™epínaÄe] set-sink-mute CÃL 1|0\n"
+"%s [pÅ™epínaÄe] set-source-mute ZDROJ 1|0\n"
+"%s [pÅ™epínaÄe] set-sink-input-mute VSTUPCÃLE 1|0\n"
"\n"
" -h, --help Zobrazí tuto nápovědu\n"
" --version Zobrazí verzi\n"
@@ -2140,7 +2067,7 @@ msgstr ""
" -n, --client-name=NÃZEV Způsob volání tohoto klienta na "
"serveru\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2151,78 +2078,106 @@ msgstr ""
"Přeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "Zadejte prosím soubor se vzorkem urÄeným k nahrání\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "Zadejte prosím soubor se vzorkem urÄeným k nahrání"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "Selhalo otevření zvukového souboru.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "Selhalo otevření zvukového souboru."
-#: ../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:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "Varování: Selhalo zjiÅ¡tÄ›ní urÄení vzorku ze souboru."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "Je nutné zadat název vzorku urÄeného k pÅ™ehrání\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "Je nutné zadat název vzorku urÄeného k pÅ™ehrání"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "Je nutné zadat název vzorku urÄeného k odstranÄ›ní\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Je nutné zadat název vzorku urÄeného k odstranÄ›ní"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "Je nutné zadat vstup cíle a cíl\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Je nutné zadat vstup cíle a cíl"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "Je nutné zadat index výstupu zdroje a zdroj\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Je nutné zadat index výstupu zdroje a zdroj"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "Je nutné zadat název modulu a argumenty.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Je nutné zadat název modulu a argumenty."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "Je nutné zadat index modulu\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "Je nutné zadat index modulu"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
-msgstr "Nelze zadat více než jeden cíl. Je nutné zadat booleovskou hodnotu.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr "Nelze zadat více než jeden cíl. Je nutné zadat booleovskou hodnotu."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
-msgstr ""
-"Nelze zadat více než jeden zdroj. Je nutné zadat booleovskou hodnotu.\n"
+"value."
+msgstr "Nelze zadat více než jeden zdroj. Je nutné zadat booleovskou hodnotu."
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
-msgstr "Je nutné upřesnit název karty/indexu a název profilu\n"
+#: ../src/utils/pactl.c:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Je nutné upřesnit název karty/indexu a název profilu"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Je nutné upřesnit název cíle/indexu a název portu"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Je nutné upřesnit název zdroje/indexu a název portu"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Nezadán žádný platný příkaz.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Je nutné upřesnit název cíle/indexu a hlasitost"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() selhalo: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Neplatné urÄení hlasitosti"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Je nutné upřesnit název zdroje/indexu a hlasitost"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Je nutné zadat index vstupu cíle a hlasitost"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Neplatný index vstupu cíle"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Je nutné upřesnit název cíle/indexu a booleovskou hodnotu ztlumení"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Je nutné upřesnit název zdroje/indexu a booleovskou hodnotu ztlumení"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Je nutné zadat index vstupu cíle a booleovskou hodnotu ztlumení"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Neplatné urÄení indexu vstupu cíle"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Nezadán žádný platný příkaz."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2303,48 +2258,48 @@ msgstr "Nezdařilo se nahrát data cookie\n"
msgid "Not yet implemented.\n"
msgstr "Doposud neimplementováno.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "Neběží žádný démon PulseAudio, nebo neběží jako démon sezení."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Nezdařilo se zabít démona PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Démon neodpovídá."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Nelze přistoupit k zámku automatického spouštění."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2361,7 +2316,7 @@ msgstr ""
"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:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2379,15 +2334,19 @@ msgstr ""
"Äi jinou hodnotu < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Vypnuto"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Přehrávání s velmi věrnou reprodukcí (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Záznam s velmi věrnou reprodukcí (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplexní telefonie (HSP/HFP)"
@@ -2395,6 +2354,145 @@ msgstr "Duplexní telefonie (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Zvukový server PulseAudio"
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Neplatný název klienta \"%s\"\n"
+
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "Selhalo zjiÅ¡tÄ›ní urÄení vzorku ze souboru.\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Nelze se spojit se systémovou sběrnicí: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Nelze získat volajícího z PID: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Nelze nastavit UID na objekt volajícího."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Nezdařilo se získání sezení CK."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Nelze nastavit UID na objekt sezení."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Nelze alokovat PolKitAction."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Nelze nastavit action_id"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Nelze alokovat PolKitContext."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Nelze spustit PolKitContext: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "NezdaÅ™ilo se urÄit, zda je volající oprávnÄ›n: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Nezdařilo se získat oprávnění: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit odpověděl s \"%s\""
+
+#~ 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"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Plánování v reálném Äase démona PulseAudio"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "Systémová pravidla znemožňují technologii PulseAudio získat přístup k "
+#~ "plánování o vysoké prioritě."
+
+#~ 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."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() selhalo: %s\n"
+
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_connect() selhalo: %s\n"
+
+#~ 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ě."
+
+#~ 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."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "PolicyKit nám udělil oprávnění acquire-high-priority."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "PolicyKit nám neudělil oprávnění acquire-high-priority."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "PolicyKit nám udělil oprávnění acquire-real-time."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "PolicyKit nám neudělil oprávnění acquire-real-time."
+
+#~ 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 ""
+#~ "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."
+
+#~ 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."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "Úspěšně zvýšeno RLIMIT_RTPRIO"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO selhalo: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Vzdávání se CAP_NICE"
+
+#~ 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."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Schopnosti úspěšně omezeny na CAP_SYS_NICE."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() selhalo.\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Analogové mono"
@@ -2431,9 +2529,6 @@ msgstr "Zvukový server PulseAudio"
#~ msgid "Output %s + Input %s"
#~ msgstr "Výstup %s + vstup %s"
-#~ msgid "Output %s"
-#~ msgstr "Výstup %s"
-
#~ msgid "Input %s"
#~ msgstr "Vstup %s"
diff --git a/po/de.po b/po/de.po
index dd96f71c..97f7163d 100644
--- a/po/de.po
+++ b/po/de.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the pulseaudio package.
#
# Fabian Affolter <fab@fedoraproject.org>, 2008-2009.
-# Micha Pietsch <barney@fedoraproject.org>, 2008
+# Micha Pietsch <barney@fedoraproject.org>, 2008, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+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,7 +19,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -32,7 +37,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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -45,7 +50,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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -58,6 +63,14 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr ""
@@ -71,11 +84,20 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Ausgang %s"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -91,214 +113,92 @@ msgstr "Neuer dlopen-Loader konnte nicht gefunden werden."
msgid "Failed to add bind-now-loader."
msgstr "Hinzufügen von Bind-Now-Loader fehlgeschlagen."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Kann nicht mit dem System-Bus verbinden: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Kann Caller von PID nicht beziehen: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Kann UID für Caller-Objekt nicht setzen."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Kann CK-Session nicht beziehen."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Kann UID für Session-Objekt nicht setzen."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Konnte PolKitAction nicht zuordnen."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Kann action_id nicht setzen"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Konnte PolKitContext nicht zuordnen."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Konnte PolKitContext nicht initialisieren: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Keine Authorisierung erhalten: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit antwortete mit '%s'"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-
-#: ../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:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "Richtlinien verweigern das Recht acquire-real-time."
-
-#: ../src/daemon/main.c:560
-#, fuzzy, 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 ""
-"' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n"
-"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
-"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Verwerfe CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -306,153 +206,155 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermaßen deaktiviert!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaßen deaktiviert!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Seitengröße ist %lu Bytes."
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:902
-#, fuzzy
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:904
-#, fuzzy
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:906
-#, fuzzy
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Nutze Laufzeit-Verzeichnis %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -462,41 +364,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
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:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -750,73 +652,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgröße '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:540
-#, fuzzy
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -824,19 +725,16 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Root-Privilegien aufgeben."
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert."
-
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
msgstr "PulseAudio Sound System"
@@ -845,32 +743,7 @@ msgstr "PulseAudio Sound System"
msgid "Start the PulseAudio Sound System"
msgstr "Das PulseAudio Sound System starten"
-#: ../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
-#, fuzzy
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Echtzeit-Terminierung des PulseAudio-Daemon fehlgeschlagen"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority "
-"scheduling."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-#, fuzzy
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
-"System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-"
-"Terminierung.."
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1074,33 +947,33 @@ msgstr "Oben Hinten Links"
msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(ungültig)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1202,29 +1075,37 @@ msgstr "Fehlende Implementation"
#: ../src/pulse/error.c:67
msgid "Client forked"
+msgstr "Client geteilt"
+
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1237,188 +1118,192 @@ msgstr "XOpenDisplay() fehlgeschlagen"
msgid "Failed to parse cookie data"
msgstr "Parsen der Cookie-Daten fehlgeschlagen"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Verbindungsversuch ohne Cookie, da keines geladen."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
-#: ../src/utils/pacat.c:107
-#, c-format
-msgid "Failed to drain stream: %s\n"
+#: ../src/utils/pacat.c:108
+#, fuzzy, c-format
+msgid "Failed to drain stream: %s"
msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
+#: ../src/utils/pacat.c:113
+#, fuzzy
+msgid "Playback stream drained."
msgstr "Wiedergabe-Stream entleert.\n"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
+#: ../src/utils/pacat.c:123
+#, fuzzy
+msgid "Draining connection to server."
msgstr "Draining connection to server.\n"
-#: ../src/utils/pacat.c:135
-#, c-format
-msgid "pa_stream_drain(): %s\n"
+#: ../src/utils/pacat.c:136
+#, fuzzy, c-format
+msgid "pa_stream_drain(): %s"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:158
-#, c-format
-msgid "pa_stream_write() failed: %s\n"
+#: ../src/utils/pacat.c:159
+#, fuzzy, c-format
+msgid "pa_stream_write() failed: %s"
msgstr "pa_stream_write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
-#, c-format
-msgid "pa_stream_peek() failed: %s\n"
+#: ../src/utils/pacat.c:197
+#, fuzzy, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, fuzzy, c-format
+msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
+#: ../src/utils/pacat.c:307
+#, fuzzy
+msgid "Stream successfully created."
msgstr "Stream wurde erfolgreich erstellt.\n"
-#: ../src/utils/pacat.c:305
-#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
+#: ../src/utils/pacat.c:310
+#, fuzzy, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:309
-#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+#: ../src/utils/pacat.c:314
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:312
-#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+#: ../src/utils/pacat.c:317
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:316
-#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
+#: ../src/utils/pacat.c:321
+#, fuzzy, c-format
+msgid "Using sample spec '%s', channel map '%s'."
msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n"
-#: ../src/utils/pacat.c:320
-#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
+#: ../src/utils/pacat.c:325
+#, fuzzy, c-format
+msgid "Connected to device %s (%u, %ssuspended)."
msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n"
-#: ../src/utils/pacat.c:330
-#, c-format
-msgid "Stream error: %s\n"
+#: ../src/utils/pacat.c:335
+#, fuzzy, c-format
+msgid "Stream error: %s"
msgstr "Stream-Fehler: %s\n"
-#: ../src/utils/pacat.c:340
-#, c-format
-msgid "Stream device suspended.%s \n"
+#: ../src/utils/pacat.c:345
+#, fuzzy, c-format
+msgid "Stream device suspended.%s"
msgstr "Stream-Gerät ausgesetzt.%s\n"
-#: ../src/utils/pacat.c:342
-#, c-format
-msgid "Stream device resumed.%s \n"
+#: ../src/utils/pacat.c:347
+#, fuzzy, c-format
+msgid "Stream device resumed.%s"
msgstr "Stream-Gerät reaktiviert.%s\n"
-#: ../src/utils/pacat.c:350
-#, c-format
-msgid "Stream underrun.%s \n"
+#: ../src/utils/pacat.c:355
+#, fuzzy, c-format
+msgid "Stream underrun.%s"
msgstr "Stream unterlaufen.%s \n"
-#: ../src/utils/pacat.c:357
-#, c-format
-msgid "Stream overrun.%s \n"
+#: ../src/utils/pacat.c:362
+#, fuzzy, c-format
+msgid "Stream overrun.%s"
msgstr "Stream überlief.%s \n"
-#: ../src/utils/pacat.c:364
-#, c-format
-msgid "Stream started.%s \n"
+#: ../src/utils/pacat.c:369
+#, fuzzy, c-format
+msgid "Stream started.%s"
msgstr "Stream gestartet: %s\n"
-#: ../src/utils/pacat.c:371
-#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+#: ../src/utils/pacat.c:376
+#, fuzzy, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "nicht "
-#: ../src/utils/pacat.c:378
-#, c-format
-msgid "Stream buffer attributes changed.%s \n"
+#: ../src/utils/pacat.c:383
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s"
msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n"
-#: ../src/utils/pacat.c:411
-#, c-format
-msgid "Connection established.%s \n"
+#: ../src/utils/pacat.c:415
+#, fuzzy, c-format
+msgid "Connection established.%s"
msgstr "Verbindung hergestellt.%s \n"
-#: ../src/utils/pacat.c:414
-#, c-format
-msgid "pa_stream_new() failed: %s\n"
+#: ../src/utils/pacat.c:418
+#, fuzzy, c-format
+msgid "pa_stream_new() failed: %s"
msgstr "pa_stream_new() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:442
-#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
+#: ../src/utils/pacat.c:446
+#, fuzzy, c-format
+msgid "pa_stream_connect_playback() failed: %s"
msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:448
-#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
+#: ../src/utils/pacat.c:452
+#, fuzzy, c-format
+msgid "pa_stream_connect_record() failed: %s"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
-#, c-format
-msgid "Connection failure: %s\n"
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, fuzzy, c-format
+msgid "Connection failure: %s"
msgstr "Verbindungsfehler: %s\n"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
+#: ../src/utils/pacat.c:499
+#, fuzzy
+msgid "Got EOF."
msgstr "EOF empfangen.\n"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() fehlgeschlagen: %s\n"
-
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
+#: ../src/utils/pacat.c:536
+#, fuzzy, c-format
+msgid "write() failed: %s"
msgstr "write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
+#: ../src/utils/pacat.c:557
+#, fuzzy
+msgid "Got signal, exiting."
msgstr "Signal empfangen, beende.\n"
-#: ../src/utils/pacat.c:567
-#, c-format
-msgid "Failed to get latency: %s\n"
+#: ../src/utils/pacat.c:571
+#, fuzzy, c-format
+msgid "Failed to get latency: %s"
msgstr "Erhalten der Latenz fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r"
-#: ../src/utils/pacat.c:592
-#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
+#: ../src/utils/pacat.c:595
+#, fuzzy, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n"
#: ../src/utils/pacat.c:605
@@ -1531,135 +1416,141 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
#, fuzzy, c-format
-msgid "Invalid client name '%s'\n"
-msgstr "Ungültige Kanal-Zuweisung '%s'\n"
+msgid "Invalid client name '%s'"
+msgstr "Ungültiger Client-Name '%s'\n"
-#: ../src/utils/pacat.c:776
+#: ../src/utils/pacat.c:775
#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "Ungültige Resample-Methode '%s'."
+msgid "Invalid stream name '%s'"
+msgstr "Ungültiger Stream-Name '%s'\n"
-#: ../src/utils/pacat.c:813
-#, c-format
-msgid "Invalid channel map '%s'\n"
+#: ../src/utils/pacat.c:812
+#, fuzzy, c-format
+msgid "Invalid channel map '%s'"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:842
-#, c-format
-msgid "Invalid latency specification '%s'\n"
+#: ../src/utils/pacat.c:841
+#, fuzzy, c-format
+msgid "Invalid latency specification '%s'"
msgstr "Ungültige Latenz-Angaben '%s'\n"
-#: ../src/utils/pacat.c:849
-#, c-format
-msgid "Invalid process time specification '%s'\n"
+#: ../src/utils/pacat.c:848
+#, fuzzy, c-format
+msgid "Invalid process time specification '%s'"
msgstr "Ungültige Prozesszeit-Angaben '%s'\n"
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Ungültige Resample-Methode '%s'."
+msgid "Invalid property '%s'"
+msgstr "Ungültige Eigenschaft '%s'\n"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Unbekanntes Dateiformat %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
+#: ../src/utils/pacat.c:896
+#, fuzzy
+msgid "Invalid sample specification"
msgstr "Ungültige Sample-Angaben\n"
-#: ../src/utils/pacat.c:907
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:906
+#, fuzzy, c-format
+msgid "open(): %s"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:912
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:911
+#, fuzzy, c-format
+msgid "dup2(): %s"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
+#: ../src/utils/pacat.c:918
+#, fuzzy
+msgid "Too many arguments."
msgstr "Zu viele Argumente.\n"
-#: ../src/utils/pacat.c:930
+#: ../src/utils/pacat.c:929
#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+msgid "Failed to generate sample specification for file."
+msgstr "Beziehen der Sample-Informationen für die Datei fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:950
+#: ../src/utils/pacat.c:949
#, fuzzy
-msgid "Failed to open audio file.\n"
+msgid "Failed to open audio file."
msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
+#, fuzzy
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+msgstr "Warnung: Beziehen der Sample-Angabe aus Datei fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
#, fuzzy
-msgid "Failed to determine sample specification from file.\n"
-msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+msgid "Failed to determine sample specification from file."
+msgstr "Beziehen der Sample-Informationen der Datei fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+#, fuzzy
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Warnung: Bestimmung der Kanalzuordnung aus Datei fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
+#: ../src/utils/pacat.c:978
+#, fuzzy
+msgid "Channel map doesn't match sample specification"
msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+#, fuzzy
+msgid "Warning: failed to write channel map to file."
+msgstr "Warnung: Schreiben der Kanalzuordnung in Datei fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, 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"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"Öffnen eines %s-Streams mit Sample-Angabe '%s' und Kanalzuordnung '%s'.\n"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "aufnehmen"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "abspielen"
-#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
-#: ../src/utils/pactl.c:1104
-#, c-format
-msgid "pa_mainloop_new() failed.\n"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+#, fuzzy
+msgid "pa_mainloop_new() failed."
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
+#: ../src/utils/pacat.c:1050
+#, fuzzy
+msgid "io_new() failed."
msgstr "io_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
-#: ../src/utils/pactl.c:1116
-#, c-format
-msgid "pa_context_new() failed.\n"
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+#, fuzzy
+msgid "pa_context_new() failed."
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() fehlgeschlagen: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() fehlgeschlagen.\n"
+#: ../src/utils/pacat.c:1071
+#, fuzzy
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
-#, c-format
-msgid "pa_mainloop_run() failed.\n"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+#, fuzzy
+msgid "pa_mainloop_run() failed."
msgstr "pa_mainloop_run() fehlgeschlagen.\n"
#: ../src/utils/pasuspender.c:81
@@ -1687,7 +1578,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Verbindungsfehler: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT empfangen, beende.\n"
@@ -1726,32 +1622,47 @@ msgstr ""
"kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() fehlgeschlagen.\n"
+
+#: ../src/utils/pasuspender.c:290
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() fehlgeschlagen.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() fehlgeschlagen.\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "Beziehen der Statistik fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Sample-Pufferspeichergrösse: %s\n"
-#: ../src/utils/pactl.c:149
-#, c-format
-msgid "Failed to get server information: %s\n"
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1774,12 +1685,12 @@ msgstr ""
"-Standard-Quelle: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1818,22 +1729,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, 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"
+#: ../src/utils/pactl.c:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1872,20 +1783,20 @@ msgstr ""
"\tEigenschaften:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "k. A."
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1902,12 +1813,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1922,12 +1833,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
-#, c-format
-msgid "Failed to get card information: %s\n"
+#: ../src/utils/pactl.c:447
+#, fuzzy, c-format
+msgid "Failed to get card information: %s"
msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1944,22 +1855,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktive Profile: %s\n"
-#: ../src/utils/pactl.c:489
-#, c-format
-msgid "Failed to get sink input information: %s\n"
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1996,12 +1907,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
-#, c-format
-msgid "Failed to get source output information: %s\n"
+#: ../src/utils/pactl.c:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2030,12 +1941,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2066,21 +1977,27 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "Fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
msgstr "Hochladen des Sample fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+#, fuzzy
+msgid "Premature end of file"
msgstr "Dateiende ist zu früh aufgetreten\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT empfangen, beende.\n"
+
+#: ../src/utils/pactl.c:869
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2089,15 +2006,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2127,7 +2050,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2138,82 +2061,134 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+#, fuzzy
+msgid "Please specify a sample file to load"
msgstr "Geben Sie eine zu öffnende Sample-Datei an\n"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:951
+#: ../src/utils/pactl.c:1004
#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "Warnung: Beziehen der Sample-Angabe aus Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
+#: ../src/utils/pactl.c:1014
+#, fuzzy
+msgid "You have to specify a sample name to play"
msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+#, fuzzy
+msgid "You have to specify a sample name to remove"
msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
+#: ../src/utils/pactl.c:1035
+#, fuzzy
+msgid "You have to specify a sink input index and a sink"
msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
+#: ../src/utils/pactl.c:1045
+#, fuzzy
+msgid "You have to specify a source output index and a source"
msgstr ""
"Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+#, fuzzy
+msgid "You have to specify a module name and arguments."
msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+#, fuzzy
+msgid "You have to specify a module index"
msgstr "Sie müssen einen Indexwert für ein Modul angeben\n"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
+#, fuzzy
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
"Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
+#: ../src/utils/pactl.c:1115
+#, fuzzy
+msgid "You have to specify a card name/index and a profile name"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1073
+#: ../src/utils/pactl.c:1126
#, 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"
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Sie müssen einen Senkennamen/-Indexwert und einen Portnamen angeben\n"
-#: ../src/utils/pactl.c:1084
+#: ../src/utils/pactl.c:1137
#, 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"
+msgid "You have to specify a source name/index and a port name"
+msgstr "Sie müssen einen Quellennamen/-Indexwert und einen Portnamen angeben\n"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Kein gültiger Befehl angegeben.\n"
+#: ../src/utils/pactl.c:1149
+#, fuzzy
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Sie müssen einen Senkennamen/-Indexwert und einen Portnamen angeben\n"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_new() fehlgeschlagen: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+#, fuzzy
+msgid "Invalid volume specification"
+msgstr "Ungültige Sample-Angaben\n"
+
+#: ../src/utils/pactl.c:1166
+#, fuzzy
+msgid "You have to specify a source name/index and a volume"
+msgstr "Sie müssen einen Quellennamen/-Indexwert und einen Portnamen angeben\n"
+
+#: ../src/utils/pactl.c:1183
+#, fuzzy
+msgid "You have to specify a sink input index and a volume"
+msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+#, fuzzy
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Sie müssen einen Senkennamen/-Indexwert und einen Portnamen angeben\n"
+
+#: ../src/utils/pactl.c:1221
+#, fuzzy
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Sie müssen einen Quellennamen/-Indexwert und einen Portnamen angeben\n"
+
+#: ../src/utils/pactl.c:1238
+#, fuzzy
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "Ungültige Sample-Angaben\n"
+
+#: ../src/utils/pactl.c:1262
+#, fuzzy
+msgid "No valid command specified."
+msgstr "Kein gültiger Befehl angegeben.\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2294,48 +2269,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "Es läuft kein PulseAudio-Dienst oder nicht als Sessiondienst."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2346,7 +2321,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2358,15 +2333,20 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+#, fuzzy
+msgid "High Fidelity Capture (A2DP)"
+msgstr "High Fidelity Playback (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
@@ -2374,6 +2354,141 @@ msgstr "Telephony Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Ungültiger Client-Name '%s'\n"
+
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "Beziehen der Sample-Informationen der Datei fehlgeschlagen.\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Kann nicht mit dem System-Bus verbinden: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Kann Caller von PID nicht beziehen: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Kann UID für Caller-Objekt nicht setzen."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Kann CK-Session nicht beziehen."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Kann UID für Session-Objekt nicht setzen."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Konnte PolKitAction nicht zuordnen."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Kann action_id nicht setzen"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Konnte PolKitContext nicht zuordnen."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Konnte PolKitContext nicht initialisieren: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Keine Authorisierung erhalten: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit antwortete mit '%s'"
+
+#, fuzzy
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr ""
+#~ "Hochprioritäts-Terminierung () (negative Unix nice level) für den "
+#~ "PulseAudio-Dienst"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Echtzeit-Terminierung des PulseAudio-Daemon"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority "
+#~ "scheduling."
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr ""
+#~ "System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-"
+#~ "Terminierung."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() fehlgeschlagen: %s\n"
+
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_connect() fehlgeschlagen: %s\n"
+
+#~ 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."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr ""
+#~ "Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "Richtlinien gewähren das Recht aquire-high-priority."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "Richtlinien verweigern das Recht acquire-high-priority."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "Richtlinien gewähren das Recht aquire-real-time."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "Richtlinien verweigern das Recht acquire-real-time."
+
+#, 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 '%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 ""
+#~ "' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n"
+#~ "Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
+#~ "Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
+
+#~ msgid ""
+#~ "High-priority scheduling enabled in configuration but not allowed by "
+#~ "policy."
+#~ msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Verwerfe CAP_NICE"
+
+#~ msgid ""
+#~ "Real-time scheduling enabled in configuration but not allowed by policy."
+#~ msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() fehlgeschlagen.\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Analog Mono"
@@ -2410,9 +2525,6 @@ msgstr "PulseAudio Sound Server"
#~ msgid "Output %s + Input %s"
#~ msgstr "Ausgabe %s + Eingabe %s"
-#~ msgid "Output %s"
-#~ msgstr "Ausgang %s"
-
#~ msgid "Input %s"
#~ msgstr "Eingang %s"
diff --git a/po/de_CH.po b/po/de_CH.po
index 7c069efb..662176ec 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-06-17 23:42+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+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,7 +18,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swiss German\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -31,7 +36,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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -44,7 +49,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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -57,6 +62,14 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr ""
@@ -70,11 +83,20 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Ausgang %s"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -90,214 +112,92 @@ msgstr "Neuer dlopen-Loader konnte nicht gefunden werden."
msgid "Failed to add bind-now-loader."
msgstr "Hinzufügen von Bind-Now-Loader fehlgeschlagen."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Kann nicht mit dem System-Bus verbinden: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Kann Caller von PID nicht beziehen: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Kann UID für Caller-Objekt nicht setzen."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Kann CK-Session nicht beziehen."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Kann UID für Session-Objekt nicht setzen."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Konnte PolKitAction nicht zuordnen."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Kann action_id nicht setzen"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Konnte PolKitContext nicht zuordnen."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Konnte PolKitContext nicht initialisieren: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Keine Authorisierung erhalten: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit antwortete mit '%s'"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-
-#: ../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:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "Richtlinien verweigern das Recht acquire-real-time."
-
-#: ../src/daemon/main.c:560
-#, fuzzy, 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 ""
-"' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n"
-"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
-"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Verwerfe CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -305,153 +205,158 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Seitengrösse ist %lu Bytes."
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
#, fuzzy
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
#, fuzzy
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
#, fuzzy
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:768
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Nutze Laufzeit-Verzeichnis %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -461,41 +366,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
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:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -749,72 +654,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
#, fuzzy
msgid ""
"The specified default channel map has a different number of channels than "
@@ -823,19 +728,16 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Root-Privilegien aufgeben."
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert."
-
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
msgstr "PulseAudio Sound System"
@@ -844,35 +746,7 @@ msgstr "PulseAudio Sound System"
msgid "Start the PulseAudio Sound System"
msgstr "Das PulseAudio Sound System starten"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-#, fuzzy
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
-"High-priority scheduling (verkleinere Unix nice-Stufe) für den PulseAudio-"
-"Daemon"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Echtzeit-Terminierung des PulseAudio-Daemon fehlgeschlagen"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority "
-"scheduling."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-#, fuzzy
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
-"System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-"
-"Terminierung.."
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1076,33 +950,33 @@ msgstr "Oben Hinten Links"
msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(ungültig)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1207,27 +1081,35 @@ msgstr "Fehlende Implementation"
msgid "Client forked"
msgstr "Client geforket"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1240,188 +1122,192 @@ msgstr "XOpenDisplay() fehlgeschlagen"
msgid "Failed to parse cookie data"
msgstr "Parsen der Cookie-Daten fehlgeschlagen"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Verbindungsversuch ohne Cookie, da keines geladen."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
-#: ../src/utils/pacat.c:107
-#, c-format
-msgid "Failed to drain stream: %s\n"
+#: ../src/utils/pacat.c:108
+#, fuzzy, c-format
+msgid "Failed to drain stream: %s"
msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
+#: ../src/utils/pacat.c:113
+#, fuzzy
+msgid "Playback stream drained."
msgstr "Wiedergabe-Stream entleert.\n"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
+#: ../src/utils/pacat.c:123
+#, fuzzy
+msgid "Draining connection to server."
msgstr "Draining connection to server.\n"
-#: ../src/utils/pacat.c:135
-#, c-format
-msgid "pa_stream_drain(): %s\n"
+#: ../src/utils/pacat.c:136
+#, fuzzy, c-format
+msgid "pa_stream_drain(): %s"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:158
-#, c-format
-msgid "pa_stream_write() failed: %s\n"
+#: ../src/utils/pacat.c:159
+#, fuzzy, c-format
+msgid "pa_stream_write() failed: %s"
msgstr "pa_stream_write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
-#, c-format
-msgid "pa_stream_peek() failed: %s\n"
+#: ../src/utils/pacat.c:197
+#, fuzzy, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, fuzzy, c-format
+msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
+#: ../src/utils/pacat.c:307
+#, fuzzy
+msgid "Stream successfully created."
msgstr "Stream wurde erfolgreich erstellt.\n"
-#: ../src/utils/pacat.c:305
-#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
+#: ../src/utils/pacat.c:310
+#, fuzzy, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:309
-#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+#: ../src/utils/pacat.c:314
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:312
-#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+#: ../src/utils/pacat.c:317
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:316
-#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
+#: ../src/utils/pacat.c:321
+#, fuzzy, c-format
+msgid "Using sample spec '%s', channel map '%s'."
msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n"
-#: ../src/utils/pacat.c:320
-#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
+#: ../src/utils/pacat.c:325
+#, fuzzy, c-format
+msgid "Connected to device %s (%u, %ssuspended)."
msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n"
-#: ../src/utils/pacat.c:330
-#, c-format
-msgid "Stream error: %s\n"
+#: ../src/utils/pacat.c:335
+#, fuzzy, c-format
+msgid "Stream error: %s"
msgstr "Stream-Fehler: %s\n"
-#: ../src/utils/pacat.c:340
-#, c-format
-msgid "Stream device suspended.%s \n"
+#: ../src/utils/pacat.c:345
+#, fuzzy, c-format
+msgid "Stream device suspended.%s"
msgstr "Stream-Gerät ausgesetzt.%s\n"
-#: ../src/utils/pacat.c:342
-#, c-format
-msgid "Stream device resumed.%s \n"
+#: ../src/utils/pacat.c:347
+#, fuzzy, c-format
+msgid "Stream device resumed.%s"
msgstr "Stream-Gerät reaktiviert.%s\n"
-#: ../src/utils/pacat.c:350
-#, c-format
-msgid "Stream underrun.%s \n"
+#: ../src/utils/pacat.c:355
+#, fuzzy, c-format
+msgid "Stream underrun.%s"
msgstr "Stream unterlaufen.%s \n"
-#: ../src/utils/pacat.c:357
-#, c-format
-msgid "Stream overrun.%s \n"
+#: ../src/utils/pacat.c:362
+#, fuzzy, c-format
+msgid "Stream overrun.%s"
msgstr "Stream überlief.%s \n"
-#: ../src/utils/pacat.c:364
-#, c-format
-msgid "Stream started.%s \n"
+#: ../src/utils/pacat.c:369
+#, fuzzy, c-format
+msgid "Stream started.%s"
msgstr "Stream gestartet: %s\n"
-#: ../src/utils/pacat.c:371
-#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+#: ../src/utils/pacat.c:376
+#, fuzzy, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "nicht "
-#: ../src/utils/pacat.c:378
-#, c-format
-msgid "Stream buffer attributes changed.%s \n"
+#: ../src/utils/pacat.c:383
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s"
msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n"
-#: ../src/utils/pacat.c:411
-#, c-format
-msgid "Connection established.%s \n"
+#: ../src/utils/pacat.c:415
+#, fuzzy, c-format
+msgid "Connection established.%s"
msgstr "Verbindung hergestellt.%s \n"
-#: ../src/utils/pacat.c:414
-#, c-format
-msgid "pa_stream_new() failed: %s\n"
+#: ../src/utils/pacat.c:418
+#, fuzzy, c-format
+msgid "pa_stream_new() failed: %s"
msgstr "pa_stream_new() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:442
-#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
+#: ../src/utils/pacat.c:446
+#, fuzzy, c-format
+msgid "pa_stream_connect_playback() failed: %s"
msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:448
-#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
+#: ../src/utils/pacat.c:452
+#, fuzzy, c-format
+msgid "pa_stream_connect_record() failed: %s"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
-#, c-format
-msgid "Connection failure: %s\n"
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, fuzzy, c-format
+msgid "Connection failure: %s"
msgstr "Verbindungsfehler: %s\n"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
+#: ../src/utils/pacat.c:499
+#, fuzzy
+msgid "Got EOF."
msgstr "EOF empfangen.\n"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() fehlgeschlagen: %s\n"
-
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
+#: ../src/utils/pacat.c:536
+#, fuzzy, c-format
+msgid "write() failed: %s"
msgstr "write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
+#: ../src/utils/pacat.c:557
+#, fuzzy
+msgid "Got signal, exiting."
msgstr "Signal empfangen, beende.\n"
-#: ../src/utils/pacat.c:567
-#, c-format
-msgid "Failed to get latency: %s\n"
+#: ../src/utils/pacat.c:571
+#, fuzzy, c-format
+msgid "Failed to get latency: %s"
msgstr "Erhalten der Latenz fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r"
-#: ../src/utils/pacat.c:592
-#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
+#: ../src/utils/pacat.c:595
+#, fuzzy, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n"
#: ../src/utils/pacat.c:605
@@ -1534,135 +1420,140 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
#, fuzzy, c-format
-msgid "Invalid client name '%s'\n"
+msgid "Invalid client name '%s'"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:776
+#: ../src/utils/pacat.c:775
#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
+msgid "Invalid stream name '%s'"
msgstr "Ungültige Resample-Methode '%s'."
-#: ../src/utils/pacat.c:813
-#, c-format
-msgid "Invalid channel map '%s'\n"
+#: ../src/utils/pacat.c:812
+#, fuzzy, c-format
+msgid "Invalid channel map '%s'"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:842
-#, c-format
-msgid "Invalid latency specification '%s'\n"
+#: ../src/utils/pacat.c:841
+#, fuzzy, c-format
+msgid "Invalid latency specification '%s'"
msgstr "Ungültige Latenz-Angaben '%s'\n"
-#: ../src/utils/pacat.c:849
-#, c-format
-msgid "Invalid process time specification '%s'\n"
+#: ../src/utils/pacat.c:848
+#, fuzzy, c-format
+msgid "Invalid process time specification '%s'"
msgstr "Ungültige Prozesszeit-Angaben '%s'\n"
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
+msgid "Invalid property '%s'"
msgstr "Ungültige Resample-Methode '%s'."
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
+#: ../src/utils/pacat.c:896
+#, fuzzy
+msgid "Invalid sample specification"
msgstr "Ungültige Sample-Angaben\n"
-#: ../src/utils/pacat.c:907
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:906
+#, fuzzy, c-format
+msgid "open(): %s"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:912
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:911
+#, fuzzy, c-format
+msgid "dup2(): %s"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
+#: ../src/utils/pacat.c:918
+#, fuzzy
+msgid "Too many arguments."
msgstr "Zu viele Argumente.\n"
-#: ../src/utils/pacat.c:930
+#: ../src/utils/pacat.c:929
#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
+msgid "Failed to generate sample specification for file."
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:950
+#: ../src/utils/pacat.c:949
#, fuzzy
-msgid "Failed to open audio file.\n"
+msgid "Failed to open audio file."
msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
+#, fuzzy
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
#, fuzzy
-msgid "Failed to determine sample specification from file.\n"
+msgid "Failed to determine sample specification from file."
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:967
+#, fuzzy
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
+#: ../src/utils/pacat.c:978
+#, fuzzy
+msgid "Channel map doesn't match sample specification"
msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+#, fuzzy
+msgid "Warning: failed to write channel map to file."
+msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, fuzzy, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "aufnehmen"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "abspielen"
-#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
-#: ../src/utils/pactl.c:1104
-#, c-format
-msgid "pa_mainloop_new() failed.\n"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+#, fuzzy
+msgid "pa_mainloop_new() failed."
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
+#: ../src/utils/pacat.c:1050
+#, fuzzy
+msgid "io_new() failed."
msgstr "io_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
-#: ../src/utils/pactl.c:1116
-#, c-format
-msgid "pa_context_new() failed.\n"
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+#, fuzzy
+msgid "pa_context_new() failed."
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() fehlgeschlagen: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() fehlgeschlagen.\n"
+#: ../src/utils/pacat.c:1071
+#, fuzzy
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
-#, c-format
-msgid "pa_mainloop_run() failed.\n"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+#, fuzzy
+msgid "pa_mainloop_run() failed."
msgstr "pa_mainloop_run() fehlgeschlagen.\n"
#: ../src/utils/pasuspender.c:81
@@ -1690,7 +1581,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Verbindungsfehler: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT empfangen, beende.\n"
@@ -1729,32 +1625,47 @@ msgstr ""
"kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() fehlgeschlagen.\n"
+
+#: ../src/utils/pasuspender.c:290
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() fehlgeschlagen.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() fehlgeschlagen.\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "Beziehen der Statistik fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Sample-Pufferspeichergrösse: %s\n"
-#: ../src/utils/pactl.c:149
-#, c-format
-msgid "Failed to get server information: %s\n"
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1777,12 +1688,12 @@ msgstr ""
"-Standard-Quelle: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1821,22 +1732,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, fuzzy, c-format
msgid "\tPorts:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
#, 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"
+#: ../src/utils/pactl.c:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1875,20 +1786,20 @@ msgstr ""
"\tEigenschaften:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "k. A."
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1905,12 +1816,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1925,12 +1836,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
-#, c-format
-msgid "Failed to get card information: %s\n"
+#: ../src/utils/pactl.c:447
+#, fuzzy, c-format
+msgid "Failed to get card information: %s"
msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1947,22 +1858,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktive Profile: %s\n"
-#: ../src/utils/pactl.c:489
-#, c-format
-msgid "Failed to get sink input information: %s\n"
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1999,12 +1910,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
-#, c-format
-msgid "Failed to get source output information: %s\n"
+#: ../src/utils/pactl.c:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2033,12 +1944,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2069,21 +1980,27 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "Fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
msgstr "Hochladen des Sample fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+#, fuzzy
+msgid "Premature end of file"
msgstr "Dateiende ist zu früh aufgetreten\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT empfangen, beende.\n"
+
+#: ../src/utils/pactl.c:869
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2092,15 +2009,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2130,7 +2053,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2141,82 +2064,134 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+#, fuzzy
+msgid "Please specify a sample file to load"
msgstr "Geben Sie eine zu öffnende Sample-Datei an\n"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:951
+#: ../src/utils/pactl.c:1004
#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
+msgid "Warning: Failed to determine sample specification from file."
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"
+#: ../src/utils/pactl.c:1014
+#, fuzzy
+msgid "You have to specify a sample name to play"
msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+#, fuzzy
+msgid "You have to specify a sample name to remove"
msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
+#: ../src/utils/pactl.c:1035
+#, fuzzy
+msgid "You have to specify a sink input index and a sink"
msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
+#: ../src/utils/pactl.c:1045
+#, fuzzy
+msgid "You have to specify a source output index and a source"
msgstr ""
"Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+#, fuzzy
+msgid "You have to specify a module name and arguments."
msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+#, fuzzy
+msgid "You have to specify a module index"
msgstr "Sie müssen einen Indexwert für ein Modul angeben\n"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
+#, fuzzy
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
"Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
+#: ../src/utils/pactl.c:1115
+#, fuzzy
+msgid "You have to specify a card name/index and a profile name"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1073
+#: ../src/utils/pactl.c:1126
#, fuzzy
-msgid "You have to specify a sink name/index and a port name\n"
+msgid "You have to specify a sink name/index and a port name"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1084
+#: ../src/utils/pactl.c:1137
#, fuzzy
-msgid "You have to specify a source name/index and a port name\n"
+msgid "You have to specify a source name/index and a port name"
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:1149
+#, fuzzy
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_new() fehlgeschlagen: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+#, fuzzy
+msgid "Invalid volume specification"
+msgstr "Ungültige Sample-Angaben\n"
+
+#: ../src/utils/pactl.c:1166
+#, fuzzy
+msgid "You have to specify a source name/index and a volume"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
+
+#: ../src/utils/pactl.c:1183
+#, fuzzy
+msgid "You have to specify a sink input index and a volume"
+msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+#, fuzzy
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
+
+#: ../src/utils/pactl.c:1221
+#, fuzzy
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
+
+#: ../src/utils/pactl.c:1238
+#, fuzzy
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "Ungültige Sample-Angaben\n"
+
+#: ../src/utils/pactl.c:1262
+#, fuzzy
+msgid "No valid command specified."
+msgstr "Kein gültiger Befehl angegeben.\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2297,48 +2272,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2356,7 +2331,7 @@ msgstr ""
"von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < "
"min_avail ist."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2375,15 +2350,20 @@ msgstr ""
"min_avail ist."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+#, fuzzy
+msgid "High Fidelity Capture (A2DP)"
+msgstr "High Fidelity Playback (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
@@ -2391,6 +2371,147 @@ msgstr "Telephony Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#, fuzzy
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Ungültige Kanal-Zuweisung '%s'\n"
+
+#, fuzzy
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Kann nicht mit dem System-Bus verbinden: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Kann Caller von PID nicht beziehen: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Kann UID für Caller-Objekt nicht setzen."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Kann CK-Session nicht beziehen."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Kann UID für Session-Objekt nicht setzen."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Konnte PolKitAction nicht zuordnen."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Kann action_id nicht setzen"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Konnte PolKitContext nicht zuordnen."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Konnte PolKitContext nicht initialisieren: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Keine Authorisierung erhalten: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit antwortete mit '%s'"
+
+#, fuzzy
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr ""
+#~ "High-priority scheduling (verkleinere Unix nice-Stufe) für den PulseAudio-"
+#~ "Daemon"
+
+#, fuzzy
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Echtzeit-Terminierung des PulseAudio-Daemon fehlgeschlagen"
+
+#, fuzzy
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority "
+#~ "scheduling."
+
+#, fuzzy
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr ""
+#~ "System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-"
+#~ "Terminierung.."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() fehlgeschlagen: %s\n"
+
+#, fuzzy
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_new() fehlgeschlagen: %s"
+
+#~ 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."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr ""
+#~ "Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "Richtlinien gewähren das Recht aquire-high-priority."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "Richtlinien verweigern das Recht acquire-high-priority."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "Richtlinien gewähren das Recht aquire-real-time."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "Richtlinien verweigern das Recht acquire-real-time."
+
+#, 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 '%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 ""
+#~ "' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n"
+#~ "Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
+#~ "Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
+
+#~ msgid ""
+#~ "High-priority scheduling enabled in configuration but not allowed by "
+#~ "policy."
+#~ msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Verwerfe CAP_NICE"
+
+#~ msgid ""
+#~ "Real-time scheduling enabled in configuration but not allowed by policy."
+#~ msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() fehlgeschlagen.\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Analog Mono"
@@ -2427,9 +2548,6 @@ msgstr "PulseAudio Sound Server"
#~ msgid "Output %s + Input %s"
#~ msgstr "Ausgabe %s + Eingabe %s"
-#~ msgid "Output %s"
-#~ msgstr "Ausgang %s"
-
#~ msgid "Input %s"
#~ msgstr "Eingang %s"
diff --git a/po/el.po b/po/el.po
index 9e593e16..2db0db5c 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-06-17 23:42+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+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,7 +16,12 @@ msgstr ""
"X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -25,7 +30,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -34,7 +39,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -43,6 +48,14 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr ""
@@ -56,11 +69,19 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr ""
@@ -76,357 +97,246 @@ msgstr ""
msgid "Failed to add bind-now-loader."
msgstr ""
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr ""
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr ""
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr ""
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr ""
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr ""
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr ""
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr ""
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr ""
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Έξοδος."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Αποτυχία εÏÏεσης ομάδας χÏηστών '%s'."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:201
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
-#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr ""
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 ""
-
-#: ../src/daemon/main.c:512
-#, c-format
-msgid "We're in the group '%s', allowing real-time scheduling."
-msgstr ""
-
-#: ../src/daemon/main.c:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr ""
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr ""
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr ""
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr ""
-
-#: ../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 ""
-
-#: ../src/daemon/main.c:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr ""
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr ""
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr ""
-
-#: ../src/daemon/main.c:631
-msgid ""
-"Real-time scheduling enabled in configuration but not allowed by policy."
-msgstr ""
-
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Αυτό είναι το PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:768
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -436,15 +346,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -452,27 +362,27 @@ msgstr ""
"Δικέ μου, ο πυÏήνας σου είναι για τα μπάζα! Η Ï€Ïόταση του σεφ σήμεÏα είναι "
"Linux με ενεÏγοποιημένα τα high-resolution timers!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr ""
@@ -658,88 +568,84 @@ msgstr ""
msgid "Path: %s\n"
msgstr ""
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
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
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr ""
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
msgstr ""
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -750,25 +656,7 @@ msgstr ""
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 ""
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr ""
@@ -972,33 +860,33 @@ msgstr ""
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr ""
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr ""
@@ -1102,27 +990,35 @@ msgstr ""
msgid "Client forked"
msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr ""
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr ""
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr ""
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr ""
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr ""
@@ -1135,188 +1031,187 @@ msgstr ""
msgid "Failed to parse cookie data"
msgstr ""
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr ""
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr ""
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr ""
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:107
-#, c-format
-msgid "Failed to drain stream: %s\n"
+#: ../src/utils/pacat.c:108
+#, fuzzy, c-format
+msgid "Failed to drain stream: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
msgstr ""
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
msgstr ""
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
msgstr ""
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
+msgid "pa_stream_peek() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
msgstr ""
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
msgstr ""
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
msgstr ""
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
msgstr ""
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
msgstr ""
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
+msgid "Stream error: %s"
msgstr ""
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
+msgid "Stream device suspended.%s"
msgstr ""
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
+msgid "Stream device resumed.%s"
msgstr ""
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
+msgid "Stream underrun.%s"
msgstr ""
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
+msgid "Stream overrun.%s"
msgstr ""
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
+msgid "Stream started.%s"
msgstr ""
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
msgstr ""
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr ""
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
+msgid "Stream buffer attributes changed.%s"
msgstr ""
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
+msgid "Connection established.%s"
msgstr ""
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
+msgid "pa_stream_new() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
+msgid "Connection failure: %s"
msgstr ""
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
msgstr ""
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
+msgid "write() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
msgstr ""
-#: ../src/utils/pacat.c:567
-#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr ""
+#: ../src/utils/pacat.c:571
+#, fuzzy, c-format
+msgid "Failed to get latency: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr ""
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr ""
#: ../src/utils/pacat.c:605
@@ -1387,132 +1282,126 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
#, c-format
-msgid "Invalid client name '%s'\n"
+msgid "Invalid client name '%s'"
msgstr ""
-#: ../src/utils/pacat.c:776
+#: ../src/utils/pacat.c:775
#, c-format
-msgid "Invalid stream name '%s'\n"
+msgid "Invalid stream name '%s'"
msgstr ""
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
+msgid "Invalid channel map '%s'"
msgstr ""
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
+msgid "Invalid latency specification '%s'"
msgstr ""
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
+msgid "Invalid process time specification '%s'"
msgstr ""
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, c-format
-msgid "Invalid property '%s'\n"
+msgid "Invalid property '%s'"
msgstr ""
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
msgstr ""
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
+msgid "open(): %s"
msgstr ""
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
+msgid "dup2(): %s"
msgstr ""
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
msgstr ""
-#: ../src/utils/pacat.c:930
-msgid "Failed to generate sample specification for file.\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
msgstr ""
-#: ../src/utils/pacat.c:950
-msgid "Failed to open audio file.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
msgstr ""
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
-#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
-msgid "Failed to determine sample specification from file.\n"
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
msgstr ""
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
msgstr ""
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
msgstr ""
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
msgstr ""
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr ""
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr ""
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
msgstr ""
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
msgstr ""
-#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
-#: ../src/utils/pactl.c:1116
-#, c-format
-msgid "pa_context_new() failed.\n"
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
msgstr ""
-#: ../src/utils/pacat.c:1066
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
#, c-format
-msgid "pa_context_connect() failed: %s\n"
+msgid "pa_context_connect() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
msgstr ""
-#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
-#, c-format
-msgid "pa_mainloop_run() failed.\n"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
msgstr ""
#: ../src/utils/pasuspender.c:81
@@ -1540,7 +1429,12 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1570,32 +1464,47 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:149
-#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1609,12 +1518,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1636,22 +1545,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, c-format
msgid "\tPorts:\n"
msgstr ""
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
#, 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:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1673,20 +1582,20 @@ msgid ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1697,12 +1606,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1712,12 +1621,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:440
-#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:447
+#, fuzzy, c-format
+msgid "Failed to get card information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1728,22 +1637,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:489
-#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1764,12 +1673,12 @@ msgid ""
"\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:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1786,12 +1695,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -1809,21 +1718,25 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
+msgstr "Όνομα: %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
+msgstr "Αποτυχία εÏÏεσης χÏήστη '%s'."
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
msgstr ""
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:869
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1832,15 +1745,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1851,7 +1770,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -1859,73 +1778,106 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
msgstr ""
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr ""
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
+msgstr "Αποτυχία εÏÏεσης ομάδας χÏηστών '%s'."
-#: ../src/utils/pactl.c:951
-msgid "Warning: Failed to determine sample specification from file.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
msgstr ""
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
msgstr ""
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
msgstr ""
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
msgstr ""
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
msgstr ""
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
msgstr ""
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
msgstr ""
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
+#: ../src/utils/pactl.c:1115
+msgid "You have to specify a card name/index and a profile name"
msgstr ""
-#: ../src/utils/pactl.c:1073
-msgid "You have to specify a sink name/index and a port name\n"
+#: ../src/utils/pactl.c:1126
+msgid "You have to specify a sink name/index and a port name"
msgstr ""
-#: ../src/utils/pactl.c:1084
-msgid "You have to specify a source name/index and a port name\n"
+#: ../src/utils/pactl.c:1137
+msgid "You have to specify a source name/index and a port name"
msgstr ""
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
msgstr ""
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr ""
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr ""
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr ""
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr ""
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
msgstr ""
#: ../src/utils/pax11publish.c:61
@@ -2000,48 +1952,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
+msgid "poll(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr ""
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2052,7 +2004,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2064,15 +2016,19 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
diff --git a/po/es.po b/po/es.po
index 8af1c738..b6a0e1f7 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,16 +8,22 @@ 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: 2009-06-11 21:48-0300\n"
-"Last-Translator: Dennis Tobar <dennis.tobar@gmail.com>\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-03 09:52-0300\n"
+"Last-Translator: Domingo Becker <domingobecker@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"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -30,7 +36,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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -43,7 +49,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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -56,9 +62,17 @@ 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/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Sumidero virtual LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -68,12 +82,27 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<nombre para el sumidero> sink_properties=<propiedades para el "
+"sumidero> master=<nombre del sumidero a filtrar> format=<formato de ejemplo> "
+"rate=<tasa de ejemplo> channels=<cantidad de canaless> channel_map=<mapeo de "
+"canales> plugin=<nombre del complemento ladspa> label=<etiqueta del "
+"complemento ladspa> control=<lista separada por comas de valores de control "
+"de entrada>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Salida %s"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Audio Interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Módem"
@@ -89,221 +118,92 @@ msgstr "Falló al asignar el cargador dl nuevo."
msgid "Failed to add bind-now-loader."
msgstr "Falló al agregar bind-now-loader."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "No se puede conectar al bus del sistema: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "No se puede obtener el llamador desde el PID: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "No se puede poner UID en el objeto llamador."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Falló al obtener sesión CK."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "No se puede poner UID en el objeto de sesión."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "No se puede asignar PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "No se pudo poner action_id"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "No se pudo asignar PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "No se pudo inicializar PolKitContext: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "No se pudo determinar si el llamador está autorizado: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "No se pudo obtener auth: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit respondió con '%s'"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Se obtuvo la señal %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Saliendo."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falló al buscar usuario '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falló al buscar grupo '%s'."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falló al crear '%s': %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falló al cambiar la lista de grupo: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falló al cambiar GID: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falló al cambiar UID: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Se han liberado con éxitos los privilegios de root."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
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:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falló: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Falló al analizar la línea de comando."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
-
-#: ../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:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
-
-#: ../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: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 ""
-"Se llamó con SUID root y se pidió planificación en tiempo real y/o de alta "
-"prioridad en la configuración. Sin embargo, no se tiene los privilegios "
-"necesarios:\n"
-"No se está en el grupo '%s'. PolicyKit rechaza darnos el permiso necesario y "
-"no se puede aumentar los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO.\n"
-"Para habilitar la planifiación de tiempo real/alta prioridad por favor "
-"adquiera los privilegios apropiados en PolicyKit, o hágase miembro de '%s', "
-"o aumente los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este "
-"usuario."
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "Fallo en RLIMIT_RTPRIO: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Abandonando CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "El demonio no está funcionando"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "El demonio está funcionando como PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "No se ha podido detener el demonio: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -311,155 +211,160 @@ msgstr ""
"Este programa no tiene por qué ser ejecutado como root (a menos que --system "
"sea especificado)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Se necesitan privilegios de root."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start no está soportado para las instancias del sistema."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
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:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Fallo al intentar adquirir stdio."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "Falló el pipe: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "Falló el fork(): %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "Falló la operación read(): %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Falló el inicio del demonio. "
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "El demonio se inició exitosamente."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Esto es PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilación: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilación CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Ejecutándose en el host: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Se encontraron %u CPUs."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "El tamaño de la página es de %lu bytes"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Soporte para compilar con Valgrind: si"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Soporte para compilar con Valgrind: no"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Ejecutándose en modo valgrind: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Build optimizado: si"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Build optimizado: no"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todos los chequeos deshabilitados."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definido, sólo se deshabilitan los chequeos fast path."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Todos los chequeos habilitados."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Fallo al intentar obtener el ID de la máquina"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "El ID de la máquina es %s"
+msgstr "El ID de la sesión es %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilizando directorio de tiempo de ejecución %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Utilizando directorio de módulos %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -468,18 +373,25 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"Bien, o sea que está ejecutando PA en modo de sistema. Por favor entienda "
+"que, en general, no debería estar haciéndolo.\n"
+"Si insiste en seguir utilizando este modo, será debido a su propio accionar "
+"que las cosas no funcionen como se esperaba.\n"
+"Por favor lea http://pulseaudio.org/wiki/WhatIsWrongWithSystemMod para "
+"obtener una explicación acerca de por qué es una mala idea utilizar el modo "
+"sistema."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
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:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -487,29 +399,29 @@ 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:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
@@ -767,7 +679,7 @@ msgid "Load Once: %s\n"
msgstr "Carga una vez: %s\n"
#: ../src/daemon/dumpmodules.c:75
-#, fuzzy, c-format
+#, c-format
msgid "DEPRECATION WARNING: %s\n"
msgstr "ADVERTENCIA DE COMPATIBILIDAD: %s\n"
@@ -776,72 +688,72 @@ msgstr "ADVERTENCIA DE COMPATIBILIDAD: %s\n"
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destino de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de remuestreo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de muestra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Tasa de muestra inválida '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canal inválido '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamaño inválido de fragmento '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, 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:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -849,18 +761,14 @@ msgstr ""
"El mapa de canal predeterminado especificado tiene un número de canales "
"distinto al especificado como predeterminado."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Leyendo desde el archivo de confioguración: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Abandonando privilegios de root."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Capacidades limitadas con éxito para CAP_SYS_NICE-"
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Abandonando privilegios."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -870,31 +778,7 @@ msgstr "Sistema de Sonido PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Iniciar el Sistema de Sonido PulseAudio"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
-"Planificación de alta prioridad (nivel Unix negativo) para el demonio "
-"PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Planificación de tiempo real para el demonio de PulseAudio."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"Las políticas del sistema impidieron a PulseAudio adquirir la planificación "
-"de alta prioridad."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
-"Las políticas del sistema impidieron a PulseAudio adquirir la planificación "
-"de tiempo real."
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1098,33 +982,33 @@ msgstr "Posterior izquierdo superior"
msgid "Top Rear Right"
msgstr "Posterior derecho superior"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(inválido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Estéreo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Envolvente 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Envolvente 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Envolvente 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Envolvente 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Envolvente 7.1"
@@ -1228,27 +1112,35 @@ msgstr "Falta implementación"
msgid "Client forked"
msgstr "Cliente iniciado"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1261,192 +1153,191 @@ msgstr "XOpenDisplay() falló"
msgid "Failed to parse cookie data"
msgstr "Fallo al analizar los datos de la cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Fallo al abrir el archivo de configuración '%s': %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "No se ha cargado ninguna cookie. Intentando conectar de todos modos."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(:) %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Se ha recibido un mensaje para una extensión desconocida '%s'"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Error al drenar el flujo: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Falló al drenar el flujo: %s"
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "El flujo de reproducción ha sido drenado."
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "El flujo de platback se ha drenado.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Drenando conexión con el servidor."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Drenando conexión con el servidor.\n"
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() falló: %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() falló: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() falló: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() falló: %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() falló: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Se ha creado exitosamente el flujo (stream).\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Se ha creado exitosamente el flujo (stream)."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() falló: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() falló: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Métrica del búfer: maxlenght=%u, tlenghth=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Métrica del búfer: maxlenght=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Métrica del búfer: maxlenght=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "Utilizando especificaciones de muestra '%s', mapa del canal '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Utilizando especificaciones de muestra '%s', mapa del canal '%s'."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "Conectado al dispositivo %s (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Conectado al dispositivo %s (%u, %ssuspended)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Error de flujo: %s\n"
+msgid "Stream error: %s"
+msgstr "Error de flujo: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Dispositivo de flujo suspendido. %s \n"
+msgid "Stream device suspended.%s"
+msgstr "Dispositivo de flujo suspendido.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Dispositivo de flujo reestablecido. %s \n"
+msgid "Stream device resumed.%s"
+msgstr "Dispositivo de flujo reestablecido.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Flujo agotado. %s \n"
+msgid "Stream underrun.%s"
+msgstr "Flujo agotado.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Flujo saturado.%s \n"
+msgid "Stream overrun.%s"
+msgstr "Flujo saturado.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Flujo iniciado. %s \n"
+msgid "Stream started.%s"
+msgstr "Flujo iniciado.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "Fujo trasladado al dispositivo %s (%u, %ssuspended). %s\n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Fujo trasladado al dispositivo %s (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Los atributos del buffer de flujo cambiaron. %s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Los atributos del búfer de flujo han cambiado.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Conexión establecida. %s \n"
+msgid "Connection established.%s"
+msgstr "Conexión establecida.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() falló; %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() falló: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() falló: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() falló: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() falló: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() falló: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Error en la conexión: %s\n"
-
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Hay EOF.\n"
+msgid "Connection failure: %s"
+msgstr "Error en la conexión: %s"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() falló: %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Se tiene EOF."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() falló: %s\n"
+msgid "write() failed: %s"
+msgstr "write() falló: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Hay señal, saliendo (exiting).\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Hay señal, saliendo (exiting)."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "No se pudo obtener latencia: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "No se pudo obtener latencia: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Tiempo: %0.3f sec; Latencia: %0.0f usec. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() falló: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() falló: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1517,13 +1408,13 @@ msgstr ""
"\n"
" -s, --server=SERVER El nombre del servidor con el que "
"conectarse\n"
-" -d, --device=DEVICE El nombre del destino/fuente a la "
+" -d, --device=DEVICE El nombre del sumidero/fuente a la "
"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 Especificar el salida inicial "
+" --volume=VOLUME Especifica el salida inicial "
"(linear) de volumen dentro del rango 0...65536\n"
" --rate=SAMPLERATE Tasa de muestra en Hz (establecida "
"en 44100 por defecto)\n"
@@ -1534,25 +1425,34 @@ msgstr ""
" --channels=CHANNELS La cantidad de canales, 1 para mono, "
"2 para stereo\n"
" (establecido en 2 por defecto)\n"
-" --channel-map=CHANNELMAP Mapa de canales a ser usado en lugar "
-"del establecido por defecto\n"
-" --fix-format Obtener el formato de sample desde "
-"el destino al que el flujo\n"
+" --channel-map=CHANNELMAP Mapeo de canales a ser usado en "
+"lugar del establecido por defecto\n"
+" --fix-format Obtener el formato de ejemplo desde "
+"el sumidero al que el flujo\n"
" se ha conectado.\n"
-" --fix-rate Obtener la tasa de sampling desde el "
+" --fix-rate Obtiene la tasa de ejemplo desde el "
"destino al que el flujo\n"
" se ha conectado.\n"
" --fix-channels Obtener el mapa y la cantidad de "
"canales\n"
-" desde el destino al que el flojo se "
+" desde el sumidero al que el flujo se "
"ha conectado.\n"
-" --no-remix No upmix o downmix canales.\n"
-" --no-remap Mapear canales por índices en lugar "
+" --no-remix No realiza un upmix o un downmix de "
+"los canales.\n"
+" --no-remap Mapea canales por índices en lugar "
"de por nombres.\n"
-" --latency=BYTES Solicitar la latencia especificada "
-"en bytes.\n"
-" --process-time=BYTES Solicitar los procesos de tiempo por "
+" --latency=BYTES Solicita la latencia especificada en "
+"bytes.\n"
+" --process-time=BYTES Solicita los procesos de tiempo por "
"pedido especificados en bytes.\n"
+" --property=PROPERTY=VALUE Estabelce la propiedad especificada "
+"al valor especificado.\n"
+" --raw Graba/reproduce datos PCM con "
+"formato raw.\n"
+" --file-format=FFORMAT Graba/reproduce datos PCM "
+"formateados.\n"
+" --list-file-formats Muestra una lista con los formatos "
+"de archivo disponibles.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1565,135 +1465,131 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Nombre de cliente '%s' inválido"
-#: ../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:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Nombre de flujo '%s' inválido"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Mapa de canales inválido '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "Mapa de canales '%s' inválido"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Especificación de latencia inválida '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Especificación de latencia '%s' inválida"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Especificación de tiempo de proceso inválida '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Especificación de tiempo de proceso '%s' inválida"
-#: ../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:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Propiedad '%s' inválida"
-#: ../src/utils/pacat.c:878
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:877
+#, 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:896
+msgid "Invalid sample specification"
+msgstr "Especificación de muestra inválida"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open() %s\n"
+msgid "open(): %s"
+msgstr "open() %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Demasiados argumentos.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Demasiados argumentos."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "Falló al generar especificación de ejemplo para el archivo."
-#: ../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:949
+msgid "Failed to open audio file."
+msgstr "Falló al abrir el archivo de sonido."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Aviso: el ejemplo de especificación indicado será sobreescrito con las "
+"especificaciones del archivo."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Falló al determinar especificación de ejemplo del archivo."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Aviso: Falló al determinar el mapeo del canal desde el archivo."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "El mapa del canal no se corresponde con la especificación de muestra"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Aviso: Faló al escribir el mapeo del canal en el archivo."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, 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"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"Abriendo un flujo %s con especificación de muestra '%s' y mapeo de canal '%"
+"s'."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "grabando"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "playback"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() falló."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() falló.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() falló."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() falló."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() falló: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() falló.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() falló."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() falló."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1720,7 +1616,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Error en la conexión: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Hay SIGINT, saliendo.\n"
@@ -1760,34 +1661,49 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "Error al intentar obtener estadísticas: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() falló.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() falló.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() falló.\n"
+
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "Error al intentar obtener estadísticas: %s"
+
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Tamaño del cache de muestra: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "Error al intentar obtener información del servidor: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "Error al intentar obtener información del servidor: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1810,12 +1726,12 @@ msgstr ""
"Fuente por defecto: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "Error al intentar obtener información del destino: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "Error al intentar obtener información del sumidero: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1854,22 +1770,22 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tPerfiles:\n"
+msgstr "\tPuertos:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tPerfil Activo: %s\n"
+msgstr "\tPuerto Activo: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "Error al intentar obtener información de la fuente: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "Error al intentar obtener información de la fuente: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1908,20 +1824,20 @@ msgstr ""
"\tPropiedades:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "Error al intentar obtener información del módulo: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "Error al intentar obtener información del módulo: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1938,12 +1854,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "Error al intentar obtener información del cliente: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "Error al intentar obtener información del cliente: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1958,12 +1874,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "Fallo al obtener la información de la placa: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "Fallo al obtener la información de la placa: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1980,22 +1896,22 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPerfiles:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tPerfil Activo: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "Error al intentar obtener información de entrada del destino: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "Error al intentar obtener información de entrada del sumidero: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2032,13 +1948,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, 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"
+msgid "Failed to get source output information: %s"
+msgstr "Falló al obtener información de salida de la fuente: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2067,12 +1982,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "Error al intentar obtener información de muestra: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "Falló al obtener información de la muestra: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2103,22 +2018,26 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "Falla: %s\n"
+msgid "Failure: %s"
+msgstr "Falla: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "Fallo al cargar muestra: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "Falló al subir muestra: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "Fin prematuro del archivo\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "Fin de archivo prematuro"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Hay un SIGINT, saliendo."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2126,15 +2045,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2157,6 +2082,14 @@ msgstr ""
"%s [opciones] suspend-sink [SINK] 1|0\n"
"%s [opciones] suspend-source [SOURCE] 1|0\n"
"%s [opciones] set-card-profile [CARD] [PROFILE] \n"
+"%s [opciones] set-sink-port [SINK] [PORT] \n"
+"%s [opciones] set-source-port [SOURCE] [PORT] \n"
+"%s [opciones] set-sink-volume SINK VOLUME\n"
+"%s [opciones] set-source-volume SOURCE VOLUME\n"
+"%s [opciones] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [opciones] set-sink-mute SINK 1|0\n"
+"%s [opciones] set-source-mute SOURCE 1|0\n"
+"%s [opciones] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Muestra esta ayuda\n"
" --version Muestra la versión\n"
@@ -2166,7 +2099,7 @@ msgstr ""
" -n, --client-name=NAME El nombre de este cliente en el "
"servidor\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2177,83 +2110,113 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linked con libpulse %s\n"
-#: ../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:979
+msgid "Please specify a sample file to load"
+msgstr "Por favor, especifique un archivo de muestra a cargar"
-#: ../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:992
+msgid "Failed to open sound file."
+msgstr "Error al intentar abrir el archivo de sonido."
-#: ../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:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr ""
+"Aviso: Falló al intentar determinar especificación de la muestra desde el "
+"archivo."
-#: ../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:1014
+msgid "You have to specify a sample name to play"
+msgstr "Debe especificar un nombre de muestra para reproducir"
-#: ../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:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Debe especificar un nombre de muestra a eliminar"
-#: ../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:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Debe especificar un índice para la entrada al sumidero y un sumidero"
-#: ../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:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Debe especificar un índice para las salida de la fuente y una fuente"
-#: ../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:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Debe especificar un nombre de módulo y los argumentos."
-#: ../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:1080
+msgid "You have to specify a module index"
+msgstr "Debe especificar un índice de módulo"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"No puede especificar más de un sumidero. Tiene que especificar un valor "
-"booleano.\n"
+"booleano."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
"No puede especificar más de una fuente. Tiene que especificar un valor "
-"booleano.\n"
+"booleano."
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Debe especificar un nombre/índice de placa y un nombre de perfil"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Debe especificar un nombre/índice de sumidero y un nombre de puerto"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Debe especificar un nombre/índice de fuente y un nombre de puerto"
-#: ../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:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Debe especificar un nombre/índice de sumidero y el volumen"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() falló: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Especificación de volumen inválida"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Debe especificar un nombre/índice de fuente y un volumen"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Debe especificar un índice de sumidero y un volumen"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Indice de entrada a sumidero inválido"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Debe especificar un nombre/índice de sumidero y un booleano para mudo"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Debe especificar un nombre/índice de fuente y un booleano para mudo"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+"Debe especificar un índice de entrada a sumidero y un booleano para mudo"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Especificación de índice de entrada a sumidero inválida"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "No se ha especificado ningún comando válido."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2335,51 +2298,50 @@ 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:61
-#, fuzzy
+#: ../src/utils/pacmd.c:69
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
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Error al intentar detener el demonio de PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "El demonio no responde."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "No se puede acceder al candado de autogeneración."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2396,7 +2358,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:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2414,15 +2376,19 @@ msgstr ""
"() devolvió 0 u otro valor < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Apagado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Reproducción de Alta Fidelidad (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Captura de Alta Fidelidad (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telefonía Duplex (HSP/HFP)"
@@ -2430,6 +2396,149 @@ msgstr "Telefonía Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Servidor de Sonido PulseAudio"
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Nombre de cliente inválido '%s'\n"
+
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr ""
+#~ "Error al intentar determinar especificación de ejemplo del archivo.\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "No se puede conectar al bus del sistema: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "No se puede obtener el llamador desde el PID: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "No se puede poner UID en el objeto llamador."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Falló al obtener sesión CK."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "No se puede poner UID en el objeto de sesión."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "No se puede asignar PolKitAction."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "No se pudo poner action_id"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "No se pudo asignar PolKitContext."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "No se pudo inicializar PolKitContext: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "No se pudo determinar si el llamador está autorizado: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "No se pudo obtener auth: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit respondió con '%s'"
+
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr ""
+#~ "Planificación de alta prioridad (nivel Unix negativo) para el demonio "
+#~ "PulseAudio"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Planificación de tiempo real para el demonio de PulseAudio."
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "Las políticas del sistema impidieron a PulseAudio adquirir la "
+#~ "planificación de alta prioridad."
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr ""
+#~ "Las políticas del sistema impidieron a PulseAudio adquirir la "
+#~ "planificación de tiempo real."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() falló: %s\n"
+
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_connect() falló: %s\n"
+
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr ""
+#~ "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real."
+
+#~ 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 ""
+#~ "Se llamó con SUID root y se pidió planificación en tiempo real y/o de "
+#~ "alta prioridad en la configuración. Sin embargo, no se tiene los "
+#~ "privilegios necesarios:\n"
+#~ "No se está en el grupo '%s'. PolicyKit rechaza darnos el permiso "
+#~ "necesario y no se puede aumentar los límites del recurso RLIMIT_NICE/"
+#~ "RLIMIT_RTPRIO.\n"
+#~ "Para habilitar la planifiación de tiempo real/alta prioridad por favor "
+#~ "adquiera los privilegios apropiados en PolicyKit, o hágase miembro de '%"
+#~ "s', o aumente los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este "
+#~ "usuario."
+
+#~ 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."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "Fallo en RLIMIT_RTPRIO: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Abandonando CAP_NICE"
+
+#~ 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."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Capacidades limitadas con éxito para CAP_SYS_NICE-"
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() falló.\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Mono Analógico"
@@ -2466,9 +2575,6 @@ msgstr "Servidor de Sonido PulseAudio"
#~ msgid "Output %s + Input %s"
#~ msgstr "Salida %s + Entrada %s"
-#~ msgid "Output %s"
-#~ msgstr "Salida %s"
-
#~ msgid "Input %s"
#~ msgstr "Entrada %s"
diff --git a/po/fi.po b/po/fi.po
index c005658d..5798b959 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-05 16:24+0300\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-04 23:29+0300\n"
"Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu@lokalisointi.org>\n"
"MIME-Version: 1.0\n"
@@ -16,7 +16,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -28,7 +33,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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -41,7 +46,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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -54,9 +59,17 @@ msgstr ""
"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa â€%sâ€. Ilmoita tästä "
"ongelmasta ALSA-kehittäjille."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Virtuaalinen LADSPA-nielu"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -66,12 +79,27 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<nielun nimi> sink_properties=<nielun asetukset> "
+"master=<suodatettavan nielun nimi> format=<näytemuoto> "
+"rate=<näytteenottotaajuus> channels=<kanavien määrä> "
+"channel_map=<kanavakartta> plugin=<ladspa-liitännäisen nimi> label=<ladspa-"
+"liitännäisen nimiö (label)> control=<pilkulla erotettu luettelo "
+"syötteenhallinta-arvoja>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Ulostulo %s"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Sisäinen äänentoisto"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modeemi"
@@ -87,220 +115,92 @@ msgstr "Uuden dl-lataaminen varaaminen epäonnistui."
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loaderin lisääminen epäonnistui."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Järjestelmäväylään ei voida yhdistää: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Kutsujaa ei saada PID:stä: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "UID:tä ei voida asettaa kutsujaobjektille."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "CK-istunnon saaminen epäonnistui."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "UID:tä ei voida asettaa istunto-objektille."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Ei voida varata PolKitActionia."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Ei voida asettaa action_id:tä"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Ei voida varata PolKitContextia."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Ei voida alustaa PolKitContextia: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Ei voida päätellä onko kutsujalla käyttöoikeus: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Tunnistautumista ei saada: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit vastasi â€%sâ€"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Saatiin signaali %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Poistutaan."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Käyttäjää â€%s†ei löydetty."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ryhmää â€%s†ei löydetty."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Hakemiston â€%s†luominen epäonnistui: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ryhmäluettelon vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Root-oikeuksista luopuminen onnistui."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "Järjestelmänlaajuista tilaa ei tueta tällä alustalla."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) epäonnistui: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Komentorivin jäsentäminen epäonnistui."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit myöntää acquire-high-priority-oikeuden."
-
-#: ../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:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit myöntää acquire-real-time-oikeuden."
-
-#: ../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: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 ""
-"Ohjelmaa kutsuttiin SUID-rootina ja reaaliaikaista ja/tai korkean "
-"prioriteetin ajoitusta pyydettiin asetuksissa. Tarvittavat oikeudet "
-"kuitenkin puuttuvat:\n"
-"Ei olla ryhmässä â€%sâ€, PolicyKit ei myönnä pyydettyjä oikeuksia ja "
-"RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja ei ole kasvatettu.\n"
-"Hanki riittävät PolicyKit-oikeudet, liity ryhmään â€%s†tai kasvata tämän "
-"käyttäjän RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja reaaliaikaisen ja/tai "
-"korkean prioriteetin ajoituksen ottamiseksi käyttöön."
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "RLIMIT_RTPRIO:n kasvatus onnistui"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO epäonnistui: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Luovutaan CAP_NICE:stä"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Taustaprosessi ei ole käynnissä"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Taustaprosessi käynnissä prosessitunnisteella %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Taustaprosessin lopettaminen epäonnistui: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -308,156 +208,161 @@ msgstr ""
"Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --"
"system ole määritelty)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Pääkäyttäjän (root) oikeudet vaaditaan."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start-valitsinta ei tueta järjestelmätilassa."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
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:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio:n saaminen epäonnistui."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "putki epäonnistui: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() epäonnistui: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() epäonnistui: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Taustaprosessin käynnistys epäonnistui."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Taustaprosessin käynnistys onnistui."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Tämä on PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Käännöksen isäntäkone: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Käännösaikaiset C-liput (CFLAGS): %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Käynnissä isäntäkoneella: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Löydettiin %u CPU:ta."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Sivun koko on %lu tavua"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Käännetty Valgrind-tuella: kyllä"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Käännetty Valgrind-tuella: ei"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Käynnissä valgrind-tilassa: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimoitu rakentaminen: kyllä"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Optimoitu rakentaminen: ei"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG on määritelty, kaikki assertit ovat poissa käytöstä."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
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:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Kaikki assertit ovat käytössä."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Konetunnisteen nouto epäonnistui"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "Konetunniste on %s."
+msgstr "Istunnon tunniste on %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Käytetään moduulihakemistoa %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -466,16 +371,20 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"PA:ta suoritetaan järjestelmätilassa. Näin ei luultavasti pitäisi tehdä.\n"
+"Jos silti teet näin, on sinun vikasi jos kaikki ei toimikaan odotetusti.\n"
+"Lisätietoja siitä, miksi järjestelmätilan käyttäminen on yleensä huono "
+"ajatus on osoitteessa http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode"
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() epäonnistui."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -483,29 +392,29 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() epäonnistui."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
@@ -769,79 +678,79 @@ msgstr "Lataa kerran: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "VAROITUS VANHENTUNEISUUDESTA: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Polku: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde â€%sâ€."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen taso â€%sâ€."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa â€%sâ€."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Virheellinen rlimit â€%sâ€."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Virheellinen näytemuoto â€%sâ€."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Virheellinen näytteenottotaajuus â€%sâ€."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Virheelliset näytekanavat â€%sâ€."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Virheellinen kanavakartta â€%sâ€."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Virheellinen fragmenttimäärä â€%sâ€."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Virheellinen fragmenttikoko â€%sâ€."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Virheellinen nice-taso â€%sâ€."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -849,18 +758,14 @@ msgstr ""
"Kanavien oletusmäärä ja oletuskanavakartan kanavien määrä poikkeavat "
"toisistaan."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Luettu asetustiedostosta: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Luovutaan pääkäyttäjän oikeuksista."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Oikeuksien rajoittaminen CAP_SYS_NICEen onnistui."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Luovutaan oikeuksista."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -870,30 +775,7 @@ msgstr "PulseAudio-äänijärjestelmä"
msgid "Start the PulseAudio Sound System"
msgstr "Käynnistä PulseAudio-äänijärjestelmä"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
-"Korkean prioriteetin ajoitus (negatiivinen Unix-nice-taso) PulseAudio-"
-"taustajärjestelmälle"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Reaaliaikainen ajoitus PulseAudio-taustajärjestelmälle"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"Järjestelmäkäytäntö estää PulseAudiota saamasta korkean prioriteetin "
-"ajoitusta."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-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:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1097,33 +979,33 @@ msgstr "Vasen ylä taka"
msgid "Top Rear Right"
msgstr "Oikea ylä taka"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(virheellinen)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "4.0-tilaääni"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "4.1-tilaääni"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "5.0-tilaääni"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "5.1-tilaääni"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "7.1-tilaääni"
@@ -1227,27 +1109,35 @@ msgstr "Puuttuva toteutus"
msgid "Client forked"
msgstr "Asiakasohjelma haarautui"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %u kan. %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1260,192 +1150,191 @@ msgstr "XOpenDisplay() epäonnistui"
msgid "Failed to parse cookie data"
msgstr "Evästetietojen jäsennys epäonnistui"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Asetustiedoston avaaminen epäonnistui: â€%sâ€: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Ei ladattua evästettä. Yritetään yhdistämistä ilman."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Saatiin viesti tuntemattomalle laajennokselle â€%sâ€"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Virran tyhjentäminen epäonnistui: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Virran tyhjentäminen epäonnistui: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Toistovirta on tyhjennetty.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Toistovirta on tyhjennetty."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Tyhjennetään yhteyttä palvelimelle.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Tyhjennetään yhteyttä palvelimelle."
+
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() epäonnistui: %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() epäonnistui: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() epäonnistui: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() epäonnistui: %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() epäonnistui: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Virran luonti onnistui.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Virran luonti onnistui."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() epäonnistui: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() epäonnistui: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Puskuritiedot: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Puskuritiedot: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Puskuritiedot: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "Käytetään näytemäärittelyä â€%sâ€, kanavakarttaa â€%sâ€.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Käytetään näytemäärittelyä â€%sâ€, kanavakarttaa â€%sâ€."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "Yhdistetty laitteeseen %s (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Yhdistetty laitteeseen %s (%u, %ssuspended)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Virtavirhe: %s\n"
+msgid "Stream error: %s"
+msgstr "Virtavirhe: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Virtalaite keskeytetty.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "Virtalaite keskeytetty.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Virtalaite palautettu.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "Virtalaite palautettu.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Virran alivuoto.%s \n"
+msgid "Stream underrun.%s"
+msgstr "Virran alivuoto.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Virran ylivuoto.%s \n"
+msgid "Stream overrun.%s"
+msgstr "Virran ylivuoto.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Virta käynnistetty.%s \n"
+msgid "Stream started.%s"
+msgstr "Virta käynnistetty.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "Virta siirretty laitteelle %s (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Virta siirretty laitteelle %s (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "ei "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Virran puskuriattribuutteja muutettu.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Virran puskuriattribuutteja muutettu.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Yhteys muodostettu.%s \n"
+msgid "Connection established.%s"
+msgstr "Yhteys muodostettu.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() epäonnistui: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() epäonnistui: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() epäonnistui: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() epäonnistui: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() epäonnistui: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() epäonnistui: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Yhteysvirhe: %s\n"
+msgid "Connection failure: %s"
+msgstr "Yhteysvirhe: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Saatiin EOF.\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Saatiin EOF."
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() epäonnistui: %s\n"
+msgid "write() failed: %s"
+msgstr "write() epäonnistui: %s"
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() epäonnistui: %s\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Saatiin signaali, lopetetaan."
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Saatiin signaali, lopetetaan.\n"
-
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Latenssin selvittäminen epäonnistui: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Latenssin selvittäminen epäonnistui: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Aika: %0.3f s; latenssi: %0.0f μs. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() epäonnistui: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() epäonnistui: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1513,34 +1402,33 @@ msgstr ""
"\n"
" -v, --verbose Yksityiskohtaiset tulosteet\n"
"\n"
-" -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
-" yhdistetään\n"
-" -d, --device=LAITE Sen nielun/lähteen nimi, johon\n"
-" yhdistetään\n"
+" -s, --server=PALVELIN Sen palvelimen nimi, johon "
+"yhdistetään\n"
+" -d, --device=LAITE Sen nielun/lähteen 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"
-" --rate=NÄYTTEENOTTOTAAJUUS Näytteenottotaajuus hertseinä\n"
-" (oletus: 44100)\n"
-" --format=NÄYTEMUOTO Näytteen tyyppi, yksi seuraavista:\n"
-" s16le, s16be, u8, float32le,\n"
+"kutsutaan palvelimella\n"
+" --stream-name=NIMI Kuinka tätä virtaa kutsutaan "
+"palvelimella\n"
+" --volume=ÄÄNENVOIMAKKUUS Määritä (lineaarinen) "
+"aloitusäänenvoimakkuus väliltä 0...65536\n"
+" --rate=NÄYTTEENOTTOTAAJUUS Näytteenottotaajuus hertseinä"
+"(oletus: 44100)\n"
+" --format=NÄYTEMUOTO Näytteen tyyppi, yksi seuraavista:"
+"s16le, s16be, u8, float32le,\n"
" float32be, ulaw, alaw, s32le, s32be\n"
-" (oletus s16ne)\n"
+"s24le, s24be,\n"
+" s24-32le, s24-32be (oletus s16ne)\n"
" --channels=KANAVIA Kanavien määrä, 1=mono, 2=stereo\n"
" (oletus: 2)\n"
-" --channel-map=KANAVAKARTTA Oletuksen sijasta käytettävä\n"
-" kanavakartta\n"
-" --fix-format Valitse näytemuoto nielusta, johon\n"
-" virtaa yhdistetään\n"
+" --channel-map=KANAVAKARTTA Oletuksen sijasta käytettävä "
+"kanavakartta\n"
+" --fix-format Valitse näytemuoto nielusta, jossa "
+"virta on\n"
" --fix-rate Valitse näytteenottotaajuus "
-"nielusta,\n"
-" johon virtaa yhdistetään\n"
-" --fix-channels Valitse kanavien määrä ja kanava-\n"
-" kartta nielusta, johon virtaa\n"
+"nielusta, jossa virta on\n"
+" --fix-channels Valitse kanavien määrä ja "
+"kanavakartta nielusta, johon virtaa\n"
" yhdistetään.\n"
" --no-remix Älä yli- tai alimiksaa kanavia.\n"
" --no-remap Kartoita kanavat indeksin mukaan, "
@@ -1549,6 +1437,13 @@ msgstr ""
"tavuissa.\n"
" --process-time=TAVUA Pyydä määritettyä prosessiaikaa "
"pyyntöä kohti tavuissa.\n"
+" --property=ASETUS=ARVO Anna määritetylle asetukselle "
+"määritetty arvo.\n"
+" --raw Tallenna/soita raakaa PCM-dataa.\n"
+" --file-format=TMUOTO Tallenna/soita tietyn muotoista PCM-"
+"dataa.\n"
+" --list-file-formats Luettele käytettävissä olevat "
+"tiedostomuodot.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1561,136 +1456,128 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Virheellinen asiakasohjelman nimi â€%sâ€"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "Virheellinen uudelleennäytteistyksen tapa â€%sâ€."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Virheellinen virran nimi â€%sâ€"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Virheellinen kanavakartta â€%sâ€\n"
+msgid "Invalid channel map '%s'"
+msgstr "Virheellinen kanavakartta â€%sâ€"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Virheellinen latenssimääritys â€%sâ€\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Virheellinen latenssimääritys â€%sâ€"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Virheellinen prosessiajan määritys â€%sâ€\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Virheellinen prosessiajan määritys â€%sâ€"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Virheellinen uudelleennäytteistyksen tapa â€%sâ€."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Virheellinen asetus â€%sâ€"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Tuntematon tiedostomuoto %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Virheellinen näytemääritys\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Virheellinen näytemääritys"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Liian monta argumenttia.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Liian monta argumenttia."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "Näytemäärityksen generointi tiedostolle epäonnistui."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "Äänitiedoston avaaminen epäonnistui.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "Äänitiedoston avaaminen epäonnistui."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Varoitus: tiedostosta luettava näytemääritys korvaa annetun määrityksen."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Näytemäärityksen selvittäminen tiedostosta epäonnistui."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Varoitus: Kanavakartan selvittäminen tiedostosta epäonnistui."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "Kanavakartta ei vastaa näytemääritystä"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Varoitus: kanavakartan kirjoittaminen tiedostoon epäonnistui."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "Avataan %svirta näytemäärityksellä â€%sâ€.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "Avataan %svirta näytemäärityksellä â€%s†ja kanavakartalla â€%sâ€."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "nauhoitus"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "toisto"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() epäonnistui."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() epäonnistui.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() epäonnistui."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() epäonnistui."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() epäonnistui: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() epäonnistui.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_new() epäonnistui."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() epäonnistui."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1717,7 +1604,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Yhteysvirhe: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Saatiin SIGINT, lopetetaan.\n"
@@ -1757,32 +1649,47 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() epäonnistui.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() epäonnistui.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() epäonnistui.\n"
+
+#: ../src/utils/pactl.c:135
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "Tilastojen selvittäminen epäonnistui: %s\n"
+msgid "Failed to get statistics: %s"
+msgstr "Tilastojen selvittäminen epäonnistui: %s"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Näytevälimuistin koko: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "Palvelintietojen selvittäminen epäonnistui: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "Palvelintietojen selvittäminen epäonnistui: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1805,12 +1712,12 @@ msgstr ""
"Oletuslähde: %s\n"
"Eväste: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "Nielun tietojen nouto epäonnistui: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "Nielun tietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1849,22 +1756,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tProfiilit:\n"
+msgstr "\tPortit:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tAktiivinen profiili: %s\n"
+msgstr "\tAktiivinen portti: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "Lähteen tietojen nouto epäonnistui: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "Lähteen tietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1903,20 +1810,20 @@ msgstr ""
"\tOminaisuudet:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "-"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "Moduulin tietojen nouto epäonnistui: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "Moduulin tietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1933,12 +1840,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "Asiakkaan tietojen nouto epäonnistui: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "Asiakkaan tietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1953,12 +1860,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "Kortin tietojen nouto epäonnistui: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "Kortin tietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1975,22 +1882,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiilit:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktiivinen profiili: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "Nielun sisääntulon tietojen nouto epäonnistui: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "Nielun sisääntulon tietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2027,12 +1934,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "Lähteen ulostulon tietojen nouto epäonnistui: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "Lähteen ulostulon tietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2061,12 +1968,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "Näytetietojen nouto epäonnistui: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "Näytetietojen nouto epäonnistui: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2097,22 +2004,26 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "Epäonnistuminen: %s\n"
+msgid "Failure: %s"
+msgstr "Epäonnistuminen: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "Näytteen lähettäminen epäonnistui: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "Näytteen lähettäminen epäonnistui: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "Ennenaikainen tiedoston päättyminen\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "Ennenaikainen tiedoston päättyminen"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Saatiin SIGINT, lopetetaan."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2120,15 +2031,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2144,23 +2061,31 @@ msgstr ""
"%s [valitsimet] upload-sample TIEDOSTONIMI [NIMI]\n"
"%s [valitsimet] play-sample NIMI [NIELU]\n"
"%s [valitsimet] remove-sample NIMI\n"
-"%s [valitsimet] move-sink-input TUNNISTE NIELU\n"
-"%s [valitsimet] move-source-output TUNNISTE LÄHDE\n"
+"%s [valitsimet] move-sink-input NIELUSISÄÄNMENO NIELU\n"
+"%s [valitsimet] move-source-output LÄHDEULOSTULO LÄHDE\n"
"%s [valitsimet] load-module NIMI [ARGUMENTIT ...]\n"
-"%s [valitsimet] unload-module TUNNISTE\n"
-"%s [valitsimet] suspend-sink [NIELU] 1|0\n"
-"%s [valitsimet] suspend-source [LÄHDE] 1|0\n"
-"%s [valitsimet] set-card-profile [KORTTI] [PROFIILI] \n"
+"%s [valitsimet] unload-module MODUULI\n"
+"%s [valitsimet] suspend-sink NIELU 1|0\n"
+"%s [valitsimet] suspend-source LÄHDE 1|0\n"
+"%s [valitsimet] set-card-profile KORTTI PROFIILI\n"
+"%s [valitsimet] set-sink-port NIELU PORTTI\n"
+"%s [valitsimet] set-source-port LÄHDE PORTTI\n"
+"%s [valitsimet] set-sink-volume NIELU VOIMAKKUUS\n"
+"%s [valitsimet] set-source-volume LÄHDE VOIMAKKUUS\n"
+"%s [valitsimet] set-sink-input-volume NIELUSISÄÄNMENO VOIMAKKUUS\n"
+"%s [valitsimet] set-sink-mute NIELU 1|0\n"
+"%s [valitsimet] set-source-mute LÄHDE 1|0\n"
+"%s [valitsimet] set-sink-input-mute NIELUSISÄÄNMENO 1|0\n"
"\n"
" -h, --help Näytä tämä ohje\n"
" --version Näytä versio\n"
"\n"
-" -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
-" yhdistetään\n"
-" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa\n"
-" kutsutaan palvelimella\n"
+" -s, --server=PALVELIN Sen palvelimen nimi, johon "
+"yhdistetään\n"
+" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa "
+"kutsutaan palvelimella\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2171,77 +2096,106 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "Anna ladattava näytetiedosto\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "Anna ladattava näytetiedosto"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "Äänitiedoston avaaminen epäonnistui.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "Äänitiedoston avaaminen epäonnistui."
-#: ../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:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "Varoitus: näytemäärityksen selvitys tiedostosta epäonnistui."
-#: ../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:1014
+msgid "You have to specify a sample name to play"
+msgstr "Soitettavan näytteen nimi on annettava"
-#: ../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:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Poistettavan näytteen nimi on annettava"
-#: ../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:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Nielun syöteindeksi ja nielu on annettava"
-#: ../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:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Lähteen ulostuloindeksi ja lähde on annettava"
-#: ../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:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Moduulin nimi ja argumentit on annettava."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "Moduulin indeksi on annettava\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "Moduulin indeksi on annettava"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
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"
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr "Ei voi antaa enempää kuin yhden nielun. Totuusarvo on annettava."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
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"
+"value."
+msgstr "Ei voi antaa enempää kuin yhden lähteen. Totuusarvo on annettava."
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Nielun nimi/indeksi ja portin nimi on annettava"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Lähteen nimi/indeksi ja portin nimi on annettava"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Mitään kelvollista komentoa ei annettu.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Nielun nimi/indeksi ja portin nimi on annettava"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() epäonnistui: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Virheellinen äänenvoimakkuuden määritys"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Lähteen nimi/indeksi ja äänenvoimakkuus on annettava"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Nielun syöteindeksi ja äänenvoimakkuus on annettava"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Virheellinen nielun syöteindeksi"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Nielun nimi/indeksi ja vaimennuksen totuusarvo on annettava"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Lähteen nimi/indeksi ja vaimennuksen totuusarvo on annettava"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Nielun syöteindeksi ja vaimennuksen totuusarvo on annettava"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Virheellinen nielun syöteindeksin määritys"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Mitään kelvollista komentoa ei annettu."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2324,48 +2278,50 @@ msgstr "Evästetietojen lataaminen epäonnistui\n"
msgid "Not yet implemented.\n"
msgstr "Toteutusta ei vielä ole.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"PulseAudio-taustaprosessi ei ole käynnissä eikä PulseAudiota suoriteta "
+"istunnon taustaprosessina."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio-taustaprosessin lopettaminen epäonnistui."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Taustaprosessi ei vastaa."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Automaattisen käynnistyksen lukkoa ei voida käyttää."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2382,7 +2338,7 @@ msgstr ""
"asetettuna, snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, "
"joka on < min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2399,15 +2355,19 @@ msgstr ""
"snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, on < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Poissa"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Korkean äänenlaadun toisto (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Korkean äänenlaadun tallennus (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
@@ -2415,6 +2375,145 @@ msgstr ""
msgid "PulseAudio Sound Server"
msgstr "PulseAudio-äänipalvelin"
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Virheellinen asiakasohjelman nimi â€%sâ€\n"
+
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "Näytemäärityksen selvitys tiedostosta epäonnistui: %s\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Järjestelmäväylään ei voida yhdistää: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Kutsujaa ei saada PID:stä: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "UID:tä ei voida asettaa kutsujaobjektille."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "CK-istunnon saaminen epäonnistui."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "UID:tä ei voida asettaa istunto-objektille."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Ei voida varata PolKitActionia."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Ei voida asettaa action_id:tä"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Ei voida varata PolKitContextia."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Ei voida alustaa PolKitContextia: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Ei voida päätellä onko kutsujalla käyttöoikeus: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Tunnistautumista ei saada: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit vastasi â€%sâ€"
+
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr ""
+#~ "Korkean prioriteetin ajoitus (negatiivinen Unix-nice-taso) PulseAudio-"
+#~ "taustajärjestelmälle"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Reaaliaikainen ajoitus PulseAudio-taustajärjestelmälle"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "Järjestelmäkäytäntö estää PulseAudiota saamasta korkean prioriteetin "
+#~ "ajoitusta."
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr ""
+#~ "Järjestelmäkäytäntö estää PulseAudiota saamasta reaaliaikaista ajoitusta."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() epäonnistui: %s\n"
+
+#, fuzzy
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_connect() epäonnistui: %s"
+
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr "Ollaan ryhmässä â€%sâ€, korkean prioriteetin ajoitus on sallittua."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr "Ollaan ryhmässä â€%sâ€, tosiaikainen vuorottaminen on sallittua."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "PolicyKit myöntää acquire-high-priority-oikeuden."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "PolicyKit ei myönnä acquire-high-priority-oikeutta."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "PolicyKit myöntää acquire-real-time-oikeuden."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "PolicyKit ei myönnä acquire-real-time-oikeutta."
+
+#~ 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 ""
+#~ "Ohjelmaa kutsuttiin SUID-rootina ja reaaliaikaista ja/tai korkean "
+#~ "prioriteetin ajoitusta pyydettiin asetuksissa. Tarvittavat oikeudet "
+#~ "kuitenkin puuttuvat:\n"
+#~ "Ei olla ryhmässä â€%sâ€, PolicyKit ei myönnä pyydettyjä oikeuksia ja "
+#~ "RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja ei ole kasvatettu.\n"
+#~ "Hanki riittävät PolicyKit-oikeudet, liity ryhmään â€%s†tai kasvata tämän "
+#~ "käyttäjän RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja reaaliaikaisen ja/tai "
+#~ "korkean prioriteetin ajoituksen ottamiseksi käyttöön."
+
+#~ 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ä."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "RLIMIT_RTPRIO:n kasvatus onnistui"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO epäonnistui: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Luovutaan CAP_NICE:stä"
+
+#~ 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ä."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Oikeuksien rajoittaminen CAP_SYS_NICEen onnistui."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() epäonnistui.\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Analoginen mono"
@@ -2451,9 +2550,6 @@ msgstr "PulseAudio-äänipalvelin"
#~ msgid "Output %s + Input %s"
#~ msgstr "Ulostulo %s + Sisääntulo %s"
-#~ msgid "Output %s"
-#~ msgstr "Ulostulo %s"
-
#~ msgid "Input %s"
#~ msgstr "Sisääntulo %s"
diff --git a/po/fr.po b/po/fr.po
index ca8e2b80..359769cc 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+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"
@@ -20,7 +20,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -33,7 +38,7 @@ msgstr ""
"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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -46,7 +51,7 @@ msgstr ""
"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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -59,6 +64,14 @@ msgstr ""
"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/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr ""
@@ -72,11 +85,20 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Sortie %s"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Audio interne"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -92,226 +114,93 @@ msgstr "Échec lors de l'allocation du nouveau chargeur dl."
msgid "Failed to add bind-now-loader."
msgstr "Échec lors de l'ajout du chargeur bind-now."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Impossible de se connecter au bus système : %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Impossible d'obtenir le programme appelant à partir du PID : %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Impossible de définir un UID sur l'objet appelant."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Échec lors de l'obtention de la session CK."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Impossible de définir l'UID sur l'objet de session."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Impossible d'allouer PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Impossible de définir action_id."
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Impossible d'allouer PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Impossible d'initialiser PolKitContext : %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Impossible de déterminer si le programme appelant est autorisé : %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Impossible d'obtenir l'authentification : %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit a renvoyé « %s »"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Signal %s obtenu."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Fermeture."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Impossible de trouver l'utilisateur « %s »."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Impossible de trouver le groupe « %s »."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Échec lors de la création de « %s » : %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Échec lors du changement de la liste du groupe : %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Échec lors du changement de GID : %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Échec lors du changement d'UID : %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Les privilèges root ont été correctement abandonnés."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "Mode système étendu non pris en charge sur cette plateforme."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) a échoué : %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Échec lors de l'analyse de la ligne de commande"
-#: ../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:512
-#, c-format
-msgid "We're in the group '%s', allowing real-time scheduling."
-msgstr ""
-"Nous sommes dans le groupe « %s », permettant un ordonnancement en temps réel."
-
-#: ../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:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité."
-
-#: ../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:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel."
-
-#: ../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 ""
-"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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "Augmentation de RLIMIT_RTPRIO réussie"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO a échoué : %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Abandon de CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Lé démon n'est pas lancé"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Le démon est lancé avec le PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Impossible de tuer le démon : %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -319,156 +208,161 @@ msgstr ""
"Le programme n'est pas conçu pour être lancé en tant que root (sauf si --"
"system est renseigné)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Les privilèges root sont nécessaires."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start n'est pas pris en charge pour les instances système."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
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:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Échec lors de l'acquisition de stdio."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "Échec du tube : %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "Échec de fork() : %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "Échec de read() : %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Échec lors du démarrage du démon."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Démarrage du démon réussi."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Pulseaudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Hôte de compilation : %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilation : %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Exécution sur l'hôte : %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u processeurs trouvés."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "La taille de la page est de %lu octets"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Compilé avec la prise en charge Valgrind : oui"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Compilé avec la prise en charge Valgrind : non"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Exécution en mode valgrind : %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Construction optimisée : oui"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Construction optimisée : non"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG défini, tous les messages d'erreur sont désactivés."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
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:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Tous les messages d'erreur sont activés."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Échec lors de l'obtention de l'ID de la machine"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:768
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Utilisation du répertoire d'exécution %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -478,16 +372,16 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "Échec de pa_pid_file_create()."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -495,27 +389,27 @@ 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:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "Échec de pa_core_new()."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Échec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Démon terminé."
@@ -791,72 +685,72 @@ 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:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Cible du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Niveau du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit « %s » invalide."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format d'échantillon « %s » invalide."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Plan de canaux « %s » invalide."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments « %s » invalide."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Taille du fragment « %s » invalide."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, 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:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -864,19 +758,16 @@ 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
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lecture à partir du fichier de configuration : %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Abandon des privilèges root."
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Limitation des capacités à CAP_SYS_NICE réussie."
-
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
msgstr "Système de son PulseAudio"
@@ -885,31 +776,7 @@ msgstr "Système de son PulseAudio"
msgid "Start the PulseAudio Sound System"
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
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Ordonnancement en temps réel pour le démon PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"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:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1113,33 +980,33 @@ msgstr "Arrière gauche haut"
msgid "Top Rear Right"
msgstr "Arrière droit haut"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(invalide)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stéréo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1243,27 +1110,35 @@ msgstr "Implantation manquante"
msgid "Client forked"
msgstr "Le client s'est divisé (Client forked)"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f Gio"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f Mio"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f Kio"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1276,191 +1151,195 @@ msgstr "Échec de XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "Échec lors de l'analyse des données du cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Échec lors de l'ouverture du fichier de configuration « %s » :%s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Aucun cookie chargé. Tentative de connexion sans celui-ci."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork() : %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid() : %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Message reçu pour une extension inconnue « %s »"
-#: ../src/utils/pacat.c:107
-#, c-format
-msgid "Failed to drain stream: %s\n"
+#: ../src/utils/pacat.c:108
+#, fuzzy, c-format
+msgid "Failed to drain stream: %s"
msgstr "Échec lors du vidage du flux : %s\n"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
+#: ../src/utils/pacat.c:113
+#, fuzzy
+msgid "Playback stream drained."
msgstr "Flux de lecture vidé.\n"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
+#: ../src/utils/pacat.c:123
+#, fuzzy
+msgid "Draining connection to server."
msgstr "Vidage de la connexion au serveur.\n"
-#: ../src/utils/pacat.c:135
-#, c-format
-msgid "pa_stream_drain(): %s\n"
+#: ../src/utils/pacat.c:136
+#, fuzzy, c-format
+msgid "pa_stream_drain(): %s"
msgstr "pa_stream_drain() : %s\n"
-#: ../src/utils/pacat.c:158
-#, c-format
-msgid "pa_stream_write() failed: %s\n"
+#: ../src/utils/pacat.c:159
+#, fuzzy, c-format
+msgid "pa_stream_write() failed: %s"
msgstr "Échec de pa_stream_write() : %s\n"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
-#, c-format
-msgid "pa_stream_peek() failed: %s\n"
+#: ../src/utils/pacat.c:197
+#, fuzzy, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "Échec de pa_stream_write() : %s\n"
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, fuzzy, c-format
+msgid "pa_stream_peek() failed: %s"
msgstr "Échec de pa_stream_peek() : %s\n"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
+#: ../src/utils/pacat.c:307
+#, fuzzy
+msgid "Stream successfully created."
msgstr "Création du flux réussie.\n"
-#: ../src/utils/pacat.c:305
-#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
+#: ../src/utils/pacat.c:310
+#, fuzzy, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
msgstr "Échec de 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"
+#: ../src/utils/pacat.c:314
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
msgstr "Mesures du tampon : maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:312
-#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+#: ../src/utils/pacat.c:317
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
msgstr "Mesures du tampon : maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:316
-#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
+#: ../src/utils/pacat.c:321
+#, fuzzy, c-format
+msgid "Using sample spec '%s', channel map '%s'."
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:320
-#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
+#: ../src/utils/pacat.c:325
+#, fuzzy, c-format
+msgid "Connected to device %s (%u, %ssuspended)."
msgstr "Connecté au périphérique %s (%u, %ssuspendu).\n"
-#: ../src/utils/pacat.c:330
-#, c-format
-msgid "Stream error: %s\n"
+#: ../src/utils/pacat.c:335
+#, fuzzy, c-format
+msgid "Stream error: %s"
msgstr "Erreur du flux : %s\n"
-#: ../src/utils/pacat.c:340
-#, c-format
-msgid "Stream device suspended.%s \n"
+#: ../src/utils/pacat.c:345
+#, fuzzy, c-format
+msgid "Stream device suspended.%s"
msgstr "Périphérique de flux suspendu %s \n"
-#: ../src/utils/pacat.c:342
-#, c-format
-msgid "Stream device resumed.%s \n"
+#: ../src/utils/pacat.c:347
+#, fuzzy, c-format
+msgid "Stream device resumed.%s"
msgstr "Périphérique de flux repris %s \n"
-#: ../src/utils/pacat.c:350
-#, c-format
-msgid "Stream underrun.%s \n"
+#: ../src/utils/pacat.c:355
+#, fuzzy, c-format
+msgid "Stream underrun.%s"
msgstr "Flux vide %s \n"
-#: ../src/utils/pacat.c:357
-#, c-format
-msgid "Stream overrun.%s \n"
+#: ../src/utils/pacat.c:362
+#, fuzzy, c-format
+msgid "Stream overrun.%s"
msgstr "Flux saturé %s \n"
-#: ../src/utils/pacat.c:364
-#, c-format
-msgid "Stream started.%s \n"
+#: ../src/utils/pacat.c:369
+#, fuzzy, c-format
+msgid "Stream started.%s"
msgstr "Flux démarré %s \n"
-#: ../src/utils/pacat.c:371
-#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+#: ../src/utils/pacat.c:376
+#, fuzzy, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
msgstr "Flux déplacé vers le périphérique %s (%u, %ssuspendu).%s \n"
# suspendu ou non suspendu
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "non "
-#: ../src/utils/pacat.c:378
-#, c-format
-msgid "Stream buffer attributes changed.%s \n"
+#: ../src/utils/pacat.c:383
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s"
msgstr "Des attributs du tampon de flux ont changé. %s \n"
-#: ../src/utils/pacat.c:411
-#, c-format
-msgid "Connection established.%s \n"
+#: ../src/utils/pacat.c:415
+#, fuzzy, c-format
+msgid "Connection established.%s"
msgstr "Connection établie.%s \n"
-#: ../src/utils/pacat.c:414
-#, c-format
-msgid "pa_stream_new() failed: %s\n"
+#: ../src/utils/pacat.c:418
+#, fuzzy, c-format
+msgid "pa_stream_new() failed: %s"
msgstr "Échec de pa_stream_new() : %s\n"
-#: ../src/utils/pacat.c:442
-#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
+#: ../src/utils/pacat.c:446
+#, fuzzy, c-format
+msgid "pa_stream_connect_playback() failed: %s"
msgstr "Échec de pa_stream_connect_playback() : %s\n"
-#: ../src/utils/pacat.c:448
-#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
+#: ../src/utils/pacat.c:452
+#, fuzzy, c-format
+msgid "pa_stream_connect_record() failed: %s"
msgstr "Échec de 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"
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, fuzzy, c-format
+msgid "Connection failure: %s"
msgstr "Échec lors de la connexion : %s\n"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
+#: ../src/utils/pacat.c:499
+#, fuzzy
+msgid "Got EOF."
msgstr "EOF obtenu.\n"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "Échec de read() : %s\n"
-
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
+#: ../src/utils/pacat.c:536
+#, fuzzy, c-format
+msgid "write() failed: %s"
msgstr "Échec de write() : %s\n"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
+#: ../src/utils/pacat.c:557
+#, fuzzy
+msgid "Got signal, exiting."
msgstr "Signal obtenu, fermeture.\n"
-#: ../src/utils/pacat.c:567
-#, c-format
-msgid "Failed to get latency: %s\n"
+#: ../src/utils/pacat.c:571
+#, fuzzy, c-format
+msgid "Failed to get latency: %s"
msgstr "Échec lors de l'obtention de la latence : %s\n"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Durée : %0.3f s ; Latency : %0.0f µs. \r"
-#: ../src/utils/pacat.c:592
-#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
+#: ../src/utils/pacat.c:595
+#, fuzzy, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr "Échec de pa_stream_update_timing_info() : %s\n"
# downmix = par ex. convertir 5 canaux en 2 canaux
@@ -1588,136 +1467,141 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
#, fuzzy, c-format
-msgid "Invalid client name '%s'\n"
+msgid "Invalid client name '%s'"
msgstr "Plan des canaux invalide « %s »\n"
-#: ../src/utils/pacat.c:776
+#: ../src/utils/pacat.c:775
#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
+msgid "Invalid stream name '%s'"
msgstr "Méthode de rééchantillonnage invalide « %s »."
-#: ../src/utils/pacat.c:813
-#, c-format
-msgid "Invalid channel map '%s'\n"
+#: ../src/utils/pacat.c:812
+#, fuzzy, c-format
+msgid "Invalid channel map '%s'"
msgstr "Plan des canaux invalide « %s »\n"
-#: ../src/utils/pacat.c:842
-#, c-format
-msgid "Invalid latency specification '%s'\n"
+#: ../src/utils/pacat.c:841
+#, fuzzy, c-format
+msgid "Invalid latency specification '%s'"
msgstr "Spécification de latence invalide « %s »\n"
-#: ../src/utils/pacat.c:849
-#, c-format
-msgid "Invalid process time specification '%s'\n"
+#: ../src/utils/pacat.c:848
+#, fuzzy, c-format
+msgid "Invalid process time specification '%s'"
msgstr "Spécification de temps de traitement invalide « %s »\n"
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
+msgid "Invalid property '%s'"
msgstr "Méthode de rééchantillonnage invalide « %s »."
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
+#: ../src/utils/pacat.c:896
+#, fuzzy
+msgid "Invalid sample specification"
msgstr "Spécification d'échantillon invalide\n"
-#: ../src/utils/pacat.c:907
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:906
+#, fuzzy, c-format
+msgid "open(): %s"
msgstr "open() : %s\n"
-#: ../src/utils/pacat.c:912
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:911
+#, fuzzy, c-format
+msgid "dup2(): %s"
msgstr "dup2() : %s\n"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
+#: ../src/utils/pacat.c:918
+#, fuzzy
+msgid "Too many arguments."
msgstr "Trop de paramètres.\n"
-#: ../src/utils/pacat.c:930
+#: ../src/utils/pacat.c:929
#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
+msgid "Failed to generate sample specification for file."
msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n"
-#: ../src/utils/pacat.c:950
+#: ../src/utils/pacat.c:949
#, fuzzy
-msgid "Failed to open audio file.\n"
+msgid "Failed to open audio file."
msgstr "Échec lors de l'ouverture du fichier audio.\n"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
+#, fuzzy
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
-#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
#, fuzzy
-msgid "Failed to determine sample specification from file.\n"
+msgid "Failed to determine sample specification from file."
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:967
+#, fuzzy
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
+#: ../src/utils/pacat.c:978
+#, fuzzy
+msgid "Channel map doesn't match sample specification"
msgstr ""
"Le plan des canaux ne correspond pas à la spécification d'échantillon\n"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+#, fuzzy
+msgid "Warning: failed to write channel map to file."
+msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, fuzzy, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "enregistrement"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "lecture"
-#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
-#: ../src/utils/pactl.c:1104
-#, c-format
-msgid "pa_mainloop_new() failed.\n"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+#, fuzzy
+msgid "pa_mainloop_new() failed."
msgstr "Échec de pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
+#: ../src/utils/pacat.c:1050
+#, fuzzy
+msgid "io_new() failed."
msgstr "Échec de 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"
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+#, fuzzy
+msgid "pa_context_new() failed."
msgstr "Échec de pa_context_new().\n"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "Échec de pa_context_connect() : %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "Échec de time_new().\n"
+#: ../src/utils/pacat.c:1071
+#, fuzzy
+msgid "pa_context_rttime_new() failed."
+msgstr "Échec de pa_context_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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+#, fuzzy
+msgid "pa_mainloop_run() failed."
msgstr "Échec de pa_mainloop_run().\n"
#: ../src/utils/pasuspender.c:81
@@ -1746,7 +1630,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Échec lors de la connexion : %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT reçu, fermeture.\n"
@@ -1786,34 +1675,49 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "Échec de pa_mainloop_new().\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "Échec de pa_context_new().\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "Échec de pa_mainloop_run().\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "Échec lors de l'obtention des statistiques : %s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Taille du cache de l'échantillon : %s\n"
-#: ../src/utils/pactl.c:149
-#, c-format
-msgid "Failed to get server information: %s\n"
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
msgstr "Échec lors de l'obtention des informations du serveur : %s\n"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1836,13 +1740,13 @@ msgstr ""
"Source par défaut : %s\n"
"Cookie : %08x\n"
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
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:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1881,22 +1785,22 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, fuzzy, c-format
msgid "\tPorts:\n"
msgstr "\tProfils :\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
#, 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"
+#: ../src/utils/pactl.c:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
msgstr "Échec lors de l'obtention des informations sur la source : %s\n"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1935,20 +1839,20 @@ msgstr ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "Échec lors de l'obtention des informations du module : %s\n"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1965,12 +1869,12 @@ msgstr ""
"\tPropriétés : \n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "Échec lors de l'obtention des informations du client : %s\n"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1985,12 +1889,12 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
-#, c-format
-msgid "Failed to get card information: %s\n"
+#: ../src/utils/pactl.c:447
+#, fuzzy, c-format
+msgid "Failed to get card information: %s"
msgstr "Impossible d'obtenir des informations sur la carte : %s\n"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -2007,24 +1911,24 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfils :\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tProfil actif : %s\n"
-#: ../src/utils/pactl.c:489
-#, c-format
-msgid "Failed to get sink input information: %s\n"
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
msgstr ""
"Échec lors de l'obtention des informations de l'entrée de la destination : %"
"s\n"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2061,13 +1965,13 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
-#, c-format
-msgid "Failed to get source output information: %s\n"
+#: ../src/utils/pactl.c:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
msgstr ""
"Échec lors de l'obtention des informations de la sortie de la source : %s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2096,15 +2000,15 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
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:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2135,21 +2039,27 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "Échec : %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
msgstr "Échec lors de l'envoi de l'échantillon : %s\n"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+#, fuzzy
+msgid "Premature end of file"
msgstr "Fin prématurée du fichier\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT reçu, fermeture.\n"
+
+#: ../src/utils/pactl.c:869
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2158,15 +2068,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2198,7 +2114,7 @@ msgstr ""
" -n, --client-name=NOM Définit le nom de ce client sur le "
"serveur\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2209,82 +2125,136 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+#, fuzzy
+msgid "Please specify a sample file to load"
msgstr "Veuillez indiquer un fichier d'échantillon à charger\n"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
msgstr "Échec lors de l'ouverture du fichier audio.\n"
-#: ../src/utils/pactl.c:951
+#: ../src/utils/pactl.c:1004
#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
+msgid "Warning: Failed to determine sample specification from file."
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"
+#: ../src/utils/pactl.c:1014
+#, fuzzy
+msgid "You have to specify a sample name to play"
msgstr "Vous devez indiquer un nom d'échantillon à lire\n"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+#, fuzzy
+msgid "You have to specify a sample name to remove"
msgstr "Vous devez indiquer un nom d'échantillon à supprimer\n"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
+#: ../src/utils/pactl.c:1035
+#, fuzzy
+msgid "You have to specify a sink input index and a sink"
msgstr ""
"Vous devez indiquer un index de sortie de destination et une destination\n"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
+#: ../src/utils/pactl.c:1045
+#, fuzzy
+msgid "You have to specify a source output index and a source"
msgstr "Vous devez indiquer un index de sortie de source et une source\n"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+#, fuzzy
+msgid "You have to specify a module name and arguments."
msgstr "Vous devez indiquer un nom de module et des paramètres.\n"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+#, fuzzy
+msgid "You have to specify a module index"
msgstr "Vous devez indiquer un index de module\n"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
+#, fuzzy
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"Vous ne pouvez pas indiquer plus d'une destination. Vous devez indiquer une "
"valeur booléenne.\n"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
"Vous ne pouvez pas indiquer plus d'une source. Vous devez indiquer une "
"valeur booléenne.\n"
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
+#: ../src/utils/pactl.c:1115
+#, fuzzy
+msgid "You have to specify a card name/index and a profile name"
msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
-#: ../src/utils/pactl.c:1073
+#: ../src/utils/pactl.c:1126
#, fuzzy
-msgid "You have to specify a sink name/index and a port name\n"
+msgid "You have to specify a sink name/index and a port name"
msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
-#: ../src/utils/pactl.c:1084
+#: ../src/utils/pactl.c:1137
#, fuzzy
-msgid "You have to specify a source name/index and a port name\n"
+msgid "You have to specify a source name/index and a port name"
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:1149
+#, fuzzy
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "Échec de pa_context_connect() : %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+#, fuzzy
+msgid "Invalid volume specification"
+msgstr "Spécification d'échantillon invalide\n"
+
+#: ../src/utils/pactl.c:1166
+#, fuzzy
+msgid "You have to specify a source name/index and a volume"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
+
+#: ../src/utils/pactl.c:1183
+#, fuzzy
+msgid "You have to specify a sink input index and a volume"
+msgstr ""
+"Vous devez indiquer un index de sortie de destination et une destination\n"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+#, fuzzy
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
+
+#: ../src/utils/pactl.c:1221
+#, fuzzy
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
+
+#: ../src/utils/pactl.c:1238
+#, fuzzy
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+"Vous devez indiquer un index de sortie de destination et une destination\n"
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "Spécification d'échantillon invalide\n"
+
+#: ../src/utils/pactl.c:1262
+#, fuzzy
+msgid "No valid command specified."
+msgstr "Aucune commande valide indiquée.\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2369,48 +2339,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:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0) : %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect() : %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Impossible de tuer le démon PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Le démon ne répond pas."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select() : %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork() : %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read() : %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write() : %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Impossible d'accèder au verrou autonome."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2427,7 +2397,7 @@ msgstr ""
"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:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2445,15 +2415,20 @@ msgstr ""
"autre valeur < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Éteint"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Lecture haute fidélité (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+#, fuzzy
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Lecture haute fidélité (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephonie en duplex (HSP/HFP)"
@@ -2461,6 +2436,155 @@ msgstr "Telephonie en duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Serveur de son PulseAudio"
+#, fuzzy
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Plan des canaux invalide « %s »\n"
+
+#, fuzzy
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select() : %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Impossible de se connecter au bus système : %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Impossible d'obtenir le programme appelant à partir du PID : %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Impossible de définir un UID sur l'objet appelant."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Échec lors de l'obtention de la session CK."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Impossible de définir l'UID sur l'objet de session."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Impossible d'allouer PolKitAction."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Impossible de définir action_id."
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Impossible d'allouer PolKitContext."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Impossible d'initialiser PolKitContext : %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Impossible de déterminer si le programme appelant est autorisé : %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Impossible d'obtenir l'authentification : %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit a renvoyé « %s »"
+
+#~ 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"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Ordonnancement en temps réel pour le démon PulseAudio"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "La politique du système empêche PulseAudio d'acquérir un ordonnancement "
+#~ "haute priorité"
+
+#~ 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"
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "Échec de read() : %s\n"
+
+#, fuzzy
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "Échec de pa_context_connect() : %s"
+
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr ""
+#~ "Nous sommes dans le groupe « %s », permettant une planification à haute "
+#~ "priorité."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr ""
+#~ "Nous sommes dans le groupe « %s », permettant un ordonnancement en temps "
+#~ "réel."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr ""
+#~ "PolicyKit a accordé l'acquisition des permissions de haute priorité."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "PolicyKit a accordé l'acquisition des permissions de temps réel."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel."
+
+#~ 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 ""
+#~ "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."
+
+#~ 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."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "Augmentation de RLIMIT_RTPRIO réussie"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO a échoué : %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Abandon de CAP_NICE"
+
+#~ 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."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Limitation des capacités à CAP_SYS_NICE réussie."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "Échec de time_new().\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Mono analogique"
@@ -2497,9 +2621,6 @@ msgstr "Serveur de son PulseAudio"
#~ msgid "Output %s + Input %s"
#~ msgstr "Sortie %s + Entrée %s"
-#~ msgid "Output %s"
-#~ msgstr "Sortie %s"
-
#~ msgid "Input %s"
#~ msgstr "Entrée %s"
diff --git a/po/gu.po b/po/gu.po
index 437cd1cd..3feb5521 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -1,14 +1,14 @@
-# translation of pulseaudio.po to Gujarati
+# translation of pulaudio.po to Gujarati
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Sweta Kothari <swkothar@redhat.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio\n"
+"Project-Id-Version: pulaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-07 14:27+0530\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 15:26+0530\n"
"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n"
"Language-Team: Gujarati\n"
"MIME-Version: 1.0\n"
@@ -17,7 +17,12 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -29,7 +34,7 @@ msgstr ""
"ALSA ડà«àª°àª¾àª‡àªµàª° '%s' માં મોટેભાગે આ ભૂલ જેવૠછે. ALSA ડેવલà«àªªàª°à«‹àª®àª¾àª‚ આ સમસà«àª¯àª¾àª¨à«‡ મહેરબાની કરીને "
"અહેવાલ કરો."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -42,7 +47,7 @@ msgstr ""
"ALSA ડà«àª°àª¾àª‡àªµàª° '%s' માં મોટેભાગે આ ભૂલ જેવૠછે. ALSA ડેવલà«àªªàª°à«‹àª®àª¾àª‚ આ સમસà«àª¯àª¾àª¨à«‡ મહેરબાની કરીને "
"અહેવાલ કરો."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -55,9 +60,17 @@ msgstr ""
"ALSA ડà«àª°àª¾àª‡àªµàª° '%s' માં મોટેભાગે આ ભૂલ જેવૠછે. ALSA ડેવલà«àªªàª°à«‹àª®àª¾àª‚ આ સમસà«àª¯àª¾àª¨à«‡ મહેરબાની કરીને "
"અહેવાલ કરો."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr "હંમેશા ઓછામાં ઓછૠàªàª• સિંક લોડ થયેલ રાખો જો તે શૂનà«àª¯ હોય તો પણ"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "ડમી આઉટપà«àªŸ"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "વરà«àªšà«àª¯à«àª…લ LADSPA સિંક"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -67,12 +80,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"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>"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "કà«àª²à«‹àª• થયેલ NULL સિંક"
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "શૂનà«àª¯ આઉટપà«àªŸ"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "આંતરિક ઓડિયો"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "મોડેમ"
@@ -88,369 +114,249 @@ msgstr "નવા dl લોડરને ફાળવવાનà«àª‚ નિષà«
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 "auth મેળવા શકાતૠનથી: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "'%s' સાથે PolicyKit ઠપà«àª°àª¤à«àª¯à«àª¤à«àª¤àª° આપેલ છે"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "સંકેત %s મળà«àª¯à«."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "બહાર નીકળી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "વપરાશકરà«àª¤àª¾ '%s' ને શોધવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "જૂથ '%s' ને શોધવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "વપરાશકરà«àª¤àª¾ '%s' અને જૂથ '%s' ની GID બંધબેસતૠનથી."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ને બનાવવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "જૂથ યાદીને બદલવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID ને બદલવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID ને બદલવામાં નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "સફળતાપૂરà«àªµàª• છોડી દીધેલ રà«àªŸ અધિકારો."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "આ પà«àª²à«‡àªŸàª«à«‹àª°à«àª® પર બિનઆધારભૂત સિસà«àªŸàª® વિશાળ સà«àª¥àª¿àª¤àª¿."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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' માં છીàª, high-priority ગોઠવવાની પરવાનગી આપી રહà«àª¯àª¾ છે."
-
-#: ../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 આપણને acquire-high-priority અધિકારની મંજૂરી આપે છે."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit ઠacquire-high-priority અધિકારને ફરીથી શરૂ કરે છે."
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit ઠacquire-real-time અધિકારની મંજૂરી આપે છે."
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit ઠacquire-real-time અધિકારને ફરી શરૂ કરે છે."
-
-#: ../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 અને real-time અને/અથવા high-priority ગોઠવણી રૂપરેખાંકનમાં સૂચવેલ હતી. "
-"છતાંપણ, આપણને જરૂરી અધિકારો ઓછા પડà«àª¯àª¾:\n"
-"આપણે જૂથ '%s' માં નથી, PolicyKit ઠસૂચિત અધિકારોને આપણને મંજૂરી આપવા માટે માનà«àª¯ કરતૠ"
-"નથી અને આપણે RLIMIT_NICE/RLIMIT_RTPRIO સà«àª¤à«àª°à«‹àª¤ મરà«àª¯àª¾àª¦àª¾àª“ને વધારતા નથી.\n"
-"real-time/high-priority ગોઠવણીને સકà«àª°àª¿àª¯ કરવા માટે મહેરબાની કરીને અનૂકà«àª³ PolicyKit "
-"અધિકારોને મેળવો, અથવા '%s' નાં સભà«àª¯ બનો, અથવા આ વપરાશકરà«àª¤àª¾ માટે RLIMIT_NICE/"
-"RLIMIT_RTPRIO સà«àª¤à«àª°à«‹àª¤ મરà«àª¯àª¾àª¦àª¾àª“ને વધારો."
-
-#: ../src/daemon/main.c:585
-msgid ""
-"High-priority scheduling enabled in configuration but not allowed by policy."
-msgstr ""
-"High-priority ગોઠવવાનà«àª‚ રૂપરેખાંકનમાં સકà«àª°àª¿àª¯ થયેલ છે પરંતૠપોલિસી દà«àª¦àª¾àª°àª¾ પરવાનગી આપેલ નથી."
-
-#: ../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 ""
-"Real-time ગોઠવવાનà«àª‚ ઠરૂપરેખાંકનમાં સકà«àª°àª¿àª¯ થયેલ છે પરંતૠપોલિસી દà«àª¦àª¾àª°àª¾ પરવાનગી આપેલ નથી."
-
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "ડિમન ચાલી રહà«àª¯à« નથી"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u તરીકે ડિમન ચાલી રહà«àª¯à« છે"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ડિમનને મારવાનà«àª‚ નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"આ પà«àª°àª•à«àª°àª¿àª¯àª¾àª¨à«‡ રà«àªŸ તરીકે ચલાવવા માટે વિચાર થયેલ નથી (નહિં તો --system ઠસà«àªªàª·à«àªŸ થયેલ છે)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "રà«àªŸ અધિકારો જરૂરી છે."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start ઠસિસà«àªŸàª® ઉદાહરણો માટે આધારભૂત નથી."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, પરંતૠ--disallow-exit સà«àª¯à«‹àªœàª¿àª¤ નથી!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, પરંતૠ--disallow-module-loading ઠસà«àª¯à«‹àªœàª¿àª¤ નથી!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, SHM સà«àª¥àª¿àª¤àª¿àª¨à«‡ દબાણપૂરà«àªµàª• નિષà«àª•à«àª°àª¿àª¯ કરી રહà«àª¯àª¾ છે!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે, બહાર નીકળવનાં નિષà«àª•àª¾àª°à«àª¯ સમયને દબાણપૂરà«àªµàª• નિષà«àª•à«àª°àª¿àª¯ કરી "
"રહà«àª¯àª¾ છે!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio ને મેળવવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "પાઇપ નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "ડિમન શરૂઆત નિષà«àª«àª³."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "ડિમન શરૂઆત કરવૠસફળ છે."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "આ PulseAudio %s છે"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "કમà«àªªàª¾àª‡àª²à«‡àª¶àª¨ યજમાન: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "કમà«àªªàª¾àª‡àª²à«‡àª¶àª¨ CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "યજમાન પર ચાલી રહà«àª¯à« છે: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs શોધાયà«."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "પાનાંનૠમાપ %lu બાઇટો છે"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind આધાર સાથે કમà«àªªàª¾àª‡àª² થયેલ છે: હા"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind આધાર સાથે કમà«àªªàª¾àª‡àª² થયેલ છે: ના"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "શà«àª°à«‡àª·à«àªŸ થયેલ બિલà«àª¡: હા"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "શà«àª°à«‡àª·à«àªŸ થયેલ બિલà«àª¡: ના"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG વà«àª¯àª¾àª–à«àª¯àª¾àª¯àª¿àª¤ થયેલ છે, બધા હકો નિષà«àª•à«àª°àª¿àª¯ થયેલ છે."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH વà«àª¯àª¾àª–à«àª¯àª¾àª¯àª¿àª¤ થયેલ છે, ફકà«àª¤ àªàª¡àªªà«€ પાથનાં હકો નિષà«àª•à«àª°àª¿àª¯ થયેલ છે."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "બધા હકો સકà«àª°àª¿àª¯ થયેલ છે."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "મશીન ID ને મેળવવામાં નિષà«àª«àª³"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "મશીન ID %s છે."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "મશીન ID %s છે."
+msgstr "સતà«àª° ID %s છે."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "રનટાઇમ ડિરેકà«àªŸàª°à«€ %s ને વાપરી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "સà«àª¥àª¿àª¤àª¿ ડિરેકà«àªŸàª°à«€ %s ને વાપરી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "ઇોડà«àª¯à«àª²à«‹àª® ડિરેકà«àªŸàª°à«€ %s ને વાપરી રહà«àª¯àª¾ છે."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ ચાલી રહà«àª¯à« છે: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -459,16 +365,21 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"બરાબર, તેથી તમે સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ PA ચલાવી રહà«àª¯àª¾ છો. મહેરબાની કરીને નોંધો કે જે તમારે "
+"મોટેભાગે કરવૠજોઇઠનહિં.\n"
+"જો તમે તેનાં વગર કરે તો પછી તે તમારી ભૂલ થે જો ઇચà«àª›àª¿àª¤ રીતે તે કામ કરતૠન હોય તો.\n"
+"શા માટે સિસà«àªŸàª® સà«àª¥àª¿àª¤àª¿ સામાનà«àª¯ રીતે ખરાબ વિચાર છે તે માટે વિગતવાર જાણકારી માટે મહેરબાની "
+"કરીને http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode આને વાંચો."
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() નિષà«àª«àª³."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "તાજૠhigh-resolution ટાઇમરો ઉપલà«àª¬àª§ છે! બોન àªàªªà«‡àªŸàª¾àª‡àªŸ!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -476,27 +387,27 @@ msgstr ""
"મિતà«àª°, તમારૠકરà«àª¨àª²àª®àª¾àª‚ ગડબડ છે! રસોઇયાનà«àª‚ આજે ભલામણ ઠસકà«àª°àª¿àª¯ થયેલ high-resolution "
"ટાઇમરો સાથે Linux નà«àª‚ છે!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() નિષà«àª«àª³."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "ડિમનને શરૂ કરવામાં નિષà«àª«àª³."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "કોઇપણ લોડ થયેલ મોડà«àª¯à«àª²à«‹ વગર ડિમનને શરૂ કરો, કામ કરવા માટે ફરી શરૂ કરી રહà«àª¯àª¾ છે."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "ડિમન પારંભ કરવાનà«àª‚ સમાપà«àª¤ છે."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "ડિમનને બંધ કરવાનà«àª‚ પà«àª°àª¾àª°àª‚ભ થયેલ છે."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "ડિમનનો અંત આવેલ છે."
@@ -745,97 +656,93 @@ msgstr "àªàª•àªµàª¾àª° લોડ કરો: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "DEPRECATION WARNING: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "પાથ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] અયોગà«àª¯ લોગ લકà«àª·à«àª¯ '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] અયોગà«àª¯ લોગ સà«àª¤àª° '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] અયોગà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] અયોગà«àª¯ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ઠઆ પà«àª²à«‡àªŸàª«à«‹àª°à«àª® પર આધારભૂત નથી."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] અયોગà«àª¯ નમૂના બંધારણ '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] અયોગà«àª¯ નમૂના દર '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] અયોગà«àª¯ નમૂના ચેનલો '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] અયોગà«àª¯ ચેનલ મેપ '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] અયોગà«àª¯ ફà«àª°à«‡àª—મેનà«àªŸà«‹àª¨àª¾àª‚ નંબર '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] અયોગà«àª¯ ફà«àª°à«‡àª—મેનà«àªŸ માપ '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] અયોગà«àª¯ સારૠસà«àª¤àª° '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "રૂપરેખાંકન ફાઇલને ખોલવાનà«àª‚ નિષà«àª«àª³: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
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
+#: ../src/daemon/daemon-conf.c:638
#, 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/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "અધિકારોને છોડી રહà«àª¯àª¾ છે."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -845,26 +752,7 @@ msgstr "PulseAudio સાઉનà«àª¡ સિસà«àªŸàª®"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio સાઉનà«àª¡ સિસà«àªŸàª®àª¨à«‡ શરૂ કરો"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "PulseAudio ડિમન માટે High-priority ગોઠવણી (નકારાતà«àª®àª• Unix સારૠસà«àª¤àª°)"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio ડિમન માટે Real-time ગોઠવણી"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"high-priority ગોઠવણીને પà«àª°àª¾àªªà«àª¤ કરવા માંથી સિસà«àªŸàª® પોલિસી PulseAudio ને અટકાવે છે."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr "real-time ગોઠવણી પà«àª°àª¾àªªà«àª¤ કરવા માંથી સિસà«àªŸàª® પોલિસી ઠPulseAudio ને અટકાવે છે."
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "મોનો"
@@ -1068,33 +956,33 @@ msgstr "ઉપર રિઅર ડાબે"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(અયોગà«àª¯)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "સà«àªŸà«‡àª°àª¿àª“"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "સરાઉનà«àª¡ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "સરાઉનà«àª¡ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "સરાઉનà«àª¡ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "સરાઉનà«àª¡ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "સરાઉનà«àª¡ 7.1"
@@ -1198,27 +1086,35 @@ msgstr "ગà«àª® થયેલ અમલીકરણ"
msgid "Client forked"
msgstr "કà«àª²àª¾àª‡àª¨à«àªŸàª®àª¾àª‚ ફાટા પડેલ છે"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1231,192 +1127,191 @@ msgstr "XOpenDisplay() નિષà«àª«àª³"
msgid "Failed to parse cookie data"
msgstr "કà«àª•à«€àª¨à«€ માહિતીને પદચà«àª›à«‡àª¦àª¨ કરવામાં નિષà«àª«àª³"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "રૂપરેખાંકન ફાઇલ '%s' ને ખોલવામાં નિષà«àª«àª³: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "કà«àª•à«€ લોડ થયેલ નથી. તેનાં વગર જોડવાનો પà«àª°àª¯àª¤à«àª¨ કરી રહà«àª¯àª¾ છે."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "અજà«àªžàª¾àª¤ àªàª•à«àª¸àªŸà«‡àª¨à«àª¶àª¨ '%s' માટે મળેલ સંદેશ"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "સà«àªŸà«àª°à«€àª®àª¨à«‡ નિકાલ કરવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "સà«àªŸà«àª°à«€àª®àª¨à«‡ નિકાલ કરવામાં નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "પà«àª²à«‡àª¬à«‡àª• સà«àªŸà«àª°à«€àª® ને નિકાલ કરેલ છે.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "પà«àª²à«‡àª¬à«‡àª• સà«àªŸà«àª°à«€àª® ને નિકાલ કરેલ છે."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "સરà«àªµàª°àª®àª¾àª‚ જોડાણને નિકાલ કરી રહà«àª¯àª¾ છે.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "સરà«àªµàª°àª®àª¾àª‚ જોડાણને નિકાલ કરી રહà«àª¯àª¾ છે."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() નિષà«àª«àª³: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() નિષà«àª«àª³: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "સà«àªŸà«àª°à«€àª® સફળતાપૂરà«àªµàª• બનાવેલ છે.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() નિષà«àª«àª³: %s"
+
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "સà«àªŸà«àª°à«€àª® સફળતાપૂરà«àªµàª• બનાવેલ છે."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() નિષà«àª«àª³: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "બફર મેટà«àª°àª¿àª•à«àª¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "બફર મેટà«àª°àª¿àª•à«àª¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "બફર મેટà«àª°àª¿àª•à«àª¸: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "બફર મેટà«àª°àª¿àª•à«àª¸: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "નમૂનો spec '%s' ને વાપરી રહà«àª¯àª¾ છે, ચેનલ મેપ '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "નમૂનો spec '%s' ને વાપરી રહà«àª¯àª¾ છે, ચેનલ મેપ '%s'."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "ઉપકરણ %s (%u, %ssuspended) સાથે જોડાયેલ છે.\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "ઉપકરણ %s (%u, %ssuspended) સાથે જોડાયેલ છે."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "સà«àªŸà«àª°à«€àª® ભૂલ: %s\n"
+msgid "Stream error: %s"
+msgstr "સà«àªŸà«àª°à«€àª® ભૂલ: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "સà«àªŸà«àª°à«€àª® ઉપકરણ ને થોડા સમય માટે બંધ રાખેલ છે.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "સà«àªŸà«àª°à«€àª® ઉપકરણ ને થોડા સમય માટે બંધ રાખેલ છે.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "સà«àªŸà«àª°à«€àª® ઉપકરણને ફરી શરૂ કરેલ છે.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "સà«àªŸà«àª°à«€àª® ઉપકરણને ફરી શરૂ કરેલ છે.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "સà«àªŸà«àª°à«€àª® ચલાવવા હેઠળ છે.%s \n"
+msgid "Stream underrun.%s"
+msgstr "સà«àªŸà«àª°à«€àª® ચલાવવા હેઠળ છે.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "સà«àªŸà«àª°à«€àª® ઉપર ચાલે છે.%s \n"
+msgid "Stream overrun.%s"
+msgstr "સà«àªŸà«àª°à«€àª® ઉપર ચાલે છે.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "સà«àªŸà«àª°à«€àª® શરૂ થયેલ છે.%s \n"
+msgid "Stream started.%s"
+msgstr "સà«àªŸà«àª°à«€àª® શરૂ થયેલ છે.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "સà«àªŸà«àª°à«€àª® ઠઉપકરણ %s (%u, %ssuspended) માં ખસેડેલ છે.%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "સà«àªŸà«àª°à«€àª® ઠઉપકરણ %s (%u, %ssuspended) માં ખસેડેલ છે.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "નથી "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "સà«àªŸà«àª°à«€àª® બફર ગà«àª£àª§àª°à«àª®à«‹ બદલાયેલ છે.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "સà«àªŸà«àª°à«€àª® બફર ગà«àª£àª§àª°à«àª®à«‹ બદલાયેલ છે.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "જોડાણ સà«àª¥àª¾àªªàª¿àª¤ થયેલ છે.%s \n"
+msgid "Connection established.%s"
+msgstr "જોડાણ સà«àª¥àª¾àªªàª¿àª¤ થયેલ છે.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() નિષà«àª«àª³: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() નિષà«àª«àª³: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() નિષà«àª«àª³: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "જોડાણ નિષà«àª«àª³: %s\n"
+msgid "Connection failure: %s"
+msgstr "જોડાણ નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF મળà«àª¯à«.\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF મળà«àª¯à«."
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() નિષà«àª«àª³: %s\n"
+msgid "write() failed: %s"
+msgstr "write() નિષà«àª«àª³: %s"
-#: ../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:557
+msgid "Got signal, exiting."
+msgstr "સંકેત મળà«àª¯à«àª‚, બહાર નીકળી રહà«àª¯àª¾ છે."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "ગà«àªªà«àª¤àª¤àª¾ મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "ગà«àªªà«àª¤àª¤àª¾ મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "Time: %0.3f sec; Latency: %0.0f usec."
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() નિષà«àª«àª³: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() નિષà«àª«àª³: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1476,52 +1371,49 @@ msgid ""
msgstr ""
"%s [options]\n"
"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
+" -h, --help આ મદદને બતાવો\n"
+" --version આવૃતà«àª¤àª¿àª¨à«‡ બતાવો\n"
"\n"
-" -r, --record Create a connection for recording\n"
-" -p, --playback Create a connection for playback\n"
+" -r, --record રેકોરà«àª¡à«€àª‚ગ માટે જોડાણને બનાવો\n"
+" -p, --playback પà«àª²à«‡àª¬à«‡àª• માટે જોડાણને બનાવો\n"
"\n"
-" -v, --verbose Enable verbose operations\n"
+" -v, --verbose વરà«àª¬à«‹àª¸ કà«àª°àª¿àª¯àª¾àª“ ને સકà«àª°àª¿àª¯ કરો\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"
+" -s, --server=SERVER તેમાં જોડાવા માટે સરà«àªµàª°àª¨à«àª‚ નામ\n"
+" -d, --device=DEVICE તેમાં જોડાવા માટે સિંક/સà«àª¤à«àª°à«‹àª¤ નà«àª‚ નામ\n"
+" -n, --client-name=NAME સરà«àªµàª° પર આ કà«àª²àª¾àª‡àª¨à«àªŸàª¨à«‡ કેવી રીતે કોલ કરવો\n"
+" --stream-name=NAME સરà«àªµàª° પર આ સà«àªŸà«àª°à«€àª®àª¨à«‡ કેવી રીતે કોલ કરવો\n"
+" --volume=VOLUME સીમા 0...65536 માં પà«àª°àª¾àª°àª‚ભનાં (સીધા) "
+"વોલà«àª¯à«àª®àª¨à«‡ સà«àªªàª·à«àªŸ કરો\n"
+" --rate=SAMPLERATE Hz માં નમૂનો(44100 નાં મૂળભૂતો)\n"
+" --format=SAMPLEFORMAT નમૂના પà«àª°àª•àª¾àª°, s16le, s16be, u8, "
+"float32le, માંનો àªàª•\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
+" --channels=CHANNELS ચેનલોની સંખà«àª¯àª¾, mono માટે 1, stereo માટે "
+"2\n"
+" (2 ઠમૂળભૂત છે)\n"
+" --channel-map=CHANNELMAP મૂળભૂત ને બદલે વાપરવા માટે ચેનલ મેપ\n"
+" --fix-format સà«àªŸà«àª°à«€àª® તેમાં જોડાયેલ છે તે સિંક માંથી નમૂના "
+"બંધારણને\n"
+" લો.\n"
+" --fix-rate સà«àªŸà«àª°à«€àª® તેમાં જોડાયેલ છે તે સિંક માંથી નમૂના "
+"દરને લો.\n"
+" --fix-channels સà«àªŸà«àª°à«€àª® તેમાં જોડાયેલ છે તે સિંક માંથી ચેનલો "
+"અને ચેનલ માપને લો.\n"
+" --no-remix ચેનલોને upmix અથવા downmix કરો નહિં.\n"
+" --no-remap નામને બદલે અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ દà«àª¦àª¾àª°àª¾ મેપ ચેનલો.\n"
+" --latency=BYTES બાઇટોમાં સà«àªªàª·à«àªŸ થયેલ ગà«àªªà«àª¤àª¤àª¾ ની માંગણી "
+"કરો.\n"
+" --process-time=BYTES બાઇટોમાં માંગણી ની સાથે સà«àªªàª·à«àªŸ થયેલ "
+"પà«àª°àª•à«àª°àª¿àª¯àª¾ સમયની માંગણી કરો.\n"
+" --property=PROPERTY=VALUE સà«àªªàª·à«àªŸ થયેલ કિંમતમાં સà«àªªàª·à«àªŸ થયેલ ગà«àª£àª§àª°à«àª®àª¨à«‡ "
+"સà«àª¯à«‹àªœàª¿àª¤ કરો.\n"
+" --raw કાચી PCM માહિતીનો રેકોરà«àª¡ કરો/વગાડો.\n"
+" --file-format=FFORMAT બંધારણ થયેલ માહિતીનો રેકોરà«àª¡ કરો/વગાડો.\n"
+" --list-file-formats ઉપલà«àª¬àª§ ફાઇલ બંધારણોની યાદી.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1534,136 +1426,127 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "અયોગà«àª¯ કà«àª²àª¾àª‡àª¨à«àªŸ નામ '%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "અયોગà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "અયોગà«àª¯ સà«àªŸà«àª°à«€àª® નામ '%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "અયોગà«àª¯ ચેનલ મેપ '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "અયોગà«àª¯ ચેનલ મેપ '%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "અયોગà«àª¯ ગà«àªªà«àª¤àª¤àª¾ સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "અયોગà«àª¯ ગà«àªªà«àª¤àª¤àª¾ સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "અયોગà«àª¯ પà«àª°àª•à«àª°àª¿àª¯àª¾ સમય સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "અયોગà«àª¯ પà«àª°àª•à«àª°àª¿àª¯àª¾ સમય સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "અયોગà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "અયોગà«àª¯ ગà«àª£àª§àª°à«àª® '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "અજà«àªžàª¾àª¤ ફાઇલ બંધારણ %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "અયોગà«àª¯ નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "અયોગà«àª¯ નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "ઘણી બધી દલીલો છે.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "ઘણી બધી દલીલો છે."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "નમૂના જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "ફાઇલ માટે નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£ ને ઉતà«àªªàª¨à«àª¨ કરવામાં નિષà«àª«àª³."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "સાઉનà«àª¡ ફાઇલને ખોલવામાં નિષà«àª«àª³.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "સાઉનà«àª¡ ફાઇલને ખોલવામાં નિષà«àª«àª³àª¤àª¾."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ફાઇલ માંથી નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£àª¨à«‡ નકà«àª•à«€ કરવામાં નિષà«àª«àª³àª¤àª¾."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "ચેતવણી: ફાઇલમાંથી ચેનલ મેપને નકà«àª•à«€ કરવામાં નિષà«àª«àª³àª¤àª¾."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "ચેનલ મેપ ઠસà«àªªàª·à«àªŸà«€àª•àª°àª£ નમૂનાને બંધબેસતૠનથી\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "ચેનલ મેપ ઠસà«àªªàª·à«àªŸà«€àª•àª°àª£ નમૂનાને બંધબેસતૠનથી"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "ચેતણી: ફાઇલમાં ચેનલ મેપને લખવામાં નિષà«àª«àª³àª¤àª¾."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s' સાથે %s સà«àªŸà«àª°à«€àª®àª¨à«‡ ખોલી રહà«àª¯àª¾ છે.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s' અને ચેનલ નકà«àª·àª¾ '%s' સાથે %s સà«àªŸà«àª°à«€àª®àª¨à«‡ ખોલી રહà«àª¯àª¾ છે."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "રેકોરà«àª¡ કરી રહà«àª¯àª¾ છે"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() નિષà«àª«àª³."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() નિષà«àª«àª³.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() નિષà«àª«àª³."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() નિષà«àª«àª³."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() નિષà«àª«àª³.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_new() નિષà«àª«àª³."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() નિષà«àª«àª³."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1690,7 +1573,12 @@ msgstr "ફરી શરૂ કરવામાં નિષà«àª«àª³àª¤àª¾: %s\n
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ચેતવણી: સાઉનà«àª¡ સરà«àªµàª° ઠસà«àª¥àª¾àª¨àª¿àª• નથી, થોડા સમય માટે બંધ કરવામાં આવà«àª¯à« નથી.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "જોડાણ નિષà«àª«àª³: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT મળà«àª¯à«, બહાર નીકળી રહà«àª¯àª¾ છે.\n"
@@ -1729,32 +1617,47 @@ msgstr ""
"libpulse %s સાથે કમà«àªªàª¾àª‡àª² થયેલ છે\n"
"libpulse %s સાથે કડી થયેલ છે\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() નિષà«àª«àª³.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() નિષà«àª«àª³.\n"
+
+#: ../src/utils/pasuspender.c:298
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "પરિસà«àª¥àª¿àª¤àª¿àª“ને મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() નિષà«àª«àª³.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "પરિસà«àª¥àª¿àª¤àª¿àª“ને મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "હાલમાં વપરાશમાં છે: %u બà«àª²à«‹àª•à«‹ %s કà«àª² બાઇટોને સમાવી રહà«àª¯àª¾ છે.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "આખી જીંદગી દરમà«àª¯àª¾àª¨ ફાળવેલ છે: %u બà«àª²à«‹àª•à«‹ %s કà«àª² બાઇટોને સમાવી રહà«àª¯àª¾ છે.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "નમૂના કેશ માપ: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "સરà«àªµàª° જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "સરà«àªµàª° જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1777,12 +1680,12 @@ msgstr ""
"મૂળભૂત સà«àª¤à«àª°à«‹àª¤: %s\n"
"કà«àª•à«€: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "સિંક જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "સિંક જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1821,22 +1724,22 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tરૂપરેખાઓ:\n"
+msgstr "\tપોરà«àªŸà«‹:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tસકà«àª°àª¿àª¯ રૂપરેખા: %s\n"
+msgstr "\tસકà«àª°àª¿àª¯ પોરà«àªŸ: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "સà«àª¤à«àª°à«‹àª¤ જાણકારીને મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "સà«àª¤à«àª°à«‹àª¤ જાણકારીને મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1875,20 +1778,20 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "મોડà«àª¯à«àª²àª¨à«€ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "મોડà«àª¯à«àª²àª¨à«€ જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1905,12 +1808,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "કà«àª²àª¾àª‡àª¨à«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "કà«àª²àª¾àª‡àª¨à«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1925,12 +1828,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "કારà«àª¡ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "કારà«àª¡ જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1947,22 +1850,22 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tરૂપરેખાઓ:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tસકà«àª°àª¿àª¯ રૂપરેખા: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "સિંક ઇનપà«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "સિંક ઇનપà«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1999,12 +1902,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "સà«àª¤à«àª°à«‹àª¤ આઉટપà«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "સà«àª¤à«àª°à«‹àª¤ આઉટપà«àªŸ જાણકારી મેળવવામાં નિષà«àª«àª³: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2033,12 +1936,12 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "નમૂના જાણકારી મેળવવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "નમૂના જાણકારી મેળવવામાં નિષà«àª«àª³: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2069,22 +1972,26 @@ msgstr ""
"\tગà«àª£àª§àª°à«àª®à«‹:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "નિષà«àª«àª³àª¤àª¾: %s\n"
+msgid "Failure: %s"
+msgstr "નિષà«àª«àª³àª¤àª¾: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "નમૂનાને અપલોડ કરવામાં નિષà«àª«àª³: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "નમૂનાને અપલોડ કરવામાં નિષà«àª«àª³: %s"
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "ફાઇલનો નિયત સમય પહેલા અંત"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "ફાઇલનો નિયત સમય પહેલા અંત\n"
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT મળà«àª¯à«, બહાર નીકળી રહà«àª¯àª¾ છે."
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2092,15 +1999,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2116,21 +2029,31 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
-" -h, --help આ મદદ ને બતાવો\n"
-" --version આવૃતà«àª¤àª¿àª¨à«‡ બતાવોShow version\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
"\n"
-" -s, --server=SERVER જોડાવા માટે સરà«àªµàª° નà«àª‚ નામ\n"
-" -n, --client-name=NAME સરà«àªµàª° પર આ કà«àª²àª¾àª‡àª¨à«àªŸàª¨à«‡ કેવી રીતે કોલ કરશો\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
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2141,79 +2064,108 @@ msgstr ""
"libpulse %s સાથે કમà«àªªàª¾àª‡àª² થયેલ છે\n"
"libpulse %s સાથે કડી થયેલ છે\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "મહેરબાની કરીને લોડ કરવા માટે નમૂના ફાઇલને સà«àªªàª·à«àªŸ કરો\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "મહેરબાની કરીને લોડ કરવા માટે નમૂના ફાઇલને સà«àªªàª·à«àªŸ કરો"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "સાઉનà«àª¡ ફાઇલને ખોલવામાં નિષà«àª«àª³.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "સાઉનà«àª¡ ફાઇલને ખોલવામાં નિષà«àª«àª³."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£ '%s' સાથે %s સà«àªŸà«àª°à«€àª®àª¨à«‡ ખોલી રહà«àª¯àª¾ છે.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "ચેતવણી: ફાઇલ માંથી નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£ કરવાનà«àª‚ નકà«àª•à«€ કરવામાં નિષà«àª«àª³."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "વગાડવા માટે તમારે નમૂના નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "વગાડવા માટે તમારે નમૂના નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "દૂર કરવા માટે તમારે નમૂના નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "દૂર કરવા માટે તમારે નમૂના નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "સિંક ઇનપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને સિંકને તમારે સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "સિંક ઇનપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને સિંકને તમારે સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "તમારે સà«àª¤à«àª°à«‹àª¤ આઉટપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને સà«àª¤à«àª°à«‹àª¤àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "તમારે સà«àª¤à«àª°à«‹àª¤ આઉટપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને સà«àª¤à«àª°à«‹àª¤àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "તમારે મોડà«àª¯à«àª² નામ અને દલીલોને સà«àªªàª·à«àªŸ કરવૠજ પડશે.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "તમારે મોડà«àª¯à«àª² નામ અને દલીલોને સà«àªªàª·à«àªŸ કરવૠજ પડશે."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "તમારે મોડà«àª¯à«àª² અનà«àª•à«àª°àª®àª£àª¿àª•àª¾àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "તમારે મોડà«àª¯à«àª² અનà«àª•à«àª°àª®àª£àª¿àª•àª¾àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"તમે àªàª• સિંક કરતા વધારે સà«àªªàª·à«àªŸ કરી શકશો નહિં. તમારે બà«àª²àª¿àª¯àª¨ કિંમતને સà«àªªàª·à«àªŸ કરવૠજ પડશે.\n"
+"તમે àªàª• સિંક કરતા વધારે સà«àªªàª·à«àªŸ કરી શકશો નહિં. તમારે બà«àª²àª¿àª¯àª¨ કિંમતને સà«àªªàª·à«àªŸ કરવૠજ પડશે."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને પોરà«àªŸ નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને પોરà«àªŸ નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને પોરà«àªŸ નામને સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "યોગà«àª¯ આદેશ સà«àªªàª·à«àªŸ થયેલ નથી.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને વોલà«àª¯à«àª®àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() નિષà«àª«àª³: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "અયોગà«àª¯ નમૂના સà«àªªàª·à«àªŸà«€àª•àª°àª£"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "તમારે કારà«àª¡ નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને વોલà«àª¯à«àª® સà«àªªàª·à«àªŸ કરવૠજ પડશે"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "સિંક ઇનપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને વોલà«àª¯à«àª®àª¨à«‡ તમારે સà«àªªàª·à«àªŸ કરવૠજ પડશે"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "અયોગà«àª¯ સિંક ઇનપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "તમારે સિંક નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને મૂંગા બà«àª²àª¿àª¯àª¨àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "તમારે સિંક નામ/અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને મૂંગા બà«àª²àª¿àª¯àª¨àª¨à«‡ સà«àªªàª·à«àªŸ કરવૠજ પડશે"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "સિંક ઇનપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ અને મૂંગા બà«àª²àª¿àª¯àª¨àª¨à«‡ તમારે સà«àªªàª·à«àªŸ કરવૠજ પડશે"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "અયોગà«àª¯ ઇનપà«àªŸ અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ સà«àªªàª·à«àªŸà«€àª•àª°àª£"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "યોગà«àª¯ આદેશ સà«àªªàª·à«àªŸ થયેલ નથી."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2294,48 +2246,48 @@ msgstr "કà«àª•à«€ માહિતીને લોડ કરવામાં àª
msgid "Not yet implemented.\n"
msgstr "હજૠઅમલીકરણ થયેલ નથી.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "PulseAudio ડિમન ચાલી રહà«àª¯à« નથી, અથવા સતà«àª° ડિમન તરીકે ચાલી રહà«àª¯à« નથી."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ડિમનને મારવામાં નિષà«àª«àª³."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ડિમન ઠજવાબ આપતૠનથી."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn તાળાને દાખલ કરી શકાતૠનથી."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2352,7 +2304,7 @@ msgstr ""
"POLLOUT સà«àª¯à«‹àªœàª¨ સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનà«àª‚ snd_pcm_avail() ને 0 પાછો મળે "
"છે અથવા બીજી કિંમત < min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2370,127 +2322,22 @@ msgstr ""
"છે અથવા બીજી કિંમત < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "બંધ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "High Fidelity Capture (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
#: ../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
index 91a27120..f60ae70c 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -1,14 +1,14 @@
-# translation of pulseaudio.master-tx.pulseaudio.po to Hindi
+# translation of pulseaudio.master-tx.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"
+"Project-Id-Version: pulseaudio.master-tx\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"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 17:01+0530\n"
"Last-Translator: Rajesh Ranjan <rajesh672@gmail.com>\n"
"Language-Team: Hindi <hindi.sf.net>\n"
"MIME-Version: 1.0\n"
@@ -19,8 +19,15 @@ msgstr ""
"\n"
"\n"
"\n"
+"\n"
+"\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -32,7 +39,7 @@ msgstr ""
"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को रिपोरà¥à¤Ÿ "
"करें."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -44,7 +51,7 @@ msgstr ""
"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को रिपोरà¥à¤Ÿ "
"करें."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -57,9 +64,17 @@ msgstr ""
"अधिक संभव है कि यह ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' में à¤à¤• बग है. इस मà¥à¤¦à¥à¤¦à¥‡ को ALSA डेवलेपर को रिपोरà¥à¤Ÿ "
"करें."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr "हमेशा कम से मक à¤à¤• सिंक को लोडेड रखें हालांकि यह à¤à¤• रिकà¥à¤¤ है"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "डमी आउटपà¥à¤Ÿ"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "वरà¥à¤šà¥à¤…ल LADSPA सिंक"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -69,12 +84,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"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>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "कà¥à¤²à¥‰à¤•à¥à¤¡ रिकà¥à¤¤ सिंक"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "रिकà¥à¤¤ आउटपà¥à¤Ÿ"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "आंतरिक ऑडियो"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "मॉडेम"
@@ -90,366 +118,247 @@ msgstr "नया dl लोडर आबंटित करने में वà
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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s संकेत पाया."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "बाहर हो रहा है."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' उपयोकà¥à¤¤à¤¾ ढूंढ़ने में विफल."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' समूह ढूंढ़ने में विफल."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "'%s' उपयोकà¥à¤¤à¤¾ और '%s' समूह का GID मेल नहीं खाता है"
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' बनाने में विफल: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "समूह सूची पाने में विफल: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID बदलने में विफल: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID बदलने में विफल: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "रूट अधिकार सफलतापूरà¥à¤µà¤• छोड़ा."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "इस पà¥à¤²à¥ˆà¤Ÿà¤«à¥‰à¤°à¥à¤® पर असमरà¥à¤¥à¤¿à¤¤ तंतà¥à¤° वà¥à¤¯à¤¾à¤ªà¤• विधि."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) विफल: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "डेमॉन नहीं कारà¥à¤¯à¤¶à¥€à¤²"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "डेमॉन बतौर PID %u चल रहा है"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "डेमॉन हटाने में विफल: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
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
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "रूट अधिकार जरूरी."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start not supported for system instances."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "तंतà¥à¤° मोड में चल रहा है, लेकिन --disallow-exit सेट नहीं!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "तंतà¥à¤° मोड में चल रहा है, लेकिन --disallow-module-loading सेट नहीं!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "तंतà¥à¤° मोड में चल रहा है, SHM मोड बाधà¥à¤¯ रूप से निषà¥à¤•à¥à¤°à¤¿à¤¯!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "तंतà¥à¤° मोड में चल रहा है, निकास निषà¥à¤•à¥à¤°à¤¿à¤¯ समय बाधà¥à¤¯ रूप से निषà¥à¤•à¥à¤°à¤¿à¤¯!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio पाने में विफल."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "पाइप विफल: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() विफल: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() विफल: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "डेमॉन आरंभ विफल."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "डेमॉन आरंभ सफल."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "यह पलà¥à¤¸à¤‘डियो %s है."
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Compilation host: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilation CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "मेजबान पर चल रहा है: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU पाया."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "पृषà¥à¤  आकार %lu बाइट है."
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "वेलगà¥à¤°à¤¿à¤‚ड समरà¥à¤¥à¤¨ से कंपाइल: हाà¤"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "वेलगà¥à¤°à¤¿à¤‚ड समरà¥à¤¥à¤¨ से कंपाइल: नहीं"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "वेलगà¥à¤°à¤¿à¤‚ड विधि में चल रहा है: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "अनà¥à¤•à¥‚लित बिलà¥à¤¡: हाà¤"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "अनà¥à¤•à¥‚लित बिलà¥à¤¡: नहीं"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG परिभाषित, सभी निषà¥à¤•à¥à¤°à¤¿à¤¯."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH परिभाषित, केव तेज पथ à¤à¤¸à¤°à¥à¤Ÿ निषà¥à¤•à¥à¤°à¤¿à¤¯."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "सभी à¤à¤¸à¤°à¥à¤Ÿ सकà¥à¤·à¤®."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "मशीन ID पाने में विफल"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "मशीन ID %s है."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "मशीन ID %s है."
+msgstr "सतà¥à¤° ID %s है."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "रनटाइम निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ %s का पà¥à¤°à¤¯à¥‹à¤— कर रहा है."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "सà¥à¤Ÿà¥‡à¤Ÿ निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ %s का पà¥à¤°à¤¯à¥‹à¤— कर रहा है."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "मॉडà¥à¤¯à¥‚ल निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ %s का पà¥à¤°à¤¯à¥‹à¤— कर रहा है."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "तंतà¥à¤° मोड में चल रहा है: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -458,43 +367,47 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"तो आप PA तंतà¥à¤° मोड में चला रहे हैं. कृपया नोट करें कि आपको à¤à¤¸à¤¾ नहीं करना चाहिà¤.\n"
+"यदि आप इसे करते हैं तो यह आपकी गलती है यदि कà¥à¤› अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ होता है.\n"
+"कृपया http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode को पढ़ें जानने के लिठ"
+"कि कà¥à¤¯à¥‹à¤‚ तंतà¥à¤° मोड à¤à¤• बढ़िया विचार नहीं है."
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() विफल."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ताज़ा उचà¥à¤š विभेदन टाइमर उपलबà¥à¤§! आनंद लें!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
"आपका करà¥à¤¨à¥‡à¤² बà¥à¤°à¥€ सà¥à¤¥à¤¿à¤¤à¤¿ में है! सलाह है कि उचà¥à¤š विभेदन यà¥à¤•à¥à¤¤ लिनकà¥à¤¸ सकà¥à¤°à¤¿à¤¯ किया जाना चाहिà¤!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() विफल."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "डेमॉन आरंभ करने में विफल."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "बिना लोड मॉडà¥à¤¯à¥‚ल के डेमॉन आरंभ, काम करने से असà¥à¤µà¥€à¤•à¤¾à¤° कर रहा है."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "डेमॉन आरंभन पूरà¥à¤£."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "डेमॉन बनà¥à¤¦ किया जाना आरंभ."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "डेमॉन अवरोधित."
@@ -744,79 +657,79 @@ msgstr "à¤à¤• बार लोड करें: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "अवमूलà¥à¤¯à¤¨ चेतावनी: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "पथ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] अवैध लॉग लकà¥à¤·à¥à¤¯ '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] अवैध लॉग सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] अवैध पà¥à¤¨à¤ƒ नमूना विधि '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] अवैध rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit इस पà¥à¤²à¥‡à¤Ÿà¤«à¥‰à¤°à¥à¤® पर समरà¥à¤¥à¤¿à¤¤ नहीं."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] अवैध पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ पà¥à¤°à¤¾à¤°à¥‚प '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] अवैध पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ दर '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] अवैध पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ चैनल '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] अवैध चैनल मानचितà¥à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] टà¥à¤•à¤¡à¤¼à¥‡ '%s' की अवैध संखà¥à¤¯à¤¾."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] अवैध खंड आकार '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] अवैध नाइस सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "विनà¥à¤¯à¤¾à¤¸ फ़ाइल खोलने में विफल: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -824,18 +737,14 @@ msgstr ""
"निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ तयशà¥à¤¦à¤¾ चैनल मानचितà¥à¤° के पास चैनल की भिनà¥à¤¨ संखà¥à¤¯à¤¾ है चैनल की तयशà¥à¤¦à¤¾ निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ संखà¥à¤¯à¤¾ "
"के बनिसà¥à¤ªà¤¤."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, 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/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "अधिकार छोड़ रहा है."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -845,25 +754,7 @@ msgstr "पलà¥à¤¸à¤‘डियो धà¥à¤µà¤¨à¤¿ तंतà¥à¤°"
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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "मोनो"
@@ -1067,33 +958,33 @@ msgstr "ऊपर पशà¥à¤š बायाà¤"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(अवैध)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "सà¥à¤Ÿà¥€à¤°à¤¿à¤¯à¥‹"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "सरà¥à¤°à¤¾à¤‰à¤‚ड 7.1"
@@ -1197,27 +1088,35 @@ msgstr "अनà¥à¤ªà¤¸à¥à¤¥à¤¿à¤¤ कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¯à¤¨"
msgid "Client forked"
msgstr "कà¥à¤²à¤¾à¤à¤‚ट विभाजित"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1230,192 +1129,191 @@ msgstr "XOpenDisplay() विफल"
msgid "Failed to parse cookie data"
msgstr "कà¥à¤•à¥€ आंकड़ा के विशà¥à¤²à¥‡à¤·à¤£ में विफल"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "विनà¥à¤¯à¤¾à¤¸ फ़ाइल '%s' खोलने में विफल: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "कोई कà¥à¤•à¥€ नहीं लोड किया गया. इसके बिना कनेकà¥à¤Ÿ करने की कोशिश कर रहा हूà¤."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "अजà¥à¤žà¤¾à¤¤ विसà¥à¤¤à¤¾à¤° '%s' के लिठसंदेश पà¥à¤°à¤¾à¤ªà¥à¤¤"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Failed to drain stream: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® से खींचने में विफल: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "पà¥à¤²à¥‡à¤¬à¥ˆà¤• सà¥à¤Ÿà¥à¤°à¥€à¤® खतà¥à¤®.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "पà¥à¤²à¥‡à¤¬à¥ˆà¤• सà¥à¤Ÿà¥à¤°à¥€à¤® खतà¥à¤®."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "सरà¥à¤µà¤° में कनेकà¥à¤¶à¤¨ ले जा रहा है.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "सरà¥à¤µà¤° में कनेकà¥à¤¶à¤¨ ले जा रहा है."
+
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() विफल: %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() विफल: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() विफल: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() विफल: %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() विफल: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® सफलतापूरà¥à¤µà¤• निरà¥à¤®à¤¿à¤¤.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® सफलतापूरà¥à¤µà¤• निरà¥à¤®à¤¿à¤¤."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() विफल: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() विफल: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "बफ़र मेटà¥à¤°à¤¿à¤•à¥à¤¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "बफ़र मेटà¥à¤°à¤¿à¤•à¥à¤¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "बफ़र मेटà¥à¤°à¤¿à¤•à¥à¤¸: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "बफ़र मेटà¥à¤°à¤¿à¤•à¥à¤¸: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "नमूना सà¥à¤ªà¥‡à¤• '%s' का पà¥à¤°à¤¯à¥‹à¤—, चैनल मैप '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "नमूना सà¥à¤ªà¥‡à¤• '%s' का पà¥à¤°à¤¯à¥‹à¤—, चैनल मैप '%s'."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "यà¥à¤•à¥à¤¤à¤¿ %s (%u, %ssuspended) से कनेकà¥à¤Ÿà¥‡à¤¡.\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "यà¥à¤•à¥à¤¤à¤¿ %s (%u, %ssuspended) से कनेकà¥à¤Ÿà¥‡à¤¡."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¤¿: %s\n"
+msgid "Stream error: %s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¤¿: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ सà¥à¤¥à¤—ित.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ सà¥à¤¥à¤—ित.%s "
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ पà¥à¤¨à¤°à¥à¤¬à¤¹à¤¾à¤².%s \n"
+msgid "Stream device resumed.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ पà¥à¤¨à¤°à¥à¤¬à¤¹à¤¾à¤².%s "
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® अंडररन.%s \n"
+msgid "Stream underrun.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® अंडररन.%s "
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® ओवररन.%s \n"
+msgid "Stream overrun.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® ओवररन.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® आरंभ.%s \n"
+msgid "Stream started.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® आरंभ.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ %s (%u, %ssuspended).%s में खिसकाया गया \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यà¥à¤•à¥à¤¤à¤¿ %s (%u, %ssuspended).%s में खिसकाया गया"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "नहीं "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® बफ़र गà¥à¤£ परिवरà¥à¤¤à¤¿à¤¤.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® बफ़र गà¥à¤£ परिवरà¥à¤¤à¤¿à¤¤.%s "
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "कनेकà¥à¤¶à¤¨ सà¥à¤¥à¤¾à¤ªà¤¿à¤¤.%s \n"
+msgid "Connection established.%s"
+msgstr "कनेकà¥à¤¶à¤¨ सà¥à¤¥à¤¾à¤ªà¤¿à¤¤.%s "
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() विफल: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() विफल: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() विफल: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() विफल: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() विफल: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() विफल: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "कनेकà¥à¤¶à¤¨ विफल.%s \n"
+msgid "Connection failure: %s"
+msgstr "कनेकà¥à¤¶à¤¨ विफल.%s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF पाया.\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF पाया."
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() विफल: %s\n"
+msgid "write() failed: %s"
+msgstr "write() विफल: %s"
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() विफल: %s\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "संकेत पाया, निकल रहा है."
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "संकेत पाया, निकल रहा है.\n"
-
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Failed to get latency: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "लेटेंसी पाने में विफल: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "समय: %0.3f sec; लैटेंसी: %0.0f usec. \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "समय: %0.3f सेकेंड; लैटेंसी: %0.0f usec."
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() विफल: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() विफल: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1497,8 +1395,10 @@ msgstr ""
"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"
@@ -1521,6 +1421,11 @@ msgstr ""
"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"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1533,136 +1438,127 @@ msgstr ""
"लिबपलà¥à¤¸ %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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "अवैध कà¥à¤²à¤¾à¤‡à¤‚ट नाम '%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "अवैध पà¥à¤¨à¤ƒ पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ विधि '%s'."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "अवैध सà¥à¤Ÿà¥à¤°à¥€à¤® नाम '%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "अवैध चैनल मानचितà¥à¤° '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "अवैध चैनल मानचितà¥à¤° '%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "अवैध लैटेंसी विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "अवैध लैटेंसी विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "अवैध पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ समय विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "अवैध पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ समय विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "अवैध पà¥à¤¨à¤ƒ पà¥à¤°à¤¤à¤¿à¤¦à¤°à¥à¤¶ विधि '%s'."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "अवैध गà¥à¤£ '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "अजà¥à¤žà¤¾à¤¤ फ़ाइल पà¥à¤°à¤¾à¤°à¥‚प %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "अवैध नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "अवैध नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "कई वितरà¥à¤•.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "कई वितरà¥à¤•."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "नमूना सूचना पाने में विफल: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "फ़ाइल के लिठनमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ पाने में विफल."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "धà¥à¤µà¤¨à¤¿ फ़ाइल खोलने में विफल.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "धà¥à¤µà¤¨à¤¿ फ़ाइल खोलने में विफल."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "फ़ाइल से नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करने में विफल."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "चेतावनी: फ़ाइल से चैनल मैप पाने में विफल."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "चैनल मानचितà¥à¤° नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ के मेल नहीं खाता\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "चैनल मैप नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ से मेल नहीं खाता है"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "चेतावनी: फ़ाइल में चैनल मैप लिखने में विफल."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® को किसी नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s' के साथ खोल रहा है.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "किसी %s सà¥à¤Ÿà¥à¤°à¥€à¤® को किसी नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤¤à¤¾ '%s' और चैनल मैप '%s' से खोल रहा है."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "रिकारà¥à¤¡à¤¿à¤‚ग"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() विफल."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() विफल.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() विफल."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() विफल."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() विफल: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() विफल.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() विफल."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() विफल."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1689,7 +1585,12 @@ msgstr "पà¥à¤¨à¤°à¥à¤¬à¤¹à¤¾à¤²à¥€ में विफल: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "चेतावनी: धà¥à¤µà¤¨à¤¿ सरà¥à¤µà¤° सà¥à¤¥à¤¾à¤¨à¥€à¤¯ नहीं है, सà¥à¤¥à¤—ित नहीं कर रहा है.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "कनेकà¥à¤¶à¤¨ विफल.%s \n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT पाया, निकल रहा है.\n"
@@ -1729,32 +1630,47 @@ msgstr ""
"लिबपलà¥à¤¸ %s से कंपाइल\n"
"लिबपलà¥à¤¸ %s से कड़ीबदà¥à¤§\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() विफल.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() विफल.\n"
+
+#: ../src/utils/pasuspender.c:298
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "आंकड़े पाने में विफल: %s\n"
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() विफल.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "आंकड़े पाने में विफल: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "पà¥à¤°à¤¯à¥‹à¤— में मà¥à¤¦à¥à¤°à¤¾: %u बà¥à¤²à¥‰à¤• %s बाइट कà¥à¤² समाहित करता है.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "संपूरà¥à¤£ जीवनचकà¥à¤° के दौरान आबंटित: %u बà¥à¤²à¥‰à¤• %s बाइट कà¥à¤² को समाहित करता है.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "नमूना कैश आकार: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "सरà¥à¤µà¤° सूचना पाने में विफल: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "सरà¥à¤µà¤° सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1777,12 +1693,12 @@ msgstr ""
"तयशà¥à¤¦à¤¾ सà¥à¤°à¥‹à¤¤: %s\n"
"कà¥à¤•à¥€: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "सिंक सूचना पाने में विफल: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "सिंक सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1821,22 +1737,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tProfiles:\n"
+msgstr "\tPorts:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tActive Profile: %s\n"
+msgstr "\tActive Port: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "सà¥à¤°à¥‹à¤¤ सूचना पाने में विफल: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "सà¥à¤°à¥‹à¤¤ सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1875,20 +1791,20 @@ msgstr ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "मॉडà¥à¤¯à¥‚ल सूचना पाने में विफल: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "मॉडà¥à¤¯à¥‚ल सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1905,12 +1821,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "कà¥à¤²à¤¾à¤‡à¤‚ट सूचना पाने में विफल: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "कà¥à¤²à¤¾à¤‡à¤‚ट सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1925,12 +1841,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "कारà¥à¤¡ सूचना पाने में विफल: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "कारà¥à¤¡ सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1947,22 +1863,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiles:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tActive Profile: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "सिंक इनपà¥à¤Ÿ सूचना पाने में विफल: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "सिंक इनपà¥à¤Ÿ सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1999,12 +1915,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "सà¥à¤°à¥‹à¤¤ आउटपà¥à¤Ÿ सूचना पाने में विफल: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "सà¥à¤°à¥‹à¤¤ आउटपà¥à¤Ÿ सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2033,12 +1949,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "नमूना सूचना पाने में विफल: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "नमूना सूचना पाने में विफल: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2069,22 +1985,26 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "विफलता: %s\n"
+msgid "Failure: %s"
+msgstr "विफलता: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "नमूना अफलोड करने में विफल: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "नमूना अफलोड करने में विफल: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "फ़ाइल का असामयिक अंत\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "फ़ाइल का असामयिक अंत"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT पाया, निकल रहा है."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2092,15 +2012,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2116,13 +2042,21 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2132,7 +2066,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2143,81 +2077,109 @@ msgstr ""
"लिबपलà¥à¤¸ %s से कंपाइल\n"
"लिबपलà¥à¤¸ %s से कड़ीबदà¥à¤§\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "लोड करने के लिठकिसी नमूना फ़ाइल निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करें\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "लोड करने के लिठकिसी नमूना फ़ाइल निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करें"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "धà¥à¤µà¤¨à¤¿ फ़ाइल खोलने में विफल.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "धà¥à¤µà¤¨à¤¿ फ़ाइल खोलने में विफल."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® को किसी नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s' के साथ खोल रहा है.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® को किसी नमूना विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾ '%s' के साथ खोल रहा है."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "आपने किसी नमूना नाम को बजाने के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "आपको किसी नमूना नाम को बजाने के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "आपने किसी नमूना नाम को हटाने के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "आपको किसी नमूना नाम को हटाने के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "आपने किसी सिंक इनपà¥à¤Ÿ सूची और सिंक को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "आपको किसी सिंक इनपà¥à¤Ÿ सूची और सिंक को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "आपने किसी सिंक सà¥à¤°à¥‹à¤¤ आउटपà¥à¤Ÿ और सà¥à¤°à¥‹à¤¤ को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "आपको किसी सिंक सà¥à¤°à¥‹à¤¤ आउटपà¥à¤Ÿ और सà¥à¤°à¥‹à¤¤ को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "आपने किसी मॉडà¥à¤¯à¥‚ल नाम और वितरà¥à¤• को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "आपको किसी मॉडà¥à¤¯à¥‚ल नाम और वितरà¥à¤• को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "आपने किसी मॉडà¥à¤¯à¥‚ल सूची को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "आपको किसी मॉडà¥à¤¯à¥‚ल सूची को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"आप à¤à¤• सिंक से अधिक निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ नहीं कर सकते हैं. आपको किसी बà¥à¤²à¤¿à¤¯à¤¨ मान को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना "
-"है.\n"
+"आप à¤à¤• सिंक से अधिक निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ नहीं कर सकते हैं. आपको किसी बà¥à¤²à¤¿à¤¯à¤¨ मान को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "आपको किसी कारà¥à¤¡ नाम/सूची और पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² नाम को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "आपको किसी कारà¥à¤¡ नाम/सूची और पोरà¥à¤Ÿ नाम को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "आपको किसी सà¥à¤°à¥‹à¤¤ नाम/सूची और पोरà¥à¤Ÿ नाम को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "कोई वैध कमांड निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ नहीं.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "आपको किसी सिंक नाम/सूची और वालà¥à¤¯à¥‚म को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() विफल: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "अवैध आयतन विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "आपको किसी सà¥à¤°à¥‹à¤¤ नाम/सूची और आयतन को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "आपने किसी सिंक इनपà¥à¤Ÿ सूची और आयतन को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "अवैध सिंक इनपà¥à¤Ÿ सूची"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "आपको किसी कारà¥à¤¡ नाम/सूची और मूक बà¥à¤²à¤¿à¤¯à¤¨ नाम को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "आपको किसी सà¥à¤°à¥‹à¤¤ नाम/सूची और मूल बà¥à¤²à¤¿à¤¯à¤¨ को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करना है."
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "आपने किसी सिंक इनपà¥à¤Ÿ सूची और मूल बà¥à¤²à¤¿à¤¯à¤¨ को निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया है"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "अवैध सिंक इनपà¥à¤Ÿ सूची विनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤¤à¤¾"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "कोई वैध कमांड निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ नहीं."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2298,48 +2260,48 @@ msgstr "कà¥à¤•à¥€ आंकड़ा लोड करने में विà
msgid "Not yet implemented.\n"
msgstr "अभी तक कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ नहीं.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "कोई पलà¥à¤¸à¤‘डियो डेमॉन चल रहा है, या चयन डेमॉन के तहत चल रहा है."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio डेमॉन को मारने में विफल."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "डेमॉन पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾ नहीं दे रहा है."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn लॉक की पहà¥à¤à¤š नहीं ले सकता है."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2356,7 +2318,7 @@ msgstr ""
"हमें POLLOUT सेट के साथ तैयार किया गया है -- हालांकि परवरà¥à¤¤à¥€ snd_pcm_avail() ने 0 या "
"दूसरा मान < min_avail दिया."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2374,129 +2336,22 @@ msgstr ""
"दूसरा मान < min_avail दिया."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "बंद"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "उचà¥à¤š विशà¥à¤µà¤¸à¤¨à¥€à¤¯à¤¤à¤¾à¤¯à¥à¤•à¥à¤¤à¤¿ पà¥à¤²à¥‡à¤¬à¥ˆà¤• (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "उचà¥à¤š विशà¥à¤µà¤¸à¤¨à¥€à¤¯à¤¤à¤¾ कैपà¥à¤šà¤° (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
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 3ecca4e4..0edc5d8e 100644
--- a/po/it.po
+++ b/po/it.po
@@ -3,23 +3,27 @@
# This file is distributed under the same license as the pulseaudio package.
#
# Luca Ferretti <elle.uca@libero.it>, 2008, 2009.
-# Milo Casagrande <milo@ubuntu.com>, 2009.
# mario_santagiuliana <mario at marionline.it>, 2009.
+# Milo Casagrande <milo@ubuntu.com>, 2009.
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: 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"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-08-26 21:46+0200\n"
+"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -28,10 +32,10 @@ msgid ""
"to the ALSA developers."
msgstr ""
"snd_pcm_avail() ha restituito un valore molto grande: %lu byte (%lu ms).\n"
-"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
+"Molto probabilmente si tratta di un bug nel driver ALSA \"%s\". Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -40,10 +44,10 @@ msgid ""
"to the ALSA developers."
msgstr ""
"snd_pcm_delay() ha restituito un valore molto grande: %li byte (%s%lu ms).\n"
-"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
+"Molto probabilmente si tratta di un bug nel driver ALSA \"%s\". Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -53,12 +57,20 @@ msgid ""
msgstr ""
"snd_pcm_mmap_begin() ha restituito un valore molto grande: %lu byte (%lu "
"ms).\n"
-"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
+"Molto probabilmente si tratta di un bug nel driver ALSA \"%s\". Segnalare "
"questo problema agli sviluppatori ALSA."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Sink LADSPA virtuale"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -68,12 +80,26 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<nome del sink> sink_properties=<proprietà del sink> master=<nome "
+"del sink da filtrare> format=<formato campionamento> rate=<frequenza "
+"campionamento> channels=<numero di canali> channel_map=<mappa canale> "
+"plugin=<nome plugin ladspa> label=<etichetta plugin ladspa> control=<valori "
+"di controllo separati da virgole>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Output %s"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Audio interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -89,222 +115,93 @@ msgstr "Allocazione del nuovo loader dl non riuscita."
msgid "Failed to add bind-now-loader."
msgstr "Aggiunta di bind-now-loader non riuscita."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Impossibile effettuare la connessione al bus di sistema: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Impossibile ottenere il chiamante dal PID: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Impossibile impostare l'UID sull'oggetto chiamante."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Recupero della sessione CK non riuscito."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Impossibile impostare l'UID sull'oggetto sessione."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Impossibile allocare PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Impossibile impostare action_id"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Impossibile allocare PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Impossibile inizializzare PolKitContext: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Impossibile determinare se il chiamante è autorizzato: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Impossibile ottenere l'autorizzazione: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit ha risposto con \"%s\""
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Ottenuto il segnale %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Uscita."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ricerca dell'utente \"%s\" non riuscita."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ricerca del gruppo \"%s\" non riuscita."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Creazione di \"%s\" non riuscita: %s"
# group list ????
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Cambio dell'elenco di gruppo non riuscito: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Cambio di GID non riuscito: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Cambio di UID non riuscito: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Privilegi di root abbandonati con successo."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
-msgstr "Modalità \"system wide\" non supportata su questa piattaforma."
+msgstr "Modalità di sistema non supportata su questa piattaforma."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Analisi della riga di comando non riuscita."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "Privilegi acquire-high-priority assegnati da PolicyKit."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit."
-
-#: ../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:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "Privilegi acquire-real-time rifiutati da 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 ""
-"Lo SUID root e lo scheduling real-time o high-priority erano richiesti nella "
-"configurazione, ma mancano i privilegi necessari:\n"
-"non si è nel gruppo «%s», PolicyKit non consente di acquisire i privilegi "
-"richiesti e non è possibile incrementare i limiti RLIMIT_NICE/RLIMIT_RTPRIO "
-"della risorsa.\n"
-"Per abilitare lo scheduling real-time/high-priority, acquisire i privilegi "
-"PolicyKit appropriati, diventare un membro di «%s» oppure incrementare i "
-"limiti RLIMIT_NICE/RLIMIT_RTPRIO della risorsa per questo utente."
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "Incremento di RLIMIT_RTPRIO riuscito"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO non riuscito: %s"
-
-# abbandono??
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Abbandono del CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Demone non in esecuzione"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demone in esecuzione con PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Terminazione del demone non riuscita: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -312,158 +209,163 @@ msgstr ""
"Questo programma non è pensato per essere eseguito come root (a meno di "
"specificare --system)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Richiesti privilegi di root."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start non supportato per le istanze di sistema."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
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:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Acquisizione di STDIO non riuscita."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe non riuscita: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() non riuscita: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() non riuscita: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Avvio del demone non riuscito."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Avvio del demone riuscito."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Questo è PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Host di compilazione: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS di compilazione: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "In esecuzione sull'host: %s"
# evviva il rispetto della l10n!!!
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Trovate %u CPU."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "La dimensione di pagina è %lu byte"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Compilato con supporto a Valgrind: sì"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Compilato con supporto a Valgrind: no"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "In esecuzione in modalità valgrind: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Build ottimizzata: sì"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Build ottimizzata: no"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definito, tutte le dichiarazioni sono disabilitate."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH definito, solo le dichiarazioni veloci di path sono disabilitate."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Tutte le dichiarazioni sono abilitate."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Recupero dell'ID della macchina non riuscito"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "L'ID della macchina è %s"
+msgstr "L'ID della sessione è %s"
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "In uso directory di runtime %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "In uso directory dei moduli %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -472,18 +374,24 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"PulseAudio è in esecuzione in modalità sistema. È sconsigliato eseguire "
+"PulseAudio in questa modalità.\n"
+"Continuando a usarlo in questo modo molte cose potrebbero non funzionare "
+"come atteso.\n"
+"Consultare http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per maggiori "
+"informazioni sul perché la modalità sistema è una pessima idea."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
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:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -491,27 +399,27 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Demone terminato."
@@ -591,7 +499,7 @@ msgid ""
msgstr ""
"%s [OPZIONI]\n"
"\n"
-"COMMANDI:\n"
+"COMANDI:\n"
" -h, --help Mostra questo aiuto\n"
" --version Mostra la versione\n"
" --dump-conf Riversa la configurazione "
@@ -655,7 +563,7 @@ msgstr ""
" --log-time[=BOOL] Include i marcatempo nei messaggi "
"di\n"
" registro\n"
-" --log-backtrace=FRAMES Include un backtrace nei messaggi "
+" --log-backtrace=FRAME Include un backtrace nei messaggi "
"di \n"
" registro\n"
" -p, --dl-search-path=PERCORSO Imposta il percorso di ricerca per "
@@ -795,80 +703,80 @@ msgstr "Caricato una sola volta: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "ATTENZIONE, DEPRECATI: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Percorso: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destinazione di registro \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Livello di registro \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato di campionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Frequenza di campionamento '%s' non valida."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mappa del canale \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Numero di frammenti \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -876,18 +784,14 @@ msgstr ""
"La mappa del canale predefinita specificata presenta un numero diverso di "
"canali rispetto a quello predefinito specificato."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lettura dal file di configurazione: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Abbandono dei privilegi di root."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Limitazione delle capacità a CAP_SYS_NICE riuscita."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Abbandono dei privilegi."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -897,31 +801,7 @@ msgstr "Sistema sonoro PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Avvia il sistema sonoro PulseAudio"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
-"Scheduling high-priority (valori negativi di \"nice\") per il demone "
-"PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Scheduling realt-time per il demone PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"La politica di sistema previene PulseAudio dall'ottenere lo scheduling high-"
-"priority."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
-"La politica di sistema previene PulseAudio dall'ottenere lo scheduling real-"
-"time."
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1127,33 +1007,33 @@ msgstr "Superiore posteriore sinistro"
msgid "Top Rear Right"
msgstr "Superiore posteriore destro"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(non valido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1257,27 +1137,35 @@ msgstr "Implementazione mancante"
msgid "Client forked"
msgstr "Fork del client"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s ch %u %u Hz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1290,195 +1178,194 @@ msgstr "XOpenDisplay() non riuscita"
msgid "Failed to parse cookie data"
msgstr "Analisi dei dati cookie non riuscita"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Apertura del file di configurazione \"%s\" non riuscita: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nessun cookie caricato. Tentativo di connettersi senza."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\""
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Svuotamento dello stream non riuscito: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Svuotamento dello stream non riuscito: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Stream di riproduzione svuotato.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Stream di riproduzione svuotato."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Svuotamento della connessione sul server.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Svuotamento della connessione sul server."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() non riuscita: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() non riuscita: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() non riuscita: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() non riuscita: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Creazione dello stream riuscita.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() non riuscita: %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Creazione dello stream riuscita."
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() non riuscita: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() non riuscita: %s"
# maxlength, fragsize e gli altri non so se vanno tradotti...
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Metriche del buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
# maxlength e fragsize non so se vanno tradotti...
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Metriche del buffer: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Metriche del buffer: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "In uso specifica di campionamento \"%s\", mappa di canali \"%s\".\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "In uso specifica di campionamento \"%s\", mappa dei canali \"%s\"."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "Connesso al device %s (%u, %ssospeso).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Connesso al device %s (%u, %ssospeso)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Errore di stream: %s\n"
+msgid "Stream error: %s"
+msgstr "Errore di stream: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Device stream sospeso.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "Device stream sospeso.%s "
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Device stream ripristinato.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "Device stream ripristinato.%s "
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Underrun dello stream.%s\n"
+msgid "Stream underrun.%s"
+msgstr "Underrun dello stream.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Overrun dello stream.%s\n"
+msgid "Stream overrun.%s"
+msgstr "Overrun dello stream.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Stream avviato.%s \n"
+msgid "Stream started.%s"
+msgstr "Stream avviato.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "Stream spostato sul device %s (%u, %ssospeso).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Stream spostato sul device %s (%u, %ssospeso).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "non "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Attributi del buffer di stream cambiati.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Attributi del buffer di stream cambiati.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Connessione stabilita.%s \n"
+msgid "Connection established.%s"
+msgstr "Connessione stabilita.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() non riuscita: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() non riuscita: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() non riuscita: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() non riuscita: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() non riuscita: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() non riuscita: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Connessione non riuscita: %s\n"
+msgid "Connection failure: %s"
+msgstr "Connessione non riuscita: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Ricevuto EOF.\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Ricevuto EOF."
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() non riuscita: %s\n"
+msgid "write() failed: %s"
+msgstr "write() non riuscita: %s"
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() non riuscita: %s\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Ricevuto il segnale, uscita."
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Ricevuto il segnale, uscita.\n"
-
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Recupero della latenza non riuscito: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Recupero della latenza non riuscito: %s"
# dubbio: tempo o durata??
-#: ../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:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "Tempo: %0.3f sec; Latenza: %0.0f microsec. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() non riuscita: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() non riuscita: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1568,34 +1455,40 @@ msgstr ""
" --channels=CANALI Il numero di canali, 1 per mono, 2 "
"per\n"
" stereo (2 come predefinito)\n"
-" --channel-map=MAP_CANALI La mappa di canali da usare al posto "
-"di\n"
+" --channel-map=MAP_CANALI La mappa dei canali da usare al "
+"posto di\n"
" quella predefinita\n"
" --fix-format Recupera il formato di "
"campionamento\n"
" dal sink a cui lo stream sta per "
"essere\n"
-" connesso.\n"
+" connesso\n"
" --fix-rate Recupera la frequenza di "
"campionamento\n"
" dal sink a cui lo stream sta per "
"essere\n"
-" connesso.\n"
+" connesso\n"
" --fix-channels Recupera il numero di canali e la "
"mappa\n"
" dei canali dal sink a cui lo "
"stream \n"
-" sta per essere connesso.\n"
+" sta per essere connesso\n"
" --no-remix Non esegue l'upmix o il downmix \n"
-" dei canali.\n"
+" dei canali\n"
" --no-remap Mappa i canali per indice invece "
"che \n"
-" per nome.\n"
+" per nome\n"
" --latency=BYTE Richiede la latenza specificata in "
-"byte.\n"
+"byte\n"
" --process-time=BYTE Richiede il tempo di elaborazione "
"per\n"
-" richiesta specificato in byte.\n"
+" richiesta specificato in byte\n"
+" --property=PROPRIETÀ=VAL Imposta la proprietà al valore "
+"specificato\n"
+" --raw Registra/riproduce dati PCM grezzi\n"
+" --file-format=FFORMAT Registra/riproduce dati PCM "
+"formattati\n"
+" --list-file-FORMATI Elenca i formati disponibili.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1608,137 +1501,133 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Nome del client \"%s\" non valido"
-#: ../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:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Nome dello stream \"%s\" non valido"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Mappa di canali \"%s\" non valida\n"
+msgid "Invalid channel map '%s'"
+msgstr "Mappa dei canali \"%s\" non valida"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Specifica di latenza \"%s\" non valida\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Specifica di latenza \"%s\" non valida"
# esecuzione???
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Specifica di tempo di elaborazione \"%s\" non valida\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Specifica di tempo di elaborazione \"%s\" non valida"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Metodo di ricampionamento \"%s\" non valido."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Proprietà \"%s\" non valida"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Formato file %s sconosciuto."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Specifica di campionamento non valida\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Specifica di campionamento non valida"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Troppi argomenti.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Troppi argomenti."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "Generazione della specifica di campionamento per il file non riuscita."
-#: ../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:949
+msgid "Failed to open audio file."
+msgstr "Apertura del file audio non riuscita."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Attenzione: la specifica di campionamento indicata verrà soprascritta con "
+"quella dal file."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Determinazione della specifica di campionamento dal file non riuscita."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
msgstr ""
+"Attenzione: determinazione della mappa dei canali dal file non riuscita."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "La mappa dei canali non corrisponde alla specifica di campionamento"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Attenzione: scrittura della mappa dei canali su file non riuscita."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, 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"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"Apertura di uno stream %s con specifica di campionamento \"%s\" e mappa dei "
+"canali \"%s\"."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "registrazione"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "riproduzione"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() non riuscita."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() non riuscita.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() non riuscita."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() non riuscita."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() non riuscita: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() non riuscita.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() non riuscita."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() non riuscita."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1766,7 +1655,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Connessione non riuscita: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Ricevuto SIGINT, in uscita.\n"
@@ -1806,34 +1700,49 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() non riuscita.\n"
+
+#: ../src/utils/pasuspender.c:290
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() non riuscita.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() non riuscita.\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "Recupero delle statistiche non riuscito: %s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Dimensione della cache dei campioni: %s\n"
-#: ../src/utils/pactl.c:149
-#, c-format
-msgid "Failed to get server information: %s\n"
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
msgstr "Recupero delle informazioni del server non riuscito: %s\n"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1856,15 +1765,15 @@ msgstr ""
"Sorgente predefinita: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
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:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1891,7 +1800,7 @@ msgstr ""
"\tDescrizione: %s\n"
"\tDriver: %s\n"
"\tSpecifica di campionamento: %s\n"
-"\tMappa di canali: %s\n"
+"\tMappa dei canali: %s\n"
"\tModulo di appartenenza: %u\n"
"\tMuto: %s\n"
"\tVolume: %s%s%s\n"
@@ -1903,22 +1812,22 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tProfili:\n"
+msgstr "\tPorte:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tProfilo attivo: %s\n"
+msgstr "\tPorta attiva: %s\n"
-#: ../src/utils/pactl.c:290
-#, c-format
-msgid "Failed to get source information: %s\n"
+#: ../src/utils/pactl.c:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
msgstr "Recupero delle informazioni della sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1945,7 +1854,7 @@ msgstr ""
"\tDescrizione: %s\n"
"\tDriver: %s\n"
"\tSpecifica di campionamento: %s\n"
-"\tMappa di canali: %s\n"
+"\tMappa dei canali: %s\n"
"\tModulo di appartenenza: %u\n"
"\tMuto: %s\n"
"\tVolume: %s%s%s\n"
@@ -1957,20 +1866,20 @@ msgstr ""
"\tProprietà:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "N/D"
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "Recupero delle informazioni del modulo non riuscito: %s\n"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1987,12 +1896,12 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "Recupero delle informazioni del client non riuscito: %s\n"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -2007,12 +1916,12 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
-#, c-format
-msgid "Failed to get card information: %s\n"
+#: ../src/utils/pactl.c:447
+#, fuzzy, c-format
+msgid "Failed to get card information: %s"
msgstr "Recupero delle informazioni della scheda non riuscito: %s\n"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -2029,12 +1938,12 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfili:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tProfilo attivo: %s\n"
@@ -2043,13 +1952,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:489
-#, c-format
-msgid "Failed to get sink input information: %s\n"
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
msgstr ""
"Recupero delle informazioni dell'ingresso per il sink non riuscito: %s\n"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2090,13 +1999,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:547
-#, c-format
-msgid "Failed to get source output information: %s\n"
+#: ../src/utils/pactl.c:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
msgstr ""
"Recupero delle informazioni dell'uscita per la sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2125,13 +2034,13 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
# campiona lazy??
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2162,21 +2071,27 @@ msgstr ""
"\tProprietà:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "Fallimento: %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
msgstr "Caricamento del campione non riuscito: %s\n"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+#, fuzzy
+msgid "Premature end of file"
msgstr "Fine del file prematura\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "Ricevuto SIGINT, in uscita.\n"
+
+#: ../src/utils/pactl.c:869
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2185,15 +2100,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2203,19 +2124,21 @@ msgid ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
msgstr ""
-"%s [OPZIONE...] stat\n"
-"%s [OPZIONE...] list\n"
-"%s [OPZIONE...] exit\n"
-"%s [OPZIONE...] upload-sample NOMEFILE [NOME]\n"
-"%s [OPZIONE...] play-sample NOME [SINK]\n"
-"%s [OPZIONE...] remove-sample NOME\n"
-"%s [OPZIONE...] move-sink-input ID SINK\n"
-"%s [OPZIONE...] move-source-output ID SORGENTE\n"
-"%s [OPZIONE...] load-module NOME [ARGOMENTO...]\n"
-"%s [OPZIONE...] unload-module ID\n"
-"%s [OPZIONE...] suspend-sink [SINK] 1|0\n"
-"%s [OPZIONE...] suspend-source [SORGENTE] 1|0\n"
-"%s [OPZIONE...] set-card-profile [SCHEDA] [PROFILO] \n"
+"%s [OPZIONI] stat\n"
+"%s [OPZIONI] list\n"
+"%s [OPZIONI] exit\n"
+"%s [OPZIONI] upload-sample NOMEFILE [NOME]\n"
+"%s [OPZIONI] play-sample NOME [SINK]\n"
+"%s [OPZIONI] remove-sample NOME\n"
+"%s [OPZIONI] move-sink-input ID SINK\n"
+"%s [OPZIONI] move-source-output ID SORGENTE\n"
+"%s [OPZIONI] load-module NOME [ARGOMENTI...]\n"
+"%s [OPZIONI] unload-module ID\n"
+"%s [OPZIONI] suspend-sink [SINK] 1|0\n"
+"%s [OPZIONI] suspend-source [SORGENTE] 1|0\n"
+"%s [OPZIONI] set-card-profile [SCHEDA] [PROFILO] \n"
+"%s [OPZIONI] set-sink-port [SINK] [PORTA] \n"
+"%s [OPZIONI] set-source-port [SORGENTE] [PORTA] \n"
"\n"
" -h, --help Mostra questo aiuto\n"
" --version Mostra la versione\n"
@@ -2223,7 +2146,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:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2234,84 +2157,140 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+#, fuzzy
+msgid "Please specify a sample file to load"
msgstr "Specificare un file campione da caricare\n"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
msgstr "Apertura del file audio non riuscita.\n"
-#: ../src/utils/pactl.c:951
+#: ../src/utils/pactl.c:1004
#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n"
+msgid "Warning: Failed to determine sample specification from file."
+msgstr ""
+"Attenzione: determinazione della specifica di campionamento dal file non "
+"riuscita.\n"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
+#: ../src/utils/pactl.c:1014
+#, fuzzy
+msgid "You have to specify a sample name to play"
msgstr "È necessario specificare un nome di campione da riprodurre\n"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+#, fuzzy
+msgid "You have to specify a sample name to remove"
msgstr "È necessario specificare un nome di campione da rimuovere\n"
-#: ../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:1035
+#, fuzzy
+msgid "You have to specify a sink input index and a sink"
+msgstr "È necessario specificare un indice di ingresso per sink e un sink\n"
-#: ../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:1045
+#, fuzzy
+msgid "You have to specify a source output index and a source"
+msgstr ""
+"È necessario specificare una indice di uscita per sorgente e una sorgente\n"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+#, fuzzy
+msgid "You have to specify a module name and arguments."
msgstr "È necessario specificare un nome di modulo e gli argomenti.\n"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+#, fuzzy
+msgid "You have to specify a module index"
msgstr "È necessario specificare un indice di modulo\n"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
+#, fuzzy
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"Non è possibile specificare più di un sink. È necessario specificare un "
"valore booleano.\n"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
"Non è possibile specificare più di una sorgente. È necessario specificare un "
"valore booleano.\n"
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
+#: ../src/utils/pactl.c:1115
+#, fuzzy
+msgid "You have to specify a card name/index and a profile name"
msgstr ""
"È necessario specificare un nome/indice di scheda e un nome di profilo.\n"
-#: ../src/utils/pactl.c:1073
+#: ../src/utils/pactl.c:1126
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name"
+msgstr "È necessario specificare un nome/indice di sink e un nome di porta\n"
+
+#: ../src/utils/pactl.c:1137
#, fuzzy
-msgid "You have to specify a sink name/index and a port name\n"
+msgid "You have to specify a source name/index and a port name"
msgstr ""
-"È necessario specificare un nome/indice di scheda e un nome di profilo.\n"
+"È necessario specificare un nome/indice di sorgente e un nome di porta\n"
+
+#: ../src/utils/pactl.c:1149
+#, fuzzy
+msgid "You have to specify a sink name/index and a volume"
+msgstr "È necessario specificare un nome/indice di sink e un nome di porta\n"
-#: ../src/utils/pactl.c:1084
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
#, fuzzy
-msgid "You have to specify a source name/index and a port name\n"
+msgid "Invalid volume specification"
+msgstr "Specifica di campionamento non valida"
+
+#: ../src/utils/pactl.c:1166
+#, fuzzy
+msgid "You have to specify a source name/index and a volume"
msgstr ""
-"È necessario specificare un nome/indice di scheda e un nome di profilo.\n"
+"È necessario specificare un nome/indice di sorgente e un nome di porta\n"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Nessun comando valido specificato.\n"
+#: ../src/utils/pactl.c:1183
+#, fuzzy
+msgid "You have to specify a sink input index and a volume"
+msgstr "È necessario specificare un indice di ingresso per sink e un sink\n"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() non riuscita: %s"
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+#, fuzzy
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "È necessario specificare un nome/indice di sink e un nome di porta\n"
+
+#: ../src/utils/pactl.c:1221
+#, fuzzy
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr ""
+"È necessario specificare un nome/indice di sorgente e un nome di porta\n"
+
+#: ../src/utils/pactl.c:1238
+#, fuzzy
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "È necessario specificare un indice di ingresso per sink e un sink\n"
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "Specifica di campionamento non valida"
+
+#: ../src/utils/pactl.c:1262
+#, fuzzy
+msgid "No valid command specified."
+msgstr "Nessun comando valido specificato.\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2327,9 +2306,9 @@ msgstr ""
"%s [-D DISPLAY] [-S SERVER] [-O SINK] [-I SORGENTE] [-c FILE] [-d|-e|-i|-"
"r]\n"
"\n"
-" -d Mostra i dati PulseAudio attuali attaccati al display X11 (predef)\n"
+" -d Mostra i dati PulseAudio attuali collegati al display X11 (predef)\n"
" -e Esporta i dati PulseAudio locali sul display X11\n"
-" -i Importa i dati PulseAudio dal display X11 alle variabili ambientali "
+" -i Importa i dati PulseAudio dal display X11 alle variabili d'ambiente "
"e\n"
" al file cookie locali \n"
" -r Rimuove i dati PulseAudio dal display X11\n"
@@ -2394,48 +2373,50 @@ msgstr "Caricamento dei dati cookie non riuscito\n"
msgid "Not yet implemented.\n"
msgstr "Non ancora implementato.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"Nessun demone PulseAudio in esecuzione o non in esecuzione come demone di "
+"sessione."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Uccisione del demone PulseAudio non riuscita."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Il demone non sta rispondendo."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Impossibile accedere al lock di autospawn."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2445,14 +2426,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
-"ALSA si è svegliato per scrivere nuovi dati sul dispositivo ma non c'era "
-"niente da scrivere!\n"
-"Molto probabilmente questo è un bug dei driver ALSA '%s'. Riportare questo "
-"problema agli sviluppatori di ALSA.\n"
-"Ci si è alzati con impostato POLLOUT -- come sempre un subsequent "
-"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
+"Attivazione da parte di ALSA per scrivere nuovi dati sul dispositivo, ma non "
+"c'era nulla da scrivere.\n"
+"Molto probabilmente si tratta di un bug nei driver ALSA \"%s\". Segnalare "
+"questo problema agli sviluppatori di ALSA.\n"
+"Attivazione avvenuta con POLLOUT impostato -- tuttavia, una successiva "
+"snd_pcm_avail() ha ritornato 0 o un altro valore < min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2462,30 +2443,178 @@ msgid ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
-"ALSA si è svegliato per leggere nuovi dati dal dispositivo ma non c'era "
-"niente da leggere!\n"
-"Molto probabilmente questo è un bug dei driver ALSA '%s'. Riportare questo "
-"problema agli sviluppatori di ALSA.\n"
-"Ci si è alzati con impostato POLLIN -- come sempre un subsequent "
-"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
+"Attivazione da parte di ALSA per leggere nuovi dati dal dispositivo, ma non "
+"c'era nulla da leggere.\n"
+"Molto probabilmente si tratta di un bug nei driver ALSA \"%s\". Segnalare "
+"questo problema agli sviluppatori di ALSA.\n"
+"Attivazione avvenuta con POLLIN impostato -- tuttavia, una successiva "
+"snd_pcm_avail() ha ritornato 0 o un altro valore < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Spento"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
-msgstr "Playback ad alta fidabilità (A2DP)"
+msgstr "Riproduzione ad alta fedeltà (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Cattura ad alta fedeltà (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
-msgstr "Doppino Telefonico (HSP/HFP)"
+msgstr "Doppino telefonico (HSP/HFP)"
#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Server sonoro PulseAudio"
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Nome del client \"%s\" non valido\n"
+
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr ""
+#~ "Determinazione della specifica di campionamento dal file non riuscita.\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Impossibile effettuare la connessione al bus di sistema: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Impossibile ottenere il chiamante dal PID: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Impossibile impostare l'UID sull'oggetto chiamante."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Recupero della sessione CK non riuscito."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Impossibile impostare l'UID sull'oggetto sessione."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Impossibile allocare PolKitAction."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Impossibile impostare action_id"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Impossibile allocare PolKitContext."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Impossibile inizializzare PolKitContext: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Impossibile determinare se il chiamante è autorizzato: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Impossibile ottenere l'autorizzazione: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit ha risposto con \"%s\""
+
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr ""
+#~ "Scheduling high-priority (valori negativi di \"nice\") per il demone "
+#~ "PulseAudio"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Scheduling realt-time per il demone PulseAudio"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "La politica di sistema previene PulseAudio dall'ottenere lo scheduling "
+#~ "high-priority."
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr ""
+#~ "La politica di sistema previene PulseAudio dall'ottenere lo scheduling "
+#~ "real-time."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() non riuscita: %s\n"
+
+#, fuzzy
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_connect() non riuscita: %s"
+
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr ""
+#~ "Attualmente nel gruppo \"%s\", che consente scheduling high-priority."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr "Attualmente nel gruppo \"%s\", che consente scheduling real-time."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "Privilegi acquire-high-priority assegnati da PolicyKit."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "Privilegi acquire-real-time assegnati da PolicyKit."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "Privilegi acquire-real-time rifiutati da PolicyKit."
+
+#~ 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 ""
+#~ "Lo SUID root e lo scheduling real-time o high-priority erano richiesti "
+#~ "nella configurazione, ma mancano i privilegi necessari:\n"
+#~ "non si è nel gruppo «%s», PolicyKit non consente di acquisire i privilegi "
+#~ "richiesti e non è possibile incrementare i limiti RLIMIT_NICE/"
+#~ "RLIMIT_RTPRIO della risorsa.\n"
+#~ "Per abilitare lo scheduling real-time/high-priority, acquisire i "
+#~ "privilegi PolicyKit appropriati, diventare un membro di «%s» oppure "
+#~ "incrementare i limiti RLIMIT_NICE/RLIMIT_RTPRIO della risorsa per questo "
+#~ "utente."
+
+#~ msgid ""
+#~ "High-priority scheduling enabled in configuration but not allowed by "
+#~ "policy."
+#~ msgstr ""
+#~ "Scheduling high-priority abilitato nella configurazione, ma non ammesso "
+#~ "dalla politica."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "Incremento di RLIMIT_RTPRIO riuscito"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO non riuscito: %s"
+
+# abbandono??
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Abbandono del CAP_NICE"
+
+#~ msgid ""
+#~ "Real-time scheduling enabled in configuration but not allowed by policy."
+#~ msgstr ""
+#~ "Scheduling real-time abilitato nella configurazione, ma non ammesso dalla "
+#~ "politica."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Limitazione delle capacità a CAP_SYS_NICE riuscita."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() non riuscita.\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Mono analogico"
@@ -2522,9 +2651,6 @@ msgstr "Server sonoro PulseAudio"
#~ msgid "Output %s + Input %s"
#~ msgstr "Output %s + Input %s"
-#~ msgid "Output %s"
-#~ msgstr "Output %s"
-
#~ msgid "Input %s"
#~ msgstr "Input %s"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 00000000..c166f476
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,2033 @@
+# PulseAudio
+# Copyright (C) 2009.
+# This file is distributed under the same license as the PACKAGE package.
+# Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 21:05+0900\n"
+"Last-Translator: Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>\n"
+"Language-Team: Japanese <fedora-trans-ja@redhat.com>\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:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
+#, 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 ""
+
+#: ../src/modules/alsa/alsa-util.c:1147
+#, 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 ""
+
+#: ../src/modules/alsa/alsa-util.c:1194
+#, 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 ""
+
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
+#: ../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/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2613
+msgid "Internal Audio"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2618
+msgid "Modem"
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr ""
+
+#: ../src/daemon/main.c:141
+#, c-format
+msgid "Got signal %s."
+msgstr ""
+
+#: ../src/daemon/main.c:168
+msgid "Exiting."
+msgstr ""
+
+#: ../src/daemon/main.c:186
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr ""
+
+#: ../src/daemon/main.c:191
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr ""
+
+#: ../src/daemon/main.c:195
+#, c-format
+msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
+msgstr ""
+
+#: ../src/daemon/main.c:200
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr ""
+
+#: ../src/daemon/main.c:205
+#, c-format
+msgid "Home directory of user '%s' is not '%s', ignoring."
+msgstr ""
+
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr ""
+
+#: ../src/daemon/main.c:220
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:236
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:252
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:271
+msgid "Successfully dropped root privileges."
+msgstr ""
+
+#: ../src/daemon/main.c:279
+msgid "System wide mode unsupported on this platform."
+msgstr ""
+
+#: ../src/daemon/main.c:297
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:469
+msgid "Failed to parse command line."
+msgstr ""
+
+#: ../src/daemon/main.c:536
+msgid "Daemon not running"
+msgstr ""
+
+#: ../src/daemon/main.c:538
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr ""
+
+#: ../src/daemon/main.c:548
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:566
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+
+#: ../src/daemon/main.c:568
+msgid "Root privileges required."
+msgstr ""
+
+#: ../src/daemon/main.c:573
+msgid "--start not supported for system instances."
+msgstr ""
+
+#: ../src/daemon/main.c:578
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr ""
+
+#: ../src/daemon/main.c:581
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+
+#: ../src/daemon/main.c:584
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr ""
+
+#: ../src/daemon/main.c:589
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+
+#: ../src/daemon/main.c:616
+msgid "Failed to acquire stdio."
+msgstr ""
+
+#: ../src/daemon/main.c:622
+#, c-format
+msgid "pipe failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:627
+#, c-format
+msgid "fork() failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
+#, c-format
+msgid "read() failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:647
+msgid "Daemon startup failed."
+msgstr ""
+
+#: ../src/daemon/main.c:649
+msgid "Daemon startup successful."
+msgstr ""
+
+#: ../src/daemon/main.c:726
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr ""
+
+#: ../src/daemon/main.c:727
+#, c-format
+msgid "Compilation host: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:728
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:731
+#, c-format
+msgid "Running on host: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:734
+#, c-format
+msgid "Found %u CPUs."
+msgstr ""
+
+#: ../src/daemon/main.c:736
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr ""
+
+#: ../src/daemon/main.c:739
+msgid "Compiled with Valgrind support: yes"
+msgstr ""
+
+#: ../src/daemon/main.c:741
+msgid "Compiled with Valgrind support: no"
+msgstr ""
+
+#: ../src/daemon/main.c:744
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:747
+msgid "Optimized build: yes"
+msgstr ""
+
+#: ../src/daemon/main.c:749
+msgid "Optimized build: no"
+msgstr ""
+
+#: ../src/daemon/main.c:753
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:755
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:757
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:761
+msgid "Failed to get machine ID"
+msgstr ""
+
+#: ../src/daemon/main.c:764
+#, c-format
+msgid "Machine ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:768
+#, c-format
+msgid "Session ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:774
+#, c-format
+msgid "Using runtime directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:779
+#, c-format
+msgid "Using state directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:784
+#, c-format
+msgid "Running in system mode: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:787
+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:804
+msgid "pa_pid_file_create() failed."
+msgstr ""
+
+#: ../src/daemon/main.c:814
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr ""
+
+#: ../src/daemon/main.c:816
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+
+#: ../src/daemon/main.c:839
+msgid "pa_core_new() failed."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "Failed to initialize daemon."
+msgstr ""
+
+#: ../src/daemon/main.c:904
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr ""
+
+#: ../src/daemon/main.c:921
+msgid "Daemon startup complete."
+msgstr ""
+
+#: ../src/daemon/main.c:927
+msgid "Daemon shutdown initiated."
+msgstr ""
+
+#: ../src/daemon/main.c:949
+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 ""
+
+#: ../src/daemon/cmdline.c:247
+msgid "--daemonize expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:254
+msgid "--fail expects boolean argument"
+msgstr ""
+
+#: ../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:276
+msgid "--high-priority expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:283
+msgid "--realtime expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:290
+msgid "--disallow-module-loading expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:297
+msgid "--disallow-exit expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:304
+msgid "--use-pid-file expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:321
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:328
+msgid "--log-time expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:335
+msgid "--log-meta expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:354
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:361
+msgid "--system expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:368
+msgid "--no-cpu-limit expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:375
+msgid "--disable-shm expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr ""
+
+#: ../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:232
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:248
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:264
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:287
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:294
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:310
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:328
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:352
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:370
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:388
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:406
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:424
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:546
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:562
+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:638
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr ""
+
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr ""
+
+#: ../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/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
+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 ""
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 2"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 3"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 4"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 5"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 6"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 7"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 8"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 9"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 10"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 11"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 12"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 13"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 14"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 15"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 16"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 17"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 18"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 19"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 20"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 21"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 22"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 23"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 24"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 25"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 26"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 27"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 28"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 29"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:153
+msgid "Auxiliary 30"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:154
+msgid "Auxiliary 31"
+msgstr ""
+
+#: ../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:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
+msgid "(invalid)"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:761
+msgid "Stereo"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:766
+msgid "Surround 4.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:772
+msgid "Surround 4.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:778
+msgid "Surround 5.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:784
+msgid "Surround 5.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:791
+msgid "Surround 7.1"
+msgstr ""
+
+#: ../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/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
+#, c-format
+msgid "%s %uch %uHz"
+msgstr ""
+
+#: ../src/pulse/sample.c:184
+#, c-format
+msgid "%0.1f GiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:186
+#, c-format
+msgid "%0.1f MiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:188
+#, c-format
+msgid "%0.1f KiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:190
+#, c-format
+msgid "%u B"
+msgstr ""
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr ""
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr ""
+
+#: ../src/pulse/client-conf.c:111
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr ""
+
+#: ../src/pulse/context.c:550
+msgid "No cookie loaded. Attempting to connect without."
+msgstr ""
+
+#: ../src/pulse/context.c:693
+#, c-format
+msgid "fork(): %s"
+msgstr ""
+
+#: ../src/pulse/context.c:748
+#, c-format
+msgid "waitpid(): %s"
+msgstr ""
+
+#: ../src/pulse/context.c:1435
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:108
+#, c-format
+msgid "Failed to drain stream: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr ""
+
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr ""
+
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:159
+#, c-format
+msgid "pa_stream_write() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr ""
+
+#: ../src/utils/pacat.c:310
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:314
+#, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr ""
+
+#: ../src/utils/pacat.c:317
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr ""
+
+#: ../src/utils/pacat.c:321
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr ""
+
+#: ../src/utils/pacat.c:325
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr ""
+
+#: ../src/utils/pacat.c:335
+#, c-format
+msgid "Stream error: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:345
+#, c-format
+msgid "Stream device suspended.%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:347
+#, c-format
+msgid "Stream device resumed.%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:355
+#, c-format
+msgid "Stream underrun.%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:362
+#, c-format
+msgid "Stream overrun.%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:369
+#, c-format
+msgid "Stream started.%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:376
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:376
+msgid "not "
+msgstr ""
+
+#: ../src/utils/pacat.c:383
+#, c-format
+msgid "Stream buffer attributes changed.%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:415
+#, c-format
+msgid "Connection established.%s"
+msgstr ""
+
+#: ../src/utils/pacat.c:418
+#, c-format
+msgid "pa_stream_new() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:446
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:452
+#, c-format
+msgid "pa_stream_connect_record() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, c-format
+msgid "Connection failure: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr ""
+
+#: ../src/utils/pacat.c:536
+#, c-format
+msgid "write() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr ""
+
+#: ../src/utils/pacat.c:571
+#, c-format
+msgid "Failed to get latency: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:576
+#, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr ""
+
+#: ../src/utils/pacat.c:595
+#, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr ""
+
+#: ../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:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:812
+#, c-format
+msgid "Invalid channel map '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:841
+#, c-format
+msgid "Invalid latency specification '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:848
+#, c-format
+msgid "Invalid process time specification '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:877
+#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr ""
+
+#: ../src/utils/pacat.c:906
+#, c-format
+msgid "open(): %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:911
+#, c-format
+msgid "dup2(): %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr ""
+
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr ""
+
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr ""
+
+#: ../src/utils/pacat.c:955
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file."
+msgstr ""
+
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr ""
+
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr ""
+
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr ""
+
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr ""
+
+#: ../src/utils/pacat.c:1004
+#, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+msgid "recording"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+msgid "playback"
+msgstr ""
+
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr ""
+
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr ""
+
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr ""
+
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr ""
+
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr ""
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:176
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr ""
+
+#: ../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/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:141
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:144
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:147
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:156
+#, c-format
+msgid "Failed to get server information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:164
+#, 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:205
+#, c-format
+msgid "Failed to get sink information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:221
+#, 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:268 ../src/utils/pactl.c:360
+#, c-format
+msgid "\tPorts:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
+msgid "\tActive Port: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:297
+#, c-format
+msgid "Failed to get source information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:313
+#, 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:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
+msgid "n/a"
+msgstr ""
+
+#: ../src/utils/pactl.c:375
+#, c-format
+msgid "Failed to get module information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:393
+#, 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:412
+#, c-format
+msgid "Failed to get client information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:430
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:447
+#, c-format
+msgid "Failed to get card information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:465
+#, 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:479
+#, c-format
+msgid "\tProfiles:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:485
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:496
+#, c-format
+msgid "Failed to get sink input information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:515
+#, 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:554
+#, c-format
+msgid "Failed to get source output information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:574
+#, 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:605
+#, c-format
+msgid "Failed to get sample information: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:623
+#, 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:653 ../src/utils/pactl.c:663
+#, c-format
+msgid "Failure: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:687
+#, c-format
+msgid "Failed to upload sample: %s"
+msgstr ""
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr ""
+
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr ""
+
+#: ../src/utils/pactl.c:869
+#, 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 SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\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:933
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr ""
+
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr ""
+
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr ""
+
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr ""
+
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr ""
+
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr ""
+
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr ""
+
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr ""
+
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1090
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr ""
+
+#: ../src/utils/pactl.c:1103
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value."
+msgstr ""
+
+#: ../src/utils/pactl.c:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr ""
+
+#: ../src/utils/pactl.c:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr ""
+
+#: ../src/utils/pactl.c:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr ""
+
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr ""
+
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr ""
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr ""
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr ""
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr ""
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr ""
+
+#: ../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 ""
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr ""
+
+#: ../src/utils/pacmd.c:69
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:74
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr ""
+
+#: ../src/utils/pacmd.c:91
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:99
+msgid "Failed to kill PulseAudio daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:107
+msgid "Daemon not responding."
+msgstr ""
+
+#: ../src/utils/pacmd.c:161
+#, c-format
+msgid "poll(): %s"
+msgstr "poll(): %s"
+
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
+#, c-format
+msgid "write(): %s"
+msgstr "write(): %s"
+
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
+msgid "Cannot access autospawn lock."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
+#, 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 ""
+
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
+#, 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 ""
+
+#: ../src/modules/alsa/module-alsa-card.c:152
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
+msgid "Off"
+msgstr "オフ"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:151
+msgid "PulseAudio Sound Server"
+msgstr ""
diff --git a/po/kn.po b/po/kn.po
index b6636504..1977041a 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -1,14 +1,14 @@
-# translation of pulseaudio.master-tx.pulseaudio.po to Kannada
+# translation of pulseaudio.master-tx.kn.po to Kannada
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Shankar Prasad <svenkate@redhat.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Project-Id-Version: pulseaudio.master-tx.kn\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-07 11:13+0530\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-08 13:49+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: Kannada <en@li.org>\n"
"MIME-Version: 1.0\n"
@@ -17,7 +17,12 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -29,7 +34,7 @@ msgstr ""
"ಇದಕà³à²•à³† ALSA ಚಾಲಕ '%s' ದಲà³à²²à²¿à²¨ ಒಂದೠದೋಷದ ಕಾರಣವಿರಬಹà³à²¦à³. ದಯವಿಟà³à²Ÿà³à²ˆ ತೊಂದರೆಯನà³à²¨à³ ALSA "
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -41,7 +46,7 @@ msgstr ""
"ಇದಕà³à²•à³† ALSA ಚಾಲಕ '%s' ದಲà³à²²à²¿à²¨ ಒಂದೠದೋಷದ ಕಾರಣವಿರಬಹà³à²¦à³. ದಯವಿಟà³à²Ÿà³à²ˆ ತೊಂದರೆಯನà³à²¨à³ ALSA "
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -53,9 +58,17 @@ msgstr ""
"ಇದಕà³à²•à³† ALSA ಚಾಲಕ '%s' ದಲà³à²²à²¿à²¨ ಒಂದೠದೋಷದ ಕಾರಣವಿರಬಹà³à²¦à³. ದಯವಿಟà³à²Ÿà³à²ˆ ತೊಂದರೆಯನà³à²¨à³ ALSA "
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "ವರà³à²šà³à²µà²²à³ LADSPA ಸಿಂಕà³"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -65,14 +78,27 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<ಸಿಂಕà³â€Œà²¨ ಹೆಸರà³> sink_properties=<ಸಿಂಕà³â€Œà²¨ ಗà³à²£à²—ಳà³> master=<ಫಿಲà³à²Ÿà²°à³ "
+"ಮಾಡಬೇಕಿರà³à²µ ಸಿಂಕà³â€Œà²¨ ಹೆಸರà³> format=<ನಮೂನೆ ವಿನà³à²¯à²¾à²¸> rate=<ನಮೂನೆ ದರ> "
+"channels=<ಚಾನಲà³â€Œà²—ಳ ಸಂಖà³à²¯à³†> channel_map=<ಚಾನಲೠನಕà³à²·à³†> plugin=<ladspa ಪà³à²²à²—à³â€Œà²‡à²¨à³ ಹೆಸರà³> "
+"label=<ladspa ಪà³à²²à²—à³â€Œà²‡à²¨à³ ಹೆಸರà³> control=<ವಿರಾಮ ಚಿಹà³à²¨à³†à²—ಳನà³à²¨à³ ಹೊಂದಿರà³à²µ ಇನà³â€Œà²ªà³à²Ÿà³ ನಿಯಂತà³à²°à²£ "
+"ಮೌಲà³à²¯à²—ಳ ಪಟà³à²Ÿà²¿>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "ಆಂತರಿಕ ಆಡಿಯೊ"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
-msgstr "ಮಾಡೆಮà³:"
+msgstr "ಮಾಡೆಮà³"
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
@@ -86,220 +112,92 @@ msgstr "ಹೊಸ dl ಲೋಡರೠಅನà³à²¨à³ ನಿಯೋಜಿಸà³à²µ
msgid "Failed to add bind-now-loader."
msgstr "bind-now-ಲೋಡರೠಅನà³à²¨à³ ಸೇರಿಸಲಾಗಿಲà³à²²."
-#: ../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 "auth ಅನà³à²¨à³ ಪಡೆಯಲೠಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit '%s' ನೊಂದಿಗೆ ಪà³à²°à²¤à³à²¯à³à²¤à³à²¤à²°à²¿à²¸à²¿à²¦à³†"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s ನಿಂದ ಸಂಕೇತವೠದೊರೆತಿದೆ."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "ಬಳಕೆದಾರ '%s' ಅನà³à²¨à³ ಪತà³à²¤à³† ಮಾಡಲೠವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "ಗà³à²‚ಪೠ'%s' ಅನà³à²¨à³ ಪತà³à²¤à³† ಮಾಡಲೠವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ಬಳಕೆದಾರ '%s' ರ GID ಹಾಗೠಗà³à²‚ಪೠ'%s' ತಾಳೆಯಾಗà³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ಅನà³à²¨à³ ರಚಿಸà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "ಗà³à²‚ಪಿನ ಪಟà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID ಅನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID ಅನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "ರೂಟೠಸವಲತà³à²¤à³à²—ಳನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ಬಿಡಲಾಗಿದೆ."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯à²¾à²¦à³à²¯à²‚ತದ ಕà³à²°à²®à²•à³à²•à³† ಈ ಪà³à²²à²¾à²Ÿà³â€Œà²«à²¾à²°à³à²®à²¿à²¨à²²à³à²²à²¿ ಬೆಂಬಲವಿಲà³à²²."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "ಡೀಮನೠಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "ಡೀಮನೠPID %u ಯಾಗಿ ಚಲಾಯಿಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಕೊಲà³à²²à²²à³ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -307,158 +205,163 @@ msgstr ""
"ಈ ಪà³à²°à³‹à²—à³à²°à²¾à²®à²¨à³à²¨à³ ರೂಟà³â€Œ ಆಗಿ ಚಲಾಯಿಸà³à²µ ಉದà³à²§à³‡à²¶à²µà²¨à³à²¨à³ ಹೊಂದಿಲà³à²² (--system ಅನà³à²¨à³ ಸೂಚಿಸದೆ "
"ಇದà³à²¦à²²à³à²²à²¿ ಮಾತà³à²°)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "ನಿರà³à²µà²¾à²¹à²• ಸವಲತà³à²¤à³à²—ಳ ಅಗತà³à²¯à²µà²¿à²¦à³†."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಸನà³à²¨à²¿à²µà³‡à²¶à²¦à²¿à²‚ದ --start ಬೆಂಬಲಿತವಾಗಿಲà³à²²."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†, ಆದರೆ --disallow-exit ಅನà³à²¨à³ ಹೊಂದಿಸಲಾಗಿಲà³à²²!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†, ಆದರೆ --disallow-module-loading ಅನà³à²¨à³ "
"ಹೊಂದಿಸಲಾಗಿಲà³à²²!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, SHM ಕà³à²°à²®à²µà²¨à³à²¨à³ ಒತà³à²¤à²¾à²¯à²ªà³‚ರà³à²µà²•à²µà²¾à²—ಿ "
"ಅಶಕà³à²¤à²—ೊಳಿಸà³à²¤à³à²¤à²¿à²¦à³†!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, ನಿರà³à²—ಮಿಸà³à²µ ಜಡ ಸಮಯವನà³à²¨à³ ಒತà³à²¤à²¾à²¯à²ªà³‚ರà³à²µà²•à²µà²¾à²—ಿ "
"ಅಶಕà³à²¤à²—ೊಳಿಸà³à²¤à³à²¤à²¿à²¦à³†!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio ಅನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "ಪೈಪà³â€Œ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "ಡೀಮನೠಆರಂಭಗೊಳà³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ಆರಂಭಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "ಇದೠPulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "ಕಂಪೈಲೠಮಾಡà³à²µ ಅತಿಥೇಯ: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ಕಂಪೈಲೠಮಾಡà³à²µ CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "ಅತಿಥೇಯದಲà³à²²à²¿ ಚಲಾಯಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²¦à³†: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUಗಳೠಕಂಡà³à²¬à²‚ದಿವೆ."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "ಪà³à²Ÿà²¦ ಗಾತà³à²°à²µà³ %lu ಬೈಟà³â€Œà²—ಳಾಗಿವೆ"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ: ಹೌದà³"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ: ಇಲà³à²²"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: ಹೌದà³"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: ಇಲà³à²²"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG ಅನà³à²¨à³ ಸೂಚಿಸಲಾಗಿದೆ, ಎಲà³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³†à²—ಳನà³à²¨à³‚ ಅಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH ಅನà³à²¨à³ ಸೂಚಿಸಲಾಗಿದೆ, ಕೇವಲ ವೇಗ ಮಾರà³à²—ದ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³†à²—ಳನà³à²¨à³‚ ಅಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "ಎಲà³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³†à²—ಳನà³à²¨à³‚ ಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "ಮೆಶೀನೠID ಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "ಮೆಶೀನೠID ಯೠ%s ಆಗಿದೆ."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "ಮೆಶೀನೠID ಯೠ%s ಆಗಿದೆ."
+msgstr "ಅಧಿವೇಶನ ID ಯೠ%s ಆಗಿದೆ."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "ಚಲಾವಣಾಸಮಯ(ರನà³â€Œà²Ÿà³ˆà²®à³) ಕೋಶ %s ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "ಸà³à²¥à²¿à²¤à²¿ ಕೋಶ %s ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "ಘಟಕಗಳ ಕೋಶ %s ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ ಚಲಾಯಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -467,16 +370,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"ಸರಿ, ನೀವೠPA ಅನà³à²¨à³ ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²¦à²²à³à²²à²¿ (ಸಿಸà³à²Ÿà²®à³ ಮೋಡà³) ಚಲಾಯಿಸà³à²¤à³à²¤à²¿à²¦à³à²¦à³€à²°à²¿. ಸಾಮಾನà³à²¯à²µà²¾à²—ಿ "
+"ನೀವೠಹಾಗೆ ಮಾಡಬಾರದೠಎನà³à²¨à³à²µà³à²¦à²¨à³à²¨à³ ದಯವಿಟà³à²Ÿà³ ನೆನಪಿಡಿ.\n"
+"ನೀವೠಹಾಗೆ ಮಾಡಿದಲà³à²²à²¿, ಮà³à²‚ದೆ à²à²¨à²¾à²¦à²°à³‚ ತೊಂದರೆ ಆದಲà³à²²à²¿ ಅದೠನಿಮà³à²®à²¦à³† ತಪà³à²ªà²¿à²¨ "
+"ಕಾರಣದಿಂದಾಗಿರà³à²¤à³à²¤à²¦à³†.\n"
+"ವà³à²¯à²µà²¸à³à²¥à³†à²¯ ಕà³à²°à²®à²µà³ (ಸಿಸà³à²Ÿà²®à³ ಮೋಡà³) à²à²•à³† ಒಂದೠಸರಿಯಲà³à²²à²¦ ಬಳಕೆ ಎಂದೠಅರಿಯಲೠದಯವಿಟà³à²Ÿà³ http://"
+"pulseaudio.org/wiki/WhatIsWrongWithSystemMode ಅನà³à²¨à³ ನೋಡಿ."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ತಾಜಾ ರೆಸಲà³à²¯à³‚ಶನೠಟೈಮರೠಲಭà³à²¯à²µà²¿à²¦à³†! Bon appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -484,27 +393,27 @@ msgstr ""
"ಮಹಾಶಯರೆ, ನಿಮà³à²® ಕರà³à²¨à²²à³ ಕೊಳೆತà³à²¹à³‹à²—ಿದೆ! ಅತà³à²¯à³à²¤à³à²¤à²® ರೆಸಲà³à²¯à³‚ಶನೠಟೈಮರೠಅನà³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸಲಾದ "
"ಲಿನಕà³à²¸à²¨à³à²¨à³ ಬಳಸà³à²µà²‚ತೆ ಅಡà³à²—ೆಯವರೠಸಲಹೆ ಮಾಡà³à²¤à³à²¤à²¿à²¦à³à²¦à²¾à²°à³†!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಆರಂಭಿಸಲೠವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ಲೋಡೠಮಾಡಲಾದ ಯಾವà³à²¦à³† ಡೀಮನೠಇಲà³à²²à²¦à³† ಆರಂಭಗೊಂಡಿದೆ, ಕೆಲಸ ಮಾಡಲೠನಿರಾಕರಿಸಿದೆ."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "ಡೀಮನೠಆರಂಭಗೊಳಿಕೆ ಪೂರà³à²£à²—ೊಂಡಿದೆ."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "ಡೀಮನೠಸà³à²¥à²—ಿತಗೊಳಿಕೆಯನà³à²¨à³ ಆರಂಭಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "ಡೀಮನೠಅನà³à²¨à³ ಅಂತà³à²¯à²—ೊಳಿಸಲಾಗಿದೆ."
@@ -759,79 +668,79 @@ msgstr "ಒಮà³à²®à³† ಲೋಡೠಮಾಡà³: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "DEPRECATION WARNING: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ಮಾರà³à²—: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ದಾಖಲೆ ಗà³à²°à²¿ '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ದಾಖಲೆ ಮಟà³à²Ÿ '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³‚ನೆ ವಿಧಾನ '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ಗೆ ಈ ಪà³à²²à²¾à²Ÿà³â€Œà²«à²¾à²°à³à²®à²¿à²¨à²²à³à²²à²¿ ಬೆಂಬಲವಿಲà³à²²."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ರಚನೆ '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ದರ '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ಚಾನಲà³â€Œà²—ಳೠ'%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³† '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¤à²µà²¾à²¦ ಫà³à²°à²¾à²—à³à²®à³†à²‚ಟà³à²—ಳ ಸಂಖà³à²¯à³† '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ಫà³à²°à²¾à²—à³à²®à³†à²‚ಟೠಗಾತà³à²° '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ಅಮಾನà³à²¯à²µà²¾à²¦ ನೈಸà³â€Œ ಹಂತ '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ಸಂರಚನಾ ಕಡತವನà³à²¨à³ ತೆರೆಯಲೠವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -839,18 +748,14 @@ msgstr ""
"ಸೂಚಿಸಲಾದ ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤ ಚಾನಲೠನಕà³à²·à³†à²¯à³ ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤ ಚಾನಲà³â€Œà²—ಳ ಸಂಖà³à²¯à³†à²—ಳಿಗಿಂತ ವಿಭಿನà³à²¨à²µà²¾à²¦ "
"ಮಾರà³à²—ಗಳ ಸಂಖà³à²¯à³†à²¯à²¨à³à²¨à³ ಹೊಂದಿದೆ."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, 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/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "ಸವಲತà³à²¤à³à²—ಳನà³à²¨à³ ಸà³à²µà²šà³à²›à²—ೊಳಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -860,28 +765,7 @@ msgstr "PulseAudio ಧà³à²µà²¨à²¿ ವà³à²¯à²µà²¸à³à²¥à³†"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio ಧà³à²µà²¨à²¿ ವà³à²¯à²µà²¸à³à²¥à³†à²¯à²¨à³à²¨à³ ಆರಂಭಿಸಿ"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "PulseAudio ಡೀಮನà³â€Œà²—ಾಗಿ ಹೆಚà³à²šà²¿à²¨ ಆದà³à²¯à²¤à³†à²¯ ಶೆಡà³à²¯à³‚ಲಿಂಗೠ(ಋಣಾತà³à²®à²• ಯೂನಿಕà³à²¸à³â€Œ ನೈಸೠಹಂತ)"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio ಡೀಮನà³â€Œà²—ಾಗಿ ರಿಯಲà³-ಟೈಮೠಶೆಡà³à²¯à³‚ಲಿಂಗà³"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "ಮೊನೊ"
@@ -1085,33 +969,33 @@ msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಎಡಭಾಗ"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(ಅಮಾನà³à²¯)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ಸà³à²Ÿà³€à²°à²¿à²¯à³‹"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ಸರೌಂಡà³â€Œ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ಸರೌಂಡà³â€Œ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ಸರೌಂಡà³â€Œ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ಸರೌಂಡà³â€Œ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ಸರೌಂಡà³â€Œ 7.1"
@@ -1215,27 +1099,35 @@ msgstr "ಅನà³à²µà²¯à²¿à²¸à³à²µà²¿à²•à³†à²¯à³ ಕಾಣಿಸà³à²¤à³à²¤à²
msgid "Client forked"
msgstr "ಕà³à²²à³ˆà²‚ಟೠಅನà³à²¨à³ ಫೋರà³à²•à³ ಮಾಡಲಾಗಿದೆ"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1248,193 +1140,192 @@ msgstr "XOpenDisplay() ವಿಫಲಗೊಂಡಿದೆ"
msgid "Failed to parse cookie data"
msgstr "ಕà³à²•à²¿ ದತà³à²¤à²¾à²‚ಶವನà³à²¨à³ ಪಾರà³à²¸à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ಸಂರಚನಾ ಕಡತ '%s' ಅನà³à²¨à³ ಲೋಡೠಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
"ಯಾವà³à²¦à³† ಕà³à²•à²¿à²¯à²¨à³à²¨à³ ಲೋಡೠಮಾಡಲಾಗಿಲà³à²². ಕà³à²•à²¿ ಇಲà³à²²à²¦à³† ಸಂಪರà³à²•à²¸à²¾à²§à²¿à²¸à²²à³ ಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "ಫೋರà³à²•à³(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "ಅಜà³à²žà²¾à²¤ ವಿಸà³à²¤à²°à²£à³† '%s' ಇಂದ ಸಂದೇಶವನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à²²à²¾à²—ಿದೆ"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à³ ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸಲಾಗಿದೆ.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à³ ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಬರಿದಾಗಿಸಲಾಗಿದೆ."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "ಪರಿಚಾರಕಕà³à²•à³† ಬರಿದಾಗಿಸà³à²µ ಸಂಪರà³à²•.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "ಪರಿಚಾರಕಕà³à²•à³† ಬರಿದಾಗಿಸà³à²µ ಸಂಪರà³à²•."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() failed: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() failed: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ನಿರà³à²®à²¿à²¸à²²à²¾à²—ಿದೆ.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ನಿರà³à²®à²¿à²¸à²²à²¾à²—ಿದೆ."
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() failed: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "ಬಫರೠಮೆಟà³à²°à²¿à²•à³â€Œà²—ಳà³: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "ಬಫರೠಮೆಟà³à²°à²¿à²•à³â€Œà²—ಳà³: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "ಬಫರೠಮೆಟà³à²°à²¿à²•à³â€Œà²—ಳà³: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "ಬಫರೠಮೆಟà³à²°à²¿à²•à³â€Œà²—ಳà³: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "ನಮೂನೆಯ ವಿವರ '%s' ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³, ಚಾನಲà³â€Œ ನಕà³à²·à³† '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "ನಮೂನೆಯ ವಿವರ '%s' ಅನà³à²¨à³, ಚಾನಲà³â€Œ ನಕà³à²·à³† '%s' ಅನà³à²¨à³ ಬಳಸಿಕೊಂಡà³."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "ಸಾಧನ %s ಕà³à²•à³† ಸಂಪರà³à²• ಜೋಡಿಸಲಾಗಿದೆ (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "ಸಾಧನ %s ಕà³à²•à³† ಸಂಪರà³à²• ಜೋಡಿಸಲಾಗಿದೆ (%u, %ssuspended)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ದೋಷ: %s\n"
+msgid "Stream error: %s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ದೋಷ: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಸಾಧನವನà³à²¨à³ ತಾತà³à²•à²¾à²²à²¿à²•à²µà²¾à²—ಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಸಾಧನವನà³à²¨à³ ತಾತà³à²•à²¾à²²à²¿à²•à²µà²¾à²—ಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಸಾಧನವನà³à²¨à³ ಮರಳಿ ಆರಂಭಿಸಲಾಗಿದೆ.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಸಾಧನವನà³à²¨à³ ಮರಳಿ ಆರಂಭಿಸಲಾಗಿದೆ.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಕಡಿಮೆ ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n"
+msgid "Stream underrun.%s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಕಡಿಮೆ ಚಲಾಯಿಸಲಾಗಿದೆ.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಹೆಚà³à²šà³ ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n"
+msgid "Stream overrun.%s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಹೆಚà³à²šà³ ಚಲಾಯಿಸಲಾಗಿದೆ.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಆರಂಭಿಸಲಾಗಿದೆ.%s \n"
+msgid "Stream started.%s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ ಆರಂಭಿಸಲಾಗಿದೆ.%s "
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "ಸಾಧನ %s ಅನà³à²¨à³ ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಸà³à²¥à²³à²¾à²‚ತರಿಸಲಾಗಿದೆ (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "ಸಾಧನ %s ಕà³à²•à³† ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಅನà³à²¨à³ ಸà³à²¥à²³à²¾à²‚ತರಿಸಲಾಗಿದೆ (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "ಇಲà³à²² "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಬಫರೠಗà³à²£à²µà²¿à²¶à³‡à²·à²¤à³†à²—ಳನà³à²¨à³ ಬದಲಾಯಿಸಲಾಗಿದೆ.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "ಸà³à²Ÿà³à²°à³€à²®à³ ಬಫರೠಗà³à²£à²µà²¿à²¶à³‡à²·à²¤à³†à²—ಳನà³à²¨à³ ಬದಲಾಯಿಸಲಾಗಿದೆ.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "ಸಂಪರà³à²•à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾಗಿದೆ.%s \n"
+msgid "Connection established.%s"
+msgstr "ಸಂಪರà³à²•à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾಗಿದೆ.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() failed: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() failed: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() failed: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "ಸಂಪರà³à²•à²¦ ವಿಫಲತೆ: %s\n"
-
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF ಅನà³à²¨à³ ಪಡೆಯಲಾಗಿದೆ.\n"
+msgid "Connection failure: %s"
+msgstr "ಸಂಪರà³à²•à²¦ ವಿಫಲತೆ: %s"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "ಓದà³à²µà²¿à²•à³†() ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF ಅನà³à²¨à³ ಪಡೆಯಲಾಗಿದೆ."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "ಬರೆಯà³à²µà²¿à²•à³†() ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "write() failed: %s"
+msgstr "write() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "ಸಂಕೇತ ದೊರೆತಿದೆ, ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "ಸಂಕೇತ ದೊರೆತಿದೆ, ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "ಅಗೋಚರತೆಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "ಅಗೋಚರತೆಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "ಸಮಯ: %0.3f sec; ಅಗೋಚರತೆ: %0.0f usec. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() failed: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() ವಿಫಲಗೊಂಡಿದೆ: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1498,7 +1389,7 @@ msgstr ""
" --version ಆವೃತà³à²¤à²¿à²¯à²¨à³à²¨à³ ತೋರಿಸà³\n"
"\n"
" -r, --record ರೆಕಾರà³à²¡à²¿à²‚ಗಿಗಾಗಿ ಒಂದೠಸಂಪರà³à²•à²µà²¨à³à²¨à³ ರಚಿಸà³\n"
-" -p, --playback ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à²¿à²—ಾಗಿ ಒಂದೠಸಂಪರà³à²•à²µà²¨à³à²¨à³ ರಚಿಸಿ\n"
+" -p, --playback ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à²¿à²—ಾಗಿ ಒಂದೠಸಂಪರà³à²•à²µà²¨à³à²¨à³ ರಚಿಸà³\n"
"\n"
" -v, --verbose ವರà³à²¬à³‹à²¸à³ ಕಾರà³à²¯à²µà²¨à³à²¨à³ ಶಕà³à²¤à²—ೊಳಿಸà³\n"
"\n"
@@ -1506,7 +1397,7 @@ msgstr ""
" -d, --device=DEVICE ಸಂಪರà³à²•à²¸à²¾à²§à²¿à²¸à²¬à³‡à²•à²¿à²°à³à²µ ಸಿಂಕಿನ/ಆಕರದ ಹೆಸರà³\n"
" -n, --client-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಕà³à²²à³ˆà²‚ಟಿನಲà³à²²à²¿ à²à²¨à³†à²‚ದೠ"
"ಕರೆಯಬೇಕà³\n"
-" --stream-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಕà³à²²à³ˆà²‚ಟಿನಲà³à²²à²¿ à²à²¨à³†à²‚ದೠ"
+" --stream-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಸà³à²Ÿà³à²°à³€à²®à³ ಅನà³à²¨à³ à²à²¨à³†à²‚ದೠ"
"ಕರೆಯಬೇಕà³\n"
" --volume=VOLUME ಆರಂಭಿಕ (ರೇಖೀಯ) ಪರಿಮಾಣವನà³à²¨à³ 0...65536 "
"ವà³à²¯à²¾à²ªà³à²¤à²¿à²¯à²²à³à²²à²¿ ತೋರಿಸà³\n"
@@ -1537,6 +1428,13 @@ msgstr ""
"ಮಾಡà³.\n"
" --process-time=BYTES ಸೂಚಿಸಲಾದ ಪà³à²°à²¤à²¿ ಮನವಿಯ ಪà³à²°à²•à³à²°à²¿à²¯à³†à²¯ ಸಮಯವನà³à²¨à³ "
"ಬೈಟà³â€Œà²—ಳಲà³à²²à²¿ ಮನವಿ ಮಾಡà³.\n"
+" --property=PROPERTY=VALUE ನಿಶà³à²šà²¿à²¤ ಗà³à²£à²²à²•à³à²·à²£à²µà²¨à³à²¨à³ ನಿಶà³à²šà²¿à²¤ ಮೌಲà³à²¯à²µà²¨à³à²¨à³ "
+"ಹೊಂದಿಸಿ.\n"
+" --raw ಕಚà³à²›à²¾ PCM ದತà³à²¤à²¾à²‚ಶವನà³à²¨à³ ರೆಕಾರà³à²¡à³ ಮಾಡà³/"
+"ಚಲಾಯಿಸà³.\n"
+" --file-format=FFORMAT ಫಾರà³à²®à²¾à²Ÿà³ ಮಾಡಲಾದ PCM ದತà³à²¤à²¾à²‚ಶವನà³à²¨à³ ರೆಕಾರà³à²¡à³ "
+"ಮಾಡà³/ಚಲಾಯಿಸà³.\n"
+" --list-file-formats ಲಭà³à²¯à²µà²¿à²°à³à²µ ಕಡತ ವಿನà³à²¯à²¾à²¸à²—ಳ ಪಟà³à²Ÿà²¿.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1549,136 +1447,130 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಕà³à²²à³ˆà²‚ಟಿನ ಹೆಸರೠ'%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³‚ನೆ ವಿಧಾನ '%s'."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಸà³à²Ÿà³à²°à³€à²®à³â€Œà²¨ ಹೆಸರೠ'%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³† '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಚಾನಲೠನಕà³à²·à³† '%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಅಗೋಚರತೆ ವಿವರಣೆ '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಅಗೋಚರತೆ ವಿವರಣೆ '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಪà³à²°à²•à³à²°à²¿à²¯à³† ಸಮಯದ ವಿವರಣೆ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಪà³à²°à²•à³à²°à²¿à²¯à³† ಸಮಯದ ವಿವರಣೆ '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³‚ನೆ ವಿಧಾನ '%s'."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಗà³à²£à²²à²•à³à²·à²£ '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಕಡತ ವಿನà³à²¯à²¾à²¸ %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ವಿವರ\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ನಮೂನೆ ವಿವರ"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "ತೆರೆ(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "ಬಹಳಷà³à²Ÿà³ ಆರà³à²—à³à²®à³†à²‚ಟà³â€Œà²—ಳà³.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "ಬಹಳಷà³à²Ÿà³ ಆರà³à²—à³à²®à³†à²‚ಟà³â€Œà²—ಳà³."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "ಧà³à²µà²¨à²¿ ಕಡತವನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "ಧà³à²µà²¨à²¿ ಕಡತವನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ಕಡತದಿಂದ ನಮೂನೆಯ ವಿವರಣೆಯನà³à²¨à³ ನಿರà³à²§à²°à²¿à²¸à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "ಎಚà³à²šà²°à²¿à²•à³†: ಕಡತದಿಂದ ಚಾನಲೠನಕà³à²·à³†à²¯à²¨à³à²¨à³ ನಿರà³à²§à²°à²¿à²¸à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "ಚಾನಲೠನಕà³à²·à³†à²¯à³ ನಮೂನೆಯ ವಿವರಣೆಯೊಂದಿಗೆ ತಾಳೆಯಾಗà³à²¤à³à²¤à²¿à²²à³à²²\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "ಚಾನಲೠನಕà³à²·à³†à²¯à³ ನಮೂನೆಯ ವಿವರಣೆಯೊಂದಿಗೆ ತಾಳೆಯಾಗà³à²¤à³à²¤à²¿à²²à³à²²"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "ಎಚà³à²šà²°à²¿à²•à³†: ಕಡತಕà³à²•à³† ಚಾನಲೠನಕà³à²·à³†à²¯à²¨à³à²¨à³ ಬರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "ಒಂದೠ%s ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಅನà³à²¨à³ ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ತೆರೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"ಒಂದೠ%s ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಅನà³à²¨à³ ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ಹಾಗೠಚಾನಲೠನಕà³à²·à³† '%s' ಯೊಂದಿಗೆ "
+"ತೆರೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "ರೆಕಾರà³à²¡à²¿à²‚ಗà³"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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() failed.\n"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() ವಿಫಲಗೊಂಡಿದೆ.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../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:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() failed.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() ವಿಫಲಗೊಂಡಿದೆ."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1705,7 +1597,12 @@ msgstr "ಮರಳಿ ಆರಂಭಿಸಲೠವಿಫಲಗೊಂಡಿದೆ:
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ಎಚà³à²šà²°à²¿à²•à³†: ಧà³à²µà²¨à²¿ ಪರಿಚಾರಕವೠಸà³à²¥à²³à³€à²¯à²µà²¾à²—ಿಲà³à²², ತಾತà³à²•à²¾à²²à²¿à²•à²µà²¾à²—ಿ ತಡೆಹಿಡಿಯಲಾಗà³à²¤à³à²¤à²¿à²²à³à²².\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "ಸಂಪರà³à²•à²¦ ವಿಫಲತೆ: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ದೊರೆತಿದೆ, ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†.\n"
@@ -1744,34 +1641,49 @@ msgstr ""
"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ\n"
"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() ವಿಫಲಗೊಂಡಿದೆ.\n"
+
+#: ../src/utils/pasuspender.c:290
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "ಅಂಕಿಅಂಶಗಳನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() ವಿಫಲಗೊಂಡಿದೆ.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() ವಿಫಲಗೊಂಡಿದೆ.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "ಅಂಕಿಅಂಶಗಳನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ಪà³à²°à²¸à²•à³à²¤ ಬಳಕೆಯಲà³à²²à²¿à²°à³à²µà³à²¦à³: %u ಖಂಡಗಳೠಒಟà³à²Ÿà³ %s ಬೈಟà³â€Œà²—ಳನà³à²¨à³ ಹೊಂದಿದೆ.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"ಸಂಪೂರà³à²£ ಜೀವಿತಾವಧಿಯ ಸಮಯದಲà³à²²à²¿ ನಿಯೋಜಿಸಲಾಗಿದà³à²¦à³: %u ಖಂಡಗಳೠಒಟà³à²Ÿà³ %s ಬೈಟà³â€Œà²—ಳನà³à²¨à³ "
"ಹೊಂದಿದೆ.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ನಮೂನೆಯ ಕà³à²¯à²¾à²¶à³† ಗಾತà³à²°: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "ಪರಿಚಾರಕದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "ಪರಿಚಾರಕದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1794,12 +1706,12 @@ msgstr ""
"ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤ ಆಕರ: %s\n"
"ಕà³à²•à²¿: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "ಸಿಂಕà³â€Œ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "ಸಿಂಕà³â€Œ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1838,22 +1750,22 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³:\n"
+msgstr "\tಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨à²—ಳà³:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tಸಕà³à²°à²¿à²¯ ಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³: %s\n"
+msgstr "\tಸಕà³à²°à²¿à²¯ ಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "ಆಕರದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "ಆಕರದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1892,20 +1804,20 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "ಅನà³à²µà²¯à²¿à²¸à³à²µà³à²¦à²¿à²²à³à²²"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "ಘಟಕದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "ಘಟಕದ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1922,12 +1834,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "ಕà³à²²à³ˆà²‚ಟಿನ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "ಕà³à²²à³ˆà²‚ಟಿನ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1942,12 +1854,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "ಕಾರà³à²¡à²¿à²¨ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "ಕಾರà³à²¡à²¿à²¨ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1964,22 +1876,22 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tಸಕà³à²°à²¿à²¯ ಪà³à²°à³Šà²«à³ˆà²²à³à²—ಳà³: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "ಸಿಂಕà³â€Œ ಇನà³â€Œà²ªà³à²Ÿà³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "ಸಿಂಕà³â€Œ ಇನà³â€Œà²ªà³à²Ÿà³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2016,12 +1928,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "ಆಕರದ ಔಟà³â€Œà²ªà³à²Ÿà³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "ಆಕರದ ಔಟà³â€Œà²ªà³à²Ÿà³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2050,12 +1962,12 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡೆದà³à²•à³Šà²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2086,22 +1998,26 @@ msgstr ""
"\tಗà³à²£à²—ಳà³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "ವಿಫಲತೆ: %s\n"
+msgid "Failure: %s"
+msgstr "ವಿಫಲತೆ: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "ನಮೂನೆಯನà³à²¨à³ ಅಪà³â€Œà²²à³‹à²¡à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "ನಮೂನೆಯನà³à²¨à³ ಅಪà³â€Œà²²à³‹à²¡à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "ಕಡತದ ಅಪà³à²°à²¾à²ªà³à²¤ ಸಮಯದಲà³à²²à²¿ ಅಂತà³à²¯\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "ಕಡತದ ಅಪà³à²°à²¾à²ªà³à²¤ ಸಮಯದಲà³à²²à²¿ ಅಂತà³à²¯"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT ದೊರೆತಿದೆ, ನಿರà³à²—ಮಿಸà³à²¤à³à²¤à²¿à²¦à³†."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2109,15 +2025,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2133,13 +2055,21 @@ msgstr ""
"%s [ಆಯà³à²•à³†à²—ಳà³] upload-sample FILENAME [NAME]\n"
"%s [ಆಯà³à²•à³†à²—ಳà³] play-sample NAME [SINK]\n"
"%s [ಆಯà³à²•à³†à²—ಳà³] remove-sample NAME\n"
-"%s [ಆಯà³à²•à³†à²—ಳà³] move-sink-input ID SINK\n"
-"%s [ಆಯà³à²•à³†à²—ಳà³] move-source-output ID SOURCE\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] move-sink-input SINKINPUT SINK\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] move-source-output SOURCEOUTPUT SOURCE\n"
"%s [ಆಯà³à²•à³†à²—ಳà³] load-module NAME [ARGS ...]\n"
-"%s [ಆಯà³à²•à³†à²—ಳà³] unload-module ID\n"
-"%s [ಆಯà³à²•à³†à²—ಳà³] suspend-sink [SINK] 1|0\n"
-"%s [ಆಯà³à²•à³†à²—ಳà³] suspend-source [SOURCE] 1|0\n"
-"%s [ಆಯà³à²•à³†à²—ಳà³] set-card-profile [CARD] [PROFILE] \n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] unload-module MODULE\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] suspend-sink SINK 1|0\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] suspend-source SOURCE 1|0\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-card-profile CARD PROFILE\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-sink-port SINK PORT\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-source-port SOURCE PORT\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-sink-volume SINK VOLUME\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-source-volume SOURCE VOLUME\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-sink-mute SINK 1|0\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-source-mute SOURCE 1|0\n"
+"%s [ಆಯà³à²•à³†à²—ಳà³] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help ಈ ನೆರವನà³à²¨à³ ತೋರಿಸà³\n"
" --version ಆವೃತà³à²¤à²¿à²¯à²¨à³à²¨à³ ತೋರಿಸà³\n"
@@ -2148,7 +2078,7 @@ msgstr ""
" -n, --client-name=NAME ಪರಿಚಾರಕದಲà³à²²à²¿ ಈ ಕà³à²²à³ˆà²‚ಟಿನಲà³à²²à²¿ à²à²¨à³†à²‚ದೠ"
"ಕರೆಯಬೇಕà³\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2159,81 +2089,110 @@ msgstr ""
"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲೠಮಾಡಲಾಗಿದೆ\n"
"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "ಲೋಡೠಮಾಡಬೇಕಿರà³à²µ ಒಂದೠಕಡತದ ನಮೂನೆಯನà³à²¨à³ ಸೂಚಿಸಿ\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "ಲೋಡೠಮಾಡಬೇಕಿರà³à²µ ಒಂದೠಕಡತದ ನಮೂನೆಯನà³à²¨à³ ಸೂಚಿಸಿ"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "ಧà³à²µà²¨à²¿ ಕಡತವನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "ಧà³à²µà²¨à²¿ ಕಡತವನà³à²¨à³ ತೆರೆಯà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "ಒಂದೠ%s ಸà³à²Ÿà³à²°à³€à²®à³â€Œ ಅನà³à²¨à³ ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ತೆರೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "ಎಚà³à²šà²°à²¿à²•à³†: ಕಡತದಿಂದ ನಮೂನೆಯ ವಿವರವನà³à²¨à³ ನಿರà³à²§à²°à²¿à²¸à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "ಚಲಾಯಿಸಲೠನೀವೠಒಂದೠನಮೂನೆಯ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕಾಗà³à²¤à³à²¤à²¦à³†\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "ಚಲಾಯಿಸಲೠನೀವೠಒಂದೠನಮೂನೆಯ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕಾಗà³à²¤à³à²¤à²¦à³†"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "ತೆಗೆದೠಹಾಕಲೠನೀವೠಒಂದೠನಮೂನೆಯ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "ತೆಗೆದೠಹಾಕಲೠನೀವೠಒಂದೠನಮೂನೆಯ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "ನೀವೠಒಂದೠಸಿಂಕೠಇನà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಸಿಂಕà³â€Œ ಅನà³à²¨à³ ಸೂಚಿಸಬೇಕà³.\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "ನೀವೠಒಂದೠಸಿಂಕೠಇನà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಸಿಂಕà³â€Œ ಅನà³à²¨à³ ಸೂಚಿಸಬೇಕà³."
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "ನೀವೠಒಂದೠಆಕರ ಔಟà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಆಕರವನà³à²¨à³ ಸೂಚಿಸಬೇಕà³.\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "ನೀವೠಒಂದೠಆಕರ ಔಟà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಆಕರವನà³à²¨à³ ಸೂಚಿಸಬೇಕà³."
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "ನೀವೠಒಂದೠಘಟಕದ ಹೆಸರನà³à²¨à³ ಹಾಗೠಆರà³à²—à³à²®à³†à²‚ಟà³à²—ಳನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "ನೀವೠಒಂದೠಘಟಕದ ಹೆಸರನà³à²¨à³ ಹಾಗೠಆರà³à²—à³à²®à³†à²‚ಟà³à²—ಳನà³à²¨à³ ಸೂಚಿಸಬೇಕà³."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "ನೀವೠಒಂದೠಘಟಕ ಸೂಚಿಯನà³à²¨à³ ಸೂಚಿಸಬೇಕà³\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "ನೀವೠಒಂದೠಘಟಕ ಸೂಚಿಯನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"ನೀವೠಒಂದಕà³à²•à²¿à²‚ತ ಹೆಚà³à²šà²¿à²¨ ಸಿಂಕನà³à²¨à³ ಸೂಚಿಸಲಾಗà³à²µà³à²¦à²¿à²²à³à²². ನೀವೠಒಂದೠಬೂಲಿಯನà³â€Œ ಮೌಲà³à²¯à²µà²¨à³à²¨à³ "
-"ಸೂಚಿಸಬೇಕಾಗà³à²¤à³à²¤à²¦à³†.\n"
+"ಸೂಚಿಸಬೇಕಾಗà³à²¤à³à²¤à²¦à³†."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "ಒಂದೠಕಾರà³à²¡à²¿à²¨ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಪà³à²°à³Šà²«à³ˆà²²à³â€Œ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "ನೀವೠಒಂದೠಸಿಂಕಿನ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨à²¦ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "ನೀವೠಒಂದೠಆಕರದ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨à²¦ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "ಯಾವà³à²¦à³† ಆಜà³à²žà³†à²¯à²¨à³à²¨à³ ಸೂಚಿಸಲಾಗಿಲà³à²².\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "ನೀವೠಒಂದೠಸಿಂಕಿನ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨à²¦ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() failed: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಧà³à²µà²¨à²¿ ಪà³à²°à²®à²¾à²£à²¦ ವಿವರ"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "ನೀವೠಒಂದೠಆಕರದ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨à²¦ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "ನೀವೠಒಂದೠಸಿಂಕೠಇನà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಸಿಂಕà³â€Œ ಅನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಸಿಂಕೠಇನà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿ"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "ನೀವೠಒಂದೠಸಿಂಕಿನ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨à²¦ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "ನೀವೠಒಂದೠಆಕರದ ಹೆಸರà³/ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಸಂಪರà³à²•à²¸à³à²¥à²¾à²¨à²¦ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "ನೀವೠಒಂದೠಸಿಂಕೠಇನà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿಯನà³à²¨à³ ಹಾಗೠಒಂದೠಸಿಂಕà³â€Œ ಅನà³à²¨à³ ಸೂಚಿಸಬೇಕà³"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "ಅಮಾನà³à²¯à²µà²¾à²¦ ಸಿಂಕೠಇನà³â€Œà²ªà³à²Ÿà³ ಸೂಚಿ ವಿವರ"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "ಮಾನà³à²¯à²µà²¾à²¦ ಯಾವà³à²¦à³† ಆಜà³à²žà³†à²¯à²¨à³à²¨à³ ಸೂಚಿಸಲಾಗಿಲà³à²²."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2315,48 +2274,49 @@ msgstr "ಕà³à²•à²¿ ದತà³à²¤à²¾à²‚ಶವನà³à²¨à³ ಲೋಡೠಮಾಡ
msgid "Not yet implemented.\n"
msgstr "ಇನà³à²¨à³‚ ಸಹ ಅನà³à²µà²¯à²¿à²¸à²²à²¾à²—ಿಲà³à²².\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"ಯಾವà³à²¦à³† PulseAudio ಡೆಮನೠಚಾಲಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²²à³à²², ಅಥವ ಅಧಿವೇಶನ ಡೆಮನೠಆಗಿ ಚಾಲಿತಗೊಳà³à²³à³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ಸಾಕೆಟà³(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "ಸಂಪರà³à²•à²¿à²¸à³(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ಡೀಮನೠಅನà³à²¨à³ ಕೊಲà³à²²à³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ಡೀಮನೠಪà³à²°à²¤à²¿à²•à³à²°à²¿à²¯à²¿à²¸à³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "ಆಯà³à²•à³†à²®à²¾à²¡à³(): %s"
+msgid "poll(): %s"
+msgstr "ಪೋಲà³(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "ಓದà³(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "ಬರೆ(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "ಸà³à²µà²¯à²‚ಹೆಚà³à²šà²¿à²¸à³à²µà²¿à²•à³†à²¯ ಲಾಕೠಅನà³à²¨à³ ನಿಲà³à²•à²¿à²¸à²¿à²•à³Šà²³à³à²³à²²à³ ಸಾಧà³à²¯à²µà²¿à²²à³à²²."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2371,7 +2331,7 @@ msgstr ""
"ವಿಕಸನಗಾರರ ಗಮನಕà³à²•à³† ತನà³à²¨à²¿.POLLOUT ಸೆಟà³â€Œà²¨à²¿à²‚ದ ನಾವೠಎಚà³à²šà³†à²¤à³à²¤à³à²—ೊಂಡಿದà³à²¦à³‡à²µà³† -- ಆದರೆ ನಂತರದ "
"snd_pcm_avail() 0 ಅಥವ min_avail ಕà³à²•à²¿à²‚ತ ಚಿಕà³à²•à²¦à²¾à²¦ ಇನà³à²¨à³Šà²‚ದೠಮೌಲà³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದೆ."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2387,127 +2347,22 @@ msgstr ""
"snd_pcm_avail() 0 ಅಥವ min_avail ಕà³à²•à²¿à²‚ತ ಚಿಕà³à²•à²¦à²¾à²¦ ಇನà³à²¨à³Šà²‚ದೠಮೌಲà³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದೆ."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "ಜಡ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "ಹೈ ಫಿಡಿಲಿಟಿ ಪà³à²²à³‡à²¬à³à²¯à²¾à²•à³ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "ಹೈ ಫಿಡಿಲಿಟಿ ಕà³à²¯à²¾à²ªà³à²šà²°à³ (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
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 "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"
+msgstr "PulseAudio ಧà³à²µà²¨à²¿ ಪರಿಚಾರಕ"
diff --git a/po/ml.po b/po/ml.po
new file mode 100644
index 00000000..461ec144
--- /dev/null
+++ b/po/ml.po
@@ -0,0 +1,2350 @@
+# translation of pulseaudio.master-tx.ml.po to
+# translation of pulseaudio.master-tx.pulseaudio.ml.po to
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.ml\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 11:19+0530\n"
+"Last-Translator: \n"
+"Language-Team: <en@li.org>\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"
+
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
+#, 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:1147
+#, 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:1194
+#, 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-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr "നളàµâ€ ആണെങàµà´•à´¿à´²àµà´‚ ഒരൠസിങàµà´•àµ†à´™àµà´•à´¿à´²àµà´‚ à´Žà´ªàµà´ªàµ‹à´´àµà´‚ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´•"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "à´¡à´®àµà´®à´¿ ഔടàµà´Ÿàµà´ªàµà´Ÿàµà´Ÿàµ"
+
+#: ../src/modules/module-ladspa-sink.c:49
+msgid "Virtual LADSPA sink"
+msgstr "വിരàµâ€à´šàµà´šàµà´µà´²àµâ€ LADSPA സിങàµà´•àµ"
+
+#: ../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 ""
+"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>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "à´•àµà´²àµ‹à´•àµà´•à´¡àµ NULL സിങàµà´•àµ"
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "നളàµâ€ ഔടàµà´Ÿàµà´ªàµà´Ÿàµà´Ÿàµ"
+
+#: ../src/pulsecore/sink.c:2613
+msgid "Internal Audio"
+msgstr "ഇനàµà´±àµ‡à´°àµâ€à´£à´²àµâ€ ഓഡിയോ"
+
+#: ../src/pulsecore/sink.c:2618
+msgid "Modem"
+msgstr "മോഡം"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "യഥാരàµâ€à´¤àµà´¥ lt_dlopen ലോഡരàµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../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/main.c:141
+#, c-format
+msgid "Got signal %s."
+msgstr "%s സിഗàµà´¨à´²àµâ€ ലഭàµà´¯à´®à´¾à´¯à´¿."
+
+#: ../src/daemon/main.c:168
+msgid "Exiting."
+msgstr "à´ªàµà´±à´¤àµà´¤àµàµ à´•à´Ÿà´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:186
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "'%s' à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµàµ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:191
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "'%s' à´Žà´¨àµà´¨ à´—àµà´°àµ‚à´ªàµà´ªàµ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:195
+#, c-format
+msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
+msgstr "ഉപയോകàµà´¤à´¾à´µàµàµ '%s' (UID %lu) , à´—àµà´°àµ‚à´ªàµà´ªàµ '%s' (GID %lu) ലഭàµà´¯à´®à´¾à´¯à´¿."
+
+#: ../src/daemon/main.c:200
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "ഉപയോകàµà´¤à´¾à´µàµàµ '%s'-à´¨àµà´±àµ†à´¯àµà´‚ à´—àµà´°àµ‚à´ªàµà´ªàµ '%s'-à´¨àµà´±àµ†à´¯àµà´‚ GID ചേരàµà´¨àµà´¨à´¿à´²àµà´²."
+
+#: ../src/daemon/main.c:205
+#, c-format
+msgid "Home directory of user '%s' is not '%s', ignoring."
+msgstr "ഉപയോകàµà´¤à´¾à´µàµàµ '%s'-à´¨àµà´±àµ† ഹോം ഡയറകàµà´Ÿà´±à´¿ '%s' à´…à´²àµà´², ഉപേകàµà´·à´¿à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' ഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:220
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "à´—àµà´°àµ‚à´ªàµà´ªàµ ലിസàµà´±àµà´±àµ മാറàµà´±àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:236
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID മാറàµà´±àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:252
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID മാറàµà´±àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:271
+msgid "Successfully dropped root privileges."
+msgstr "റൂടàµà´Ÿàµ ആനàµà´•àµ‚à´²àµà´¯à´™àµà´™à´³àµâ€ വിജയകരമായി ഉപേകàµà´·à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:279
+msgid "System wide mode unsupported on this platform."
+msgstr "à´ˆ à´ªàµà´²à´¾à´±àµà´±àµà´«àµ‹à´®à´¿à´²àµâ€ സിസàµà´±àµà´±à´‚ വൈഡൠമോഡൠപിനàµà´¤àµà´£à´¯àµà´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´²."
+
+#: ../src/daemon/main.c:297
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:469
+msgid "Failed to parse command line."
+msgstr "കമാനàµâ€à´¡àµ ലൈനàµâ€ പാഴàµà´¸àµ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:536
+msgid "Daemon not running"
+msgstr "ഡെമണàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´¤àµà´¤à´¿à´²à´¿à´²àµà´²"
+
+#: ../src/daemon/main.c:538
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "ഡെമണàµâ€ PID %u ആയി à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ"
+
+#: ../src/daemon/main.c:548
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "ഡെമണàµâ€ നശിപàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:566
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"à´ˆ à´ªàµà´°àµ‹à´—àµà´°à´¾à´‚ റൂടàµà´Ÿà´¾à´¯à´¿ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµ‡à´£àµà´Ÿà´¤à´²àµà´² (--system à´Žà´¨àµà´¨àµàµ പറഞàµà´žà´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ†à´™àµà´•à´¿à´²àµâ€ മാതàµà´°à´‚ റൂടàµà´Ÿàµ "
+"ആവശàµà´¯à´®àµà´£àµà´Ÿàµàµ)."
+
+#: ../src/daemon/main.c:568
+msgid "Root privileges required."
+msgstr "റൂടàµà´Ÿàµ ആനàµà´•àµ‚à´²àµà´¯à´™àµà´™à´³àµâ€ ആവശàµà´¯à´®àµà´£àµà´Ÿàµàµ."
+
+#: ../src/daemon/main.c:573
+msgid "--start not supported for system instances."
+msgstr "സിസàµà´±àµà´±à´‚ ഇനàµâ€à´¸àµà´±àµà´±à´¨àµâ€à´¸àµà´•à´³àµâ€à´•àµà´•àµ --start പിനàµà´¤àµà´£à´¯àµà´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´²."
+
+#: ../src/daemon/main.c:578
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "സിസàµà´±àµà´±à´‚ മോഡിലàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ, പകàµà´·àµ‡ --disallow-exit സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²!"
+
+#: ../src/daemon/main.c:581
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+"സിസàµà´±àµà´±à´‚ മോഡിലàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ, പകàµà´·àµ‡ --disallow-module-loading സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²!"
+
+#: ../src/daemon/main.c:584
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "സിസàµà´±àµà´±à´‚ മോഡിലàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ, നിരàµâ€à´¬à´¨àµà´§à´®à´¾à´¯àµà´‚ SHM മോഡൠപàµà´°à´µà´°àµâ€à´¤àµà´¤ രഹിതമാകàµà´•àµà´¨àµà´¨àµ!"
+
+#: ../src/daemon/main.c:589
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+"സിസàµà´±àµà´±à´‚ മോഡിലàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ, നിരàµâ€à´¬à´¨àµà´§à´®à´¾à´¯àµà´‚ à´Žà´•àµà´¸à´¿à´±àµà´±àµ à´à´¡à´¿à´²àµâ€ സമയം à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤ രഹിതമാകàµà´•àµà´¨àµà´¨àµ!"
+
+#: ../src/daemon/main.c:616
+msgid "Failed to acquire stdio."
+msgstr "stdio ലഭികàµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:622
+#, c-format
+msgid "pipe failed: %s"
+msgstr "pipe പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:627
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/main.c:647
+msgid "Daemon startup failed."
+msgstr "ഡെമണിനàµà´±àµ† à´¤àµà´Ÿà´•àµà´•à´‚ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:649
+msgid "Daemon startup successful."
+msgstr "ഡെമണിനàµà´±àµ† à´¤àµà´Ÿà´•àµà´•à´‚ വിജയിചàµà´šàµ."
+
+#: ../src/daemon/main.c:726
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "ഇതàµàµ PulseAudio %s ആണàµàµ"
+
+#: ../src/daemon/main.c:727
+#, c-format
+msgid "Compilation host: %s"
+msgstr "കംപൈലേഷനàµâ€ ഹോസàµà´±àµà´±àµ: %s"
+
+#: ../src/daemon/main.c:728
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "കംപൈലേഷനàµâ€ CFLAGS: %s"
+
+#: ../src/daemon/main.c:731
+#, c-format
+msgid "Running on host: %s"
+msgstr "ഹോസàµà´±àµà´±à´¿à´²àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ: %s"
+
+#: ../src/daemon/main.c:734
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u സിപിയൠലഭàµà´¯à´®à´¾à´¯à´¿."
+
+#: ../src/daemon/main.c:736
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "താളിനàµà´±àµ† à´µàµà´¯à´¾à´ªàµà´¤à´¿ %lu ബൈറàµà´±àµà´•à´³à´¾à´£àµàµ"
+
+#: ../src/daemon/main.c:739
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind പിനàµà´¤àµà´£à´¯àµ‹à´Ÿàµ† കംപൈലàµâ€ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ: ഉവàµà´µàµàµ"
+
+#: ../src/daemon/main.c:741
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind പിനàµà´¤àµà´£à´¯àµ‹à´Ÿàµ† കംപൈലàµâ€ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ: ഇലàµà´²"
+
+#: ../src/daemon/main.c:744
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind മോഡിലàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ: %s"
+
+#: ../src/daemon/main.c:747
+msgid "Optimized build: yes"
+msgstr "à´’à´ªàµà´Ÿà´¿à´®àµˆà´¸àµà´¡àµ ബിളàµâ€à´¡àµ: ഉവàµà´µàµàµ"
+
+#: ../src/daemon/main.c:749
+msgid "Optimized build: no"
+msgstr "à´’à´ªàµà´Ÿà´¿à´®àµˆà´¸àµà´¡àµ ബിളàµâ€à´¡àµ: ഇലàµà´²"
+
+#: ../src/daemon/main.c:753
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG നിഷàµà´•à´°àµâ€à´·à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, à´Žà´²àµà´²à´¾ asserts-ഉം à´ªàµà´°à´µà´°àµâ€â€Œà´¤àµà´¤ രഹിതം."
+
+#: ../src/daemon/main.c:755
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH നിഷàµà´•à´°àµâ€à´·à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, fast path asserts മാതàµà´°à´‚ à´ªàµà´°à´µà´°àµâ€â€Œà´¤àµà´¤ രഹിതം."
+
+#: ../src/daemon/main.c:757
+msgid "All asserts enabled."
+msgstr "à´Žà´²àµà´²à´¾ asserts-ഉം à´ªàµà´°à´µà´°àµâ€â€Œà´¤àµà´¤ സജàµà´œà´‚"
+
+#: ../src/daemon/main.c:761
+msgid "Failed to get machine ID"
+msgstr "മഷീനàµâ€ ID ലഭàµà´¯à´®à´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´¾à´¯à´¿à´²àµà´²"
+
+#: ../src/daemon/main.c:764
+#, c-format
+msgid "Machine ID is %s."
+msgstr "മഷീനàµâ€ ID %s ആണàµàµ."
+
+#: ../src/daemon/main.c:768
+#, c-format
+msgid "Session ID is %s."
+msgstr "സെഷനàµâ€ ID %s ആണàµàµ."
+
+#: ../src/daemon/main.c:774
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "റണàµâ€à´Ÿàµˆà´‚ ഡയറകàµà´Ÿà´±à´¿ %s ഉപയോഗികàµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:779
+#, c-format
+msgid "Using state directory %s."
+msgstr "à´¸àµà´±àµà´±àµ‡à´±àµà´±àµ ഡയറകàµà´Ÿà´±à´¿ %s ഉപയോഗികàµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "മൊഡàµà´¯àµ‚à´³àµâ€à´¸àµ ഡയറകàµà´Ÿà´±à´¿ %s ഉപയോഗികàµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:784
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "സിസàµà´±àµà´±à´‚ മോഡിലàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ: %s"
+
+#: ../src/daemon/main.c:787
+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 ""
+"ശരി, à´…à´ªàµà´ªàµ‹à´³àµâ€ നിങàµà´™à´³àµâ€ പിഎ സിസàµà´±àµà´±à´‚ മോഡിലാണàµàµ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨à´¤àµàµ. ദയവായി ഇതàµà´ªàµ‡à´•àµà´·à´¿à´•àµà´•àµà´•.\n"
+"ഇങàµà´™à´¨àµ† ചെയàµà´¤àµà´£àµà´Ÿà´¾à´•àµà´¨àµà´¨ സകല തകരാറàµà´•à´³àµà´Ÿàµ‡à´¯àµà´‚ ഉതàµà´¤à´°à´µà´¾à´¦à´¿ നിങàµà´™à´³àµâ€ à´¸àµà´µà´¯à´®à´¾à´•àµà´¨àµà´¨àµ.\n"
+"സിസàµà´±àµà´±à´‚ മോഡിലàµà´³àµà´³ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´‚ ഉതàµà´¤à´®à´®à´²àµà´²à´¾à´¤àµà´¤à´¤à´¿à´¨àµà´±àµ† കാരണങàµà´™à´³àµâ€à´•àµà´•à´¾à´¯à´¿http://pulseaudio.org/"
+"wiki/WhatIsWrongWithSystemMode കാണàµà´•."
+
+#: ../src/daemon/main.c:804
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:814
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "Fresh high-resolution timers available! Bon appetit!"
+
+#: ../src/daemon/main.c:816
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+
+#: ../src/daemon/main.c:839
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:899
+msgid "Failed to initialize daemon."
+msgstr "ഡെമണàµâ€ ആരംഭികàµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/daemon/main.c:904
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "ഒരൠഘടകങàµà´™à´³àµà´‚ ലഭàµà´¯à´®à´¾à´•à´¾à´¤àµ† ഡെമണàµâ€ ആരംഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´‚ നിഷേധിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:921
+msgid "Daemon startup complete."
+msgstr "ഡെമണിനàµà´±àµ† à´¤àµà´Ÿà´•àµà´•à´‚ പൂരàµâ€à´£àµà´£à´®à´¾à´¯à´¿."
+
+#: ../src/daemon/main.c:927
+msgid "Daemon shutdown initiated."
+msgstr "ഡെമണàµâ€ à´…à´Ÿà´šàµà´šàµà´ªàµ‚à´Ÿàµà´Ÿàµà´¨àµà´¨à´¤àµàµ ആരംഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/main.c:949
+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-à´¨àµàµ ലോഗൠലവലàµâ€ ആരàµâ€à´—àµà´¯àµà´®àµ†à´¨àµà´±àµ ആവശàµà´¯à´®àµà´£àµà´Ÿàµàµ (à´’à´¨àµà´¨àµà´•à´¿à´²àµâ€ 0..4 വരെയàµà´³àµà´³ à´¨àµà´¯àµ‚മറികൠപരിധി "
+"à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ 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 "തെറàµà´±à´¾à´¯ ലോഗൠടാരàµâ€à´—à´±àµà´±àµ: 'syslog', 'stderr' à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ '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 "DEPRECATION WARNING: %s\n"
+
+#: ../src/daemon/dumpmodules.c:79
+#, c-format
+msgid "Path: %s\n"
+msgstr "പാഥàµ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:232
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] തെറàµà´±à´¾à´¯ ലോഗൠടാരàµâ€à´—à´±àµà´±àµ '%s'."
+
+#: ../src/daemon/daemon-conf.c:248
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] തെറàµà´±à´¾à´¯ ലോഗൠലവലàµâ€ '%s'."
+
+#: ../src/daemon/daemon-conf.c:264
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] തെറàµà´±à´¾à´¯ റീസാംപിളàµâ€ മാരàµâ€à´—àµà´—à´‚ '%s'."
+
+#: ../src/daemon/daemon-conf.c:287
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] അസാധàµà´µà´¾à´¯ rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:294
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] à´ˆ à´ªàµà´²à´¾à´±àµà´±àµà´«àµ‹à´®à´¿à´²àµâ€ rlimit-à´¨àµà´³àµà´³ പിനàµà´¤àµà´£ ലഭàµà´¯à´®à´²àµà´²."
+
+#: ../src/daemon/daemon-conf.c:310
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] തെറàµà´±à´¾à´¯ സാംപിളàµâ€ മാതൃക '%s'."
+
+#: ../src/daemon/daemon-conf.c:328
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] തെറàµà´±à´¾à´¯ സാംപിളàµâ€ റേറàµà´±àµ '%s'."
+
+#: ../src/daemon/daemon-conf.c:352
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] തെറàµà´±à´¾à´¯ സാംപിളàµâ€ ചാനലàµà´•à´³àµâ€ '%s'."
+
+#: ../src/daemon/daemon-conf.c:370
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] അസാധàµà´µà´¾à´¯ ചാനലàµâ€ മാപàµà´ªàµ '%s'."
+
+#: ../src/daemon/daemon-conf.c:388
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] '%s' à´«àµà´°à´¾à´—àµà´®àµ†à´¨àµà´±àµà´•à´³àµà´Ÿàµ† തെറàµà´±à´¾à´¯ à´Žà´£àµà´£à´‚."
+
+#: ../src/daemon/daemon-conf.c:406
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] തെറàµà´±à´¾à´¯ à´«àµà´°à´¾à´—àµà´®àµ†à´¨àµà´±àµ à´µàµà´¯à´¾à´ªàµà´¤à´¿ '%s'."
+
+#: ../src/daemon/daemon-conf.c:424
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] അസാധàµà´µà´¾à´¯ nice à´¸àµà´¥à´¾à´¨à´‚ '%s'."
+
+#: ../src/daemon/daemon-conf.c:546
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "à´•àµà´°à´®àµ€à´•à´°à´£ ഫയലàµâ€ à´¤àµà´±à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/daemon/daemon-conf.c:562
+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:638
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### à´•àµà´°à´®àµ€à´•à´°à´£ ഫയലിലàµâ€ നിനàµà´¨àµà´‚ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´•: %s ###\n"
+
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "à´…à´¨àµà´®à´¤à´¿à´•à´³àµâ€ വെടിപàµà´ªà´¾à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio സൌണàµà´Ÿàµ സിസàµà´±àµà´±à´‚"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio സൌണàµà´Ÿàµ സിസàµà´±àµà´±à´‚ ആരംഭികàµà´•àµà´•"
+
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
+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:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
+msgid "(invalid)"
+msgstr "(അസാധàµ)"
+
+#: ../src/pulse/channelmap.c:761
+msgid "Stereo"
+msgstr "à´¸àµà´±àµà´±àµ€à´°à´¿à´¯àµ‹"
+
+#: ../src/pulse/channelmap.c:766
+msgid "Surround 4.0"
+msgstr "സറൌണàµà´Ÿàµ 4.0"
+
+#: ../src/pulse/channelmap.c:772
+msgid "Surround 4.1"
+msgstr "സറൌണàµà´Ÿàµ 4.1"
+
+#: ../src/pulse/channelmap.c:778
+msgid "Surround 5.0"
+msgstr "സറൌണàµà´Ÿàµ 5.0"
+
+#: ../src/pulse/channelmap.c:784
+msgid "Surround 5.1"
+msgstr "സറൌണàµà´Ÿàµ 5.1"
+
+#: ../src/pulse/channelmap.c:791
+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/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:184
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:186
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:188
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:190
+#, 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:111
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "à´•àµà´°à´®àµ€à´•à´°à´£ ഫയലàµâ€ '%s' à´¤àµà´±à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/pulse/context.c:550
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "ഒരൠകàµà´•àµà´•à´¿à´¯àµà´‚ ലഭàµà´¯à´®à´²àµà´². അതിലàµà´²à´¾à´¤àµ† കണകàµà´Ÿàµ ചെയàµà´¯àµà´µà´¾à´¨àµâ€â€Œ à´¶àµà´°à´®à´¿à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/pulse/context.c:693
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:748
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1435
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "അപരിചിതമായ à´Žà´•àµà´¸àµà´±àµà´±àµ†à´¨àµâ€à´·à´¨àµâ€ '%s'-à´¨àµà´³àµà´³ സനàµà´¦àµ‡à´¶à´‚ ലഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
+
+#: ../src/utils/pacat.c:108
+#, c-format
+msgid "Failed to drain stream: %s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ à´¡àµà´°àµ†à´¯à´¿à´¨àµâ€ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "à´ªàµà´²àµ‡à´¬à´¾à´•àµà´•àµ à´¸àµà´Ÿàµà´°àµ€à´‚ à´¡àµà´°àµ†à´¯à´¿à´¨àµâ€ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "സരàµâ€à´µà´±à´¿à´²àµ‡à´•àµà´•àµà´³àµà´³ കണകàµà´·à´¨àµâ€ à´¡àµà´°àµ†à´¯à´¿à´¨àµâ€ ചെയàµà´¯àµà´¨àµà´¨àµ."
+
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
+
+#: ../src/utils/pacat.c:159
+#, c-format
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ വിജയകരമായി ഉണàµà´Ÿà´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/utils/pacat.c:310
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:314
+#, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "ബഫരàµâ€ മെടàµà´°à´¿à´•àµà´¸àµ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+
+#: ../src/utils/pacat.c:317
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "ബഫരàµâ€ മെടàµà´°à´¿à´•àµà´¸àµ: maxlength=%u, fragsize=%u"
+
+#: ../src/utils/pacat.c:321
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "സാംപിളàµâ€ à´¸àµà´ªàµ†à´•àµ '%s', ചാനലàµâ€ മാപàµà´ªàµ '%s' ഉപയോഗികàµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/utils/pacat.c:325
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "ഡിവൈസൠ%s-ലേകàµà´•àµ കണകàµà´Ÿàµ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ (%u, %ssuspended)."
+
+#: ../src/utils/pacat.c:335
+#, c-format
+msgid "Stream error: %s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ പിശകàµ: %s"
+
+#: ../src/utils/pacat.c:345
+#, c-format
+msgid "Stream device suspended.%s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ ഡിവൈസൠസസàµà´ªàµ†à´¨àµâ€à´¡àµ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.%s"
+
+#: ../src/utils/pacat.c:347
+#, c-format
+msgid "Stream device resumed.%s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ ഡിവൈസൠവീണàµà´Ÿàµà´‚ ആരംഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.%s"
+
+#: ../src/utils/pacat.c:355
+#, c-format
+msgid "Stream underrun.%s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ à´…à´£àµà´Ÿà´°àµâ€à´±à´£àµâ€.%s"
+
+#: ../src/utils/pacat.c:362
+#, c-format
+msgid "Stream overrun.%s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€ ഓവരàµâ€à´±à´£àµâ€.%s"
+
+#: ../src/utils/pacat.c:369
+#, c-format
+msgid "Stream started.%s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ ആരംഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.%s"
+
+#: ../src/utils/pacat.c:376
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "ഡിവൈസൠ%s-ലേകàµà´•àµ à´¸àµà´Ÿàµà´°àµ€à´‚ നീകàµà´•à´‚ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ (%u, %ssuspended).%s"
+
+#: ../src/utils/pacat.c:376
+msgid "not "
+msgstr "à´…à´²àµà´²"
+
+#: ../src/utils/pacat.c:383
+#, c-format
+msgid "Stream buffer attributes changed.%s"
+msgstr "à´¸àµà´Ÿàµà´°àµ€à´‚ ബഫരàµâ€ വിശേഷതകളàµâ€ മാറàµà´±à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.%s"
+
+#: ../src/utils/pacat.c:415
+#, c-format
+msgid "Connection established.%s"
+msgstr "കണകàµà´·à´¨àµâ€ à´¸àµà´¥à´¾à´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.%s"
+
+#: ../src/utils/pacat.c:418
+#, c-format
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:446
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:452
+#, c-format
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, c-format
+msgid "Connection failure: %s"
+msgstr "കണകàµà´·à´¨à´¿à´²àµâ€ തകരാരàµâ€: %s"
+
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF ലഭàµà´¯à´®à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
+
+#: ../src/utils/pacat.c:536
+#, c-format
+msgid "write() failed: %s"
+msgstr "write() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "സിഗàµà´¨à´²àµâ€ ലഭàµà´¯à´®à´¾à´¯à´¿, à´ªàµà´±à´¤àµà´¤àµàµ à´•à´Ÿà´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/utils/pacat.c:571
+#, c-format
+msgid "Failed to get latency: %s"
+msgstr "ലാറàµà´±à´¨àµâ€à´¸à´¿ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:576
+#, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "സമയം: %0.3f sec; ലാറàµà´±à´¨àµâ€à´¸à´¿: %0.0f usec."
+
+#: ../src/utils/pacat.c:595
+#, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../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 ""
+"%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"
+
+#: ../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:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "തെറàµà´±à´¾à´¯ à´•àµà´²àµˆà´¨àµà´±àµ നാമം '%s'"
+
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "തെറàµà´±à´¾à´¯ à´¸àµà´Ÿàµà´°àµ€à´‚ നാമം '%s'"
+
+#: ../src/utils/pacat.c:812
+#, c-format
+msgid "Invalid channel map '%s'"
+msgstr "തെറàµà´±à´¾à´¯ ചാനലàµâ€ മാപàµà´ªàµ '%s'"
+
+#: ../src/utils/pacat.c:841
+#, c-format
+msgid "Invalid latency specification '%s'"
+msgstr "തെറàµà´±à´¾à´¯ ലാറàµà´±à´¨àµâ€à´¸à´¿ വിവരണം '%s'"
+
+#: ../src/utils/pacat.c:848
+#, c-format
+msgid "Invalid process time specification '%s'"
+msgstr "തെറàµà´±à´¾à´¯ à´ªàµà´°à´•àµà´°à´¿à´¯ സമയ വിവരണം '%s'"
+
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "തെറàµà´±à´¾à´¯ വിശേഷത '%s'"
+
+#: ../src/utils/pacat.c:877
+#, c-format
+msgid "Unknown file format %s."
+msgstr "അപരിചിതമായ ഫയലàµâ€ രീതി %s."
+
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "തെറàµà´±à´¾à´¯ മാതൃക വിവരണം"
+
+#: ../src/utils/pacat.c:906
+#, c-format
+msgid "open(): %s"
+msgstr "open(): %s"
+
+#: ../src/utils/pacat.c:911
+#, c-format
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
+
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "അനവധി ആരàµâ€à´—àµà´¯àµà´®àµ†à´¨àµà´±àµà´•à´³àµâ€."
+
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "ഫയലിനàµà´³àµà´³ സാംപിളàµâ€ വിവരണം ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "à´“â€à´¡à´¿à´¯àµ‹ ഫയലàµâ€ à´¤àµà´±à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:955
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file."
+msgstr ""
+"à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ: ഫയലിലàµâ€ നിനàµà´¨àµà´³àµà´³ വിവരണം à´µàµà´¯à´•àµà´¤à´®à´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ സാംപിളàµâ€ വിവരണം മാറàµà´±à´¿à´¯àµ†à´´àµà´¤àµà´¨àµà´¨àµ."
+
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ഫയലിലàµâ€ നിനàµà´¨àµà´‚ സാംപിളàµâ€ വിവരണം ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ: ഫയലിലàµâ€ നിനàµà´¨àµà´‚ ചാനലàµâ€ മാപàµà´ªàµ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "ചാനലàµâ€ മാപàµà´ªàµ സാംപിളàµâ€ വിവരണവàµà´®à´¾à´¯à´¿ ചേരàµà´¨àµà´¨à´¿à´²àµà´²"
+
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ: ഫയലിലേകàµà´•àµ ചാനലàµâ€ മാപàµà´ªàµ സൂകàµà´·à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:1004
+#, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "%s à´¸àµà´Ÿàµà´°àµ€à´‚ à´¤àµà´±à´•àµà´•àµà´¨àµà´¨àµ. ഇതിനàµà´±àµ† സാംപിളàµâ€ വിവരണം '%s'-ഉം ചാനലàµâ€ മാപàµà´ªàµ '%s'-ഉം ആണàµàµ."
+
+#: ../src/utils/pacat.c:1005
+msgid "recording"
+msgstr "റികàµà´•àµ‹à´°àµâ€à´¡àµ ചെയàµà´¯àµà´¨àµà´¨àµ"
+
+#: ../src/utils/pacat.c:1005
+msgid "playback"
+msgstr "à´ªàµà´²àµ‡à´¬à´¾à´•àµà´•àµ"
+
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../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:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "കണകàµà´·à´¨à´¿à´²àµâ€ തകരാരàµâ€: %s\n"
+
+#: ../src/utils/pasuspender.c:176
+#, 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"
+"libpulse %s-നൊപàµà´ªà´‚ കംപൈലàµâ€ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ\n"
+"libpulse %s-നൊപàµà´ªà´‚ ലിങàµà´•àµ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ\n"
+
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ..\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ.\n"
+
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "à´¸àµà´¥à´¿à´¤à´¿à´µà´¿à´µà´°à´•àµà´•à´£à´•àµà´•àµà´•à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:141
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "നിലവിലàµâ€ ഉപയോഗതàµà´¤à´¿à´²àµâ€: %u à´¬àµà´²àµ‹à´•àµà´•àµà´•à´³àµâ€, മൊതàµà´¤à´‚ %s ബൈറàµà´±àµà´•à´³àµâ€ à´…à´Ÿà´™àµà´™àµà´¨àµà´¨àµ.\n"
+
+#: ../src/utils/pactl.c:144
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr "കാലാവധിയàµà´•àµà´•àµà´³àµà´³à´¿à´²àµâ€ à´…à´¨àµà´µà´¦à´¿à´•àµà´•àµà´¨àµà´¨àµ: %u à´¬àµà´²àµ‹à´•àµà´•àµà´•à´³àµâ€, മൊതàµà´¤à´‚ %s ബൈറàµà´±àµà´•à´³àµâ€ à´…à´Ÿà´™àµà´™àµà´¨àµà´¨àµ.\n"
+
+#: ../src/utils/pactl.c:147
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "സാംപിളàµâ€ കാഷൠവàµà´¯à´ªàµà´¤à´¿: %s\n"
+
+#: ../src/utils/pactl.c:156
+#, c-format
+msgid "Failed to get server information: %s"
+msgstr "സരàµâ€à´µà´°àµâ€ വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:164
+#, 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 ""
+"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:205
+#, c-format
+msgid "Failed to get sink information: %s"
+msgstr "സിങàµà´•àµ വിവരം ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:221
+#, 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:268 ../src/utils/pactl.c:360
+#, c-format
+msgid "\tPorts:\n"
+msgstr "\tപോരàµâ€à´Ÿàµà´Ÿàµà´•à´³àµâ€:\n"
+
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
+msgid "\tActive Port: %s\n"
+msgstr "\tസജീവമായ പോരàµâ€à´Ÿàµà´Ÿàµ: %s\n"
+
+#: ../src/utils/pactl.c:297
+#, c-format
+msgid "Failed to get source information: %s"
+msgstr "സോഴàµà´¸àµ വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:313
+#, 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:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:375
+#, c-format
+msgid "Failed to get module information: %s"
+msgstr "ഘടക വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:393
+#, 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:412
+#, c-format
+msgid "Failed to get client information: %s"
+msgstr "à´•àµà´²àµˆà´¨àµà´±àµ വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:430
+#, 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:447
+#, c-format
+msgid "Failed to get card information: %s"
+msgstr "കാരàµâ€à´¡àµ വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:465
+#, 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:479
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tà´ªàµà´°àµŠà´«àµˆà´²àµà´•à´³àµâ€:\n"
+
+#: ../src/utils/pactl.c:485
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tസജീവമായ à´ªàµà´°àµŠà´«àµˆà´²àµâ€: %s\n"
+
+#: ../src/utils/pactl.c:496
+#, c-format
+msgid "Failed to get sink input information: %s"
+msgstr "സിങàµà´•àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:515
+#, 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:554
+#, c-format
+msgid "Failed to get source output information: %s"
+msgstr "സോഴàµà´¸àµ ഔടàµà´Ÿàµà´ªàµà´Ÿàµà´Ÿàµ വിവരം ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:574
+#, 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:605
+#, c-format
+msgid "Failed to get sample information: %s"
+msgstr "മാതൃകയàµà´Ÿàµ† വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:623
+#, 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:653 ../src/utils/pactl.c:663
+#, c-format
+msgid "Failure: %s"
+msgstr "പരാജയം: %s"
+
+#: ../src/utils/pactl.c:687
+#, c-format
+msgid "Failed to upload sample: %s"
+msgstr "മാതൃക à´…à´ªàµà´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ: %s"
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "ഫയലàµâ€ à´…à´¨àµà´šà´¿à´¤à´®à´¾à´¯ അവസാനം"
+
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT ലഭàµà´¯à´®à´¾à´¯à´¿, à´ªàµà´±à´¤àµà´¤àµàµ à´•à´Ÿà´•àµà´•àµà´¨àµà´¨àµ."
+
+#: ../src/utils/pactl.c:869
+#, 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 SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\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 SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\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:933
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulse %s-നൊപàµà´ªà´‚ കംപൈലàµâ€ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ\n"
+"libpulse %s-നൊപàµà´ªà´‚ ലിങàµà´•àµ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ\n"
+
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµà´³àµà´³ മാതൃകാ ഫയലàµâ€ ദയവായി à´µàµà´¯à´•àµà´¤à´®à´¾à´•àµà´•àµà´•"
+
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "ശബàµà´¦ ഫയലàµâ€ à´¤àµà´±à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ: ഫയലിലàµâ€ നിനàµà´¨àµà´‚ മാതൃകയàµà´Ÿàµ† വിവരണം à´•à´£àµà´Ÿàµà´ªà´¿à´Ÿà´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´µà´¾à´¨àµà´³àµà´³ മാതൃകയàµà´Ÿàµ† പേരàµàµ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "നീകàµà´•à´‚ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ മാതൃകയàµà´Ÿàµ† പേരàµàµ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "ഒരൠസിങàµà´•àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ഇനàµâ€à´¡à´•àµà´¸àµà´‚ സിങàµà´•àµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "ഒരൠസോഴàµà´¸àµ ഔടàµà´Ÿàµà´ªàµà´Ÿàµà´Ÿàµ ഇനàµâ€à´¡à´•àµà´¸àµà´‚ സോഴàµà´¸àµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "ഒരൠമൌഡàµà´¯àµ‚à´³àµâ€ നാമവàµà´‚ ആരàµâ€à´—àµà´¯àµà´®àµ†à´¨àµà´±àµà´•à´³àµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ."
+
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "ഒരൠമൌഡàµà´¯àµ‚à´³àµâ€ ഇനàµâ€à´¡à´•àµà´¸àµ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1090
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr ""
+"ഒരൠസിങàµà´•à´¿à´²àµâ€ കൂടàµà´¤à´²àµâ€ നിങàµà´™à´³àµâ€ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤à´¿à´²àµà´². കൂടാതെ, ഒരൠബൂളിയനàµâ€ മൂലàµà´²àµà´¯à´µàµà´‚ നിങàµà´™à´³àµâ€ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤à´¾à´£àµàµ."
+
+#: ../src/utils/pactl.c:1103
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value."
+msgstr ""
+"ഒരൠസോഴàµà´¸à´¿à´²àµâ€ കൂടàµà´¤à´²àµâ€ നിങàµà´™à´³àµâ€ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤à´¿à´²àµà´². കൂടാതെ, ഒരൠബൂളിയനàµâ€ മൂലàµà´²àµà´¯à´µàµà´‚ നിങàµà´™à´³àµâ€ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤à´¾à´£àµàµ."
+
+#: ../src/utils/pactl.c:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "ഒരൠകാരàµâ€à´¡àµ നാമം/ഇനàµâ€à´¡à´•àµà´¸àµà´‚ à´ªàµà´°àµŠà´«àµˆà´²àµâ€ നാമവàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "ഒരൠസിങàµà´•àµ നാമം/ഇനàµâ€à´¡à´•àµà´¸àµà´‚ പോരàµâ€à´Ÿàµà´Ÿàµ നാമവàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "ഒരൠസോഴàµà´¸àµ നാമം/ഇനàµâ€à´¡à´•àµà´¸àµà´‚ പോരàµâ€à´Ÿàµà´Ÿàµ നാമവàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "ഒരൠസിങàµà´•àµ നാമം/ഇനàµâ€à´¡à´•àµà´¸àµà´‚ വോളàµà´¯à´µàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "തെറàµà´±à´¾à´¯ വോളàµà´¯à´‚ വിവരണങàµà´™à´³àµâ€"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "ഒരൠസോഴàµà´¸àµ നാമം/ഇനàµâ€à´¡à´•àµà´¸àµà´‚ വോളàµà´¯à´µàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "ഒരൠസിങàµà´•àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ഇനàµâ€à´¡à´•àµà´¸àµà´‚ വോളàµà´¯à´µàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "തെറàµà´±à´¾à´¯ സിങàµà´•àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ഇനàµâ€à´¡à´•àµà´¸àµ"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "ഒരൠസിങàµà´•àµ നാമം/ഇനàµâ€à´¡à´•àµà´¸àµà´‚ à´®àµà´¯àµ‚à´Ÿàµà´Ÿàµ ബൂളിയനàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "ഒരൠസോഴàµà´¸àµ നാമം/ഇനàµâ€à´¡à´•àµà´¸àµà´‚ à´®àµà´¯àµ‚à´Ÿàµà´Ÿàµ ബൂളിയനàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "ഒരൠസിങàµà´•àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ഇനàµâ€à´¡à´•àµà´¸àµà´‚ à´®àµà´¯àµ‚à´Ÿàµà´Ÿàµ ബൂളിയനàµà´‚ നലàµâ€à´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµàµ"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "തെറàµà´±à´¾à´¯ സിങàµà´•àµ ഇനàµâ€à´ªàµà´Ÿàµà´Ÿàµ ഇനàµâ€à´¡à´•àµà´¸àµ à´¸àµà´ªàµ†à´¸à´¿à´«à´¿à´•àµà´•àµ‡à´·à´¨àµâ€"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "ശരിയായ കമാനàµâ€à´¡àµà´•à´³àµâ€ നലàµâ€à´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²."
+
+#: ../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:69
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr "പളàµâ€à´¸àµà´“ഡിയോ ഡെമണàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´¤à´¿à´²à´¿à´²àµà´², സെഷനàµâ€ ഡെമണായàµà´‚ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´²."
+
+#: ../src/utils/pacmd.c:74
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:91
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:99
+msgid "Failed to kill PulseAudio daemon."
+msgstr "പളàµâ€à´¸àµà´“ഡിയോ ഡെമണàµâ€ ഇലàµà´²à´¾à´¤à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
+
+#: ../src/utils/pacmd.c:107
+msgid "Daemon not responding."
+msgstr "ഡെമണàµâ€ മറàµà´ªà´Ÿà´¿ നലàµâ€à´•àµà´¨àµà´¨à´¿à´²àµà´²."
+
+#: ../src/utils/pacmd.c:161
+#, c-format
+msgid "poll(): %s"
+msgstr "poll(): %s"
+
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
+#, c-format
+msgid "write(): %s"
+msgstr "write(): %s"
+
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
+msgid "Cannot access autospawn lock."
+msgstr "à´“à´Ÿàµà´Ÿàµ‹à´¸àµà´ªàµŒà´£àµâ€ ലോകàµà´•àµ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²."
+
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
+#, 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:506 ../src/modules/alsa/alsa-source.c:656
+#, 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:2228
+msgid "Off"
+msgstr "à´“à´«àµ"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
+msgid "High Fidelity Playback (A2DP)"
+msgstr "ഹൈ ഫിഡലിറàµà´±à´¿ à´ªàµà´²àµ‡à´¬à´¾à´•àµà´•àµ (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "ഹൈ ഫിഡലിറàµà´±à´¿ കാപàµà´šà´°àµâ€ (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "ടെലിഫോണി à´¡àµà´¯àµ‚à´ªàµà´²àµ†à´•àµà´¸àµ (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:151
+msgid "PulseAudio Sound Server"
+msgstr "പളàµâ€à´¸àµà´“ഡിയോ സൌണàµà´Ÿàµ സരàµâ€à´µà´°àµâ€"
diff --git a/po/mr.po b/po/mr.po
index 6e3c759a..0e7eda9d 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -1,23 +1,29 @@
-# translation of pulseaudio.master-tx.pulseaudio.po to marathi
+# translation of pulseaudio.master-tx.po to Marathi
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Sandeep Shedmake <sandeep.shedmake@gmail.com>, 2009.
+# Sandeep Shedmake <sshedmak@redhat.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \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"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 15:34+0530\n"
+"Last-Translator: Sandeep Shedmake <sshedmak@redhat.com>\n"
+"Language-Team: Marathi <fedora-trans-mr@redhat.com>\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"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -29,7 +35,7 @@ msgstr ""
"हे सहसा ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' अंतरà¥à¤—त बग अशू शकते. कृपया या अडचणीस ALSA डेवà¥à¤¹à¤²à¤ªà¤° करीता "
"कळवा."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -41,7 +47,7 @@ msgstr ""
"हे सहसा ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' अंतरà¥à¤—त बग अशू शकते. कृपया या अडचणीस ALSA डेवà¥à¤¹à¤²à¤ªà¤° करीता "
"कळवा."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -53,9 +59,17 @@ msgstr ""
"हे सहसा ALSA डà¥à¤°à¤¾à¤‡à¤µà¤° '%s' अंतरà¥à¤—त बग अशू शकते. कृपया या अडचणीस ALSA डेवà¥à¤¹à¤²à¤ªà¤° करीता "
"कळवा."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr "नलà¥à¤² असलà¥à¤¯à¤¾à¤µà¤°à¤¹à¥€ नेहमी किमान à¤à¤• सींक लोड करून ठेवा"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "डमà¥à¤®à¥€ आऊटपà¥à¤Ÿ"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "आभासी LADSPA सींक"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -65,12 +79,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<सींक करीता नाव> sink_properties=<सींक करीता गà¥à¤£à¤§à¤°à¥à¤®> "
+"master=<फिलà¥à¤Ÿà¤°à¤œà¥‹à¤—ी सींकचे नाव> format=<चाचणी रूपण> rate=<चाचणी दर> "
+"channels=<वाहिनींची संखà¥à¤¯à¤¾> channel_map=<वाहिनी नकाशा> plugin=<ladspa पà¥à¤²à¤—इन "
+"नाव> label=<ladspa पà¥à¤²à¤—इन लेबल> control=<इंपà¥à¤Ÿ कंटà¥à¤°à¥‹à¤² मà¥à¤²à¥à¤¯à¤¾à¤‚ची सà¥à¤µà¤²à¥à¤ªà¤µà¤¿à¤°à¤¾à¤® विभाजीत "
+"सूची>"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "कà¥à¤²à¥‰à¤•à¥à¤¡à¥ NULL सींक"
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "Null आऊटपà¥à¤Ÿ"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "आंतरीक ऑडिओ"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "मोडेम"
@@ -86,367 +113,247 @@ msgstr "नवीन dl दाखलकरà¥à¤¤à¤¾ वाटप करणà¥à¤¯
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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "संकेत %s पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "बाहेर पडत आहे."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "वापरकरà¥à¤¤à¤¾ '%s' शोधणे अशकà¥à¤¯."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "गट '%s' शोधणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "वापरकरà¥à¤¤à¤¾ '%s' व गट '%s' चे GID जà¥à¤³à¤¤ नाही."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' बनवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "गट यादी बदलवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID बदलवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID बदलवणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "रूट परवानगी यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ वगळले."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ भर पदà¥à¤§à¤¤ या पà¥à¤²à¥…टफॉरà¥à¤® करीता समरà¥à¤¥à¥€à¤¤ नाही."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) अपयशी: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 आपलà¥à¤¯à¤¾à¤²à¤¾ acquire-high-priority परवानगी देतो."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit acquire-high-priority परवानगी नकारतो."
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit acquire-real-time परवानगी पà¥à¤°à¤µà¤¿à¤¤à¥‹."
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit acquire-real-time परवानगी नकारतो."
-
-#: ../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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "डिमन कारà¥à¤¯à¤°à¤¤ नाही"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "डिमन PID %u नà¥à¤°à¥‚प कारà¥à¤¯à¤°à¤¤ आहे"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "डिमन नषà¥à¤Ÿ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "हा कारà¥à¤¯à¤•à¥à¤°à¤® रूट नà¥à¤°à¥‚प चालविणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ नाही (जोपरà¥à¤¯à¤‚त --system निशà¥à¤šà¤¿à¤¤ नाही)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "रूट परवानगी आवशà¥à¤¯à¤•."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ घटनांकरीता --start समरà¥à¤¥à¥€à¤¤ नाही."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, परंतॠ--disallow-exit निशà¥à¤šà¤¿à¤¤ केले नाही!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, परंतॠ--disallow-module-loading निशà¥à¤šà¤¿à¤¤ केले नाही!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, SHM पदà¥à¤§à¤¤ जबरनरितà¥à¤¯à¤¾ अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करत आहे!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€ अंतरà¥à¤—त कारà¥à¤¯à¤°à¤¤, रिकामे वेळ जबरनरितà¥à¤¯à¤¾ अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करत आहे!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "पाइप अपयशी: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() अपयशी: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() अपयशी: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "डिमन सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प अपयशी."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "डिमन सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प यशसà¥à¤µà¥€."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "हे PulseAudio %s आहे"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "कंपाइलेशन यजमान: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "कंपाइलेशन CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "यजमान वर कारà¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs आढळले."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "पान आकार %lu बाईटसॠआहे"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥€ कंपाईल केले: होय"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥€ कंपाईल केले: नाही"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind पदà¥à¤§à¤¤à¥€à¤¤ कारà¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "अनà¥à¤•à¥‚ल बिलà¥à¤¡: होय"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "अनà¥à¤•à¥‚ल बिलà¥à¤¡: नाही"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG वरà¥à¤£à¥€à¤•à¥ƒà¤¤, सरà¥à¤µ asserts अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH वरà¥à¤£à¥€à¤•à¥ƒà¤¤, फकà¥à¤¤ जलद मारà¥à¤—ीय asserts अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ केले."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "सरà¥à¤µ asserts कारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ केले."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "मशीन ID पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "मशीन ID %s आहे."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "मशीन ID %s आहे."
+msgstr "सतà¥à¤° ID %s आहे."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "रनटाईम डिरेकà¥à¤Ÿà¥à¤°à¥€ %s वापरत आहे."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "सà¥à¤¥à¤¿à¤¤à¥€ डिरेकà¥à¤Ÿà¥à¤°à¥€ %s वापरत आहे."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "घटक डिरेकà¥à¤Ÿà¥à¤°à¥€ %s वापरत आहे."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ पदà¥à¤§à¤¤à¥€à¤¤ कारà¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -455,16 +362,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"ठिक आहे, तà¥à¤®à¥à¤¹à¥€ PA पà¥à¤°à¤£à¤¾à¤²à¥€ मोडमधà¥à¤¯à¥‡ चालवत आहात. कृपया लकà¥à¤·à¤¾à¤¤ ठेवा असे करणà¥à¤¯à¤¾à¤¸ फारशी "
+"आवशà¥à¤¯à¤•à¤¤à¤¾ नाही.\n"
+"असे कारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ केलà¥à¤¯à¤¾à¤¸, काहिक घटक योगà¥à¤¯à¤ªà¥à¤°à¤•à¤¾à¤°à¥‡ कारà¥à¤¯ नसेल करत असलà¥à¤¯à¤¾à¤¸ तà¥à¤¯à¤¾à¤²à¤¾ तà¥à¤®à¥à¤¹à¥€à¤š "
+"जबाबदार राहणार.\n"
+"पà¥à¤°à¤£à¤¾à¤²à¥€ मोड दोकादायक आहे यासाठी कृपया http://pulseaudio.org/wiki/"
+"WhatIsWrongWithSystemMode वाचा."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() अपयशी."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "नवीन उचà¥à¤š-बिंदूता टाइमर उपलबà¥à¤§! Bon appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -472,27 +385,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() अपयशी."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "डिमन पà¥à¤°à¤¾à¤°à¤‚भ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "विना विभाग दाखल केलà¥à¤¯à¤¾à¤¸ डिमन पà¥à¤°à¤¾à¤°à¤‚भ à¤à¤¾à¤²à¥‡, कारà¥à¤¯ करणà¥à¤¯à¤¾à¤¸ नकार."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "डिमन सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प पूरà¥à¤£ à¤à¤¾à¤²à¥‡."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "डिमन पूरà¥à¤£à¤ªà¤£à¥‡ बंद करणà¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¾à¤°à¤‚भ केले."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "डिमन नषà¥à¤Ÿ केले."
@@ -742,79 +655,79 @@ msgstr "à¤à¤•à¤¦à¤¾ दाखल करा: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "DEPRECATION WARNING: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "मारà¥à¤—: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] अवैध लॉग लकà¥à¤·à¥à¤¯ '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] अवैध लॉग सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] अवैध पà¥à¤¨à¥à¤¹ सॅमà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] अवैध rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit या पà¥à¤²à¥…टफॉरà¥à¤® वर समरà¥à¤¥à¥€à¤¤ नाही."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] अवैध सॅमà¥à¤ªà¤² सà¥à¤µà¤°à¥‚प '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] अवैध सॅमà¥à¤ªà¤² दर '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] अवैध सॅमà¥à¤ªà¤² मारà¥à¤— '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] अवैध मारà¥à¤— मॅप '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] अवैध तà¥à¤•à¤¡à¥‡ '%s' यांची à¤à¤•à¥‚ण संखà¥à¤¯à¤¾."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] अवैध तà¥à¤•à¤¡à¥à¤¯à¤¾à¤šà¥‡ आकार '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] अवैध nice सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "संयोजना फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -822,18 +735,14 @@ msgstr ""
"निशà¥à¤šà¤¿à¤¤ मà¥à¤²à¤­à¥‚त वाहिनी मॅपकडे निशà¥à¤šà¤¿à¤¤ à¤à¤•à¥‚ण मà¥à¤²à¤­à¥‚त वाहिनी पेकà¥à¤·à¤¾ वेगळे वाहिनी संखà¥à¤¯à¤¾ "
"समाविषà¥à¤Ÿà¥€à¤¤ आहे."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, 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/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "परवानगी वगळत आहे."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -843,25 +752,7 @@ msgstr "PulseAudio आवाज पà¥à¤°à¤£à¤¾à¤²à¥€"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio आवाज पà¥à¤°à¤£à¤¾à¤²à¥€ सà¥à¤°à¥‚ करा"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "PulseAudio डिमन करीता उचà¥à¤š-पà¥à¤°à¤¾à¤§à¤¾à¤¨à¥à¤¯à¤•à¥à¤°à¤® वेळपतà¥à¤°à¤• (नकारातà¥à¤®à¤• Unix nice सà¥à¤¤à¤°)"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio डिमन करीता रियल-टाइम वेळपतà¥à¤°à¤•"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "मोनो"
@@ -891,7 +782,7 @@ msgstr "पाठीमागे उजवीकडे"
#: ../src/pulse/channelmap.c:115
msgid "Low Frequency Emmiter"
-msgstr "कमी कà¥à¤°à¤¿à¤•à¥à¤µà¥‡à¤¨à¥à¤¸à¥€ सà¥à¤¤à¥à¤°à¥‹à¤¤"
+msgstr "कमी कà¥à¤°à¤¿à¤•à¥à¤µà¥‡à¤¨à¥à¤¸à¥€ सà¥à¤°à¥‹à¤¤"
#: ../src/pulse/channelmap.c:117
msgid "Front Left-of-center"
@@ -1065,33 +956,33 @@ msgstr "वरील पाठीमागचे डावे"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(अवैध)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "सà¥à¤Ÿà¤¿à¤°à¥€à¤“"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "सराऊनà¥à¤¡ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "सराऊनà¥à¤¡ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "सराऊनà¥à¤¡ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "सराऊनà¥à¤¡ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "सराऊनà¥à¤¡ 7.1"
@@ -1195,27 +1086,35 @@ msgstr "लागू केले आहे असे आढळले नाहà
msgid "Client forked"
msgstr "कà¥à¤²à¤¾à¤à¤‚ट विभाजीत केले"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1228,192 +1127,191 @@ msgstr "XOpenDisplay() अपयशी"
msgid "Failed to parse cookie data"
msgstr "कà¥à¤•à¥€ डेटा वाचणà¥à¤¯à¤¾à¤¸ अपयशी"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "संयोजना फाइल '%s' उघडणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "कà¥à¤•à¥€ दाखल केले नाही. जà¥à¤³à¤µà¤£à¥€à¤šà¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करत आहे."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "अपरिचीत वाढ '%s' करीता संदेश पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "पà¥à¤²à¥‡à¤¬à¥…क सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे केले.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "पà¥à¤²à¥‡à¤¬à¥…क सà¥à¤Ÿà¥à¤°à¥€à¤® रिकामे à¤à¤¾à¤²à¥‡."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "सरà¥à¤µà¤° करीता जà¥à¤³à¤µà¤£à¥€ डà¥à¤°à¥‡à¤¨ केली.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "सरà¥à¤µà¥à¤¹à¤° करीता जà¥à¤³à¤µà¤£à¥€ डà¥à¤°à¥‡à¤¨ केली."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() अपयशी: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() अपयशी: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() अपयशी: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() अपयशी: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ बनवले.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() अपयशी: %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ निरà¥à¤®à¤¾à¤£ केले."
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() अपयशी: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() अपयशी: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "बफर मेटà¥à¤°à¥€à¤•: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "बफर मेटà¥à¤°à¥€à¤•à¥à¤¸à¥: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "बफर मेटà¥à¤°à¥€à¤•: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "बफर मेटà¥à¤°à¥€à¤•à¥à¤¸à¥: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "उदाहरणतया spec '%s', वाहिनी नकाशा '%s' वापरत आहे.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "उदाहरणारà¥à¤¥ spec '%s', वाहिनी नकाशा '%s' वापरत आहे."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "साधन %s शी जà¥à¤³à¤²à¥‡ (%u, %s ससà¥à¤ªà¥‡à¤‚ड केले).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "साधन %s शी जà¥à¤³à¤²à¥‡ (%u, %s ससà¥à¤ªà¥‡à¤‚ड केले)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¥€: %s\n"
+msgid "Stream error: %s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® तà¥à¤°à¥à¤Ÿà¥€: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन ससà¥à¤ªà¥‡à¤‚ड केले.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन ससà¥à¤ªà¥‡à¤‚ड केले.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन पà¥à¤¨à¥à¤¹à¤¾ सà¥à¤°à¥‚ केले.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन पà¥à¤¨à¤ƒ सà¥à¤°à¥‚ केले.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® underrun.%s \n"
+msgid "Stream underrun.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® underrun.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® overrun.%s \n"
+msgid "Stream overrun.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® overrun.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® सà¥à¤°à¥‚ केले.%s \n"
+msgid "Stream started.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® started.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन %s कडे सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत केले (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® साधन %s कडे सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत केले (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "नाही "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® बफर गà¥à¤£à¤§à¤°à¥à¤® बदलले.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "सà¥à¤Ÿà¥à¤°à¥€à¤® बफर गà¥à¤£à¤§à¤°à¥à¤® बदलले.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "जà¥à¤³à¤µà¤£à¥€ सà¥à¤¥à¤¾à¤ªà¥€à¤¤ केली.%s \n"
+msgid "Connection established.%s"
+msgstr "जà¥à¤³à¤µà¤£à¥€ सà¥à¤¥à¤¾à¤ªà¥€à¤¤ केली.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() अपयशी: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() अपयशी: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() अपयशी: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() अपयशी: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() अपयशी: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() अपयशी: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "जà¥à¤³à¤µà¤£à¥€ अपयशी: %s\n"
+msgid "Connection failure: %s"
+msgstr "जà¥à¤³à¤µà¤£à¥€ अपयशी: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡.\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡."
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() अपयशी: %s\n"
+msgid "write() failed: %s"
+msgstr "write() अपयशी: %s"
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() अपयशी: %s\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "संकेत पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡, बाहेर पडत आहे."
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "संकेत पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡, बाहेर पडत आहे.\n"
-
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "विलंब पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "विलंब पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "वेळ: %0.3f sec; विलंब: %0.0f usec. \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "वेळ: %0.3f sec; विलंब: %0.0f usec."
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() अपयशी: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() अपयशी: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1495,8 +1393,10 @@ msgstr ""
"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"
@@ -1519,6 +1419,11 @@ msgstr ""
"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"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1531,136 +1436,127 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "अवैध कà¥à¤²à¤¾à¤à¤‚टचे नाव '%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "अवैध पà¥à¤¨à¥à¤¹ सॅमà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "अवैध सà¥à¤Ÿà¥à¤°à¥€à¤®à¤šà¥‡ नाव '%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "अवैध वाहिनी नकाशा '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "अवैध वाहिनी नकाशा '%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "अवैध विलंब संयोजना '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "अवैध विलंब संयोजना '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "अवैध कारà¥à¤¯ वेळ संयोजना '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "अवैध कारà¥à¤¯ वेळ संयोजना '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "अवैध पà¥à¤¨à¥à¤¹ सॅमà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "अवैध गà¥à¤£à¤§à¤°à¥à¤® '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "अपरिचीत फाइल रूपण %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "अवैध सॅमà¥à¤ªà¤² संयोजना\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "अवैध सॅमà¥à¤ªà¤² संयोजना"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "खूप जासà¥à¤¤ बाब.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "खूप जासà¥à¤¤ बाब."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "सॅमà¥à¤ªà¤² माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "फाइलसाठी सॅमà¥à¤ªà¤² माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "आवाज फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "आवाज फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "फाइलपासून चाचणी संयोजना माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "सावधानता: फाइलपासून वाहिनी नकाशा ओळखणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "वाहिनी नकाशा सॅमà¥à¤ªà¤² संयोजनाशी जà¥à¤³à¤¤ नाही\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "वाहिनी नकाशा चाचणी संयोजनाशी जà¥à¤³à¤¤ नाही"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "सावधानता: वाहिनी नकाशा फाइलमधà¥à¤¯à¥‡ लिहणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® सॅमà¥à¤ªà¤² संयोजना '%s' शी उघडत आहे.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® चाचणी संयोजना '%s' व वाहिनी नकाशा '%s' सह उघडत आहे."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "रेकॉरà¥à¤¡à¥€à¤‚ग"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() अपयशी."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() अपयशी.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() अपयशी."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() अपयशी."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() अपयशी: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() अपयशी.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rrttime_new() अपयशी."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() अपयशी."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1687,7 +1583,12 @@ msgstr "पà¥à¤¨à¥à¤¹à¤¾ चालू करणà¥à¤¯à¤¾à¤¸ अपयशी: %
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "सावधानता: आवाज सरà¥à¤µà¤° सà¥à¤¥à¤¾à¤¨à¥€à¤¯ नाही, ससà¥à¤ªà¥‡à¤‚ड करत नाही.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "जà¥à¤³à¤µà¤£à¥€ अपयशी: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡, बाहेर पडत आहे.\n"
@@ -1727,32 +1628,47 @@ msgstr ""
"libpulse %s शी कंपाई केले\n"
"libpulse %s शी लिंक केले\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "आकडेवारी पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() अपयशी.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() अपयशी.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() अपयशी.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "आकडेवारी पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "वरà¥à¤¤à¤®à¤¾à¤¨à¤•à¥à¤·à¤£à¥€ वापरणीत आहे: %2$s बाईटसॠसमाविषà¥à¤Ÿà¥€à¤¤ à¤à¤•à¥‚ण %1$u बà¥à¤²à¥‰à¤•à¥à¤¸à¥ .\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "संपूरà¥à¤£ कारà¥à¤¯à¤•à¤¾à¤³à¤µà¥‡à¤³à¥€ लागू केले: %2$s बाईटसॠसमाविषà¥à¤Ÿà¥€à¤¤ à¤à¤•à¥‚ण %1$u बà¥à¤²à¥‰à¤•à¥à¤¸à¥ .\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "सॅपल कॅशे आकार: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "सरà¥à¤µà¤° माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "सरà¥à¤µà¤° माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1771,16 +1687,16 @@ msgstr ""
"सरà¥à¤µà¤° आवृतà¥à¤¤à¥€: %s\n"
"मà¥à¤²à¤­à¥‚त सॅमà¥à¤ªà¤² संयोनजा: %s\n"
"मà¥à¤²à¤­à¥‚त वाहिनी नकाशा: %s\n"
-"मà¥à¤²à¤­à¥‚त सिंक: %s\n"
-"मà¥à¤²à¤­à¥‚त सà¥à¤¤à¥à¤°à¥‹à¤¤: %s\n"
+"मà¥à¤²à¤­à¥‚त सींक: %s\n"
+"मà¥à¤²à¤­à¥‚त सà¥à¤°à¥‹à¤¤: %s\n"
"कà¥à¤•à¥€à¤œ: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "sink माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "sink माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1819,22 +1735,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tसंकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती:\n"
+msgstr "\tपोरà¥à¤Ÿà¤¸à¥:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tसकà¥à¤°à¥€à¤¯ संकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती: %s\n"
+msgstr "\tसकà¥à¤°à¥€à¤¯ पोरà¥à¤Ÿ: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "सà¥à¤°à¥‹à¤¤ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1873,20 +1789,20 @@ msgstr ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "विभाग माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "विभाग माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1903,12 +1819,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "कà¥à¤²à¤¾à¤à¤‚ट माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "कà¥à¤²à¤¾à¤à¤‚ट माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1923,12 +1839,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "कारà¥à¤¡ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "कारà¥à¤¡ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1945,22 +1861,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tसंकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tसकà¥à¤°à¥€à¤¯ संकà¥à¤·à¤¿à¤ªà¥à¤¤ माहिती: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "सिंक इनपà¥à¤Ÿ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "सींक इंपà¥à¤Ÿ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1997,12 +1913,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ आऊटपà¥à¤Ÿ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "सà¥à¤°à¥‹à¤¤ आऊटपà¥à¤Ÿ माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2031,12 +1947,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "सॅमà¥à¤ªà¤² माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "सॅमà¥à¤ªà¤² माहिती पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2067,22 +1983,26 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "अपयशी: %s\n"
+msgid "Failure: %s"
+msgstr "अपयशी: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "सॅमà¥à¤ªà¤² अपलोड करणà¥à¤¯à¤¾à¤¸ अपयशी: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "सॅमà¥à¤ªà¤² अपलोड करणà¥à¤¯à¤¾à¤¸ अपयशी: %s"
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "फाइलची अयोगà¥à¤¯ समापà¥à¤¤à¥€"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "फाइलची अयोगà¥à¤¯ समापà¥à¤¤à¥€\n"
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡, बाहेर पडत आहे."
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2090,15 +2010,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2114,13 +2040,21 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2130,7 +2064,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2141,81 +2075,108 @@ msgstr ""
"libpulse %s सह कंपाईल केले\n"
"libpulse %s सह जà¥à¤³à¤²à¥‡\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "कृपया दाखल करणà¥à¤¯à¤¾à¤œà¥‹à¤—ी तातà¥à¤ªà¥‚रà¥à¤¤à¥€ फाइल निशà¥à¤šà¤¿à¤¤ करा\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "कृपया दाखल करणà¥à¤¯à¤¾à¤œà¥‹à¤—ी तातà¥à¤ªà¥‚रà¥à¤¤à¥€ फाइल निरà¥à¤¦à¥‡à¤¶à¥€à¤¤ करा"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "आवाज फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "आवाज फाइल उघडणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "%s सà¥à¤Ÿà¥à¤°à¥€à¤® सॅमà¥à¤ªà¤² संयोजना '%s' शी उघडत आहे.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "सावधानता: फाइलपासून चाचणी संयोजना ओळखणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "चालविणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "चालवणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "काढूण टाकणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "काढून टाकणà¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सिंक इनपà¥à¤Ÿ निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क व सिंक निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सींक इंपà¥à¤Ÿ निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क व सींक निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ आऊट इनडेकà¥à¤¸ सà¥à¤¤à¥à¤°à¥‹à¤¤ व सà¥à¤¤à¥à¤°à¥‹à¤¤ निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ आऊटपà¥à¤Ÿ इंडेकà¥à¤¸ सà¥à¤°à¥‹à¤¤ व सà¥à¤°à¥‹à¤¤ निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विभागाचे नाव व बाब निशà¥à¤šà¤¿à¤¤ करावे लागेल.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विभागाचे नाव व बाब निशà¥à¤šà¤¿à¤¤ करावे लागेल."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विभाग निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क निशà¥à¤šà¤¿à¤¤ करावे लागेल\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विभाग इंडेकà¥à¤¸à¥ निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"तà¥à¤®à¥à¤¹à¥€ à¤à¤•à¤¾à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ सिंक निशà¥à¤šà¤¿à¤¤ करू शकत नाही. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ बूलीयन मूलà¥à¤¯ निशà¥à¤šà¤¿à¤¤ करावे "
-"लागेल.\n"
+"तà¥à¤®à¥à¤¹à¥€ à¤à¤•à¤¾à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ सींक निशà¥à¤šà¤¿à¤¤ करू शकत नाही. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ बूलीयन मूलà¥à¤¯ निशà¥à¤šà¤¿à¤¤ करावे लागेल."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ कारà¥à¤¡à¤šà¥‡ नाव/इंडेकà¥à¤¸à¥ व पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सींक नाव/इंडेकà¥à¤¸à¥ व पोरà¥à¤Ÿà¤šà¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सà¥à¤°à¥‹à¤¤ नाव/इंडेकà¥à¤¸à¥ व पोरà¥à¤Ÿà¤šà¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "वैध आदेश निशà¥à¤šà¤¿à¤¤ केले नाही.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सींक नाव/इंडेकà¥à¤¸à¥ व पोरà¥à¤Ÿà¤šà¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() अपयशी: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "अवैध खंडाची संयोजना"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सà¥à¤°à¥‹à¤¤ नाव/इंडेकà¥à¤¸à¥ व खंडाचे नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सींक इंपà¥à¤Ÿ इंडेकà¥à¤¸à¥ व सींक निशà¥à¤šà¤¿à¤¤ करावे लागेल"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "अवैध सींक इंपà¥à¤Ÿ इंडेकà¥à¤¸à¥"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सींक नाव/इंडेकà¥à¤¸à¥ व पोरà¥à¤Ÿà¤šà¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सà¥à¤°à¥‹à¤¤ नाव/इंडेकà¥à¤¸à¥ व पोरà¥à¤Ÿà¤šà¥‡ नाव निशà¥à¤šà¤¿à¤¤ करावे लागेल"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सींक इंपà¥à¤Ÿ निरà¥à¤¦à¥‡à¤¶à¤¾à¤‚क व सींक निशà¥à¤šà¤¿à¤¤ करावे लागेल"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "अवैध सींक इंपà¥à¤Ÿ इंडेकà¥à¤¸à¥ संयोजना"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "वैध आदेश निशà¥à¤šà¤¿à¤¤ केले नाही."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2249,12 +2210,12 @@ msgstr "सरà¥à¤µà¤°: %s\n"
#: ../src/utils/pax11publish.c:110
#, c-format
msgid "Source: %s\n"
-msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤: %s\n"
+msgstr "सà¥à¤°à¥‹à¤¤: %s\n"
#: ../src/utils/pax11publish.c:112
#, c-format
msgid "Sink: %s\n"
-msgstr "सिंक: %s\n"
+msgstr "सींक: %s\n"
#: ../src/utils/pax11publish.c:114
#, c-format
@@ -2296,48 +2257,48 @@ msgstr "कà¥à¤•à¥€ डेटा दाखल करणà¥à¤¯à¤¾à¤¸ अपयà¤
msgid "Not yet implemented.\n"
msgstr "अजूनही लागू केले नाही.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "PulseAudio डिमन कारà¥à¤¯à¤°à¤¤ नाही, किंवा सतà¥à¤° डिमन नà¥à¤°à¥‚प कारà¥à¤¯à¤°à¤¤ नाही."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio डिमन पूरà¥à¤£à¤ªà¤£à¥‡ नषà¥à¤Ÿ करणà¥à¤¯à¤¾à¤¸ अपयशी."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "डिमन पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦ देत नाही."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn कà¥à¤²à¥‚प करीता पà¥à¤°à¤µà¥‡à¤¶ पà¥à¤°à¤¾à¤ªà¥à¤¯ अशकà¥à¤¯."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2352,7 +2313,7 @@ msgstr ""
"POLLOUT दà¥à¤µà¤¾à¤°à¥‡ सजà¥à¤œ होणे शकà¥à¤¯ आहे -- तरी परसà¥à¤ªà¤° snd_pcm_avail() ने 0 पूरविले किंवा इतर "
"मूलà¥à¤¯ < min_avail असावे."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2368,129 +2329,22 @@ msgstr ""
"मूलà¥à¤¯ < min_avail असावे."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "बंद करा"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
-msgstr "High Fidelity Playback (A2DP)"
+msgstr "हाय फिडेलिटी पà¥à¤²à¥‡à¤¬à¥…क (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "हाय फिडीलीटी कॅपचर (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
-msgstr "Telephony Duplex (HSP/HFP)"
+msgstr "टेलिफोनी डà¥à¤¯à¥à¤ªà¥à¤²à¥‡à¤•à¥à¤¸à¥ (HSP/HFP)"
#: ../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 a75efed0..073423cb 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -2,22 +2,26 @@
# Copyright (C) 2009 THE pulseaudio.master-tx'S COPYRIGHT HOLDER
# This file is distributed under the same license as the pulseaudio.master-tx package.
# Geert Warrink <geert.warrink@onsnet.nu>, 2009.
-# , fuzzy
#
#
msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-15 21:04+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 16:03+0200\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
-"Language-Team: Dutch <nl@li.org>\n"
+"Language-Team: nl <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: \n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -30,7 +34,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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -43,7 +47,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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -56,9 +60,18 @@ msgstr ""
"Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit "
"probleem a.u.b aan de ALSA ontwikkelaars."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+"Houdt altijd ten minste een afvoer ingeladen zelfs als het de null afvoer is."
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "Dummy output"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Virtuele LADSPA afoer"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -68,12 +81,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<naam voor de afoer> sink_properties=<eigenschappen van de afoer> "
+"master=<naam van de te filteren afoer> format=<sample formaat> rate=<sample "
+"snelheid> channels=<aantal kanalen> channel_map=<kanaal map> plugin=<ladspa "
+"plugin naam> label=<ladspa plugin label> control=<met kommas gescheiden "
+"lijst van input controle waarden>"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "Geklokte MULL afvoer"
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "Null output"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Intern geluid"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -89,220 +115,92 @@ msgstr "Kon die nieuwe dl lader niet toekennen."
msgid "Failed to add bind-now-loader."
msgstr "Kon bind-now-loader niet toevoegen."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Kan niet verbinden met systeem bus: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Kan geen bezoeker krijgen van PID: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Kan UID niet instellen op caller object."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Kon geen CK sessie krijgen."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Kan UID niet instellen op sessie object."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Kan PolKitAction niet toekennen."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Kan action_id niet instellen"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Kan PolKitContext niet toekennen."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Kan PolKitContext niet intialiseren: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Kon niet bepalen of bezoeker gemachtigd is: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Kan geen authorisatie krijgen: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit antwoordde met '%s'"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Ontving signaal %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Afsluiten."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Kon gebruiker '%s' niet vinden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Kon groep '%s' niet vinden."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Aanmaken van '%s': %s mislukte"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Veranderen van groeps lijst: '%s' mislukte"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Veranderen van GID: %s mislukte"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Veranderen van UID: %s mislukte"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Root rechten met succes laten vervallen."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "Systeem brede mode wordt op dit platform niet ondersteund."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) mislukte: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Analyseren van de commandoregel mislukte."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit kent ons acquire-high-priority rechten toe."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit weigert ons acquire-high-priority rechten."
-
-#: ../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:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit weigert ons acquire-real-time rechten."
-
-#: ../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 ""
-"Aangeroepen met SUID root en real-time en/of high-priority inplannen was "
-"verzocht in de configuratie. Echter de nodige rechten ontbreken:\n"
-"We zijn niet in groep '%s', PolicyKit weigert om ons de gevraagde rechten te "
-"geven en we hebben geen rect om de RLIMIT_NICE/RLIMIT_RTPRIO limieten te "
-"verhogen.\n"
-"Voor het aanzetten van real-time/high-priority inplannen mort je juiste "
-"PolicyKit privileges hebben, of lid van '%s\" worden, of de RLIMIT_NICE/"
-"RLIMIT_RTPRIO limieten voor deze gebruiker verhogen."
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "RLIMIT_RTPRIO met succes verhoogd"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO mislukte: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Opgeven CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Daemon draait niet"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon draait met PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Afschieten mislukt van daemon: '%s'"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -310,151 +208,156 @@ msgstr ""
"Dit programma is niet bedoeld om als root gedraaid te worden (behalve als --"
"system is opgegeven)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Root rechten vereisd"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start wordt niet ondersteund voor systeem instances"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Draaiend in systeem mode, geforceerd uitzetten van SHM mode!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Verkrijgen van stdio mislukte."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe mislukte: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() mislukte: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() mislukte: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Daemon opstarten mislukte."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Daemon met succes opgestart."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dit is PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Compilatie host: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilatie CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Draaiend op host: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU's gevonden."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Pagina grootte is %lu bytes"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Gecompileerd met Valgrind ondersteuning: ja"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Gecompileerd met Valgrind ondersteuning: nee"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Draaiend in valgrind mode: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimaal gebouwd: ja"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Optimaak gebouwd: nee"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG gedefinieerd, alle verklaringen uitgezet."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH gedefinieerd, alleen snel pad verklaringen uitgezet."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Alle verklaringen aangezet."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Machine ID verkrijgen mislukte"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "Machine ID is: %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "Machine ID is: %s."
+msgstr "Sessie ID is: %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Gebruik van runtime map %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Verbruik van state map %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Gebruik van module map %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Draaiend in systeem mode: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -463,16 +366,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"OK, dus je draait PA in systeem mode. Merk a.u.b. op dat je dit "
+"waarschijnlijk niet moet doen.\n"
+"Als je het toch doet dan is het je eigen schuld als dingen niet werken zoals "
+"verwacht.\n"
+"Lees a.u.b.http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode voor een "
+"uitleg waarom systeem mode gewoonlijk een slecht idee is."
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() mislukte."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -480,27 +389,27 @@ msgstr ""
"Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met "
"aangezette high-resolution timers!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() mislukte."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Initialiseren van de daemon mislukte."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon opgestart zonder geladen modules, dat werkt niet."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Daemon opstarten is klaar."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Daemon afsluiten is begonnen."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Daemon is afgesloten."
@@ -760,124 +669,104 @@ msgstr "Laad eenmaal: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "OUDERE VERSIE WAARSCHUWING: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Pad: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldig log doel '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldig log niveau '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldige her-bemonster methode '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldige rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
-msgstr ""
+msgstr "[%s:%u] rlimit wordt niet ondersteund op dit platform."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldig bemonster formaat '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldige bemonster snelheid '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldige bemonster kanalen '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldige kanalen map '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldig aantal fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldige fragment grootte '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
-msgstr ""
+msgstr "[%s:%u] Ongeldig nice niveau '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
-msgstr ""
+msgstr "Openen van configuratie bestand %s mislukte."
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"De opgegeven standaard kanalen map heeft een ander aantal kanalen dan de "
+"opgegeven standaard aantal kanalen."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
-msgstr ""
-
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr ""
+msgstr "### Lees in het configuratie bestand: %s ###\n"
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr ""
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Rechten opschonen."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "PulseAudio geluidssysteem"
#: ../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 ""
-
-#: ../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 ""
+msgstr "Start het PulseAudio geluidssysteem"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1081,33 +970,33 @@ msgstr "boven achter links"
msgid "Top Rear Right"
msgstr "boven achter rechts"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(ongeldig)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1211,222 +1100,229 @@ msgstr "Implementatie ontbreekt"
msgid "Client forked"
msgstr "Client afgesplitst"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
-msgstr ""
+msgstr "XOpenDisplay() mislukte"
#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
-msgstr ""
+msgstr "Analyseren van cookie data mislukte"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
-msgstr ""
+msgstr "Open van configuratie bestand '%s' mislukte: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
-msgstr ""
+msgstr "Geen cookie geladen. Probeer zonder cookie te verbinden."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
-msgstr ""
+msgstr "Ontving boodschap voor onbekende extensie '%s'"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
+msgid "Failed to drain stream: %s"
+msgstr "Afvoeren stroom %s mislukte"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr ""
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Afspelen van afgevoerde stroom."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr ""
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Vervinding naar server afvoeren."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr ""
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr ""
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() mislukte: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr ""
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() mislukte: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr ""
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() mislukte: %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Stroom met succes aangemaakt."
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr ""
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() mislukte: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr ""
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Buffer metriek: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr ""
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Buffer metriek: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr ""
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Gebruik bemonster spec '%s', kanaal map '%s'."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr ""
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Verbonden met apparaat %s (%u, %sopgeschort)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr ""
+msgid "Stream error: %s"
+msgstr "Stroom fout: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr ""
+msgid "Stream device suspended.%s"
+msgstr "Stroom apparaat opgeschort.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr ""
+msgid "Stream device resumed.%s"
+msgstr "Stroom apparaat hervat.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr ""
+msgid "Stream underrun.%s"
+msgstr "Stroom te weinig data.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr ""
+msgid "Stream overrun.%s"
+msgstr "Stroom data overschrijding.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr ""
+msgid "Stream started.%s"
+msgstr "Stroom gestart.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr ""
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Stroom verplaatst naar apparaat %s (%u, %sopgeschort).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
-msgstr ""
+msgstr "niet"
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr ""
+msgid "Stream buffer attributes changed.%s"
+msgstr "Stroom buffer attributen veranderden.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr ""
+msgid "Connection established.%s"
+msgstr "Verbinding bereikt.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr ""
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() mislukte: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr ""
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() mislukte: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr ""
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() mislukte: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr ""
+msgid "Connection failure: %s"
+msgstr "Verbindingsfout: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr ""
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Kreeg EOF."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr ""
+msgid "write() failed: %s"
+msgstr "write() mislukte: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr ""
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Ontving signaal, afsluiten."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr ""
+msgid "Failed to get latency: %s"
+msgstr "Latentie krijgen mislukte: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr ""
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "Tijd: %0.3f sec; Latentie: %0.0f usec."
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr ""
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() mislukte: %s"
#: ../src/utils/pacat.c:605
#, c-format
@@ -1487,6 +1383,64 @@ msgid ""
" --file-format=FFORMAT Record/play formatted PCM data.\n"
" --list-file-formats List available file formats.\n"
msgstr ""
+"%s [opties]\n"
+"\n"
+" -h, --help Laat deze hulp zien\n"
+" --version Laat versie zien\n"
+"\n"
+" -r, --record Maak een verbinding voor opnemen\n"
+" -p, --playback Maak een verbinding voor afspelen\n"
+"\n"
+" -v, --verbose Zet breedsprakigheid aan\n"
+"\n"
+" -s, --server=SERVER De naam van de server waarmee "
+"verbonden moet worden\n"
+" -d, --device=DEVICE De naam van de afoer/bron waarmee "
+"verbonden moet worden\n"
+" -n, --client-name=NAME Hoe wordt deze cliënt op de server "
+"genoemd\n"
+" --stream-name=NAME Hoe wordt deze stroom op de server "
+"genoemd\n"
+" --volume=VOLUME Geef het begins (lineare) volume in "
+"reeks 0...65536\n"
+" --rate=SAMPLERATE De bemonstersnelheid in Hz "
+"(standaard 44100)\n"
+" --format=SAMPLEFORMAT Het bemonster type, een van s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (standaard "
+"s16ne)\n"
+" --channels=CHANNELS Het aantal kanalen, 1 voor mono, 2 "
+"voor stereo\n"
+" (standaard 2)\n"
+" --channel-map=CHANNELMAP Kanaal map te gebruiken in plaats "
+"van de standaard\n"
+" --fix-format Neem het bemonsteringsformaat over "
+"van de afoer waar de stroom\n"
+" mee verbonden is.\n"
+" --fix-rate Neem de bemonsteringssnelheid over "
+"van de afvoer waar de stroom\n"
+" mee verbonden is.\n"
+" --fix-channels Neem het aantal kanalen en de kanaal "
+"map over\n"
+" van de afvoer waar de stroom mee "
+"verbonden is.\n"
+" --no-remix Doe geen upmix of downmix van "
+"kanalen.\n"
+" --no-remap Map kanalen met index in plaats van "
+"met naam.\n"
+" --latency=BYTES Verzoek de opgegeven latentie in "
+"bytes.\n"
+" --process-time=BYTES Verzoek de opgegeven proces tijd per "
+"verzoek in bytes.\n"
+" --property=PROPERTY=VALUE Zet de opgegeven eigenschap op de "
+"opgegeven waarde.\n"
+" --raw Opnemen/afspelen van ruwe PCM data.\n"
+" --file-format=FFORMAT Opnemen/afspelen van geformateerde "
+"data.\n"
+" --list-file-formats Laat beschikbare bestandsformaten "
+"zien.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1495,170 +1449,174 @@ msgid ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pacat %s\n"
+"Gecompileerd met libpulse %s\n"
+"Gelinkt met libpulse %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Ongeldige cliënt naam '%s'."
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "Ongeldige resample methode '%s'."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Ongeldige stroom naam '%s'."
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr ""
+msgid "Invalid channel map '%s'"
+msgstr "Ongeldige kanaal map '%s'."
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr ""
+msgid "Invalid latency specification '%s'"
+msgstr "Ongeldige latentie specificatie '%s'."
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr ""
+msgid "Invalid process time specification '%s'"
+msgstr "Ongeldige proces tijd specificatie '%s'."
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Ongeldige resample methode '%s'."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Ongeldige eigenschap '%s'."
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Ongeldig bestandsformaat %s"
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr ""
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Ongeldige bemonster specificatie"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr ""
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr ""
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr ""
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Te veel argumenten."
-#: ../src/utils/pacat.c:930
-msgid "Failed to generate sample specification for file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "Bemonster specificatie voor bestand aanmaken mislukte."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "Analyseren van de commandoregel mislukte."
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "Openen van geluidsbestand mislukte."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Waarschuwing: opgegeven bemonster specificatie zal overschreven worden met "
+"de specificatie van het bestand."
-#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
-msgid "Failed to determine sample specification from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Bepalen van bemonster specificatie van het bestand mislukte."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Waarschuwing: Bepalen van kanaal map van bestand mislukte."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr ""
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "Kanaal map komt niet overeen met bemonster specificatie."
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Waarschuwing: schrijven van kanaal map naar bestand mislukte."
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr ""
+"Openen van een %s stroom met bemonster specificatie '%s' en kanaal map '%s'."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
-msgstr ""
+msgstr "opnemen"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
-msgstr ""
+msgstr "afspelen"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() mislukte."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr ""
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() mislukte."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_cotext_new() mislukte."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
-msgstr "pa_core_new() mislukte."
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() mislukte: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr ""
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() mislukte."
-#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
-#, c-format
-msgid "pa_mainloop_run() failed.\n"
-msgstr ""
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() mislukte."
#: ../src/utils/pasuspender.c:81
#, c-format
msgid "fork(): %s\n"
-msgstr ""
+msgstr "fork(): %s\n"
#: ../src/utils/pasuspender.c:92
#, c-format
msgid "execvp(): %s\n"
-msgstr ""
+msgstr "execvp(): %s\n"
#: ../src/utils/pasuspender.c:109
#, c-format
msgid "Failure to suspend: %s\n"
-msgstr ""
+msgstr "Opschorten mislukte: %s\n"
#: ../src/utils/pasuspender.c:124
#, c-format
msgid "Failure to resume: %s\n"
-msgstr ""
+msgstr "Vervolgen mislukte: %s\n"
#: ../src/utils/pasuspender.c:147
#, c-format
msgid "WARNING: Sound server is not local, not suspending.\n"
-msgstr ""
+msgstr "WAARSCHUWING: Geluidsserver is niet locaal, geen opschorten.\n"
+
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Verbonding mislukte: %s\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
-msgstr ""
+msgstr "Kreeg SIGINT, verlaten.\n"
#: ../src/utils/pasuspender.c:194
#, c-format
msgid "WARNING: Child process terminated by signal %u\n"
-msgstr ""
+msgstr "WAARSCHUWING: kind proces afgesloten door signaal %u\n"
#: ../src/utils/pasuspender.c:212
#, c-format
@@ -1671,6 +1629,13 @@ msgid ""
"to\n"
"\n"
msgstr ""
+"%s [opties] ... \n"
+"\n"
+" -h, --help Laat deze hulp zien\n"
+" --version Laat versie zien\n"
+" -s, --server=SERVER De naam van de server waarmee "
+"verbonden wordt\n"
+"\n"
#: ../src/utils/pasuspender.c:248
#, c-format
@@ -1679,33 +1644,53 @@ msgid ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pasuspender %s\n"
+"Gecompileerd met libpulse %s\n"
+"Gelinkt met libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr ""
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() mislukte.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() mislukte.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() mislukte.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "Verkrijgen van statistiek %s mislukte"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
-msgstr ""
+msgstr "Op dit moment in gebruik: %u blokken bevattende in totaal %s bytes.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
+"Toegewezen tijdens de gehele levensduur: %u blokken bevattende in totaal %s "
+"butes.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
-msgstr ""
+msgstr "Bemonstering cache grootte: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr ""
+msgid "Failed to get server information: %s"
+msgstr "Server informatie verkrijgen mislukte: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1718,13 +1703,22 @@ msgid ""
"Default Source: %s\n"
"Cookie: %08x\n"
msgstr ""
+"Gebruikersnaam: %s\n"
+"Hostnaam: %s\n"
+"Servernaam: %s\n"
+"Server versie: %s\n"
+"Standaard bemonsterings specificatie: %s\n"
+"Standaard kanaal map: %s\n"
+"Standaard afvoer: %s\n"
+"Standaard bron: %s\n"
+"Cookie: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr ""
+msgid "Failed to get sink information: %s"
+msgstr "Verkrijgen afvoer informatie mislukte: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1745,23 +1739,40 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Afvoer #%u\n"
+"\tToestand: %s\n"
+"\tNaam: %s\n"
+"\tBeschrijving: %s\n"
+"\tDriver: %s\n"
+"\tBemonsterings specificatie: %s\n"
+"\tKanaal map: %s\n"
+"\tModule eigenaar: %u\n"
+"\tDemping: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balans %0.2f\n"
+"\tBasis volume: %s%s%s\n"
+"\tMonitor bron: %s\n"
+"\tLatentie: %0.0f usec, ingesteld %0.0f usec\n"
+"\tVlaggen: %s%s%s%s%s%s\n"
+"\tEigenschappen:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, c-format
msgid "\tPorts:\n"
-msgstr ""
+msgstr "\tPoorten:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "Auteur: %s\n"
+msgstr "\tActieve poort: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr ""
+msgid "Failed to get source information: %s"
+msgstr "Verkrijgen van bron informatie mislukte: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1782,21 +1793,38 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Bron #%u\n"
+"\tToestand: %s\n"
+"\tNaam: %s\n"
+"\tBeschrijving: %s\n"
+"\tDriver: %s\n"
+"\tBemonsterings specificatie: %s\n"
+"\tKanaal map: %s\n"
+"\tModule eigenaar: %u\n"
+"\tDemping: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balans %0.2f\n"
+"\tBasis volume: %s%s%s\n"
+"\tMonitor afvoer: %s\n"
+"\tLatentie: %0.0f usec, ingesteld %0.0f usec\n"
+"\tVlaggen: %s%s%s%s%s%s\n"
+"\tEigenschappen:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
-msgstr ""
+msgstr "n.v.t."
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr ""
+msgid "Failed to get module information: %s"
+msgstr "Verkrijgen van module informatie mislukte: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1806,13 +1834,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Module #%u\n"
+"\tNaam: %s\n"
+"\tArgument: %s\n"
+"\tGebruiks teller: %s\n"
+"\tEigenschappen:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr ""
+msgid "Failed to get client information: %s"
+msgstr "Verkrijgen van cliënt informatie mislukte: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1821,13 +1855,18 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Cliënt #%u\n"
+"\tDriver: %s\n"
+"\tModule eigenaar: %s\n"
+"\tEigenschappen:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr ""
+msgid "Failed to get card information: %s"
+msgstr "Verkrijgen van kaart informatie mislukte: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1837,23 +1876,29 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Kaart #%u\n"
+"\tNaam: %s\n"
+"\tDriver: %s\n"
+"\tModule eigenaar: %s\n"
+"\tEigenschappen:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tProfielen:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
-msgstr ""
+msgstr "\tActieve profiel: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr ""
+msgid "Failed to get sink input information: %s"
+msgstr "Verkrijgen van afvoer input informatie mislukte: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1873,13 +1918,29 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Afvoer input #%u\n"
+"\tDriver: %s\n"
+"\tModule eigenaar: %s\n"
+"\tCliënt: %s\n"
+"\tSink: %u\n"
+"\tBemonsterings specificatie: %s\n"
+"\tKanaal map: %s\n"
+"\tDemping: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balans %0.2f\n"
+"\tBuffer latentie: %0.0f usec\n"
+"\tAfvoer latentie: %0.0f usec\n"
+"\tHerbemonsterings methode: %s\n"
+"\tEigenschappen:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr ""
+msgid "Failed to get source output information: %s"
+msgstr "Verkrijgen van bron output informatie mislukte: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1895,13 +1956,25 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Bron output #%u\n"
+"\tDriver: %s\n"
+"\tModule eigenaaar: %s\n"
+"\tCliënt: %s\n"
+"\tBron: %u\n"
+"\tBemonsterings specificatie: %s\n"
+"\tKanaal map: %s\n"
+"\tBuffer latentie: %0.0f usec\n"
+"\tBron latentie: %0.0f usec\n"
+"\tHerbemonsterings methode: %s\n"
+"\tEigenschappen:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr ""
+msgid "Failed to get sample information: %s"
+msgstr "Verkrijgen van bemonsterings informatie mislukte: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -1918,22 +1991,39 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
+"Monster #%u\n"
+"\tNaam: %s\n"
+"\tBemonsterings specificatie: %s\n"
+"\tKanaal map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balans %0.2f\n"
+"\tDuur: %0.1fs\n"
+"\tGrootte: %s\n"
+"\tTraagheid: %s\n"
+"\tBestandsnaam: %s\n"
+"\tEigenschappen:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr ""
+msgid "Failure: %s"
+msgstr "Mislukt: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr ""
+msgid "Failed to upload sample: %s"
+msgstr "Uploaden van monster mislukte: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr ""
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "Voortijdig einde van bestand"
+
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Ontving SIGINT, afsluiten."
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:869
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1942,15 +2032,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1960,83 +2056,150 @@ msgid ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
msgstr ""
+"%s [opties] stat\n"
+"%s [opties] list\n"
+"%s [opties] exit\n"
+"%s [opties] upload-sample BESTANDNAAM [NAAM]\n"
+"%s [opties] play-sample NAAM [AFVOER]\n"
+"%s [opties] remove-sample NAAM\n"
+"%s [opties] move-sink-input AFVOERINPUT AFVOER\n"
+"%s [opties] move-source-output BRONOUTPUT BRON\n"
+"%s [opties] load-module NAAM [ARG ...]\n"
+"%s [opties] unload-module MODULE\n"
+"%s [opties] suspend-sink AFVOER 1|0\n"
+"%s [opties] suspend-source BRON 1|0\n"
+"%s [opties] set-card-profile KAART PROFIEL\n"
+"%s [opties] set-sink-port AFVOER POORT\n"
+"%s [opties] set-source-port BRON POORT\n"
+"%s [opties] set-sink-volume AFVOER VOLUME\n"
+"%s [opties] set-source-volume BRON VOLUME\n"
+"%s [opties] set-sink-input-volume AFVOERINPUT VOLUME\n"
+"%s [opties] set-sink-mute AFVOER 1|0\n"
+"%s [opties] set-source-mute BRON 1|0\n"
+"%s [opties] set-sink-input-mute AFVOERINPUT 1|0\n"
+"\n"
+" -h, --help Laat deze hulp zien\n"
+" --version Laat versie zien\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
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pactl %s\n"
+"Gecompileerd met libpulse %s\n"
+"Gelint met libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr ""
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "Geef a.u.b een bemonsterings bestand op om te laden"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr ""
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "Openen geluidsbestand mislukte."
-#: ../src/utils/pactl.c:951
-msgid "Warning: Failed to determine sample specification from file.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
msgstr ""
+"Waarschuwing: Bepalen van bemonsterings specificatie van bestand mislukte."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr ""
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "Je moet een monster naam opgeven om af te spelen"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr ""
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Je moet een monster naam opgeven om te verwijderen"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr ""
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Je moet een afvoer input index en een afvoer opgeven"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr ""
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Je moet een bron output index en een bron opgeven"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr ""
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Je moet een module naam en argumenten opgeven."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr ""
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "Je moet een module index opgeven"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
+"Je kunt niet meer dan een afvoer opgeven. Je moet een boolean waarde opgeven"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
+"Je kunt niet meerd dan een bron opgeven. Je moet een boolean waarde opgeven."
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
-msgstr ""
+#: ../src/utils/pactl.c:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Je moet een kaart naam/index en een profiel naam opgeven"
-#: ../src/utils/pactl.c:1073
-msgid "You have to specify a sink name/index and a port name\n"
-msgstr ""
+#: ../src/utils/pactl.c:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Je moet een afvoer naam/index en een poort naam opgeven"
-#: ../src/utils/pactl.c:1084
-msgid "You have to specify a source name/index and a port name\n"
-msgstr ""
+#: ../src/utils/pactl.c:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Je moet een bron naam/index en een poort naam opgeven"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr ""
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Je moet een afvoer naam/index en een volume opgeven"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr ""
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Ongeldige volume opgave"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Je moet een bron naam/index en een volume opgeven"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Je moet een afvoer input index en een volume opgeven"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Ongeldige afvoer input index"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Je moet een afvoer naam/index en een dempings boolean opgeven"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Je moet een bron naam/index en een dempings boolean opgeven"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Je moet een afvoer input index en een dempings boolean opgeven"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Ongeldige afvoer input index opgave"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Geen geldig commando opgegeven."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2049,109 +2212,118 @@ msgid ""
"variables and cookie file.\n"
" -r Remove PulseAudio data from X11 display\n"
msgstr ""
+"%s [-D scherm] [-S server] [-O afvoer] [-I bron] [-c bestand] [-d|-e|-i|-"
+"r]\n"
+"\n"
+" -d Laat huidige PulseAudio data zien horende bij X11 scherm (standaard)\n"
+" -e Exporteer locale PulseAudio data naar X11 scherm\n"
+" -i Importeer PulseAudio data van X11 scherm naar locale omgevings "
+"variabelen en cookie bestand.\n"
+" -r Verwijder PulseAudio data van X11 scherm\n"
#: ../src/utils/pax11publish.c:94
#, c-format
msgid "Failed to parse command line.\n"
-msgstr ""
+msgstr "Commando regel ontleden mislukte.\n"
#: ../src/utils/pax11publish.c:108
#, c-format
msgid "Server: %s\n"
-msgstr ""
+msgstr "Server: %s\n"
#: ../src/utils/pax11publish.c:110
#, c-format
msgid "Source: %s\n"
-msgstr ""
+msgstr "Bron: %s\n"
#: ../src/utils/pax11publish.c:112
#, c-format
msgid "Sink: %s\n"
-msgstr ""
+msgstr "Afvoer: %s\n"
#: ../src/utils/pax11publish.c:114
#, c-format
msgid "Cookie: %s\n"
-msgstr ""
+msgstr "Cookie: %s\n"
#: ../src/utils/pax11publish.c:132
#, c-format
msgid "Failed to parse cookie data\n"
-msgstr ""
+msgstr "Cookie data ontleden mislukte\n"
#: ../src/utils/pax11publish.c:137
#, c-format
msgid "Failed to save cookie data\n"
-msgstr ""
+msgstr "Cookie data opslaan mislukte\n"
#: ../src/utils/pax11publish.c:152
#, c-format
msgid "Failed to load client configuration file.\n"
-msgstr ""
+msgstr "Cliënt configuratie bestand laden mislukte.\n"
#: ../src/utils/pax11publish.c:157
#, c-format
msgid "Failed to read environment configuration data.\n"
-msgstr ""
+msgstr "Omgevings configuratie bestand lezen mislukte.\n"
#: ../src/utils/pax11publish.c:174
#, c-format
msgid "Failed to get FQDN.\n"
-msgstr ""
+msgstr "FQDN verkrijgen mislukte.\n"
#: ../src/utils/pax11publish.c:194
#, c-format
msgid "Failed to load cookie data\n"
-msgstr ""
+msgstr "Cookie data laden mislukte\n"
#: ../src/utils/pax11publish.c:211
#, c-format
msgid "Not yet implemented.\n"
-msgstr ""
+msgstr "Nog niet geïmplementeerd.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"Er draait geen PulseAudio daemon, of het draait niet als sessie daemon."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-msgstr ""
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
-msgstr ""
+msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
-msgstr ""
+msgstr "PulseAudio daemon uitzetten mislukte."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
-msgstr ""
+msgstr "Daemon reageert niet."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr ""
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
-msgstr ""
+msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
-msgstr ""
+msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
-msgstr ""
+msgstr "Kan geen toegang krijgen tot autospawn blokkade."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2161,8 +2333,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA maakte ons wakker om nieuwe data naar het apparaat te schrijven, maar "
+"er was niets om weg te schrijven!\n"
+"Waarschijnlijk is dit een fout in de ALSA driver '%s\". Rapporteer dit "
+"probleem a.u.b. aan de ALSA ontwikkelaars.\n"
+"We werden gewekt met POLLOUT ingesteld -- echter een opvolgende snd_pcm_avail"
+"() gaf 0 terug of een andere waarde < min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2172,23 +2350,134 @@ msgid ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"ALSA maakte ons wakker om nieuwe data van het apparaat te lezen, maar er was "
+"niets om te lezen!\n"
+"Waarschijnlijk is dit een fout in de ALSA driver '%s\". Rapporteer dit "
+"probleem a.u.b. aan de ALSA ontwikkelaars.\n"
+"We werden gewekt met POLLIN ingesteld -- echter een opvolgende snd_pcm_avail"
+"() gaf 0 terug of een andere waarde < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
-msgstr ""
+msgstr "Uiy"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "High Fidelity Afvangen (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "Telefonie Duplex (HSP/HFP)"
#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
-msgstr ""
+msgstr "PulseAudio geluids server"
+
+#, fuzzy
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Ongeldige resample methode '%s'."
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Kan niet verbinden met systeem bus: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Kan geen bezoeker krijgen van PID: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Kan UID niet instellen op caller object."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Kon geen CK sessie krijgen."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Kan UID niet instellen op sessie object."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Kan PolKitAction niet toekennen."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Kan action_id niet instellen"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Kan PolKitContext niet toekennen."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Kan PolKitContext niet intialiseren: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Kon niet bepalen of bezoeker gemachtigd is: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Kan geen authorisatie krijgen: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit antwoordde met '%s'"
+
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr ""
+#~ "Wij zijn in de groep '%s', wat plannen met hoge prioriteit toestaat."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr "Wij zijn in de groep '%s', war real-time planning toestaat."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "PolicyKit kent ons acquire-high-priority rechten toe."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "PolicyKit weigert ons acquire-high-priority rechten."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "PolicyKit kent ons acquire-real-time rechten toe."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "PolicyKit weigert ons acquire-real-time rechten."
+
+#~ 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 ""
+#~ "Aangeroepen met SUID root en real-time en/of high-priority inplannen was "
+#~ "verzocht in de configuratie. Echter de nodige rechten ontbreken:\n"
+#~ "We zijn niet in groep '%s', PolicyKit weigert om ons de gevraagde rechten "
+#~ "te geven en we hebben geen rect om de RLIMIT_NICE/RLIMIT_RTPRIO limieten "
+#~ "te verhogen.\n"
+#~ "Voor het aanzetten van real-time/high-priority inplannen mort je juiste "
+#~ "PolicyKit privileges hebben, of lid van '%s\" worden, of de RLIMIT_NICE/"
+#~ "RLIMIT_RTPRIO limieten voor deze gebruiker verhogen."
+
+#~ 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."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "RLIMIT_RTPRIO met succes verhoogd"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO mislukte: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Opgeven CAP_NICE"
+
+#~ 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."
#~ msgid "Analog Mono"
#~ msgstr "Analoog mono"
diff --git a/po/or.po b/po/or.po
index 1fcf836e..6f1e2d9a 100644
--- a/po/or.po
+++ b/po/or.po
@@ -1,14 +1,14 @@
-# translation of pulseaudio.master-tx.pulseaudio.po to Oriya
+# translation of pulseaudio.master-tx.or.po to Oriya
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Manoj Kumar Giri <mgiri@redhat.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Project-Id-Version: pulseaudio.master-tx.or\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-09 13:16+0530\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-09 21:03+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@@ -22,8 +22,20 @@ msgstr ""
"\n"
"\n"
"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -36,7 +48,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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -49,7 +61,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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -62,9 +74,17 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "ଆଭାସୀ LADSPA ସିଙà­à¬•"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -74,12 +94,24 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<ସିଙà­à¬•à¬° ନାମ> sink_properties=<ସିଙà­à¬•à¬° ଗà­à¬£à¬§à¬°à­à¬®> master=<ସିଙà­à¬• ଛାଣକର ନାମ> "
+"format=<ନମà­à¬¨à¬¾ ସଜà­à¬œà¬¿à¬•à¬°à¬£ ଶୈଳୀ> rate=<ନମà­à¬¨à¬¾ ହାର> channels=<ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ସଂଖà­à­Ÿà¬¾> "
+"channel_map=<ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª> plugin=<ladspa ପà­à¬²à¬—ଇନ ନାମ> label=<ladspa ପà­à¬²à¬—ଇନ "
+"ନାମପଟି> control=<କମା ଦà­à­±à¬¾à¬°à¬¾ ପୃଥକ ନିବେଶ ନିୟନà­à¬¤à­à¬°à¬£ ମୂଲà­à­Ÿ ତାଲିକା>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "ଆଭà­à­Ÿà¬¨à­à¬¤à¬°à­€à¬£ ଧà­à­±à¬¨à¬¿"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "ମଡେମ"
@@ -95,216 +127,92 @@ msgstr "ନୂତନ dl ଧାରକକୠବଣà­à¬Ÿà¬¨ କରିବାରେ
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 "auth ପାଇଲା ନାହିà¬: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit '%s' ସହିତ ଉତà­à¬¤à¬° ଦେଇଥିଲା"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "ସଂକେତ %s ପାଇଲା।"
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ଉତà­à¬¤à­‡à¬œà¬¿à¬¤ କରà­à¬…ଛି।"
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "ଚାଳକ '%s' କୠଖୋଜିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "ସମୂହ '%s' କୠଖୋଜି ପାଇବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ଚାଳକ '%s' à¬à¬¬à¬‚ ସମୂହ '%s' ର GID ମେଳଖାà¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤"
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ନିରà­à¬®à¬¾à¬£ କରିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "ସମୂହ ତାଲିକାକୠପରିବରà­à¬¤à­à¬¤à¬¨ କରିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID କୠପରିବରà­à¬¤à­à¬¤à¬¨ କରିବାରେ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID କୠପରିବରà­à¬¤à­à¬¤à¬¨ କରିବାରେ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "ମୂଖà­à­Ÿ ଚାଳକ ଅଧିକାରକୠସଫଳତାର ସହିତ ପକାଯାଇଛି।"
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "ତନà­à¬¤à­à¬°à¬®à­Ÿ ଧାରା à¬à¬¹à¬¿ ପà­à¬²à¬¾à¬Ÿà¬«à¬°à­à¬®à¬°à­‡ ଅସମରà­à¬¥à¬¿à¬¤à¥¤"
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 ଆମକୠacquire-high-priority ଅଧିକାର ଦେଇଥାà¬à¥¤"
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit acquire-high-priority ଅଧିକାରକୠବାରଣ କରିଥାà¬à¥¤"
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit ଆମକୠacquire-real-time ଅଧିକାର ଦେଇଥାà¬à¥¤"
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit acquire-real-time ଅଧିକାରକୠବାରଣ କରିଥାà¬à¥¤"
-
-#: ../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 ""
-"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: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 "Real-time ଯୋଜନା ବିନà­à­Ÿà¬¾à¬¸ ଫାଇଲରେ ସକà­à¬°à¬¿à­Ÿ ହୋଇଥାଠକିନà­à¬¤à­ ନିତୀ ଦà­à­±à¬¾à¬°à¬¾ ଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à¬à¥¤"
-
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "ଡେମନ ଚାଲà­à¬¨à¬¾à¬¹à¬¿à¬"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "ଡେମନ PID %u ପରି ଚାଲà­à¬…ଛି"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ଡେମନକୠବନà­à¬¦ କରିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -312,150 +220,155 @@ msgstr ""
"à¬à¬¹à¬¿ ପà­à¬°à¬—à­à¬°à¬¾à¬®à¬Ÿà¬¿ ମୂଖà­à­Ÿ ଚାଳକ ଭାବରେ ଚଲାଇବା ପାଇଠନିରà­à¬¦à­à¬¦à¬¿à¬·à­à¬Ÿ ହୋଇନାହିଠ(unless --system is "
"specified)।"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "ମୂଖà­à­Ÿ ଚାଳକ ଅଧିକାର ଆବଶà­à­Ÿà¬•à¥¤"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start ତନà­à¬¤à­à¬° ସà­à¬¥à¬¿à¬¤à¬¿ ପାଇଠସମରà­à¬¥à¬¿à¬¤ ନà­à¬¹à¬à¥¤"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, କିନà­à¬¤à­ --disallow-exit କୠସେଟ କରାଯାଇନାହିà¬!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, କିନà­à¬¤à­ --disallow-module-loading କୠସେଟ କରାଯାଇନାହିà¬!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, SHM ଧାରାକୠବାଧà­à¬¯à¬¤à¬¾à¬®à­à¬³à¬• ଭାବରେ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରିଥାà¬!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି, ପà­à¬°à¬¸à­à¬¥à¬¾à¬¨ ସà­à¬¥à¬¿à¬° ସମୟକୠବାଧà­à¬¯à¬¤à¬¾à¬®à­à¬³à¬• ଭାବରେ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରିଥାà¬!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio କୠଅଧିକାର କରିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "ପାଇପ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "ଡେମନ ଆରମà­à¬­ ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "ଡେମନ ଆରମà­à¬­ ସଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¬à¬¹à¬¾ ହେଉଛି PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "ସଂକଳନ ଆଧାର: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ସଂକଳନ CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "ଆଧାରରେ ଚାଲà­à¬…ଛି: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs ମିଳିଛି।"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "ପୃଷà­à¬ à¬¾ ଆକାରଟି ହେଉଛି %lu ବାଇଟ"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ସମରà­à¬¥à¬¨ ସହିତ ସଂକଳନ ହୋଇଛି: yes"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ସମରà­à¬¥à¬¨ ସହିତ ସଂକଳନ ହୋଇଛି: no"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind ଧାରାରେ ଚାଲà­à¬…ଛି: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "ଉପଯà­à¬•à­à¬¤ ନିରà­à¬®à¬¾à¬£: yes"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "ଉପଯà­à¬•à­à¬¤ ନିରà­à¬®à¬¾à¬£: no"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG କୠବà­à­Ÿà¬¾à¬–à­à­Ÿà¬¾ କରାଯାଇଛି, ସମସà­à¬¤ ନିଶà­à¬šà­Ÿà¬•à­ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH କୠବà­à­Ÿà¬¾à¬–à­à­Ÿà¬¾ କରାଯାଇଛି, କେବଳ ତୀବà­à¬° ପଥ ନିଶà­à¬šà­Ÿà¬•à­ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "ସମସà­à¬¤ ନିଶà­à¬šà­Ÿà¬•à­ ସକà­à¬°à¬¿à­Ÿ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "ଯନà­à¬¤à­à¬° ID ପାଇବାରେ ବିଫଳ"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "ଯନà­à¬¤à­à¬° ID ଟି ହେଉଛି %s।"
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "ଯନà­à¬¤à­à¬° ID ଟି ହେଉଛି %s।"
+msgstr "ଅଧିବେଶନ ID ଟି ହେଉଛି %s।"
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "ପà­à¬°à¬šà¬³à¬¿à¬¤ ଡିରେକà­à¬Ÿà­‹à¬°à­€ %s କୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରà­à¬…ଛି।"
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "ସà­à¬¥à¬¿à¬¤à¬¿ ଡିରେକà­à¬Ÿà­‹à¬°à­€ %s କୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି।"
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "à¬à¬•à¬•à¬¾à¬‚ଶ ଡିରେକà­à¬Ÿà­‹à¬°à­€ %s କୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି।"
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "ତନà­à¬¤à­à¬° ଧାରାରେ ଚାଲà­à¬…ଛି: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -464,16 +377,21 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"OK, ଆପଣ PA କୠତନà­à¬¤à­à¬° ଧାରାରେ ଚଲାଉଛନà­à¬¤à¬¿à¥¤ ଦୟାକରି ମନେ ରଖନà­à¬¤à­ ଯେ ଆପଣ ପà­à¬°à¬¾à­Ÿà¬¤à¬ƒ ତାହା "
+"କରà­à¬¨à¬¾à¬¹à¬¾à¬¨à­à¬¤à¬¿à¥¤\n"
+"ଯଦି ଆପଣ ତାହା କରନà­à¬¤à¬¿ à¬à¬¬à¬‚ ସବà­à¬•à¬¿à¬›à¬¿ ଠିକରେ ନଚାଲେ ତେବେ ତାହା ଆପଣଙà­à¬•à¬° ନିଜର ଦୋଷ।\n"
+"ତନà­à¬¤à­à¬° ଧାରାଟି ସାଧାରଣତଃ କାହିà¬à¬•à¬¿ ଖରାପ ତାହା ବିଷୟରେ ଜାଣିବା ପାଇଠଦୟାକରି http://pulseaudio."
+"org/wiki/WhatIsWrongWithSystemMode କୠପଢ଼ନà­à¬¤à­à¥¤"
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ସତେଜ ଉଚà­à¬š-ବିଭେଦନ ସମୟ ମାପକ ଉପଲବà­à¬§! Bon appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -481,27 +399,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "ଡେମନକୠଆରମà­à¬­ କରିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ଧାରଣ ହୋଇଥିବା à¬à¬•à¬•à¬¾à¬‚ଶଗà­à¬¡à¬¼à¬¿à¬• ବିନା ଡେମନ ଆରମà­à¬­ ହୋଇଛି, କାରà­à¬¯à­à­Ÿ କରିବାକୠବାରଣ କରà­à¬…ଛି।"
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "ଡେମନ ଆରମà­à¬­ ସମà­à¬ªà­‚ରà­à¬£à­à¬£ ହୋଇଛି।"
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "ଡେମନ ବନà­à¬¦à¬•à­ ଆରମà­à¬­ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "ଡେମନକୠସମାପà­à¬¤ କରାଯାଇଛି।"
@@ -750,79 +668,79 @@ msgstr "ଥରେ ଧାରଣ କରନà­à¬¤à­: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "DEPRECATION WARNING: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ପଥ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକà­à¬·à­à¬¯à¬¸à­à¬¥à¬³ '%s'।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ସà­à¬¤à¬°%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ଅବୈଧ ପà­à¬¨à¬ƒ ମିଶà­à¬°à¬£ ଧାରା '%s'।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ଅବୈଧ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à¬à¬¹à¬¿ ପà­à¬²à¬¾à¬Ÿà¬«à¬°à­à¬®à¬°à­‡ ସମରà­à¬¥à¬¿à¬¤ ନà­à¬¹à¬à¥¤"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମà­à¬¨à¬¾ ଶୈଳୀ '%s'।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମà­à¬¨à¬¾ ହାର '%s'।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମà­à¬¨à¬¾ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² '%s'।"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ଅବୈଧ ସଂଖà­à­Ÿà¬• ଖଣà­à¬¡à¬—à­à¬¡à¬¼à¬¿à¬• '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ଅବୈଧ ଖଣà­à¬¡ ଆକାର '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ଅବୈଧ ସà­à¬¨à­à¬¦à¬° ସà­à¬¤à¬° '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ବିନà­à­Ÿà¬¾à¬¸ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -830,18 +748,14 @@ msgstr ""
"ନିରà­à¬¦à­à¬¦à¬¿à¬·à­à¬Ÿà¬¿à¬¤ ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ªà¬°à­‡ ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ସଂଖà­à­Ÿà¬• ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ବà­à­Ÿà¬¤à¬¿à¬¤ ଭିନà­à¬¨ ସଂଖà­à­Ÿà¬• "
"ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ଉଲà­à¬²à­‡à¬– ଅଛି।"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, 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/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "ଅଧିକାରଗà­à¬¡à¬¼à¬¿à¬•à­ ବାତିଲ କରà­à¬…ଛି।"
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -851,25 +765,7 @@ msgstr "PulseAudio ଧà­à­±à¬¨à¬¿ ତନà­à¬¤à­à¬°"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio ଧà­à­±à¬¨à¬¿ ତନà­à¬¤à­à¬°à¬•à­ ଆରମà­à¬­ କରନà­à¬¤à­"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "PulseAudio ଡେମନ ପାଇଠଉଚà­à¬š-ପà­à¬°à¬¾à¬¥à¬®à¬¿à¬•à¬¤à¬¾ ଯୋଜନା (ଋଣାତà­à¬®à¬• Unix ସà­à¬¨à­à¬¦à¬° ସà­à¬¤à¬°)"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio ଡେମନ ପାଇଠପà­à¬°à¬•à­ƒà¬¤-ସମୟ ଯୋଜନା"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "ମୋନୋ"
@@ -1073,33 +969,33 @@ msgstr "ଉପର ପଛ ବାମ ପାଖ"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(ଅବୈଧ)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ଷà­à¬Ÿà­‡à¬°à¬¿à¬“"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ଚତà­à¬ƒ ପାରà­à¬¶à­à­± 7.1"
@@ -1203,27 +1099,35 @@ msgstr "ଅନà­à¬ªà¬¸à­à¬¥à¬¿à¬¤ ପà­à¬°à­Ÿà­‹à¬—"
msgid "Client forked"
msgstr "ଗà­à¬°à¬¾à¬¹à¬• ଶାଖାଯà­à¬•à­à¬¤ ହୋଇଛି"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1236,192 +1140,191 @@ msgstr "XOpenDisplay() ବିଫଳ ହୋଇଛି"
msgid "Failed to parse cookie data"
msgstr "କà­à¬•à¬¿ ତଥà­à­Ÿà¬•à­ ବିଶà­à¬³à­‡à¬·à¬£ କରିବାରେ ବିଫଳ"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ବିନà­à­Ÿà¬¾à¬¸ ଫାଇଲ '%s' କୠଖୋଲିବାରେ ବିଫଳ: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "କୌଣସି କà­à¬•à¬¿ ଧାରଣ କରାଯାଇନାହିà¬à¥¤ ତାହା ବିନା ସଂଯୋଗ କରିବାକୠପà­à¬°à¬šà­‡à¬·à­à¬šà¬¾ କରà­à¬…ଛି।"
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "ଅଜଣା ଅନà­à¬²à¬—à­à¬¨ '%s' ପାଇଠସନà­à¬¦à­‡à¬¶ ଗà­à¬°à¬¹à¬£ କରିଅଛି"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ଧାରାକୠବାହାର କରିବାରେ ବିଫଳ ହୋଇଛି: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "ଧାରାକୠବାହାର କରିବାରେ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "ପଛଚଲା ଧାରାକୠବାହାର କରାଯାଇଛି।\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "ପଛଚଲା ଧାରାକୠବାହାର କରାଯାଇଛି।"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "ସରà­à¬­à¬° ପà­à¬°à¬¤à¬¿ ଡà­à¬°à­‡à¬¨à¬¿à¬™à­à¬— ସଂଯୋଗ।\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "ସରà­à¬­à¬° ପà­à¬°à¬¤à¬¿ ଡà­à¬°à­‡à¬¨à¬¿à¬™à­à¬— ସଂଯୋଗ।"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "ଧାରା ସଫଳତାର ସହିତ ନିରà­à¬®à¬¾à¬£ ହୋଇଛି।\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "ଧାରା ସଫଳତାର ସହିତ ନିରà­à¬®à¬¾à¬£ ହୋଇଛି।"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "ବଫର ମେଟà­à¬°à¬¿à¬•à¬¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "ବଫର ମେଟà­à¬°à¬¿à¬•à¬¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "ବଫର ମେଟà­à¬°à¬¿à¬•à¬¸: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "ବଫର ମେଟà­à¬°à¬¿à¬•à¬¸: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "ନମà­à¬¨à¬¾ spec '%s' ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି, ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'।\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "ନମà­à¬¨à¬¾ spec '%s' ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି, ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'।"
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "ଉପକରଣ %s ସହିତ ସଂଯà­à¬•à­à¬¤ ହୋଇଛି (%u, %ssuspended)।\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "ଉପକରଣ %s ସହିତ ସଂଯà­à¬•à­à¬¤ ହୋଇଛି (%u, %ssuspended)।"
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "ଧାରା ତà­à¬°à­à¬Ÿà¬¿: %s\n"
+msgid "Stream error: %s"
+msgstr "ଧାରା ତà­à¬°à­à¬Ÿà¬¿: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "ଧାରା ଉପକରଣ ନିଲମà­à¬¬à¬¿à¬¤ ହୋଇଛି।%s \n"
+msgid "Stream device suspended.%s"
+msgstr "ଧାରା ଉପକରଣ ନିଲମà­à¬¬à¬¿à¬¤ ହୋଇଛି।%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "ଧାରା ଉପକରଣ ପà­à¬¨à¬ƒ ଚଳନ ହୋଇଛି।%s \n"
+msgid "Stream device resumed.%s"
+msgstr "ଧାରା ଉପକରଣ ପà­à¬¨à¬ƒ ଚଳନ ହୋଇଛି।%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "ଧାରା underrun.%s \n"
+msgid "Stream underrun.%s"
+msgstr "ଧାରା underrun.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "ଧାରା overrun.%s \n"
+msgid "Stream overrun.%s"
+msgstr "ଧାରା overrun.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "ଧାରା ଆରମà­à¬­ ହୋଇଛି।%s \n"
+msgid "Stream started.%s"
+msgstr "ଧାରା ଆରମà­à¬­ ହୋଇଛି।%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "ଧାରା ଉପକରଣ %sକୠଗତି କରିଛି (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "ଧାରା ଉପକରଣ %sକୠଗତି କରିଛି (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "ଧାରା ବଫର ଗà­à¬£à¬—à­à¬¡à¬¼à¬¿à¬• ପରିବରà­à¬¤à­à¬¤à¬¨ ହୋଇଛି।%s\n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "ଧାରା ବଫର ଗà­à¬£à¬—à­à¬¡à¬¼à¬¿à¬• ପରିବରà­à¬¤à­à¬¤à¬¨ ହୋଇଛି।%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "ସଂଯୋଗ ସà­à¬¥à¬¾à¬ªà¬¿à¬¤ ହୋଇଛି।%s \n"
+msgid "Connection established.%s"
+msgstr "ସଂଯୋଗ ସà­à¬¥à¬¾à¬ªà¬¿à¬¤ ହୋଇଛି।%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି: %s\n"
-
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF ପାଇଅଛି।\n"
+msgid "Connection failure: %s"
+msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() ବିଫଳ ହୋଇଛି: %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF ପାଇଅଛି।"
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "write() failed: %s"
+msgstr "write() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "ସଂକେତ ପାଇଲା, ପà­à¬°à¬¸à­à¬¥à¬¾à¬¨ କରà­à¬…ଛି।\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "ସଂକେତ ପାଇଲା, ପà­à¬°à¬¸à­à¬¥à¬¾à¬¨ କରà­à¬…ଛି।"
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "ବିଳମà­à¬¬à¬¤à¬¾ ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "ବିଳମà­à¬¬à¬¤à¬¾ ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "ସମୟ: %0.3f sec; ବିଳମà­à¬¬à¬¤à¬¾: %0.0f usec. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() ବିଫଳ ହୋଇଛି: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() ବିଫଳ ହୋଇଛି: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1479,7 +1382,7 @@ msgid ""
" --file-format=FFORMAT Record/play formatted PCM data.\n"
" --list-file-formats List available file formats.\n"
msgstr ""
-"%s [options]\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•]\n"
"\n"
" -h, --help à¬à¬¹à¬¿ ସହାୟତା ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­\n"
" --version ସଂସà­à¬•à¬°à¬£ ଦରà­à¬¶à¬¾à¬¨à­à¬¤à­\n"
@@ -1502,28 +1405,32 @@ msgstr ""
"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"
+" --channels=CHANNELS ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ସଂଖà­à­Ÿà¬¾, ମୋନୋ ପାଇଠ1, ଷà­à¬Ÿà­‡à¬°à¬¿à¬“ ପାଇଠ"
+"2\n"
+" (2 ପାଇଠପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤)\n"
+" --channel-map=CHANNELMAP ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ପରିବରà­à¬¤à­à¬¤à­‡ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବାକୠଥିବା "
+"ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª\n"
+" --fix-format ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ ସଜà­à¬œà¬¿à¬•à¬°à¬£ ଶୈଳୀକୠସିଙà­à¬•à¬°à­ "
+"ଗà­à¬°à¬¹à¬£ କରନà­à¬¤à­\n"
+" ଯାହା ସହିତ ଧାରାଟି ସଂଯà­à¬•à­à¬¤à¥¤\n"
+" --fix-rate ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ ସଜà­à¬œà¬¿à¬•à¬°à¬£ ଶୈଳୀକୠସିଙà­à¬•à¬°à­ "
+"ଗà­à¬°à¬¹à¬£ କରନà­à¬¤à­\n"
+" ଯାହା ସହିତ ଧାରାଟି ସଂଯà­à¬•à­à¬¤à¥¤\n"
+" --fix-channels ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ସଂଖà­à­Ÿà¬¾ à¬à¬¬à¬‚ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ªà¬•à­ "
+"ସିଙà­à¬•à¬°à­à¬—à­à¬°à¬¹à¬£ କରନà­à¬¤à­\n"
+" ଯାହା ସହିତ ଧାରାଟି ସଂଯà­à¬•à­à¬¤à¥¤\n"
+" --no-remix ଚà­à­Ÿà¬¾à¬¨à­‡à¬²à¬—à­à¬¡à¬¼à¬¿à¬•à­ upmix ଅଥବା downmix କରନà­à¬¤à­ "
+"ନାହିà¬à¥¤\n"
+" --no-remap ନାମ ପରିବରà­à¬¤à­à¬¤à­‡ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ ଅନà­à¬¸à¬¾à¬°à­‡ "
+"ଚà­à­Ÿà¬¾à¬¨à­‡à¬²à¬—à­à¬¡à¬¼à¬¿à¬•à­ ମà­à­Ÿà¬¾à¬ª କରନà­à¬¤à­à¥¤\n"
+" --latency=BYTES ନିରà­à¬¦à­à¬¦à¬¿à¬·à­à¬Ÿà¬¿à¬¤ ବିଳମà­à¬¬à¬¤à¬¾à¬•à­ ବାଇଟରେ ଆବେଦନ କରନà­à¬¤à­à¥¤\n"
+" --process-time=BYTES ଅନà­à¬°à­‹à¬§ ପà­à¬°à¬¤à¬¿ ନିରà­à¬¦à­à¬¦à¬¿à¬·à­à¬Ÿà¬¿à¬¤ ବିଳମà­à¬¬à¬¤à¬¾à¬•à­ ବାଇଟରେ "
+"ଆବେଦନ କରନà­à¬¤à­à¥¤\n"
+" --property=PROPERTY=VALUE ନିରà­à¬¦à­à¬¦à¬¿à¬·à­à¬Ÿà¬¿à¬¤ ମୂଲà­à­Ÿ ପାଇଠଉଲà­à¬²à¬¿à¬–ିତ ଗà­à¬£à¬§à¬°à­à¬®à¬•à­ ସେଟ "
+"କରନà­à¬¤à­à¥¤\n"
+" --raw ଅପରିପକà­à­± PCM ତଥà­à­Ÿà¬•à­ ଲିପିବଦà­à¬§ କରନà­à¬¤à­/ଚଲାନà­à¬¤à­à¥¤\n"
+" --file-format=FFORMAT ସଜà­à¬œà¬¿à¬•à­ƒà¬¤ PCM ତଥà­à­Ÿà¬•à­ ଲିପିବଦà­à¬§ କରନà­à¬¤à­/ଚଲାନà­à¬¤à­à¥¤\n"
+" --list-file-formats ତାଲିକା ଉପଲବà­à¬§ ଫାଇଲ ସଜà­à¬œà¬¿à¬•à¬°à¬£ ଶୈଳୀ।\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1536,136 +1443,127 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "ଅବୈଧ କà­à¬²à¬¾à¬à¬£à­à¬Ÿ ନାମ '%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "ଅବୈଧ ପà­à¬¨à¬ƒ ପà­à¬°à¬¤à¬¿à¬¦à¬°à­à¬¶à¬¨ ଧାରା '%s'।"
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "ଅବୈଧ ଧାରା ନାମ '%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "ଅବୈଧ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "ଅବୈଧ ବିଳମà­à¬¬à¬¤à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "ଅବୈଧ ବିଳମà­à¬¬à¬¤à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "ଅବୈଧ ପଦà­à¬§à¬¤à¬¿ ସମୟ ବିଶେଷ ଲକà­à¬·à¬£ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "ଅବୈଧ ପଦà­à¬§à¬¤à¬¿ ସମୟ ବିଶେଷ ଲକà­à¬·à¬£ '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "ଅବୈଧ ପà­à¬¨à¬ƒ ପà­à¬°à¬¤à¬¿à¬¦à¬°à­à¬¶à¬¨ ଧାରା '%s'।"
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "ଅବୈଧ ଗà­à¬£à¬§à¬°à­à¬® '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "ଅଜଣା ଫାଇଲ ସଜà­à¬œà¬¿à¬•à¬°à¬£ ଶୈଳୀ %s।"
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "ଅବୈଧ ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "ଅବୈଧ ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "ଅତà­à­Ÿà¬§à¬¿à¬• ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬°à¥¤\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "ଅତà­à­Ÿà¬§à¬¿à¬• ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬°à¥¤"
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "ନମà­à¬¨à¬¾ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "ଫାଇଲ ପାଇଠନମà­à¬¨à¬¾ ସୂଚନା ସୃଷà­à¬Ÿà¬¿ କରିବାରେ ବିଫଳ।"
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "ଧà­à­±à¬¨à¬¿ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "ଧà­à­±à¬¨à¬¿ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ଫାଇଲରୠନମà­à¬¨à¬¾ ସୂଚନା ନିରà­à¬¦à­à¬§à¬¾à¬°à¬£ କରିବାରେ ବିଫଳ।"
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "ଚେତାବନୀ: ଫାଇଲରୠଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª ନିରà­à¬¦à­à¬§à¬¾à¬°à¬£ କରିବାରେ ବିଫଳ।"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ ସହିତ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª ମେଳ ଖାଉନାହିà¬\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ ସହିତ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª ମେଳ ଖାଉନାହିà¬"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "ଚେତାବନୀ: ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ªà¬•à­ ଫାଇଲରେ ଲେଖିବାରେ ବିଫଳ।"
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s' ସହିତ ଗୋଟିଠ%s ଧାରାକୠଖୋଲà­à¬…ଛି।\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s' à¬à¬¬à¬‚ ଚà­à­Ÿà¬¾à¬¨à­‡à¬² ମà­à­Ÿà¬¾à¬ª '%s' ସହିତ ଗୋଟିଠ%s ଧାରାକୠଖୋଲà­à¬…ଛି।"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "ଅନà­à¬²à¬¿à¬ªà¬¿ କରà­à¬…ଛି"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() ବିଫଳ ହୋଇଛି।"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() ବିଫଳ ହୋଇଛି।\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() ବିଫଳ ହୋଇଛି।"
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() ବିଫଳ ହୋଇଛି।"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() ବିଫଳ ହୋଇଛି: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() ବିଫଳ ହୋଇଛି।\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() ବିଫଳ ହୋଇଛି।"
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() ବିଫଳ ହୋଇଛି।"
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1692,7 +1590,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ପାଇଛି, ଉତà­à¬¸à¬¾à¬¹à¬¿à¬¤ କରà­à¬…ଛି।\n"
@@ -1731,32 +1634,47 @@ msgstr ""
"libpulse %s ସହିତ ସଂକଳିତ\n"
"libpulse %s ସହିତ ସଂଯà­à¬•à­à¬¤\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "ପରିସଂଖà­à­Ÿà¬¾à¬¨ ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() ବିଫଳ ହୋଇଛି।\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() ବିଫଳ ହୋଇଛି।\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() ବିଫଳ ହୋଇଛି।\n"
+
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "ପରିସଂଖà­à­Ÿà¬¾à¬¨ ପାଇବାରେ ବିଫଳ: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ବରà­à¬¤à­à¬¤à¬®à¬¾à¬¨ ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬°à­‡ ଅଛି: %u ବà­à¬²à¬• ସମà­à¬¦à¬¾à­Ÿ %s ବାଇଟ ଧାରଣ କରିଥାà¬à¥¤\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "ସମଗà­à¬° ଜୀବନରେ ବଣà­à¬Ÿà¬¿à¬¤ ହୋଇଥାà¬: %u ବà­à¬²à¬• ସମà­à¬¦à¬¾à­Ÿ %s ବାଇଟ ଧାରଣ କରିଥାà¬à¥¤\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ନମà­à¬¨à¬¾ କà­à­Ÿà¬¾à¬¶à­‡ ଆକାର: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "ସରà­à¬­à¬° ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "ସରà­à¬­à¬° ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1779,12 +1697,12 @@ msgstr ""
"ପୂରà­à¬¬à¬¨à¬¿à¬°à­à¬¦à­à¬§à¬¾à¬°à¬¿à¬¤ ଉତà­à¬¸: %s\n"
"କà­à¬•à¬¿: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "ସିଙà­à¬• ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "ସିଙà­à¬• ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1823,22 +1741,22 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tରୂପରେଖଗà­à¬¡à¬¼à¬¿à¬•:\n"
+msgstr "\tସଂଯୋଗିକୀଗà­à¬¡à¬¼à¬¿à¬•:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tସକà­à¬°à¬¿à­Ÿ ରୂପରେଖା: %s\n"
+msgstr "\tସକà­à¬°à¬¿à­Ÿ ସଂଯୋଗିକୀ: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "ଉତà­à¬¸ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "ଉତà­à¬¸ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1877,20 +1795,20 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "à¬à¬•à¬•à¬¾à¬‚ଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "à¬à¬•à¬•à¬¾à¬‚ଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1907,12 +1825,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "ଗà­à¬°à¬¾à¬¹à¬• ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "ଗà­à¬°à¬¾à¬¹à¬• ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1927,12 +1845,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "କାରà­à¬¡ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "କାରà­à¬¡ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1949,22 +1867,22 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tରୂପରେଖଗà­à¬¡à¬¼à¬¿à¬•:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tସକà­à¬°à¬¿à­Ÿ ରୂପରେଖା: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "ସିଙà­à¬• ନିବେଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "ସିଙà­à¬• ନିବେଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2001,12 +1919,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "ଉତà­à¬¸ ଫଳାଫଳ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "ଉତà­à¬¸ ଫଳାଫଳ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2035,12 +1953,12 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "ନମà­à¬¨à¬¾ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "ନମà­à¬¨à¬¾ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2071,22 +1989,26 @@ msgstr ""
"\tଗà­à¬£à¬§à¬°à­à¬®:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "ବିଫଳତା: %s\n"
+msgid "Failure: %s"
+msgstr "ବିଫଳତା: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "ନମà­à¬¨à¬¾à¬•à­ ଧାରଣ କରିବାରେ ବିଫଳ: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "ନମà­à¬¨à¬¾à¬•à­ ଧାରଣ କରିବାରେ ବିଫଳ: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "ଫାଇଲର ସମୟ ପୂରà­à¬¬ ସମାପà­à¬¤à¬¿\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "ଫାଇଲର ସମୟ ପୂରà­à¬¬ ସମାପà­à¬¤à¬¿"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT ପାଇଛି, ଉତà­à¬¸à¬¾à¬¹à¬¿à¬¤ କରà­à¬…ଛି।"
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2094,15 +2016,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2112,29 +2040,35 @@ 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"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] stat\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] list\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] exit\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] upload-sample FILENAME [NAME]\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] play-sample NAME [SINK]\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] remove-sample NAME\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] move-sink-input ID SINK\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] move-source-output ID SOURCE\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] load-module NAME [ARGS ...]\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] unload-module ID\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] suspend-sink [SINK] 1|0\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] suspend-source [SOURCE] 1|0\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-card-profile [CARD] [PROFILE] \n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-sink-port [SINK] [PORT] \n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-source-port [SOURCE] [PORT] \n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-sink-volume SINK VOLUME\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-source-volume SOURCE VOLUME\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-sink-mute SINK 1|0\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-source-mute SOURCE 1|0\n"
+"%s [ବିକଳà­à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
+" -h, --help à¬à¬¹à¬¿ ସହାୟତାକୠଦରà­à¬¶à¬¾à¬¨à­à¬¤à­\n"
+" --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"
+" -s, --server=SERVER ସଂଯୋଗ କରିବା ପାଇଠସରà­à¬­à¬°à¬° ନାମ\n"
+" -n, --client-name=NAME ସରà­à¬­à¬°à¬°à­‡ à¬à¬¹à¬¿ କà­à¬²à¬¾à¬à¬£à­à¬Ÿà¬•à­ କିପରି ଡାକିବେ\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2145,81 +2079,108 @@ msgstr ""
"libpulse %s ସହିତ ସଂକଳିତ\n"
"libpulse %s ସହିତ ସଂଯà­à¬•à­à¬¤\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "ଧାରଣ କରିବା ପାଇଠଗୋଟିଠନà­à¬®à¬¨à¬¾ ଫାଇଲ ଉଲà­à¬²à­‡à¬– କରନà­à¬¤à­\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "ଧାରଣ କରିବା ପାଇଠଗୋଟିଠନà­à¬®à¬¨à¬¾ ଫାଇଲ ଉଲà­à¬²à­‡à¬– କରନà­à¬¤à­"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "ଧà­à­±à¬¨à¬¿ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "ଧà­à­±à¬¨à¬¿ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।"
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£ '%s' ସହିତ ଗୋଟିଠ%s ଧାରାକୠଖୋଲà­à¬…ଛି।\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "ଚେତାବନୀ: ଫାଇଲରୠନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£à¬•à­ ନିରà­à¬¦à­à¬§à¬¾à¬°à¬£ କରିବାରେ ବିଫଳ।"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "ଚଲାଇବା ପାଇଠଆପଣଙà­à¬•à­ ଗୋଟିଠନମà­à¬¨à¬¾ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "ଚଲାଇବା ପାଇଠଆପଣଙà­à¬•à­ ଗୋଟିଠନମà­à¬¨à¬¾ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "କାଢ଼ିବା ପାଇଠଆପଣଙà­à¬•à­ ଗୋଟିଠନମà­à¬¨à¬¾ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "କାଢ଼ିବା ପାଇଠଆପଣଙà­à¬•à­ ଗୋଟିଠନମà­à¬¨à¬¾ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନିବେଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନିବେଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠଉତà­à¬¸ ନିରà­à¬—ମ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠଉତà­à¬¸ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠଉତà­à¬¸ ନିରà­à¬—ମ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠଉତà­à¬¸ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠà¬à¬•à¬•à¬¾à¬‚ଶ ନାମ à¬à¬¬à¬‚ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬°à¬—à­à¬¡à¬¼à¬¿à¬•à­ ଉଲà­à¬²à­‡à¬– କରିବା ଉଚିତ।\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠà¬à¬•à¬•à¬¾à¬‚ଶ ନାମ à¬à¬¬à¬‚ ସà­à­±à¬¤à¬¨à­à¬¤à­à¬°à¬šà¬°à¬—à­à¬¡à¬¼à¬¿à¬•à­ ଉଲà­à¬²à­‡à¬– କରିବା ଉଚିତ।"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠà¬à¬•à¬•à¬¾à¬‚ଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾à¬•à­ ଉଲà­à¬²à­‡à¬– କରିବା ଉଚିତ ନà­à¬¹à¬\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠà¬à¬•à¬•à¬¾à¬‚ଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾à¬•à­ ଉଲà­à¬²à­‡à¬– କରିବା ଉଚିତ ନà­à¬¹à¬"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"ଆପଣଙà­à¬•à­ ଗୋଟିà¬à¬°à­ ଅଧିକ ସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠପଡ଼ିନପାରେ। ଆପଣଙà­à¬•à­ ଗୋଟିଠବà­à¬²à¬¿à¬†à¬¨ ମୂଲà­à­Ÿ ଉଲà­à¬²à­‡à¬– କରିବାକୠ"
-"ହେବ।\n"
+"ଆପଣଙà­à¬•à­ ଗୋଟିà¬à¬°à­ ଅଧିକ ସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠପଡ଼ିନପାରେ। ଆପଣଙà­à¬•à­ ଗୋଟିଠବà­à¬²à¬¿à¬†à¬¨ ମୂଲà­à­Ÿ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ।"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠକାରà­à¬¡ ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ରୂପରେଖା ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ସଂଯୋଗିକୀ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠଉତà­à¬¸ ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ସଂଯୋଗିକୀ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "କୌଣସି ବୈଧ ନିରà­à¬¦à­à¬¦à­‡à¬¶ ଉଲà­à¬²à­‡à¬– କରାଯାଇନାହିà¬à¥¤\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ସଂଯୋଗିକୀ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() ବିଫଳ ହୋଇଛି: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "ଅବୈଧ ନମà­à¬¨à¬¾ ବିଶେଷ ଲକà­à¬·à¬£"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠଉତà­à¬¸ ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ସଂଯୋଗିକୀ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନିବେଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "ଅବୈଧ ସିଙà­à¬• ନିବେଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ସଂଯୋଗିକୀ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠଉତà­à¬¸ ନାମ/ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ସଂଯୋଗିକୀ ନାମ ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "ଆପଣଙà­à¬•à­ ଗୋଟିଠସିଙà­à¬• ନିବେଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ à¬à¬¬à¬‚ ଗୋଟିଠସିଙà­à¬• ଉଲà­à¬²à­‡à¬– କରିବାକୠହେବ"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "ଅବୈଧ ସିଙà­à¬• ନିବେଶ ଅନà­à¬•à­à¬°à¬®à¬£à¬¿à¬•à¬¾ ବିଶେଷ ଲକà­à¬·à¬£"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "କୌଣସି ବୈଧ ନିରà­à¬¦à­à¬¦à­‡à¬¶ ଉଲà­à¬²à­‡à¬– କରାଯାଇନାହିà¬à¥¤"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2299,48 +2260,48 @@ msgstr "କà­à¬•à¬¿ ତଥà­à­Ÿ ଧାରଣ କରିବାରେ ବିଫà¬
msgid "Not yet implemented.\n"
msgstr "ଅପରà­à¬¯à­à­Ÿà¬¨à­à¬¤ କାରà­à¬¯à­à­Ÿà¬•à¬¾à¬°à­€ ହୋଇନାହିà¬à¥¤\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "କୌଣସି PulseAudio ଡେମନ ଚାଲà­à¬¨à¬¾à¬¹à¬¿à¬, କିମà­à¬¬à¬¾ ଅଧିବେଶନ ଡେମନ ପରି ଚାଲà­à¬¨à¬¾à¬¹à¬¿à¬à¥¤"
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ସକେଟ(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "ସଂଯୋଗ କରନà­à¬¤à­(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ଡେମନକୠବନà­à¬¦ କରିବାରେ ବିଫଳ।"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ଡେମନ ଉତà­à¬¤à¬° ଦେଉନାହିà¬à¥¤"
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "ବାଛନà­à¬¤à­(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "ପଢ଼ନà­à¬¤à­(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "ଲେଖନà­à¬¤à­(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn ଅପରିବରà­à¬¤à­à¬¤à¬¨à­€à­Ÿà¬¤à¬¾à¬•à­ ଅଭିଗମà­à­Ÿ କରିହେଉ ନାହିà¬"
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2357,7 +2318,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:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2375,125 +2336,22 @@ msgstr ""
"returned 0 or another value < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "ଅଫ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "ଉଚà­à¬š ଫିଡିଲିଟି ପଛଚଲା (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "ଉଚà­à¬š ଫିଡିଲିଟି ପଛଚଲା (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "ଟେଲିଫୋନି ଡà­à­Ÿà­à¬ªà­à¬²à­‡à¬•à­à¬¸ (HSP/HFP)"
#: ../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 5f5585e0..2f0097ab 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -9,17 +9,22 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pa\n"
"Report-Msgid-Bugs-To: \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"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 11:19+0530\n"
+"Last-Translator: Jaswinder Singh <jsingh@redhat.com>\n"
+"Language-Team: Punjabi <Punjabi-users@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 0.3\n"
+"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -30,7 +35,7 @@ msgstr ""
"snd_pcm_avail() ਤੋਂ ਇੱਕ ਮà©à©±à¨² ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹà©à¨¤ ਵੱਡਾ ਹੈ: %lu ਬਾਈਟ (%lu ms)।\n"
"ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮà©à©±à¨¦à©‡ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।"
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -41,7 +46,7 @@ msgstr ""
"snd_pcm_delay() ਤੋਂ ਇੱਕ ਮà©à©±à¨² ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹà©à¨¤ ਵੱਡਾ ਹੈ: %li ਬਾਈਟ (%s%lu ms)।\n"
"ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮà©à©±à¨¦à©‡ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।"
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -52,9 +57,17 @@ msgstr ""
"snd_pcm_mmap_begin() ਤੋਂ ਇੱਕ ਮà©à©±à¨² ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹà©à¨¤ ਵੱਡਾ ਹੈ: %lu ਬਾਈਟ (%lu ms)।\n"
"ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮà©à©±à¨¦à©‡ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।"
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr "ਹਮੇਸ਼ਾਂ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਸਿੰਕ ਲੋਡ ਹੀ ਰੱਖੋ ਭਾਵੇਂ ਇਹ ਇੱਕ ਜ਼ੀਰੋ (null) ਹੇਵੋ"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "ਡੰਮੀ ਆਊਟਪà©à©±à¨Ÿ"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "ਵਰਚà©à¨…ਲ LADSPA ਸਿੰਕ"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -64,12 +77,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"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>"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "ਕਲਾਕਡ NULL ਸਿੰਕ"
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "ਜ਼ੀਰੋ (Null) ਆਉਟਪà©à©±à¨Ÿ"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "ਮਾਡਮ"
@@ -85,365 +111,246 @@ msgstr "ਨਵਾਂ dl ਲੋਡਰ ਦੇਣ ਲਈ ਫੇਲà©à¨¹à¥¤"
msgid "Failed to add bind-now-loader."
msgstr "ਬਾਈਂਡ-ਨਾਓ-ਲੋਡਰ ਜੋੜਨ ਵਿੱਚ ਫੇਲà©à¨¹ ਹੋਇਆ।"
-#: ../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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s ਸਿਗਨਲ ਮਿਲਿਆ ਹੈ।"
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' ਯੂਜ਼ਰ ਲੱਭਣ ਵਿੱਚ ਫੇਲà©à¨¹ ਹੋਇਆ ਹੈ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' ਗਰà©à©±à¨ª ਲੱਭਣ ਵਿੱਚ ਫੇਲ ਹੋਇਆ ਹੈ।"
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ਯੂਜ਼ੂ '%s' ਅਤੇ ਗਰà©à©±à¨ª '%s' ਦਾ GID ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ।"
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ਬਣਾਉਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "ਗਰà©à©±à¨ª ਲਿਸਟ ਬਦਲਣ ਲਈ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID ਬਦਲਣ ਲਈ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID ਬਦਲਣ ਲਈ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "ਰੂਟ ਅਧਿਕਾਰ ਸਫਲਤਾਪੂਰਕ ਹਟਾਠਗà¨à¥¤"
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਿਸਟਮ ਸੰਬੰਧੀ ਮੋਡ ਨੂੰ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ਫੇਲà©à¨¹ ਹੋਇਆ: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 ""
-"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: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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "ਡੈਮਨ ਚੱਲ ਨਹੀਂ ਰਿਹਾ"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "ਡੈਮਨ PID %u ਤੌਰ ਤੇ ਚੱਲ ਰਿਹਾ ਹੈ"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ਡੈਮਨ ਖਤਮ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "ਇਹ ਪਰੋਗਰਾਮ ਰੂਟ ਦੇ ਤੌਰ ਤੇ ਚਲਾਉਣ ਲਈ ਨਹੀਂ ਹੈ (ਜਦੋਂ ਤੱਕ --system ਦਿੱਤਾ ਨਹੀਂ ਜਾਂਦਾ)।"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "ਰੂਟ ਅਧਿਕਾਰਾਂ ਦੀ ਲੋੜ ਹੈ।"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start ਨੂੰ ਸਿਸਟਮ ਮੌਕਿਆਂ ਲਈ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਪਰ --disallow-exit ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਪਰ --disallow-module-loading ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਜ਼ਬਰਦਸਤੀ SHM ਮੋਡ ਨੂੰ ਅਯੋਗ ਕਰ ਰਿਹਾ ਹੈ!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਜ਼ਬਰਦਸਤੀ idle ਟਾਈਲ ਬੰਦ ਨੂੰ ਅਯੋਗ ਕਰ ਰਿਹਾ ਹੈ!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "ਸਟੂਡੀਓ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹à¥¤"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਫੇਲà©à¨¹ ਹੋਈ।"
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਸਫ਼ਲ ਹੋਈ।"
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "ਇਹ ਪਲਸਆਡੀਓ %s ਹੈ"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "ਕੰਪਾਈਲੇਸ਼ਨ ਹੋਸਟ: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ਕੰਪਾਈਲੇਸ਼ਨ CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "ਹੋਸਟ ਤੇ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs ਲੱਭੇ।"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "ਪੇਜ਼ ਸਾਈਜ਼ %lu ਬਾਈਟ ਹੈ"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ਸਹਿਯੋਗ ਨਾਲ ਕੰਪਾਈਲ: ਹਾਂ"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ਸਹਿਯੋਗ ਨਾਲ ਕੰਪਾਈਲ: ਨਹੀਂ"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Valgrind ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "ਓਪਟੀਮਾਈਜ਼ਡ ਬਿਲਡ: ਹਾਂ"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "ਓਪਟੀਮਾਈਜ਼ਡ ਬਿਲਡ: ਨਹੀਂ"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG ਪਰਿਭਾਸ਼ਤ, ਸਭ asserts ਅਯੋਗ ਹਨ।"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH ਪਰਿਭਾਸ਼ਤ, ਸਿਰਫ ਫਾਸਟ ਪਾਥ asserts ਅਯੋਗ ਹਨ।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "ਸਭ asserts ਯੋਗ ਕੀਤੇ ਹਨ।"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "ਮਸ਼ੀਨ ID ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "ਮਸ਼ੀਨ ID %s ਹੈ।"
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "ਮਸ਼ੀਨ ID %s ਹੈ।"
+msgstr "ਸ਼ੈਸ਼ਨ ID %s ਹੈ।"
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "ਰਨਟਾਈਮ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "ਸਟੇਟ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "ਮੈਡਿਊਲ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -452,43 +359,48 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"ਠੀਕ ਹੈ, ਤਾਂ ਤà©à¨¸à©€à¨‚ PA ਨੂੰ ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚਲਾ ਰਹੇ ਹੋ। ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਹ ਕਰਨਾ "
+"ਨਹੀਂ ਚਾਹੀਦਾ।\n"
+"ਜੇ ਤà©à¨¸à©€à¨‚ ਅਜਿਹਾ ਕੀਤਾ ਹੈ ਤਾਂ ਇਹ ਤà©à¨¹à¨¾à¨¡à©€ ਗਲਤੀ ਹੈ ਜੇ ਲੋੜ-ਮà©à¨¤à¨¾à¨¬à¨• ਠੀਕ ਕੰਮ ਨਾ ਚੱਲਿਆ।\n"
+"ਕਿਰਪਾ ਕਰਕੇ ਸਿਸਟਮ ਮੋਡ ਦੇ ਗਲਤ ਹੋਣ ਬਾਰੇ ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://pulseaudio.org/wiki/"
+"WhatIsWrongWithSystemMode ਵੇਖੋ।"
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ਤਾਜ਼ੀ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਉਪਲੱਬਧ ਹੈ! Bon appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
"ਮਿੱਤਰਾ, ਤੇਰਾ ਕਰਨਲ ਪà©à¨°à¨¾à¨£à¨¾ ਹੈ! ਚੀਫ ਦੀ ਅੱਜ ਦੀ ਸਿਫਾਰਸ਼ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਯੋਗ ਨਾਲ ਲੀਨਕਸ ਹੈ!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹à¥¤"
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਬਿਨਾਂ ਕਿਸੇ ਲੋਡ ਕੀਤੇ ਮੈਡਿਊਲ, ਕੰਮ ਕਰਨ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।"
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "ਡੈਮਨ ਸ਼à©à¨°à©‚ਆਤੀ ਮà©à¨•à©°à¨®à¨²à¥¤"
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "ਡੈਮਨ ਬੰਦ ਕਰਨਾ ਸ਼à©à¨°à©‚ ਹੋ ਗਿਆ।"
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "ਡੈਮਨ ਬੰਦ ਹੋ ਗਿਆ।"
@@ -738,96 +650,92 @@ msgstr "ਇੱਕ ਵਾਰ ਲੋਡ ਕਰੋ: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "DEPRECATION WARNING: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ਪਾਥ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ਗਲਤੀ ਲਾਗ ਲੈਵਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà©€à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà©€à¨‚ rlimit '%s'।"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ਨੂੰ ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਫਾਰਮੈਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਰੇਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਚੈਨਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਚੈਨਲ ਮੈਪ '%s'।"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ਫਰੈਗਮੈਂਟਾਂ ਦਾ ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਨੰਬਰ '%s'।"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਫਰੈਗਮੈਂਟ ਅਕਾਰ '%s'।"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ਅਢà©à©±à¨•à¨µà¨¾à¨‚ nice ਲੈਵਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
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
+#: ../src/daemon/daemon-conf.c:638
#, 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/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "ਅਧਿਕਾਰ ਹਟਾ ਰਿਹਾ ਹੈ।"
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -837,25 +745,7 @@ msgstr "ਪਲਸਆਡੀਓ ਸਾਊਂਡ ਸਿਸਟਮ"
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 "ਪਲਸਆਡੀਓ ਡੈਮਨ ਲਈ ਵਧੇਰੇ-ਤਰਜੀਹ ਸੈਡਿਊਲ (ਨਾਂ-ਵਾਚਕ ਯੂਨੈਕਸ ਨਾਈਸ ਲੈਵਲ)"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "ਮੋਨੋ"
@@ -1059,33 +949,33 @@ msgstr "ਉੱਤੇ ਪਿੱਛੇ ਖੱਬੇ"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(ਅਢà©à©±à¨•à¨µà¨¾à¨‚)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ਸਟੀਰੀਓ"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ਸਰਾਊਂਡਿੰਗ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ਸਰਾਊਂਡਿੰਗ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ਸਰਾਊਂਡਿੰਗ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ਸਰਾਊਂਡਿੰਗ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ਸਰਾਊਂਡਿੰਗ 7.1"
@@ -1189,27 +1079,35 @@ msgstr "ਗੈਰ-ਮੌਜੂਦ ਨਿਰਧਾਰਨ"
msgid "Client forked"
msgstr "ਕਲਾਇਟ ਅੱਡ ਕੀਤਾ"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1222,192 +1120,191 @@ msgstr "XOpenDisplay() ਫੇਲà©à¨¹ ਹੈ"
msgid "Failed to parse cookie data"
msgstr "ਕੂਕੀ ਡਾਟਾ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਫੇਲà©à¨¹"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ਸੰਰਚਨਾ ਫਾਇਲ '%s' ਨੂੰ ਖੋਲà©à¨¹à¨£ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "ਕੋਈ ਕੂਕੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ। ਇਸ ਤੋਂ ਬਿਨਾਂ ਕà©à¨¨à©ˆà¨•à¨Ÿ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "ਅਣਜਾਣੀ ਇਕਸਟੈਂਸ਼ਨ '%s' ਲਈ ਸà©à¨¨à©‡à¨¹à¨¾ ਮਿਲਿਆ ਹੈ"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ਸਟਰੀਮ ਡਰੇਨ ਫੇਲà©à¨¹ ਹੋਇਆ: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "ਸਟਰੀਮ ਡਰੇਨ ਫੇਲà©à¨¹ ਹੋਇਆ: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "ਪਲੇਬੈਕ ਸਟਰੀਮ ਡਰੇਨ ਕੀਤੀ।\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "ਪਲੇਬੈਕ ਸਟਰੀਮ ਡਰੇਨ ਕੀਤੀ।"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "ਸਰਵਰ ਨਾਲ ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਡਰੇਨ ਹੋ ਰਿਹਾ ਹੈ।\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "ਸਰਵਰ ਨਾਲ ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਡਰੇਨ ਹੋ ਰਿਹਾ ਹੈ।"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "ਸਟਰੀਮ ਸਫਲਤਾਪੂਰਕ ਬਣ ਗਈ ਹੈ।\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() ਫੇਲà©à¨¹ ਹੈ: %s"
+
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "ਸਟਰੀਮ ਸਫਲਤਾਪੂਰਕ ਬਣ ਗਈ ਹੈ।"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Buffer metrics: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "ਸਧਾਰਨ spec '%s', ਚੈਨਲ ਮੈਪ '%s' ਦੀ ਵਰਤੋਂ।\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "ਸਧਾਰਨ spec '%s', ਚੈਨਲ ਮੈਪ '%s' ਦੀ ਵਰਤੋਂ।"
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "%s ਜੰਤਰ ਨਾਲ ਕà©à¨¨à¨•à©ˆà¨Ÿ ਕੀਤਾ (%u, %ssuspended)।\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "%s ਜੰਤਰ ਨਾਲ ਕà©à¨¨à¨•à©ˆà¨Ÿ ਕੀਤਾ (%u, %ssuspended)।"
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n"
+msgid "Stream error: %s"
+msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "ਸਟਰੀਮ ਜੰਤਰ ਸਸਪੈਂਡ ਕੀਤਾ ਹੈ।%s \n"
+msgid "Stream device suspended.%s"
+msgstr "ਸਟਰੀਮ ਜੰਤਰ ਸਸਪੈਂਡ ਕੀਤਾ ਹੈ।%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "ਸਟਰੀਮ ਜੰਤਰ ਮà©à©œ-ਪà©à¨°à¨¾à¨ªà¨¤ ਕੀਤਾ।%s \n"
+msgid "Stream device resumed.%s"
+msgstr "ਸਟਰੀਮ ਜੰਤਰ ਮà©à©œ-ਪà©à¨°à¨¾à¨ªà¨¤ ਕੀਤਾ।%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "ਸਟਰੀਮ ਅੰਡਰਰਨ।%s \n"
+msgid "Stream underrun.%s"
+msgstr "ਸਟਰੀਮ ਅੰਡਰਰਨ।%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "ਸਟਰੀਮ ਓਵਰਰਨ।%s \n"
+msgid "Stream overrun.%s"
+msgstr "ਸਟਰੀਮ ਓਵਰਰਨ।%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "ਸਟਰੀਮ ਸ਼à©à¨°à©‚ ਕੀਤੀ। %s\n"
+msgid "Stream started.%s"
+msgstr "ਸਟਰੀਮ ਸ਼à©à¨°à©‚ ਕੀਤੀ। %s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "ਸਟਰੀਮ ਨੂੰ ਜੰਤਰ %s ਤੋਂ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ ਹੈ (%u, %ssuspended)।%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "ਸਟਰੀਮ ਨੂੰ ਜੰਤਰ %s ਤੋਂ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ ਹੈ (%u, %ssuspended)।%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "ਨਹੀਂ "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "ਸਟਰੀਮ ਬਫਰ à¨à¨Ÿà¨°à©€à¨¬à¨¿à¨Šà¨Ÿ ਤਬਦੀਲ ਕੀਤੇ ਗà¨à¥¤%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "ਸਟਰੀਮ ਬਫਰ à¨à¨Ÿà¨°à©€à¨¬à¨¿à¨Šà¨Ÿ ਤਬਦੀਲ ਕੀਤੇ ਗà¨à¥¤%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਬਣ ਗਿਆ।%s \n"
+msgid "Connection established.%s"
+msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਬਣ ਗਿਆ।%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਫੇਲ: %s\n"
+msgid "Connection failure: %s"
+msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਫੇਲ: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF ਮਿਲਿਆ।\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF ਮਿਲਿਆ।"
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "write() failed: %s"
+msgstr "write() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../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:557
+msgid "Got signal, exiting."
+msgstr "ਸਿਗਨਲ ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।"
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "ਵਕਫਾ ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲ ਹੋਈ: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "ਵਕਫਾ ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲ ਹੋਈ: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "ਸਮਾਂ: %0.3f ਸਕਿੰਟ; ਵਕਫਾ: %0.0f usec। \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "ਟਾਈਮ: %0.3f ਸਕਿੰਟ; ਵਕਫਾ: %0.0f usec।"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() ਫੇਲà©à¨¹ ਹੈ: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() ਫੇਲà©à¨¹ ਹੈ: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1489,8 +1386,10 @@ msgstr ""
"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"
@@ -1513,6 +1412,11 @@ msgstr ""
"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"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1525,136 +1429,127 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਚੈਨਲ ਮੈਪ '%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਚੈਨਲ ਮੈਪ '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਚੈਨਲ ਮੈਪ '%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਵਕਫਾ ਹਦਾਇਤ '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਵਕਫਾ ਹਦਾਇਤ '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਪਰੋਸੈੱਸ ਟਾਈਮ ਹਦਾਇਤ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਪਰੋਸੈੱਸ ਟਾਈਮ ਹਦਾਇਤ '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਰੀਸੈਂਪਲ ਢੰਗ '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "ਅਣਜਾਣ ਫਾਇਲ ਫਾਰਮੈਟ %s"
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਹਦਾਇਤ\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਹਦਾਇਤ"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "ਬਹà©à¨¤ ਵੱਧ ਆਰਗੂਮੈਂਟ।\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "ਬਹà©à¨¤ ਵੱਧ ਆਰਗੂਮੈਂਟ।"
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲà©à¨¹ ਹੈ।\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "ਚੈਨਲ ਮੈਪ ਸੈਂਪਲ ਹਦਾਇਤ ਨਾਲ ਨਹੀਂ ਮਿਲਦਾ\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "ਚੈਨਲ ਮੈਪ ਸੈਂਪਲ ਹਦਾਇਤ ਨਾਲ ਨਹੀਂ ਮਿਲਦਾ"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਅਤੇ ਚੈਨਲ ਮੈਪ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "ਰਿਕਾਰਡਿੰਗ"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() ਫੇਲà©à¨¹ ਹੈ।\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() ਫੇਲà©à¨¹ ਹੈ: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() ਫੇਲà©à¨¹ ਹੈ।\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_new() ਫੇਲà©à¨¹ ਹੈ।"
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() ਫੇਲà©à¨¹ ਹੈ।"
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1681,7 +1576,12 @@ msgstr "ਮà©à©œ-ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲ: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ਚੇਤਾਵਨੀ: ਸਾਊਂਡ ਸਰਵਰ ਲੋਕਲ ਨਹੀਂ ਹੈ, ਸਸਪੈਂਡ ਨਹੀਂ ਹੋ ਰਿਹਾ।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "ਕà©à¨¨à©ˆà¨•à¨¶à¨¨ ਫੇਲ: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।\n"
@@ -1721,32 +1621,47 @@ msgstr ""
"libpulse %s ਨਾਲ ਕੰਪਾਇਲ\n"
"libpulse %s ਨਾਲ ਲਿੰਕ\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "ਅੰਕੜੇ ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲà©à¨¹: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() ਫੇਲà©à¨¹ ਹੈ।\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() ਫੇਲà©à¨¹ ਹੈ।\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() ਫੇਲà©à¨¹ ਹੈ।\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "ਅੰਕੜੇ ਪà©à¨°à¨¾à¨ªà¨¤à©€ ਫੇਲà©à¨¹: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ਹà©à¨£ ਵਰਤੋਂ ਵਿੱਚ ਹੈ: %u ਬਲਾਕ ਵਿੱਚ ਕà©à©±à¨² %s ਬਾਈਟ ਹਨ।\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "ਪੂਰੇ ਲਾਈਫਟਾਈਮ ਵਿੱਚ ਜਾਰੀ ਕੀਤਾ ਗਿਆ: %u ਬਲਾਕ ਵਿੱਚ ਕà©à©±à¨² %s ਬਾਈਟ ਹਨ।\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ਸੈਂਪਲ ਕੈਸ਼ ਸਾਈਜ਼: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲ ਹੋਇਆ: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪà©à¨°à¨¾à¨ªà¨¤ ਕਰਨ ਵਿੱਚ ਫੇਲ ਹੋਇਆ: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1769,12 +1684,12 @@ msgstr ""
"Default Source: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "ਸਿੰਕ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "ਸਿੰਕ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1813,22 +1728,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tਪਰੋਫਾਈਲ:\n"
+msgstr "\tਪੋਰਟ:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tਸਰਗਰਮ ਪਰੋਫਾਈਲ: %s\n"
+msgstr "\tਸਰਗਰਮ ਪੋਰਟ: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "ਸਰੋਤ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "ਸਰੋਤ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1867,20 +1782,20 @@ msgstr ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "ਉਪਲੱਬਧ ਨਹੀਂ"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "ਮੋਡੀਊਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "ਮੋਡੀਊਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1897,12 +1812,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "ਕਲਾਇਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "ਕਲਾਇਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1917,12 +1832,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "ਕਾਰਡ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "ਕਾਰਡ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1939,22 +1854,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tਪਰੋਫਾਈਲ:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tਸਰਗਰਮ ਪਰੋਫਾਈਲ: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "ਇੰਪà©à©±à¨Ÿ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "ਇੰਪà©à©±à¨Ÿ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲà©à¨¹: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1991,12 +1906,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "ਸਰੋਤ ਆਉਟਪà©à©±à¨Ÿ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "ਸਰੋਤ ਆਉਟਪà©à©±à¨Ÿ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2025,12 +1940,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2061,22 +1976,26 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "ਫੇਲà©à¨¹: %s\n"
+msgid "Failure: %s"
+msgstr "ਫੇਲà©à¨¹: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "ਸੈਂਪਲ ਅੱਪਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "ਸੈਂਪਲ ਅੱਪਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ: %s"
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "ਫਾਇਲ ਦਾ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਅੰਤ"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "ਫਾਇਲ ਦਾ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਅੰਤ\n"
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2084,15 +2003,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2108,13 +2033,21 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2124,7 +2057,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2135,77 +2068,106 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸੈਂਪਲ ਫਾਇਲ ਦਿਓ\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸੈਂਪਲ ਫਾਇਲ ਦਿਓ"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲà©à¨¹ ਹੈ।\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਫੇਲà©à¨¹ ਹੈ।"
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲà©à¨¹à¨¿à¨† ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "ਖੇਡਣ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "ਖੇਡਣ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "ਹਟਾਉਣ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "ਹਟਾਉਣ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੰਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੰਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਸਰੋਤ ਆਉਟਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਰੋਤ ਦੇਣਾ ਪਵੇਗਾ\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਸਰੋਤ ਆਉਟਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਰੋਤ ਦੇਣਾ ਪਵੇਗਾ"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਮੋਡੀਊਲ ਨਾਂ ਅਤੇ ਆਰਗੂਮੈਂਟ ਦੇਣਾ ਪਵੇਗਾ।\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਮੋਡੀਊਲ ਨਾਂ ਅਤੇ ਆਰਗੂਮੈਂਟ ਦੇਣਾ ਪਵੇਗਾ।"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਮੈਡੀਊਲ ਲਿਸਟ ਦੇਣੀ ਪਵੇਗੀ\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਮੈਡੀਊਲ ਲਿਸਟ ਦੇਣੀ ਪਵੇਗੀ"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
-msgstr "ਤà©à¨¸à©€à¨‚ ਇੱਕ ਤੋਂ ਵੱਧ ਸਿੰਕ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਬà©à¨²à©€à¨…ਨ ਮà©à©±à¨² ਦੇਣਾ ਪਵੇਗਾ।\n"
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr "ਤà©à¨¸à©€à¨‚ ਇੱਕ ਤੋਂ ਵੱਧ ਸਿੰਕ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਬà©à¨²à©€à¨…ਨ ਮà©à©±à¨² ਦੇਣਾ ਪਵੇਗਾ।"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
-msgstr "ਤà©à¨¸à©€à¨‚ ਇੱਕ ਤੋਂ ਵੱਧ ਸਰੋਤ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤà©à¨¹à¨¾à¨¨à©‚à©° ਬà©à¨²à©€à¨…ਨ ਮà©à©±à¨² ਦੇਣਾ ਪਵੇਗਾ।\n"
+"value."
+msgstr "ਤà©à¨¸à©€à¨‚ ਇੱਕ ਤੋਂ ਵੱਧ ਸਰੋਤ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤà©à¨¹à¨¾à¨¨à©‚à©° ਬà©à¨²à©€à¨…ਨ ਮà©à©±à¨² ਦੇਣਾ ਪਵੇਗਾ।"
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "ਕੋਈ ਯੋਗ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ।\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() ਫੇਲà©à¨¹ ਹੈ: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਹਦਾਇਤ"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੰਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "ਅਢà©à©±à¨•à¨µà©€à¨‚ ਸਿੰਕ ਇੰਪà©à©±à¨Ÿ ਸੂਚੀ"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੰਪà©à©±à¨Ÿ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "ਅਢà©à©±à¨•à¨µà¨¾à¨‚ ਸੈਂਪਲ ਹਦਾਇਤ"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "ਕੋਈ ਯੋਗ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ।"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2286,48 +2248,48 @@ msgstr "ਕੂਕੀ ਡਾਟਾ ਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ\n"
msgid "Not yet implemented.\n"
msgstr "ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ।\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "ਕੋਈ ਪਲਸ-ਆਡੀਓ ਡੈਮਨ ਨਹੀਂ ਚੱਲ ਰਿਹਾ, ਜਾਂ ਸ਼ੈਸ਼ਨ ਡੈਮਨ ਤੌਰ ਤੇ ਨਹੀਂ ਚੱਲ ਰਿਹਾ।"
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "ਪਲਸਆਡੀਓ ਡੈਮਨ ਬੰਦ ਕਰਨ ਵਿੱਚ ਫੇਲ।"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ਡੈਮਨ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਹੀ।"
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn ਲਾਕ ਵਰਤ ਨਹੀਂ ਸਕਦਾ।"
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2344,7 +2306,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:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2362,129 +2324,22 @@ msgstr ""
"returned 0 or another value < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "ਬੰਦ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "ਹਾਈ ਫਡੈਲਿਟੀ ਪਲੇਅਬੈਕ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "ਹਾਈ ਫਡੈਲਿਟੀ ਪਲੇਅਬੈਕ (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
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 "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 df526062..6b0141bb 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,15 +5,20 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-06-09 00:03+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-03 12:25+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:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -25,7 +30,7 @@ msgstr ""
"Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -37,7 +42,7 @@ msgstr ""
"Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -49,9 +54,17 @@ msgstr ""
"Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten "
"problem programistom ALSA."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Wirtualny odpływ LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -61,12 +74,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<nazwa odpływu> sink_properties=<właściwości odpływu> "
+"master=<nazwa odpływu do filtrowania> format=<format próbki> "
+"rate=<częstotliwość próbki> channels=<liczba kanałów> channel_map=<mapa "
+"kanałów> plugin=<nazwa wtyczki ladspa> label=<etykieta wtyczki ladspa> "
+"control=<lista wartości kontroli wejścia oddzielona przecinkami>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Wewnętrzny dźwięk"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -83,222 +109,92 @@ msgstr "Przydzielenie nowego programu wczytującego dl nie powiodło się."
msgid "Failed to add bind-now-loader."
msgstr "Dodanie bind-now-loader nie powiodło się."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Nie można połączyć się z magistralą systemową: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Nie można uzyskać obiektu caller z PID: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Nie można ustawić UID obiektu caller."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Uzyskanie sesji CK nie powiodło się."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Nie można ustawić UID obiektowi sesji."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Nie można przydzielić PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Nie można ustawić action_id"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Nie można przydzielić PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Nie można zainicjować PolKitContext: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Nie można ustalić, czy obiekt caller jest upoważniony: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Nie można uzyskać upoważnienia: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit zwróciło \"%s\""
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Otrzymano sygnał %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Wyłączanie."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Znalezienie użytkownika \"%s\" nie powiodło się."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Znalezienie grupy \"%s\" nie powiodło się."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Utworzenie \"%s\" nie powiodło się: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Zmiana listy grup nie powiodła się: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Zmiana GID nie powiodła się: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Zmiana UID nie powiodła się: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Pomyślnie porzucono uprawnienia roota."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "Tryb systemowy nie jest obsługiwany na tej platformie."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nie powiodło się: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Analiza wiersza poleceń nie powiodła się."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit nadał uprawnienie \"acquire-high-priority\"."
-
-#: ../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:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit nadał uprawnienie \"acquire-real-time\"."
-
-#: ../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: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 ""
-"W konfiguracji zażądano SUID roota i szeregowanie w czasie rzeczywistym i/"
-"lub o wysokim priorytecie. Brak wymaganych uprawnień:\n"
-"Nie jesteśmy w grupie \"%s\", PolicyKit odmawia przyznania żądanych "
-"uprawnień i brak ograniczeń zwiększania zasobów RLIMIT_NICE/RLIMIT_RTPRIO.\n"
-"Aby włączyć szeregowanie w czasie rzeczywistym i/lub o wysokim priorytecie, "
-"należy uzyskać odpowiednie uprawnienia PolicyKit, zostać członkiem grupy \"%s"
-"\" lub zwiększyć ograniczenia zasobów RLIMIT_NICE/RLIMIT_RTPRIO dla tego "
-"użytkownika."
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "Pomyślnie zwiększono RLIMIT_RTPRIO"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO nie powiodło się: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Oddawanie CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Demon nie jest uruchomiony"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon jest uruchomiony jako PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zniszczenie demona nie powiodło się: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -306,155 +202,160 @@ msgstr ""
"Ten program nie powinien być uruchomiany jako root (chyba, że podano --"
"system)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Wymagane sÄ… uprawnienia roota."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start nie jest obsługiwane przy uruchamianiu systemowym."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Uruchamianie w trybie systemowym, wymuszanie wyłączenia trybu SHM!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Uzyskanie standardowego wejścia/wyjścia nie powiodło się."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "potok nie powiódł się: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() nie powiodło się: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() nie powiodło się: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Uruchomienie demona nie powiodło się."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Pomyślnie uruchomiono demona."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "To jest PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Komputer kompilacji: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompilacji: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Uruchamianie na komputerze: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Znaleziono %u procesorów."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Rozmiar strony to %lu bajtów"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Skompilowano z obsługą Valgrind: tak"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Skompilowano z obsługą Valgrind: nie"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Uruchamianie w trybie Valgrind: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Budowanie optymalizowane: tak"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Budowanie optymalizowane: nie"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "Podano NDEBUG, wszystkie asercje zostały wyłączone."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "Podano FASTPATH, tylko szybkie asercje ścieżek zostały wyłączone."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Wszystkie asercje są włączone."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Uzyskanie identyfikatora komputera nie powiodło się"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "Identyfikator komputera to %s."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:768
#, c-format
msgid "Session ID is %s."
msgstr "Identyfikator sesji to %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Używanie folderu wykonywania %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Używanie folderu modułów %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -463,16 +364,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"OK, więc PA jest uruchomione w trybie systemowym. Proszę zauważyć, że "
+"prawdopodobnie tak nie powinno być.\n"
+"Jeśli mimo to tak jest, to twoja wina, jeśli coś nie działa tak jak "
+"powinno.\n"
+"Proszę przeczytać http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode, "
+"gdzie wyjaśniono, dlaczego tryb systemowy jest zwykle złym pomysłem."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodło się."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Świeże zegary o wysokiej rozdzielczości! Smacznego!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -480,27 +387,27 @@ msgstr ""
"Koleś, twoje jądro śmierdzi! Szef kuchni poleca dzisiaj Linuksa w włączonymi "
"zegarami o wysokiej rozdzielczości!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodło się."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodło się."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych modułów, odmawianie pracy."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Zakończono uruchamianie demona."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyłączenie demona."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Demon został zniszczony."
@@ -766,72 +673,72 @@ msgstr "OSTRZEÅ»ENIE O PRZESTARZAÅOÅšCI: %s\n"
msgid "Path: %s\n"
msgstr "Ścieżka: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Nieprawidłowy dziennik docelowy \"%s\"."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom dziennika \"%s\"."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Nieprawidłowa metoda resamplingu \"%s\"."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Nieprawidłowy rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Nieprawidłowy format próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Nieprawidłowa częstotliwość próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Nieprawidłowe kanały próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Nieprawidłowa mapa kanałów \"%s\"."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nieprawidłowa liczba fragmentów \"%s\"."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Nieprawidłowy rozmiar fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodło się: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -839,18 +746,14 @@ msgstr ""
"Podana domyślna mapa kanałów ma inną liczbę kanałów niż podana domyślna "
"liczba kanałów."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Odczytano z pliku konfiguracji: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Porzucanie uprawnień roota."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "Pomyślnie ograniczono możliwości do CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Czyszczenie uprawnień."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -860,31 +763,7 @@ msgstr "System dźwięku PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Uruchomienie systemu dźwięku PulseAudio"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
-"Szeregowanie o wysokim priorytecie (ujemny poziom nice Uniksa) dla demona "
-"PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Szeregowanie w czasie rzeczywistym dla demona PulseAudio"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania o wysokim "
-"priorytecie."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
-"Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania w czasie "
-"rzeczywistym."
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1088,33 +967,33 @@ msgstr "Górny tylny lewy"
msgid "Top Rear Right"
msgstr "Górny tylny prawy"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(nieprawidłowe)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1218,27 +1097,35 @@ msgstr "Brak implementacji"
msgid "Client forked"
msgstr "Rozdzielono klienta"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1251,189 +1138,188 @@ msgstr "XOpenDisplay() nie powiodło się"
msgid "Failed to parse cookie data"
msgstr "Analiza danych ciasteczka nie powiodło się"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Otwarcie pliku konfiguracji \"%s\" nie powiodło się: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nie wczytano ciasteczka. Próbowanie połączenia się bez niego."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Otrzymano komunikat z nieznanego powodu \"%s\""
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Opróżnienie strumienia nie powiodło się: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Opróżnienie strumienia nie powiodło się: %s"
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Opróżniono strumień odtwarzania."
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Opróżniono strumień odtwarzania.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Opróżnianie połączenia z serwerem."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Opróżnianie połączenia z serwerem.\n"
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() nie powiodło się: %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() nie powiodło się: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() nie powiodło się: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() nie powiodło się: %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() nie powiodło się: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Pomyślnie utworzono strumień.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Pomyślnie utworzono strumień."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() nie powiodło się: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() nie powiodło się: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Metryka bufora: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Metryka bufora: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Metryka bufora: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "Używanie przykładowej specyfikacji \"%s\", mapa kanałów \"%s\".\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Używanie przykładowej specyfikacji \"%s\", mapa kanałów \"%s\"."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "Połączono się z urządzeniem %s (%u, %swstrzymane).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Połączono się z urządzeniem %s (%u, %swstrzymane)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "BÅ‚Ä…d strumienia: %s\n"
+msgid "Stream error: %s"
+msgstr "BÅ‚Ä…d strumienia: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Wstrzymano urzÄ…dzenie strumienia.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "Wstrzymano urzÄ…dzenie strumienia.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Wznowiono urzÄ…dzenie strumienia.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "Wznowiono urzÄ…dzenie strumienia.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Niedopełniono strumień.%s \n"
+msgid "Stream underrun.%s"
+msgstr "Niedopełniono strumień.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Przepełniono strumień.%s \n"
+msgid "Stream overrun.%s"
+msgstr "Przepełniono strumień.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Utworzono strumień.%s \n"
+msgid "Stream started.%s"
+msgstr "Utworzono strumień.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "Strumień został przeniesiony do urządzenia %s (%u, %swstrzymane).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Strumień został przeniesiony do urządzenia %s (%u, %swstrzymane).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "nie "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Zmieniono atrybuty bufora strumienia.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Zmieniono atrybuty bufora strumienia.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Ustanowiono połączenie.%s \n"
+msgid "Connection established.%s"
+msgstr "Ustanowiono połączenie.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() nie powiodło się: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() nie powiodło się: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() nie powiodło się: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() nie powiodło się: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() nie powiodło się: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() nie powiodło się: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Połączenie nie powiodło się: %s\n"
+msgid "Connection failure: %s"
+msgstr "Połączenie nie powiodło się: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Otrzymano EOF.\n"
-
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() nie powiodło się: %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Otrzymano EOF."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() nie powiodło się: %s\n"
+msgid "write() failed: %s"
+msgstr "write() nie powiodło się: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Otrzymano sygnał, wyłączanie.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Otrzymano sygnał, wyłączanie."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Uzyskanie opóźnienia nie powiodło się: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Uzyskanie opóźnienia nie powiodło się: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Czas: %0.3f sekundy; opóźnienie: %0.0f usekundy. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() nie powiodło się: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() nie powiodło się: %s"
#: ../src/utils/pacat.c:605
#, c-format
@@ -1561,137 +1447,131 @@ msgstr ""
"Skompilowane za pomocÄ… libpulse %s\n"
"Skonsolidowane za pomocÄ… libpulse %s\n"
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
#, c-format
-msgid "Invalid client name '%s'\n"
-msgstr "Nieprawidłowa nazwa klienta \"%s\"\n"
+msgid "Invalid client name '%s'"
+msgstr "Nieprawidłowa nazwa klienta \"%s\""
-#: ../src/utils/pacat.c:776
+#: ../src/utils/pacat.c:775
#, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "Nieprawidłowa nazwa strumienia \"%s\"\n"
+msgid "Invalid stream name '%s'"
+msgstr "Nieprawidłowa nazwa strumienia \"%s\""
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Nieprawidłowa mapa kanałów \"%s\"\n"
+msgid "Invalid channel map '%s'"
+msgstr "Nieprawidłowa mapa kanałów \"%s\""
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Nieprawidłowe określenie opóźnienia \"%s\"\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Nieprawidłowe określenie opóźnienia \"%s\""
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Nieprawidłowe określenie czasu procesu \"%s\"\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Nieprawidłowe określenie czasu procesu \"%s\""
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Nieprawidłowa własność \"%s\"\n"
+msgid "Invalid property '%s'"
+msgstr "Nieprawidłowa własność \"%s\""
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
msgstr "Nieznany format pliku %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Nieprawidłowe określenie próbki\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Nieprawidłowe określenie próbki"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Za dużo parametrów.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Za dużo parametrów."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "Utworzenie określenia próbki dla pliku nie powiodło się."
-#: ../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:949
+msgid "Failed to open audio file."
+msgstr "Otwarcie pliku dźwiękowego nie powiodło się."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
"Ostrzeżenie: podane określenie próbki zostanie zastąpione przez określenie z "
-"pliku.\n"
+"pliku."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Ustalenie określenia próbki z pliku nie powiodło się."
-#: ../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:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Ostrzeżenie: ustalenie mapy kanałów z pliku nie powiodło się."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "Mapa kanałów nie zgadza się z określeniem próbki"
-#: ../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:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Ostrzeżenie: zapisanie mapy kanałów do pliku nie powiodło się."
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr ""
"Otwieranie strumienia %s za pomocą określenie próbki \"%s\" i mapy kanałów "
-"\"%s\".\n"
+"\"%s\"."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "nagrywanie"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() nie powiodło się."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() nie powiodło się.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() nie powiodło się."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() nie powiodło się."
-#: ../src/utils/pacat.c:1066
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
#, c-format
-msgid "pa_context_connect() failed: %s\n"
-msgstr "pa_context_connect() nie powiodło się: %s\n"
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() nie powiodło się: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() nie powiodło się.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() nie powiodło się."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() nie powiodło się."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1719,7 +1599,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Połączenie nie powiodło się: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Otrzymano SIGINT, wyłączanie.\n"
@@ -1758,34 +1643,49 @@ msgstr ""
"Skompilowane za pomocÄ… libpulse %s\n"
"Skonsolidowane za pomocÄ… libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() nie powiodło się.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() nie powiodło się.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() nie powiodło się.\n"
+
+#: ../src/utils/pactl.c:135
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "Uzyskanie statystyk nie powiodło się: %s\n"
+msgid "Failed to get statistics: %s"
+msgstr "Uzyskanie statystyk nie powiodło się: %s"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Rozmiar pamięci podręcznej próbek: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "Uzyskanie informacji o serwerze nie powiodło się: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "Uzyskanie informacji o serwerze nie powiodło się: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1808,12 +1708,12 @@ msgstr ""
"Domyślne źródło: %s\n"
"Ciasteczko: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "Uzyskanie informacji o odpływie nie powiodło się: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "Uzyskanie informacji o odpływie nie powiodło się: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1852,22 +1752,22 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tProfile:\n"
+msgstr "\tPorty:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tAktywny profil: %s\n"
+msgstr "\tAktywny port: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "Uzyskanie informacji o źródle nie powiodło się: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "Uzyskanie informacji o źródle nie powiodło się: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1906,20 +1806,20 @@ msgstr ""
"\tWłaściwości:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "nie dotyczy"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "Uzyskanie informacji o module nie powiodło się: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "Uzyskanie informacji o module nie powiodło się: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1936,12 +1836,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "Uzyskanie informacji o kliencie nie powiodło się: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "Uzyskanie informacji o kliencie nie powiodło się: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1956,12 +1856,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "Uzyskanie informacji o karcie nie powiodło się: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "Uzyskanie informacji o karcie nie powiodło się: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1978,22 +1878,22 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktywny profil: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, 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"
+msgid "Failed to get sink input information: %s"
+msgstr "Uzyskanie informacji o wejściu odpływu nie powiodło się: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2030,12 +1930,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, 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"
+msgid "Failed to get source output information: %s"
+msgstr "Uzyskanie informacji o wyjściu źródła nie powiodło się: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2064,12 +1964,12 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "Uzyskanie informacji o próbce nie powiodło się: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "Uzyskanie informacji o próbce nie powiodło się: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2100,22 +2000,26 @@ msgstr ""
"\tWłaściwości:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "Niepowodzenie: %s\n"
+msgid "Failure: %s"
+msgstr "Niepowodzenie: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "Usunięcie próbki nie powiodło się: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "Wysłanie próbki nie powiodło się: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "Przedwczesny koniec pliku\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "Przedwczesny koniec pliku"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Otrzymano SIGINT, wyłączanie."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2123,15 +2027,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2147,13 +2057,22 @@ msgstr ""
"%s [opcje] upload-sample NAZWAPLIKU [NAZWA]\n"
"%s [opcje] play-sample NAZWA [ODPÅYW]\n"
"%s [opcje] remove-sample NAZWA\n"
-"%s [opcje] move-sink-input IDENTYFIKATOR ODPÅYW\n"
-"%s [opcje] move-source-output IDENTYFIKATOR ŹRÓDÅO\n"
+"%s [opcje] move-sink-input WEJÅšCIE_ODPÅYWU ODPÅYW\n"
+"%s [opcje] move-source-output WYJÅšCIE_ODPÅYWU ŹRÓDÅO\n"
"%s [opcje] load-module NAZWA [PARAMETRY...]\n"
-"%s [opcje] unload-module IDENTYFIKATOR\n"
-"%s [opcje] suspend-sink [ODPÅYW] 1|0\n"
-"%s [opcje] suspend-source [ŹRÓDÅO] 1|0\n"
-"%s [opcje] set-card-profile [KARTA] [PROFIL] \n"
+"%s [opcje] unload-module MODUÅ\n"
+"%s [opcje] suspend-sink SINK 1|0\n"
+"%s [opcje] suspend-source SOURCE 1|0\n"
+"%s [opcje] set-card-profile KARTA PROFIL\n"
+"%s [opcje] set-sink-port ODPÅYW PORT\n"
+"%s [opcje] set-source-port ŹRÓDÅO PORT\n"
+"%s [opcje] set-sink-volume ODPÅYW GÅOÅšNOŚĆ\n"
+"%s [opcje] set-source-volume ŹRÓDÅO GÅOÅšNOŚĆ\n"
+"%s [opcje] set-sink-input-volume WYJÅšCIE_ODPÅYWU GÅOÅšNOŚĆ\n"
+"%s [opcje] set-sink-mute ODPÅYW 1|0\n"
+"%s [opcje] set-source-mute ŹRÓDÅO 1|0\n"
+"%s [opcje] set-sink-input-mute WEJÅšCIE_ODPÅYWU 1|0\n"
+"\n"
"\n"
" -h, --help Wyświetla tę pomoc\n"
" --version Wyświetla wersję\n"
@@ -2161,7 +2080,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:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2172,78 +2091,108 @@ msgstr ""
"Skompilowane za pomocÄ… libpulse %s\n"
"Skonsolidowane za pomocÄ… libpulse %s\n"
-#: ../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:979
+msgid "Please specify a sample file to load"
+msgstr "Proszę podać plik próbki do wczytania"
-#: ../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:992
+msgid "Failed to open sound file."
+msgstr "Otwarcie pliku dźwiękowego nie powiodło się."
-#: ../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:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "Ostrzeżenie: ustalenie określenia próbki z pliku nie powiodło się."
-#: ../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:1014
+msgid "You have to specify a sample name to play"
+msgstr "Należy podać nazwę próbki do odtworzenia"
-#: ../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:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Należy podać nazwę próbki do usunięcia"
-#: ../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:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Należy podać indeks odpływu wejścia i odpływ"
-#: ../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:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Należy podać indeks źródła wyjścia i źródło"
-#: ../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:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Należy podać nazwę modułu i parametry."
-#: ../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:1080
+msgid "You have to specify a module index"
+msgstr "Należy podać indeks modułu"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"Nie można podać więcej niż jednego odpływu. Należy podać wartość logiczną.\n"
+"Nie można podać więcej niż jednego odpływu. Należy podać wartość logiczną."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
-"Nie można podać więcej niż jednego źródła. Należy podać wartość logiczną.\n"
+"Nie można podać więcej niż jednego źródła. Należy podać wartość logiczną."
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Należy podać nazwę karty/indeks i nazwę profilu"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Należy podać nazwę odpływu/indeks i nazwę portu"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Należy podać nazwę źródła/indeks i nazwę portu"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Nie podano prawidłowego polecenia.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Należy podać nazwę odpływu/indeks i głośność"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() nie powiodło się: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Nieprawidłowe określenie głośności"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Należy podać nazwę źródła/indeks i głośność"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Należy podać indeks odpływu wejścia i głośność"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Nieprawidłowy indeks wejścia odpływu"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Należy podać nazwę odpływu/indeks i zmienną logiczną wyciszenia"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Należy podać nazwę źródła/indeks i zmienną logiczną wyciszenia"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Należy podać indeks odpływu wejścia i zmienną logiczną wyciszenia"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Nieprawidłowe określenie indeksu wejścia odpływu"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Nie podano prawidłowego polecenia."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2324,50 +2273,50 @@ msgstr "Wczytanie danych ciasteczka nie powiodło się\n"
msgid "Not yet implemented.\n"
msgstr "Niezaimplementowane.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
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
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "gniazdo(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Zniszczenie demona PulseAudio nie powiodło się."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Demon nie odpowiada."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Nie można uzyskać dostępu do blokady automatycznego wznawiania."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2384,7 +2333,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:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2402,60 +2351,22 @@ msgstr ""
"snd_pcm_avail() zwróciło zero lub inną wartość < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Wyłącz"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Odtwarzanie o wysokiej dokładności (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Przechwytywanie o wysokiej dokładności (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplex telefoniczny (HSP/HFP)"
#: ../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
index b44d622d..070a8bc8 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Rui Gouveia <rui.gouveia@globaltek.pt>\n"
"Language-Team: pt <fedora-trans-pt@redhat.com>\n"
@@ -12,7 +12,12 @@ msgstr ""
"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: PORTUGAL\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, fuzzy, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -25,7 +30,7 @@ msgstr ""
"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
"problema aos programadores do ALSA."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -38,7 +43,7 @@ msgstr ""
"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
"problema aos programadores do ALSA."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -51,9 +56,18 @@ msgstr ""
"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
"problema aos programadores do ALSA."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
+#, fuzzy
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Alarme virtual"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -64,11 +78,20 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "Saída %s"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Ãudio Interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -84,220 +107,92 @@ msgstr "Não foi possível alocar o novo carregador \"dl\"."
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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Foi obtido o sinal %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "A sair."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falha ao procurar o utilizador '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falha ao procurar o grupo '%s'."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, 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
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falha ao criar o '%s': %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falhou a alteração da lista de grupos: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Não foi possível mudar o GID: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Não foi possível mudar o UID: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Privilégios de root cedidos com sucesso."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "Modo de sistema não suportado nesta plataforma."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Serviço não está a executar"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Serviço a executar como PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Tentativa de matar serviço falhou: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -305,154 +200,159 @@ 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
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "São necessários privilégios de root."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start não é suportado para instâncias do sistema."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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
+#: ../src/daemon/main.c:581
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
+#: ../src/daemon/main.c:584
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
+#: ../src/daemon/main.c:589
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
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Não foi possível adquirir o stdio."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe falhou: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() falhou: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() falhou: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Arranque do serviço falhou."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Arranque do serviço sucedeu."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Isto é PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Máquina de compilação: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS utilizadas na compilação: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "A executar na máquina: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Foram encontrados %u CPUs."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte para Valgrind: sim"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte para Valgrind: não"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "A executar em modo \"valgrind\": %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimizado: sim"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Compilação optimizada: não"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todas as declarações desactivadas."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definido, apenas as declarações \"fast path\" desactivadas."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Todas as declarações desactivadas."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "A tentativa de ler o ID da máquina falhou"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "O ID da máquina é %s."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:768
#, fuzzy, c-format
msgid "Session ID is %s."
-msgstr "O ID da máquina é %s."
+msgstr "A sessão está fechada"
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Execução a utilizar o directório %s"
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "A manter o estado no directório %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Execução a utilizar o directório %s"
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Execução em modo de sistema: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -462,15 +362,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timer \"frescos\" de alta resolução disponíveis. Bom apetite!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -478,32 +378,32 @@ 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
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Falha ao inicializar serviço."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Arranque do serviço completo."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Encerramento do serviço iniciado."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Serviço terminado."
#: ../src/daemon/cmdline.c:115
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -596,7 +496,7 @@ msgstr ""
"\n"
"OPTIONS:\n"
" --system[=BOOL] Executa em modo de sistema\n"
-" -D, --daemonize[=BOOL] Passa serviço depois de executar\n"
+" -D, --daemonize[=BOOL] Passa a 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"
@@ -647,15 +547,14 @@ msgstr ""
"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"
+" -L, --load=\"MODULE ARGUMENTS\" Carrega o módulo especificado com\n"
+" o argumento especificado\n"
+" -F, --file=FILENAME Executa o script especificado\n"
+" -C Abre uma linha de comando no TTY "
+"(consola) em execução\n"
+" depois do arranque\n"
"\n"
-" -n Don't load default script file\n"
+" -n Não carrega o script por omissão\n"
#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
@@ -760,99 +659,98 @@ msgid "Load Once: %s\n"
msgstr "Carregar Uma Vez: %s\n"
#: ../src/daemon/dumpmodules.c:75
-#, c-format
+#, fuzzy, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "Aviso de Impressão"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, 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
+#: ../src/daemon/daemon-conf.c:248
#, 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
+#: ../src/daemon/daemon-conf.c:264
+#, fuzzy, c-format
msgid "[%s:%u] Invalid resample method '%s'."
-msgstr ""
+msgstr "nome do método de acesso"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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
+#: ../src/daemon/daemon-conf.c:310
#, 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
+#: ../src/daemon/daemon-conf.c:328
+#, fuzzy, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
-msgstr ""
+msgstr "Taxa de amostragem em kHz"
-#: ../src/daemon/daemon-conf.c:336
-#, c-format
+#: ../src/daemon/daemon-conf.c:352
+#, fuzzy, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
-msgstr ""
+msgstr "Número de canais de audio"
-#: ../src/daemon/daemon-conf.c:354
-#, c-format
+#: ../src/daemon/daemon-conf.c:370
+#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr ""
+msgstr "Activar mapa de _radar"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, 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
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho do fragmento inválido '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nível nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha ao abrir ficheiro de configuração: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"O mapa de canais especificado tem um número de canais diferente do número de "
+"canais definido por omissão."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, 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."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up 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"
@@ -861,25 +759,7 @@ msgstr "Sistema de Som PulseAudio"
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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1083,33 +963,33 @@ msgstr "Topo Traseira Esquerda"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(inválido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Estéreo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1213,27 +1093,35 @@ msgstr "Implementação em falta"
msgid "Client forked"
msgstr "Cliente efectuou um fork"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1246,188 +1134,192 @@ msgstr "XOpenDisplay() falhou"
msgid "Failed to parse cookie data"
msgstr "Não foi possível processar dados da cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, 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
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nenhuma cookie carregada. A tentar ligar sem cookie."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, 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"
+#: ../src/utils/pacat.c:108
+#, fuzzy, c-format
+msgid "Failed to drain stream: %s"
msgstr "Falhou ao esvaziar fluxo: %s\n"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr ""
+#: ../src/utils/pacat.c:113
+#, fuzzy
+msgid "Playback stream drained."
+msgstr "O álbum do fluxo actual."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr ""
+#: ../src/utils/pacat.c:123
+#, fuzzy
+msgid "Draining connection to server."
+msgstr "Ligação ao Servidor Recusada"
-#: ../src/utils/pacat.c:135
-#, c-format
-msgid "pa_stream_drain(): %s\n"
+#: ../src/utils/pacat.c:136
+#, fuzzy, c-format
+msgid "pa_stream_drain(): %s"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:158
-#, c-format
-msgid "pa_stream_write() failed: %s\n"
+#: ../src/utils/pacat.c:159
+#, fuzzy, c-format
+msgid "pa_stream_write() failed: %s"
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"
+#: ../src/utils/pacat.c:197
+#, fuzzy, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() falhou: %s\n"
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, fuzzy, c-format
+msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek() falhou: %s\n"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
+#: ../src/utils/pacat.c:307
+#, fuzzy
+msgid "Stream successfully created."
msgstr "Fluxo criado com sucesso.\n"
-#: ../src/utils/pacat.c:305
-#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
+#: ../src/utils/pacat.c:310
+#, fuzzy, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
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"
+#: ../src/utils/pacat.c:314
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
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"
+#: ../src/utils/pacat.c:317
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
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:321
+#, fuzzy, c-format
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Utilizando especificação da amostra '%s'\n"
-#: ../src/utils/pacat.c:320
-#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
+#: ../src/utils/pacat.c:325
+#, fuzzy, c-format
+msgid "Connected to device %s (%u, %ssuspended)."
msgstr "Ligado ao dispositivo %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:330
-#, c-format
-msgid "Stream error: %s\n"
+#: ../src/utils/pacat.c:335
+#, fuzzy, c-format
+msgid "Stream error: %s"
msgstr "Erro de fluxo: %s\n"
-#: ../src/utils/pacat.c:340
-#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr ""
+#: ../src/utils/pacat.c:345
+#, fuzzy, c-format
+msgid "Stream device suspended.%s"
+msgstr "Nenhum dispositivo configurado"
-#: ../src/utils/pacat.c:342
-#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr ""
+#: ../src/utils/pacat.c:347
+#, fuzzy, c-format
+msgid "Stream device resumed.%s"
+msgstr "Nenhum dispositivo configurado"
-#: ../src/utils/pacat.c:350
-#, c-format
-msgid "Stream underrun.%s \n"
+#: ../src/utils/pacat.c:355
+#, fuzzy, c-format
+msgid "Stream underrun.%s"
msgstr "Fluxo com falta de dados.%s \n"
-#: ../src/utils/pacat.c:357
-#, c-format
-msgid "Stream overrun.%s \n"
+#: ../src/utils/pacat.c:362
+#, fuzzy, c-format
+msgid "Stream overrun.%s"
msgstr "Fluxo com excesso de dados.%s \n"
-#: ../src/utils/pacat.c:364
-#, c-format
-msgid "Stream started.%s \n"
+#: ../src/utils/pacat.c:369
+#, fuzzy, c-format
+msgid "Stream started.%s"
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:376
+#, fuzzy, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Ligado ao dispositivo %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "negação"
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
+msgid "Stream buffer attributes changed.%s"
msgstr ""
-#: ../src/utils/pacat.c:411
-#, c-format
-msgid "Connection established.%s \n"
+#: ../src/utils/pacat.c:415
+#, fuzzy, c-format
+msgid "Connection established.%s"
msgstr "Ligação Estabelecida.%s \n"
-#: ../src/utils/pacat.c:414
-#, c-format
-msgid "pa_stream_new() failed: %s\n"
+#: ../src/utils/pacat.c:418
+#, fuzzy, c-format
+msgid "pa_stream_new() failed: %s"
msgstr "pa_stream_new() falhou: %s\n"
-#: ../src/utils/pacat.c:442
-#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
+#: ../src/utils/pacat.c:446
+#, fuzzy, c-format
+msgid "pa_stream_connect_playback() failed: %s"
msgstr "pa_stream_connect_playback() falhou: %s\n"
-#: ../src/utils/pacat.c:448
-#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
+#: ../src/utils/pacat.c:452
+#, fuzzy, c-format
+msgid "pa_stream_connect_record() failed: %s"
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"
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, fuzzy, c-format
+msgid "Connection failure: %s"
msgstr "Ligação falhou: %s\n"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
+#: ../src/utils/pacat.c:499
+#, fuzzy
+msgid "Got EOF."
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"
+#: ../src/utils/pacat.c:536
+#, fuzzy, c-format
+msgid "write() failed: %s"
msgstr "write() falhou: %s\n"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
+#: ../src/utils/pacat.c:557
+#, fuzzy
+msgid "Got signal, exiting."
msgstr "Recebido sinal, a sair.\n"
-#: ../src/utils/pacat.c:567
-#, c-format
-msgid "Failed to get latency: %s\n"
+#: ../src/utils/pacat.c:571
+#, fuzzy, c-format
+msgid "Failed to get latency: %s"
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"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
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"
+#: ../src/utils/pacat.c:595
+#, fuzzy, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr "pa_stream_update_timing_info() falhou: %s\n"
#: ../src/utils/pacat.c:605
@@ -1497,136 +1389,142 @@ msgid ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pacat %s\n"
+"Compilado com libpulse %s\n"
+"Ligado com libpulse %s\n"
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
#, fuzzy, c-format
-msgid "Invalid client name '%s'\n"
-msgstr "Método de resample inválido '%s'."
+msgid "Invalid client name '%s'"
+msgstr "Nome de máquina inválido"
-#: ../src/utils/pacat.c:776
+#: ../src/utils/pacat.c:775
#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "Método de resample inválido '%s'."
+msgid "Invalid stream name '%s'"
+msgstr "Nome de máquina inválido"
-#: ../src/utils/pacat.c:813
-#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr ""
+#: ../src/utils/pacat.c:812
+#, fuzzy, c-format
+msgid "Invalid channel map '%s'"
+msgstr "Mapa de canais inválido '%s'\n"
-#: ../src/utils/pacat.c:842
-#, c-format
-msgid "Invalid latency specification '%s'\n"
+#: ../src/utils/pacat.c:841
+#, fuzzy, c-format
+msgid "Invalid latency specification '%s'"
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:848
+#, fuzzy, c-format
+msgid "Invalid process time specification '%s'"
+msgstr "Especificação da infra-estrutura da impressora inválida: %1"
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Método de resample inválido '%s'."
+msgid "Invalid property '%s'"
+msgstr "Tipo de propriedade inválido %s para propriedade %s"
-#: ../src/utils/pacat.c:878
-#, c-format
+#: ../src/utils/pacat.c:877
+#, fuzzy, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Formato de ficheiro desconhecido"
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
+#: ../src/utils/pacat.c:896
+#, fuzzy
+msgid "Invalid sample specification"
msgstr "Especificação da amostra inválida\n"
-#: ../src/utils/pacat.c:907
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:906
+#, fuzzy, c-format
+msgid "open(): %s"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:912
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:911
+#, fuzzy, c-format
+msgid "dup2(): %s"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
+#: ../src/utils/pacat.c:918
+#, fuzzy
+msgid "Too many arguments."
msgstr "demasiados argumentos.\n"
-#: ../src/utils/pacat.c:930
+#: ../src/utils/pacat.c:929
#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
+msgid "Failed to generate sample specification for file."
msgstr "não foi possível obter informações da amostra: %s\n"
-#: ../src/utils/pacat.c:950
+#: ../src/utils/pacat.c:949
#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "Falha ao abrir ficheiro de som.\n"
+msgid "Failed to open audio file."
+msgstr "Falha ao abrir ficheiro temporário"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
-#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
#, fuzzy
-msgid "Failed to determine sample specification from file.\n"
+msgid "Failed to determine sample specification from file."
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:967
+#, fuzzy
+msgid "Warning: Failed to determine channel map from file."
+msgstr "não foi possível obter informações da amostra: %s\n"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr ""
+#: ../src/utils/pacat.c:978
+#, fuzzy
+msgid "Channel map doesn't match sample specification"
+msgstr "Mapa de canais não corresponde com ficheiro.\n"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
msgstr ""
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr ""
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "a gravar"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+#, fuzzy
+msgid "pa_mainloop_new() failed."
msgstr "pa_mainloop_new() falhou.\n"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
+#: ../src/utils/pacat.c:1050
+#, fuzzy
+msgid "io_new() failed."
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"
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+#, fuzzy
+msgid "pa_context_new() failed."
msgstr "pa_context_new() falhou.\n"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
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:1071
+#, fuzzy
+msgid "pa_context_rttime_new() failed."
+msgstr "não foi possível obter o novo contexto.\n"
-#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
-#, c-format
-msgid "pa_mainloop_run() failed.\n"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+#, fuzzy
+msgid "pa_mainloop_run() failed."
msgstr "pa_mainloop_run() falhou.\n"
#: ../src/utils/pasuspender.c:81
@@ -1654,7 +1552,12 @@ msgstr "Falhou ao restaurar: %s\n"
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
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Ligação falhou: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Obtido SIGINT, a sair.\n"
@@ -1684,32 +1587,47 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() falhou.\n"
+
+#: ../src/utils/pasuspender.c:290
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() falhou.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() falhou.\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "Falhou a obtenção de estatísticas: %s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, 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"
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
msgstr "Não foi possível obter informações do servidor: %s\n"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1723,12 +1641,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
msgstr "não foi possível obter informações do depósito: %s\n"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1750,22 +1668,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, fuzzy, c-format
msgid "\tPorts:\n"
msgstr "\tPrefis:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
#, fuzzy, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tPerfil Activo: %s\n"
+msgstr "MÃQUINA:PORTO"
-#: ../src/utils/pactl.c:290
-#, c-format
-msgid "Failed to get source information: %s\n"
+#: ../src/utils/pactl.c:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
msgstr "não foi possível obter informações da fonte: %s\n"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1787,20 +1705,20 @@ msgid ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "não foi possível obter informações do módulo: %s\n"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1811,12 +1729,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "não foi possível obter informações do cliente: %s\n"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1826,12 +1744,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:440
-#, c-format
-msgid "Failed to get card information: %s\n"
+#: ../src/utils/pactl.c:447
+#, fuzzy, c-format
+msgid "Failed to get card information: %s"
msgstr "não foi possível obter informações da carta: %s\n"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1842,22 +1760,23 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPrefis:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, 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"
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
msgstr ""
+"Não foi possível obter informações sobre o Método de Introdução de Dados"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1878,12 +1797,12 @@ msgid ""
"\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:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
+msgstr "não foi possível obter informações da fonte: %s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1900,12 +1819,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
msgstr "não foi possível obter informações da amostra: %s\n"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -1923,21 +1842,27 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "Falhou: %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
msgstr "Não foi possível enviar amostra: %s\n"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+#, fuzzy
+msgid "Premature end of file"
msgstr "Fim prematuro de ficheiro\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "Obtido SIGINT, a sair.\n"
+
+#: ../src/utils/pactl.c:869
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1946,15 +1871,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1965,7 +1896,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -1976,80 +1907,133 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+#, fuzzy
+msgid "Please specify a sample file to load"
msgstr "Por favor, especifique um ficheiro de amostra para carregar\n"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
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:1004
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "não foi possível obter informações da amostra: %s\n"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
+#: ../src/utils/pactl.c:1014
+#, fuzzy
+msgid "You have to specify a sample name to play"
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"
+#: ../src/utils/pactl.c:1026
+#, fuzzy
+msgid "You have to specify a sample name to remove"
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"
+#: ../src/utils/pactl.c:1035
+#, fuzzy
+msgid "You have to specify a sink input index and a sink"
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"
+#: ../src/utils/pactl.c:1045
+#, fuzzy
+msgid "You have to specify a source output index and a source"
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"
+#: ../src/utils/pactl.c:1060
+#, fuzzy
+msgid "You have to specify a module name and arguments."
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"
+#: ../src/utils/pactl.c:1080
+#, fuzzy
+msgid "You have to specify a module index"
msgstr "Tem de especificar um índice de módulo\n"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
+#, fuzzy
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"Não pode especificar mais do que um depósito. Tem de especificar um valor "
"booleano.\n"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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"
+#: ../src/utils/pactl.c:1115
+#, fuzzy
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
+
+#: ../src/utils/pactl.c:1126
+#, fuzzy
+msgid "You have to specify a sink name/index and a port name"
msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
-#: ../src/utils/pactl.c:1073
+#: ../src/utils/pactl.c:1137
#, fuzzy
-msgid "You have to specify a sink name/index and a port name\n"
+msgid "You have to specify a source name/index and a port name"
msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
-#: ../src/utils/pactl.c:1084
+#: ../src/utils/pactl.c:1149
#, fuzzy
-msgid "You have to specify a source name/index and a port name\n"
+msgid "You have to specify a sink name/index and a volume"
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:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+#, fuzzy
+msgid "Invalid volume specification"
+msgstr "Especificação da amostra inválida\n"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() falhou: %s"
+#: ../src/utils/pactl.c:1166
+#, fuzzy
+msgid "You have to specify a source name/index and a volume"
+msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
+
+#: ../src/utils/pactl.c:1183
+#, fuzzy
+msgid "You have to specify a sink input index and a volume"
+msgstr "Tem de especificar um índice de entrada de depósito e um depósito\n"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+#, fuzzy
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
+
+#: ../src/utils/pactl.c:1221
+#, fuzzy
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n"
+
+#: ../src/utils/pactl.c:1238
+#, fuzzy
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Tem de especificar um índice de entrada de depósito e um depósito\n"
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "Especificação da amostra inválida\n"
+
+#: ../src/utils/pactl.c:1262
+#, fuzzy
+msgid "No valid command specified."
+msgstr "O comando especificado é inválido.\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2123,48 +2107,48 @@ msgstr "Não foi possível carregar os dados da cookie\n"
msgid "Not yet implemented.\n"
msgstr "Ainda não implementado.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Não foi possível terminar o serviço PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
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:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
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
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2181,7 +2165,7 @@ msgstr ""
"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
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2199,15 +2183,20 @@ msgstr ""
"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
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "Desligado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodução Alta Fidelidade (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+#, fuzzy
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Reprodução Alta Fidelidade (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telefonia Duplex (HSP/HFP)"
@@ -2215,6 +2204,82 @@ msgstr "Telefonia Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Servidor de Som PulseAudio"
+#, fuzzy
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Nome de máquina inválido"
+
+#, fuzzy
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "não foi possível obter informações da amostra: %s\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Incapaz de se ligar ao bus de sistema: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Não foi possível obter chamador a partir do PID: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Não foi possível definir o UID no objecto chamador."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Falha ao obter sessão CK."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Não foi possível definir o UID no objecto da sessão."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Não é possível alocar PolKitAction."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "impossível definir action_id"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Não é possível alocar contexto PolKitContext."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Incapaz de inicializar o PolKitContext: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Não foi possível determinar se o chamador está autorizado: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Não foi possível obter autenticação: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit respondeu com '%s'"
+
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr ""
+#~ "Escalonamento de alta-prioridade (nível 'nice' negativo em Unix) para o "
+#~ "serviço PulseAudio"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Escalonamento em tempo-real para o serviço PulseAudio"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "Politica do sistema impede o PulseAudio de obter escalonamento de alta-"
+#~ "prioridade."
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr ""
+#~ "Politica do sistema impede o PulseAudio de obter escalonamento de tempo-"
+#~ "real."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() falhou: %s\n"
+
+#, fuzzy
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "Impossível ligar ao servidor."
+
#~ msgid "Analog Mono"
#~ msgstr "Mono Analógico"
@@ -2248,6 +2313,60 @@ msgstr "Servidor de Som PulseAudio"
#~ msgid "Analog Surround 7.1"
#~ msgstr "Analog Surround 7.1"
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr "Estamos no grupo '%s', permitindo escalonamento de alta-prioridade."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr ""
+#~ "O PolicyKit permite-nos o privilégio \"acquire-high-priority\" (adquirir "
+#~ "alta prioridade)."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr ""
+#~ "O PolicyKit recusa-nos o privilégio \"acquire-high-priority\" (adquirir "
+#~ "alta prioridade)."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr ""
+#~ "O PolicyKit permite-nos o privilégio \"acquire-real-time\" (adquirir "
+#~ "tempo real)."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr ""
+#~ "O PolicyKit recusa-nos o privilégio \"acquire-real-time\" (adquirir tempo "
+#~ "real)."
+
+#~ 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."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "RLIMIT_RTPRIO aumentado com sucesso"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO falhou: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "A desistir de CAP_NICE"
+
+#~ 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."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "Capacidades limitadas com sucesso em CAP_SYS_NICE."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() falhou.\n"
+
#~ msgid "Stream successfully created\n"
#~ msgstr "Fluxo criado com sucesso\n"
@@ -2266,17 +2385,14 @@ msgstr "Servidor de Som PulseAudio"
#~ "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 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 fd4f5391..1340f74a 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,24 +1,30 @@
-# Brazilian Translation of PulseAudio
-# Copyright (C) 2008 pulseaudio
+# Brazilian Portuguese translation of PulseAudio
+# Copyright (C) 2008,2009 pulseaudio
# This file is distributed under the same license as the pulseaudio package.
# Fabian Affolter <fab@fedoraproject.org>, 2008.
+# Igor Pires Soares <igor@projetofedora.org>, 2009.
#
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: 2008-11-21 01:21-0300\n"
-"Last-Translator: Henrique (LonelySpooky) Junior <lspooky@fedoraproject.org>\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-08-24 19:26-0300\n"
+"Last-Translator: Igor Pires Soares <igor@projetofedora.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br@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"
-"X-Poedit-Language: Brazilian Portuguese\n"
+"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: Brazil\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -26,8 +32,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"O snd_pcm_avail() retornou um valor que é excepcionalmente grande: %lu bytes "
+"(%lu ms).\n"
+"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema aos desenvolvedores do ALSA."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -35,8 +45,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"O snd_pcm_delay() retornou um valor que é excepcionalmente grande: %li bytes "
+"(%s%lu ms).\n"
+"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema aos desenvolvedores do ALSA."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -44,10 +58,22 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"O snd_pcm_mmap_begin() retornou um valor que é excepcionalmente grande: %lu "
+"bytes (%lu ms).\n"
+"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema aos desenvolvedores do ALSA."
+
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Destino Virtual LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -57,236 +83,126 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<nome do destino> sink_properties=<propriedades do destino> "
+"master=<nome do destino a ser filtrado> format=<formato de amostragem> "
+"rate=<taxa da amostragem> channels=<número de canais> channel_map=<mapa dos "
+"canais> plugin=<nome do plugin ladspa> label=<rótulo do plugin ladspa> "
+"control=<lista separada por vírgulas dos valores de controle da entrada>"
-#: ../src/pulsecore/sink.c:2394
-#, fuzzy
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
-msgstr "Erro interno"
+msgstr "Ãudio interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
-msgstr ""
+msgstr "Modem"
#: ../src/daemon/ltdl-bind-now.c:124
-#, fuzzy
msgid "Failed to find original lt_dlopen loader."
-msgstr "Falha em encontrar o carregador original dlopen"
+msgstr "Falha ao localizar o carregador original lt_dlopen."
#: ../src/daemon/ltdl-bind-now.c:129
-#, fuzzy
msgid "Failed to allocate new dl loader."
-msgstr "Falha em encontrar o carregador original dlopen"
+msgstr "Falha ao alocar o novo carregador dl."
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
msgstr "Falha em adicionar o bind-now-loader."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Não foi possível conectar com o barramento do sistema: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Não foi possível obter quem chamou pelo PID: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Não foi possível definir o UID sobre o objeto que chamou."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Falha em obter a sessão CK."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Não foi possível definir o UID do objeto da sessão."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Não foi possível alocar o PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Não foi possível definir a action_id"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Não foi possível alocar o PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Não foi possível iniciar 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 solicitante está autorizado: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Não foi possível obter auth: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit respondeu com '%s'"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Sinal %s recebido."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Saindo."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
-msgstr "Falha em encontrar o usuário '%s'."
+msgstr "Falha ao localizar o usuário \"%s\"."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
-msgstr "Falha em encontrar o grupo '%s'."
+msgstr "Falha ao localizar o grupo \"%s\"."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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."
+msgstr "Usuário \"%s\" (UID %lu) e grupo \"%s\" (GID %lu) localizados."
-#: ../src/daemon/main.c:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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."
+msgstr "O diretório pessoal do usuário \"%s\" não é \"%s\", ignorando."
-#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
-msgstr "Falha em criar '%s': %s"
+msgstr "Falha ao criar \"%s\": %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
-msgstr "Falha em alterar a lista de grupos: %s"
+msgstr "Falha ao alterar a lista de grupos: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
-msgstr "Falha em mudar o GID: %s"
+msgstr "Falha ao alterar o GID: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
-msgstr "Falha em mudar o UID: %s"
+msgstr "Falha ao alterar o UID: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Os privilégios do root foram retirados com sucesso."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "O modo ampliado do sistema não tem suporte nessa plataforma."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "Falha em interpretar a 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 assegura-nos a aquisição de privilégio de alta prioridade."
-
-#: ../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: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: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: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 ""
-"O escalonamento de alta prioridade foi habilitado para esta configuração, "
-"mas não é permitida pela política."
-
-#: ../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 "Abandonando CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "O daemon não está em execução"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon executando como PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Falha em encerrar o daemon: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -294,153 +210,159 @@ msgstr ""
"Este programa não é para ser executado como root (a não ser que --system "
"seja especificado)."
-#: ../src/daemon/main.c:724
-#, fuzzy
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
-msgstr "Privilégios de rot são requeridos."
+msgstr "Privilégios de root requeridos."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start não tem suporte para instâncias de sistemas."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Falha em adquirir o stdio."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "O pipe falhou: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "O fork() falhou: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "A operação read() falhou: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Falha na partida do daemon."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Os daemons foram iniciados com sucesso."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Este é o PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilação: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilação CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Executando no host: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
-msgstr ""
+msgstr "%u CPUs localizadas."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "O tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte do Valgrind: sim"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte do Valgrind: não"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Executando em modo valgrind: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Build otimizado: sim"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Build otimizado: não"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
-msgstr ""
+msgstr "NDEBUG definido, todas as declarações desabilitadas."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
+"FASTPATH definido, somente as declarações do \"fast path\" foram "
+"desabilitadas."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
-msgstr ""
+msgstr "Todas as declarações habilitadas."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Falha em obter o ID da máquina"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "A ID da máquina é %s."
+msgstr "O ID da sessão é %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Usando o diretório de runtime %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Usando o diretório de módulos %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -449,16 +371,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"OK, então você está executando o PA no modo de sistema. Por favor, note que "
+"é mais provável que você não deveria estar fazendo isso.\n"
+"Todavia, se você o fizer, então a culpa será sua se as coisas não "
+"funcionarem como esperado.\n"
+"Por favor, leia o http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode para "
+"obter um explicação sobre porque o modo de sistema é uma má idéia."
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponíveis! Bon appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -466,33 +394,33 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Daemon terminado."
#: ../src/daemon/cmdline.c:115
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -573,24 +501,24 @@ msgstr ""
" --dump-modules Descarrega a lista de módulos "
"disponíveis\n"
" --dump-resample-methods Descarrega os métodos de "
-"reamostragem (resample)\n"
+"reamostragem\n"
" --cleanup-shm Limpa os segmentos de memória "
"compartilhados\n"
" --start Inicia o daemon se ele não estiver "
"em execução\n"
" -k --kill Encerra um daemon em execução\n"
-" --check Verifica um daemon em execução\n"
+" --check Verifica se há um daemon em execução "
+"(somente retorna o código de saída)\n"
"\n"
"OPÇÕES:\n"
" --system[=BOOL] Executa como uma instância do "
-"sistema em escala ampla \n"
-" -D, --daemonize[=BOOL] Torna um daemom (daemonize) depois "
-"da partida\n"
+"sistema em escala ampla\n"
+" -D, --daemonize[=BOOL] Torna-se um daemom após o início\n"
" --fail[=BOOL] Sai quando a partida falha\n"
" --high-priority[=BOOL] Tenta definir um nível alto de nice\n"
" (disponível apenas, quando SUID ou\n"
" com RLIMIT_NICE) elevado\n"
-" --realtime[=BOOL] Tenta habilidar o escalonamento em "
+" --realtime[=BOOL] Tenta habilitar o escalonamento em "
"tempo real\n"
" (disponível apenas como root, quando "
"SUID ou\n"
@@ -603,35 +531,40 @@ msgstr ""
" --exit-idle-time=SECS Termina um daemon quando ocioso e "
"este\n"
" tempo foi decorrido\n"
-" --module-idle-time=SECS Descarrega os modulos "
+" --module-idle-time=SECS Descarrega os módulos "
"autocarregáveis quando ociosos e\n"
-" tempo foi decorrido\n"
+" este tempo foi decorrido\n"
" --scache-idle-time=SECS Descarrega amostras quando ociosas "
"e\n"
-" este tempo tenha passado\n"
+" este tempo foi decorrido\n"
" --log-level[=LEVEL] Aumenta ou define o grau de "
-"verbosidade\n"
-" -v Aumenta o nível de verbosidade\n"
-" --log-target={auto,syslog,stderr} Especifica o alvo do log\n"
-" -p, --dl-search-path=PATH Define o caminho de busca (search "
-"paht)para objetos (plugins)\n"
-" dinamicamente commpartilhados\n"
+"detalhamento\n"
+" -v Aumenta o nível de detalhamento\n"
+" --log-target={auto,syslog,stderr} Especifica o destino do log\n"
+" --log-meta[=BOOL] Inclui a localização do código na "
+"mensagem de log\n"
+" --log-time[=BOOL] Inclui carimbos de hora nas "
+"mensagens de log\n"
+" --log-backtrace=FRAMES Inclui um backtrace na mensagem de "
+"log\n"
+" -p, --dl-search-path=PATH Define o caminho de pesquisa para "
+"objetos (plugins)\n"
+" dinamicamente compartilhados\n"
" --resample-method=METHOD Usa o método de reamostragem "
"especificado\n"
" (Veja --dump-resample-methods para\n"
" valores possíveis)\n"
-" --use-pid-file[=BOOL] Cria um arquivo PID file\n"
+" --use-pid-file[=BOOL] Cria um arquivo PID\n"
" --no-cpu-limit[=BOOL] Não instala um limitador de carga de "
-"CPU load em\n"
+"CPU em\n"
" plataformas que o suportem.\n"
-" --disable-shm[=BOOL] Desabilita o suporte a memória "
+" --disable-shm[=BOOL] Desabilita o suporte à memória "
"compartilhada.\n"
"\n"
-"STARTUP SCRIPT:\n"
-" -L, --load=\"MODULE ARGUMENTS\" Carrega um plugin especificado "
-"com\n"
+"SCRIPT DE INÃCIO:\n"
+" -L, --load=\"ARGUMENTOS DO MÓDULO\" Carrega um plugin especificado com\n"
" o argumento especificado\n"
-" -F, --file=FILENAME Executa o script especificado\n"
+" -F, --file=NOME_DO_ARQUIVO Executa o script especificado\n"
" -C Abre uma linha de comando no TTY em "
"execução\n"
" depois da partida\n"
@@ -668,9 +601,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera um argumento booleano"
#: ../src/daemon/cmdline.c:297
-#, fuzzy
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit argumento booleano"
+msgstr "--disallow-exit espera um argumento booleano"
#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
@@ -681,14 +613,12 @@ msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Log target inválido: use 'syslog', 'stderr' ou 'auto'."
#: ../src/daemon/cmdline.c:328
-#, fuzzy
msgid "--log-time expects boolean argument"
-msgstr "--realtime espera um argumento booleano"
+msgstr "--log-time espera um argumento booleano"
#: ../src/daemon/cmdline.c:335
-#, fuzzy
msgid "--log-meta expects boolean argument"
-msgstr "--disallow-exit argumento booleano"
+msgstr "--log-meta espera um argumento booleano"
#: ../src/daemon/cmdline.c:354
#, c-format
@@ -745,127 +675,104 @@ msgstr "Carrega uma vez: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "AVISO DE OBSOLESCÊNCIA: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Alvo do log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nível de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de reamostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de amostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taxa de amostragem inválida '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:354
-#, fuzzy, c-format
+#: ../src/daemon/daemon-conf.c:370
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
+msgstr "[%s:%u] Mapa de canais \"%s\" inválido."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, 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:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"O mapa padrão dos canais especificado tem um número diferente de canais do "
+"que o número de canais padrão especificado."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lido do arquivo de configuração: %s ###\n"
-#: ../src/daemon/caps.c:63
-#, fuzzy
-msgid "Dropping root privileges."
-msgstr "Descartando os privilégios de root."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "As capacidades foram limitadas com sucesso para CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "Limpando privilégios."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "Sistema de som PulseAudio"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "Iniciar 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
-#, fuzzy
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Falha em cancelar o daemon do PulseAudio."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1069,35 +976,35 @@ msgstr "Posterior Superior Esquerdo"
msgid "Top Rear Right"
msgstr "Posterior Superior Direito"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(Inválido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
-msgstr ""
+msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
-msgstr ""
+msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
-msgstr ""
+msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
-msgstr ""
+msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
-msgstr ""
+msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
-msgstr ""
+msgstr "Surround 7.1"
#: ../src/pulse/error.c:43
msgid "OK"
@@ -1189,40 +1096,48 @@ msgstr "Não existe tal extensão"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "Funcionalidade obsoleta"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "Implementação faltando"
#: ../src/pulse/error.c:67
msgid "Client forked"
+msgstr "Cliente bifurcado"
+
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
@@ -1232,192 +1147,191 @@ msgstr "XOpenDisplay() falhou"
msgid "Failed to parse cookie data"
msgstr "Falhou ao analisar os dados do cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Falha em abrir o arquivo de configuração '%s': %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nenhum cookie foi carregado. Tentativa de conexão sem eles."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Foi recebida uma mensagem para uma extensão desconhecida '%s'"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Falha em drenar o fluxo: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Falha ao drenar o fluxo: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Drenado o fluxo de playback.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Fluxo de reprodução drenado."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Drenando a conexão par ao servidor.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Drenando conexão para o servidor."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() falhou: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() falhou: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() falhou: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() falhou: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "O fluxo (stream) foi criado com sucesso.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() falhou: %s"
+
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Fluxo criado com sucesso."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() falhou: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() falhou: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Métricas do buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Métrica do buffer: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Métricas do buffer: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "Usando a espeficifação de amostragem '%s', mapa do canal '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Usando especificação de amostragem \"%s\", mapa de canais \"%s\"."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "Conectado ao dispositivo %s (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Conectado ao dispositivo %s (%u, %ssuspended)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Erro de fluxo: %s\n"
+msgid "Stream error: %s"
+msgstr "Erro de fluxo: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Dispositivo de fluxo suspenso.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "Dispositivo de fluxo suspenso.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Dispositivo de fluxo prosseguiu.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "O dispositivo de fluxo continuou.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Extravazamento do fluxo. %s\n"
+msgid "Stream underrun.%s"
+msgstr "Subestimação do fluxo.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "O fluxo extravazou.%s \n"
+msgid "Stream overrun.%s"
+msgstr "Superestimação do fluxo.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "O fluxo iniciou: %s\n"
+msgid "Stream started.%s"
+msgstr "Fluxo iniciado.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, 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"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Fluxo movido para o dispositivo %s (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "não"
-#: ../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:411
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Conexão estabelecida.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Atributos do buffer de fluxo alterados.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() falhou: %s\n"
+msgid "Connection established.%s"
+msgstr "Conexão estabelecida.%s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() falhou: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() falhou: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() falhou: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() falhou: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Falha na conexão: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() falhou: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Atingiu EOF.\n"
-
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() falhou: %s\n"
+msgid "Connection failure: %s"
+msgstr "Falha na conexão: %s"
+
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Atingiu EOF."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() falhou: %s\n"
+msgid "write() failed: %s"
+msgstr "write() falhou: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Sinal recebido, saindo (exiting).\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Sinal recebido, saindo."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Falhou em obter a latência: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Falha ao obter a latência: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Tempo: %0.3f s; Latência: %0.0f us. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "Falha em pa_stream_update_timing_info(): %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() falhou: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1481,44 +1395,58 @@ msgstr ""
" --version Mostra a versão\n"
"\n"
" -r, --record Cria uma conexão para gravação\n"
-" -p, --playback Cria uma conexão para playback\n"
+" -p, --playback Cria uma conexão para reprodução\n"
"\n"
-" -v, --verbose Habilita operações no modo verboso\n"
+" -v, --verbose Habilita operações no modo "
+"detalhado\n"
"\n"
-" -s, --server=SERVER Nome do servidor a ser conectado\n"
-" -d, --device=DEVICE O nome do destino/fonte a conectar\n"
-" -n, --client-name=NAME Como chamar o cliente no servidor\n"
-" --stream-name=NAME Como chamar este fluxo no "
-"servidorn --volume=VOLUME Especifica a faixa (linear) "
-"inicial de volume no intervalo 0...65536\n"
-" --rate=SAMPLERATE Taxa de amostragem em Hz (o padrão é "
-"44100)\n"
-" --format=SAMPLEFORMAT Tipo de amostragem, um de s16le, "
+" -s, --server=SERVIDOR Nome do servidor a conectar-se\n"
+" -d, --device=DISPOSITIVO O nome do destino/fonte a "
+"conectar-se\n"
+" -n, --client-name=NOME Como chamar este cliente no "
+"servidor\n"
+" --stream-name=NOME Como chamar este fluxo no servidor\n"
+" --volume=VOLUME Especifica a faixa (linear) inicial "
+"de volume no intervalo 0...65536\n"
+" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem em Hz (o "
+"padrão é 44100)\n"
+" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, um de s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(o padrão é s16ne)\n"
-" --channels=CHANNELS O número de canais, 1 para mono, 2 "
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (o padrão é "
+"s16ne)\n"
+" --channels=CANAIS O número de canais, 1 para mono, 2 "
"para estéreo\n"
" (o padrão é 2)\n"
-" --channel-map=CHANNELMAP Mapeamento de canais a ser usando em "
-"lugar do padrão\n"
+" --channel-map=MAPA_DE_CANAIS Mapeamento de canais a ser usado "
+"no lugar do padrão\n"
" --fix-format Obtém o formato da amostragem do "
"destino onde o fluxo\n"
-" está sendo conectado.\n"
-" --fix-rate Obtém o taxa de amostragem do "
+" está sendo conectado.\n"
+" --fix-rate Obtém a taxa de amostragem do "
"destino onde o fluxo está\n"
" sendo conectado.\n"
" --fix-channels Obtém o número de canais e o mapa de "
"canais\n"
" do destino onde o fluxo está sendo "
"conectado.\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"
+" --no-remix Não realizar upmix nem downmix dos "
+"canais.\n"
+" --no-remap Mapear os canais por índice em vez "
+"de nome.\n"
+" --latency=BYTES Requisitar a latência especificada "
+"em bytes.\n"
+" --process-time=BYTES Requisitar o tempo de processo "
+"especificado por requisições em bytes.\n"
+" --property=PROPRIEDADE=VALOR Define a propriedade especificada "
+"para o valor especificado.\n"
+" --raw Grava/reproduz dados PCM não "
+"tratados.\n"
+" --file-format=FORMATO_DO_ARQ. Grava/reproduz dados PCM "
+"formatados.\n"
+" --list-file-formats Lista os formatos de arquivo "
+"disponíveis.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1531,136 +1459,131 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Nome do cliente \"%s\" inválido"
-#: ../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:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Nome do fluxo \"%s\" inválido"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Mapa de canal inválido '%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "Mapa de canais \"%s\" inválido"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Especificação de latência inválida '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Especificação de latência inválida \"%s\""
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Especificação do tempo do processo inválida '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Especificação do tempo de processo \"%s\" inválida"
-#: ../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:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Propriedade \"%s\" inválida"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Formato de arquivo %s desconhecido."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Especificação de amostragem inválida\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Especificação de amostragem inválida"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Argumentos em excesso.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Argumentos em excesso."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "Falha ao gerar a especificação de amostragem para o arquivo."
-#: ../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:949
+msgid "Failed to open audio file."
+msgstr "Falha ao abrir o arquivo de áudio."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Aviso: a especificação de amostragem especificada será sobrescrita pela "
+"especificação do arquivo."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Falha ao determinar a especificação de amostragem a partir do arquivo."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Aviso: falha ao determinar o mapa de canais a partir do arquivo."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "O mapa de canais não combina com a especificação da amostragem"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Aviso: falha ao gravar o mapa de canais no arquivo."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, 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"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"Abrindo um fluxo %s com a especificação de amostragem \"%s\" e mapeamento de "
+"canais \"%s\"."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "gravando"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "playback"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() falhou."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() falhou.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() falhou."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() falhou."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() falhou: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() falhou.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() falhou."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() falhou."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1689,7 +1612,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Falha na conexão: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Recebido o SIGINT, saindo.\n"
@@ -1728,33 +1656,48 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() falhou.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() falhou.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() falhou.\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "Falha em obter as estatísticas: %s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Tamanho do cache para amostragem: %s\n"
-#: ../src/utils/pactl.c:149
-#, c-format
-msgid "Failed to get server information: %s\n"
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
msgstr "Falha em obter a informação do servidor: %s\n"
-#: ../src/utils/pactl.c:157
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:164
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1766,22 +1709,23 @@ msgid ""
"Default Source: %s\n"
"Cookie: %08x\n"
msgstr ""
-"Nome do Usuário: %s\n"
-"Nome do Host: %s\n"
-"Nome do Servidor: %s\n"
-"Versão do Servidor: %s\n"
+"Nome do usuário: %s\n"
+"Nome da máquina: %s\n"
+"Nome do servidor: %s\n"
+"Versão do servidor: %s\n"
"Especificação padrão de amostragem: %s\n"
+"Mapa de canais padrão: %s\n"
"Destino padrão: %s\n"
"Fonte padrão %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
msgstr "Falha em obter a informação do destino: %s\n"
-#: ../src/utils/pactl.c:214
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:221
+#, c-format
msgid ""
"Sink #%u\n"
"\tState: %s\n"
@@ -1801,36 +1745,41 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Destino #%u ***\n"
-"Nome: %s\n"
-"Driver: %s\n"
-"Especificação de amostragem: %s\n"
-"Mapa de canais: %s\n"
-"Propretário do módulo: %u\n"
-"Volume: %s\n"
-"Fonte do monitor: %s\n"
-"Latência: %0.0f us, configurado %0.0f us\n"
-"Flags: %s%s%s%s%s%s\n"
-"Propriedades:\n"
-"%s"
-
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+"Destino #%u\n"
+"\tEstado: %s\n"
+"\tNome: %s\n"
+"\tDescrição: %s\n"
+"\tDriver: %s\n"
+"\tEspecificação da amostragem: %s\n"
+"\tMapa dos canais: %s\n"
+"\tMódulo proprietário: %u\n"
+"\tMudo: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balanço %0.2f\n"
+"\tVolume base: %s%s%s\n"
+"\tFonte de monitoração: %s\n"
+"\tLatência: %0.0f usec, %0.0f usec configurado\n"
+"\tSinalizadores: %s%s%s%s%s%s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, c-format
msgid "\tPorts:\n"
-msgstr ""
+msgstr "\tPortas:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "O pipe falhou: %s"
+msgstr "\tPorta ativa: %s\n"
-#: ../src/utils/pactl.c:290
-#, c-format
-msgid "Failed to get source information: %s\n"
+#: ../src/utils/pactl.c:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
msgstr "Falha em obter a informação da fonte: %s\n"
-#: ../src/utils/pactl.c:306
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:313
+#, c-format
msgid ""
"Source #%u\n"
"\tState: %s\n"
@@ -1850,34 +1799,39 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Fonte #%u ***\n"
-"Nome: %s\n"
-"Driver: %s\n"
-"Especificação de amostragem: %s\n"
-"Mapa do canal: %s\n"
-"Proprietário do módulo: %u\n"
-"Volume: %s\n"
-"Monitor do destino: %s\n"
-"Latência: %0.0f us, configurado %0.0f us:\n"
-"Flags: %s%s%s%s%s%s\n"
-"Propriedades:\n"
-"%s"
-
-#: ../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
+"Fonte #%u\n"
+"\tEstado: %s\n"
+"\tNome: %s\n"
+"\tDescrição: %s\n"
+"\tDriver: %s\n"
+"\tEspecificação da amostragem: %s\n"
+"\tMapa dos canais: %s\n"
+"\tMódulo proprietário: %u\n"
+"\tMudo: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balanço %0.2f\n"
+"\tVolume base: %s%s%s\n"
+"\tMonitor do destino: %s\n"
+"\tLatência: %0.0f usec, %0.0f usec configurado\n"
+"\tSinalizadores: %s%s%s%s%s%s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "Falha em obter a informação do módulo: %s\n"
-#: ../src/utils/pactl.c:386
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:393
+#, c-format
msgid ""
"Module #%u\n"
"\tName: %s\n"
@@ -1886,19 +1840,20 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Módulo #%u ***\n"
-"Nome: %s\n"
-"Argumento: %s\n"
-"Contador de uso: %s\n"
-"Auto descarregar: %s\n"
+"Módulo #%u\n"
+"\tNome: %s\n"
+"\tArgumento: %s\n"
+"\tContador de uso: %s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "Falhou ao obter a informação do cliente: %s\n"
-#: ../src/utils/pactl.c:423
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:430
+#, c-format
msgid ""
"Client #%u\n"
"\tDriver: %s\n"
@@ -1906,19 +1861,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Cliente #%u ***\n"
-"Driver: %s\n"
-"Poprietário do módulo: %s\n"
-"Propriedades:\n"
-"%s"
+"Cliente #%u\n"
+"\tDriver: %s\n"
+"\tMódulo proprietário: %s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, fuzzy, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "Falha em obter a informação do autoload: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "Falha ao obter as informações da placa: %s\n"
-#: ../src/utils/pactl.c:458
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:465
+#, c-format
msgid ""
"Card #%u\n"
"\tName: %s\n"
@@ -1927,29 +1882,30 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Cliente #%u ***\n"
-"Driver: %s\n"
-"Poprietário do módulo: %s\n"
-"Propriedades:\n"
-"%s"
+"Placa #%u\n"
+"\tNome: %s\n"
+"\tDriver: %s\n"
+"\tMódulo proprietário: %s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tPerfis:\n"
-#: ../src/utils/pactl.c:478
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:485
+#, c-format
msgid "\tActive Profile: %s\n"
-msgstr "O pipe falhou: %s"
+msgstr "\tPerfil ativo: %s\n"
-#: ../src/utils/pactl.c:489
-#, c-format
-msgid "Failed to get sink input information: %s\n"
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
msgstr "Falha na obtenção da informação de entrada do destino: %s\n"
-#: ../src/utils/pactl.c:508
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:515
+#, c-format
msgid ""
"Sink Input #%u\n"
"\tDriver: %s\n"
@@ -1968,27 +1924,30 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Entrada do destino #%u ***\n"
-"Driver: %s\n"
-"Proprietário do módulo: %s\n"
-"Cliente: %s\n"
-"Destino: %u\n"
-"Especificação da amostragem: %s\n"
-"Mapa de canais: %s\n"
-"Volume: %s\n"
-"Latência do buffer: %0.0f us\n"
-"Latência do destino %0.0f usec\n"
-"Método de reamostragem (resample): %s\n"
-"Propriedades:\n"
-"%s"
-
-#: ../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"
+"Entrada do destino #%u\n"
+"\tDriver: %s\n"
+"\tMódulo proprietário: %s\n"
+"\tCliente: %s\n"
+"\tDestino: %u\n"
+"\tEspecificação da amostragem: %s\n"
+"\tMapa dos canais: %s\n"
+"\tMudo: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balanço %0.2f\n"
+"\tLatência do buffer: %0.0f usec\n"
+"\tLatência do destino: %0.0f usec\n"
+"\tMétodo de reamostragem: %s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:554
#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
+msgstr "Falha em obter informações sobre a saída da fonte: %s\n"
+
+#: ../src/utils/pactl.c:574
+#, c-format
msgid ""
"Source Output #%u\n"
"\tDriver: %s\n"
@@ -2003,26 +1962,26 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Saída da Fonte #%u ***\n"
-"Driver: %s\n"
-"Proprietário do Módulo: %s\n"
-"Cliente: %s\n"
-"Fonte: %u\n"
-"Especificação de Amostragem: %s\n"
-"Mapa do Canal: %s\n"
-"Latência do Buffer: %0.0f usec\n"
-"Latência da Fonte: %0.0f usec\n"
-"Método de Reamostragem (resample): %s\n"
-"Propriedades:\n"
-"%s"
-
-#: ../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"
+"Saída da fonte #%u\n"
+"\tDriver: %s\n"
+"\tMódulo proprietário: %s\n"
+"\tCliente: %s\n"
+"\tFonte: %u\n"
+"\tEspecificação da amostragem: %s\n"
+"\tMapa dos canais: %s\n"
+"\tLatência do buffer: %0.0f usec\n"
+"\tLatência da fonte: %0.0f usec\n"
+"\tMétodo de reamostragem: %s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:605
#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
+msgstr "Falha em obter informações sobre a amostragem: %s\n"
+
+#: ../src/utils/pactl.c:623
+#, c-format
msgid ""
"Sample #%u\n"
"\tName: %s\n"
@@ -2038,33 +1997,41 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Amostragem #%u ***\n"
-"Nome: %s\n"
-"Volume: %s\n"
-"Especificação da Amostragem: %s\n"
-"Mapa de Canais: %s\n"
-"Duração: %0.1fs\n"
-"Tamanho: %s\n"
-"Lazy: %s\n"
-"Nome do Arquivo: %s\n"
-"Propriedades:\n"
-"%s"
-
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+"Amostra #%u\n"
+"\tNome: %s\n"
+"\tEspecificação da amostragem: %s\n"
+"\tMapa dos canais: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balanço %0.2f\n"
+"\tDuração: %0.1fs\n"
+"\tTamanho: %s\n"
+"\tLazy: %s\n"
+"\tNome do arquivo: %s\n"
+"\tPropriedades:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "Falha: %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
msgstr "Falha em carregar a amostra: %s\n"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+#, fuzzy
+msgid "Premature end of file"
msgstr "Fim prematuro do arquivo\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "Recebido o SIGINT, saindo.\n"
+
+#: ../src/utils/pactl.c:869
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2073,15 +2040,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2091,18 +2064,21 @@ 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 [opções] stat\n"
+"%s [opções] list\n"
+"%s [opções] exit\n"
+"%s [opções] upload-sample NOME_DO_ARQUIVO [NOME]\n"
+"%s [opções] play-sample NOME [DESTINO]\n"
+"%s [opções] remove-sample NOME\n"
+"%s [opções] move-sink-input ID DESTINO\n"
+"%s [opções] move-source-output ID FONTE\n"
+"%s [opções] load-module NOME [ARGS ...]\n"
+"%s [opções] unload-module ID\n"
+"%s [opções] suspend-sink [DESTINO] 1|0\n"
+"%s [opções] suspend-source [FONTE] 1|0\n"
+"%s [opções] set-card-profile [PLACA] [PERFIL] \n"
+"%s [opções] set-sink-port [DESTINO] [PORTA] \n"
+"%s [opções] set-source-port [FONTE] [PORTA] \n"
"\n"
" -h, --help Mostra essa ajuda\n"
" --version Mostra a versão\n"
@@ -2111,7 +2087,7 @@ msgstr ""
" -n, --client-name=NAME Como chamar este cliente no "
"servidor \n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2122,88 +2098,135 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+#, fuzzy
+msgid "Please specify a sample file to load"
msgstr "Por favor, especifique o arquivo de amostra a ser carregado\n"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
msgstr "Falha em abrir o arquivo de som.\n"
-#: ../src/utils/pactl.c:951
+#: ../src/utils/pactl.c:1004
#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n"
+msgid "Warning: Failed to determine sample specification from file."
+msgstr ""
+"Aviso: falha ao determinar a especificação da amostragem a partir do "
+"arquivo.\n"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
+#: ../src/utils/pactl.c:1014
+#, fuzzy
+msgid "You have to specify a sample name to play"
msgstr "Você deve especificar um nome da amostra para ser executada\n"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+#, fuzzy
+msgid "You have to specify a sample name to remove"
msgstr "Você deve especificar um nome da amostra para ser removida\n"
-#: ../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:1035
+#, fuzzy
+msgid "You have to specify a sink input index and a sink"
+msgstr "Você tem que especificar a entrada para o destino e um destino\n"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
+#: ../src/utils/pactl.c:1045
+#, fuzzy
+msgid "You have to specify a source output index and a source"
msgstr "Você tem que especificar um índice de saída da fonte e uma fonte\n"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+#, fuzzy
+msgid "You have to specify a module name and arguments."
msgstr "Você deve especificar um nome do módulo e seus argumentos\n"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+#, fuzzy
+msgid "You have to specify a module index"
msgstr "Você deve especificar um índice de um módulo\n"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
#, fuzzy
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"Você não pode especificar mais de um destino. Pelo menos um valor booleano "
-"deve ser especificado.\n"
+"Você não pode especificar mais de um destino. Você tem que especificar um "
+"valor booleano.\n"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
-"Você não pode especificar mais de uma fonte. Pelo menos um valor booleano "
-"deve ser especificado.\n"
+"Você não pode especificar mais de uma fonte. Você tem que especificar um "
+"valor booleano.\n"
-#: ../src/utils/pactl.c:1062
+#: ../src/utils/pactl.c:1115
#, 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"
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Você tem que especificar um nome/índice da placa e um nome de perfil\n"
-#: ../src/utils/pactl.c:1073
+#: ../src/utils/pactl.c:1126
#, 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"
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Você tem que especificar um nome/índice do destino e o nome da porta\n"
+
+#: ../src/utils/pactl.c:1137
+#, fuzzy
+msgid "You have to specify a source name/index and a port name"
+msgstr "Você tem que especificar um nome/índice da fonte e o nome da porta\n"
-#: ../src/utils/pactl.c:1084
+#: ../src/utils/pactl.c:1149
#, fuzzy
-msgid "You have to specify a source name/index and a port name\n"
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Você tem que especificar um nome/índice do destino e o nome da porta\n"
+
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+#, fuzzy
+msgid "Invalid volume specification"
+msgstr "Especificação de amostragem inválida"
+
+#: ../src/utils/pactl.c:1166
+#, fuzzy
+msgid "You have to specify a source name/index and a volume"
+msgstr "Você tem que especificar um nome/índice da fonte e o nome da porta\n"
+
+#: ../src/utils/pactl.c:1183
+#, fuzzy
+msgid "You have to specify a sink input index and a volume"
+msgstr "Você tem que especificar a entrada para o destino e um destino\n"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
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:1204
+#, fuzzy
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Você tem que especificar um nome/índice do destino e o nome da porta\n"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_new() falhou: %s"
+#: ../src/utils/pactl.c:1221
+#, fuzzy
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Você tem que especificar um nome/índice da fonte e o nome da porta\n"
+
+#: ../src/utils/pactl.c:1238
+#, fuzzy
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Você tem que especificar a entrada para o destino e um destino\n"
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "Especificação de amostragem inválida"
+
+#: ../src/utils/pactl.c:1262
+#, fuzzy
+msgid "No valid command specified."
+msgstr "Nenhum comando válido especificado.\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2285,48 +2308,50 @@ msgstr "Falha em carregar os dados do cookie\n"
msgid "Not yet implemented.\n"
msgstr "Ainda não implementado.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"Nenhum daemon do PulseAudio em execução ou não está em execução como daemon "
+"de sessão."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
-msgstr "Falha em cancelar o daemon do PulseAudio."
+msgstr "Falha ao matar o daemon do PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
-msgstr "Daemon não responde."
+msgstr "O daemon não responde."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Não foi possível acessar a trava de autogeração."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2336,8 +2361,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"O ALSA nos acordou para gravar novos dados no dispositivo, mas não há nada a "
+"ser gravado!\n"
+"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema para os desenvolvedores do ALSA.\n"
+"Nós fomos acordados com o conjunto POLLOUT -- entretanto, a snd_pcm_avail() "
+"subseqüente retornou 0 ou outro valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2347,23 +2378,155 @@ msgid ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
+"O ALSA nos acordou para ler novos dados no dispositivo, mas não há nada a "
+"ser lido!\n"
+"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema para os desenvolvedores do ALSA.\n"
+"Nós fomos acordados com o conjunto POLLIN -- entretanto, a snd_pcm_avail() "
+"subseqüente retornou 0 ou outro valor < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
-msgstr ""
+msgstr "Desligado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "Reprodução de alta fidelidade (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+#, fuzzy
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Reprodução de alta fidelidade (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "Duplex telefônico (HSP/HFP)"
#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
-msgstr ""
+msgstr "Servidor de som PulseAudio"
+
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "Nome do cliente \"%s\" inválido\n"
+
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr ""
+#~ "Falha ao determinar a especificação de amostragem a partir do arquivo.\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "Não foi possível conectar com o barramento do sistema: %s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "Não foi possível obter quem chamou pelo PID: %s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "Não foi possível definir o UID sobre o objeto que chamou."
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "Falha em obter a sessão CK."
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "Não foi possível definir o UID do objeto da sessão."
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "Não foi possível alocar o PolKitAction."
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "Não foi possível definir a action_id"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "Não foi possível alocar o PolKitContext."
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "Não foi possível iniciar o PolKitContext: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "Não foi possível determinar se o solicitante está autorizado: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "Não foi possível obter auth: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit respondeu com '%s'"
+
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr ""
+#~ "Escalonamento de alta prioridade (nível de nice Unix negativo) para o "
+#~ "daemon do PulseAudio"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "Escalonamento em tempo real para o daemon do PulseAudio"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr ""
+#~ "Uma política do sistema impede que o PulseAudio adquira escalonamento de "
+#~ "alta prioridade."
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr ""
+#~ "Uma política do sistema impede que o PulseAudio adquira o escalonamento "
+#~ "em tempo real."
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() falhou: %s\n"
+
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_connect() falhou: %s\n"
+
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr ""
+#~ "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade."
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade."
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real."
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real."
+
+#~ 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."
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "RLIMIT_RTPRIO aumentado com sucesso"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO falhou: %s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "Abandonando CAP_NICE"
+
+#~ 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."
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "As capacidades foram limitadas com sucesso para CAP_SYS_NICE."
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() falhou.\n"
#~ msgid "Stream successfully created\n"
#~ msgstr "Fluxo criado com sucesso\n"
diff --git a/po/sr.po b/po/sr.po
index b8c861fe..37a23dc8 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,25 +1,29 @@
# Serbian translations for pulseaudio
# Copyright (C) 2006 Lennart Poettering
# This file is distributed under the same license as the pulseaudio package.
-#
# Igor Miletic (Игор Милетић) <grejigl-gnomeprevod@yahoo.ca>, 2009.
# MiloÅ¡ KomarÄević <kmilos@gmail.com>, 2009.
+#
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: 2009-04-07 23:02+0100\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-09 21:33+0100\n"
"Last-Translator: MiloÅ¡ KomarÄević <kmilos@gmail.com>\n"
-"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
+"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
"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"
-"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -32,7 +36,7 @@ msgstr ""
"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
"овај проблем ALSA програмерима."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -45,7 +49,7 @@ msgstr ""
"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
"овај проблем ALSA програмерима."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -58,9 +62,17 @@ msgstr ""
"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
"овај проблем ALSA програмерима."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Виртуелни LADSPA Ñливник"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -70,12 +82,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<име Ñливника> sink_properties=<ÑвојÑтва Ñливника> master=<име "
+"Ñливника за филтрирање> format=<формат узорка> rate=<учеÑтаноÑÑ‚ "
+"диÑкретизације> channels=<број канала> channel_map=<мапа канала> plugin=<име "
+"ladspa додатка> label=<ознака ladspa додатка> control=<ÑпиÑак улазних "
+"контролних вредноÑти раздвојених зарезом>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Унутрашњи звук"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Модем"
@@ -91,222 +116,92 @@ msgstr "ÐеуÑпешно Ñмештање новог dl учитавача."
msgid "Failed to add bind-now-loader."
msgstr "ÐеуÑпешно додавање „повежи одмах“ учитавача."
-#: ../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 "Ðе могу иницијализовати PolKitContex: %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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Добих Ñигнал %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Ðапуштам."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе могу наћи кориÑника „%s“."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе могу наћи групу „%s“."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID кориÑника „%s“ Ñе не поклапа Ñа групом „%s“."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "ÐеуÑпешно прављење „%s“: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "ÐеуÑпешна промена групног ÑпиÑка: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "ÐеуÑпешна промена GID-а: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "ÐеуÑпешна промена UID-а: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "УÑпешно одбачена root овлашћења."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "Режим за читав ÑиÑтем није подржан на овој платформи."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) није уÑпело: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 root и ÑтварновременÑко и/или виÑокоприоритетно раÑпоређивање је "
-"захтевано у подешавањима. Међутим, немамо потребна овлашћења:\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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Демон није покренут"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Демон је покренут Ñа PID-ом %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ÐеуÑпешно убијање демона: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -314,153 +209,158 @@ msgstr ""
"Ðије намеравано да Ñе овај програм покреће из root налога (оÑим у Ñлучају "
"када је --system наведено)"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Потребна Ñу root овлашћења."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start није подржано за ÑиÑтемÑке примерке."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Покренуто у ÑиÑтемÑком режиму, али --disallow-exit није поÑтављено!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Покренуто у ÑиÑтемÑком режиму, али --disallow-module-loading није поÑтављено!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Покренуто у ÑиÑтемÑком режиму, приÑилно онемогућујем SHM режим!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Покренуто у ÑиÑтемÑком режиму, приÑилно онемогућујем гашење поÑле одређеног "
"времена мировања!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "ÐеуÑпешно проналажење Ñтандардног улаза/излаза."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "ÐеуÑпешно пуштање података кроз цев: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "ÐеуÑпела функција fork(): %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "ÐеуÑпела функција read(): %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "ÐеуÑпешно покретање демона."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Демон уÑпешно покренут."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ово је PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Домаћин компајлирања: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS компајлирања: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Покренут на домаћину: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Ðашао %u процеÑор(а)"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Величина Ñтранице је %lu бајтова"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Компајлирано Ñа подршком за Valgrind: да"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Компајлирано Ñа подршком за Valgrind: не"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Покренут у Valgrind режиму: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Оптимизована изградња: да"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Оптимизована изградња: не"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG дефиниÑан, Ñва обавештења иÑкључена."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH дефиниÑан, Ñамо обавештења брзе путање иÑкључена."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Сва обавештења омогућена."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "ÐеуÑпешно добављање ИБ машине"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "ИБ машине је %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "ИБ машине је %s."
+msgstr "ИБ ÑеÑије је %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "КориÑти Ñе %s извршни директоријум."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "КориÑти Ñе %s директоријум Ñтања."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "КориÑти Ñе %s директоријум модула."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Покренуто у ÑиÑтемÑком режиму: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -469,16 +369,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"У реду, значи извршавате PA у ÑиÑтемÑком режиму. Примите к знању да то "
+"вероватно не би требало да радите.\n"
+"Ðко то Ñвеједно чините онда је ваша кривица ако Ñтвари не раде онако како Ñе "
+"очекује.\n"
+"Прочитајте http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode ради "
+"објашњења зашто је ÑиÑтемÑки режим обично лоша идеја."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "ÐеуÑпела функција pa_pid_file_create()."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ДоÑтупни Ñу нови бројачи виÑоке резолуције! Пријатно!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -486,27 +392,27 @@ msgstr ""
"Ваше језгро није добро подешено за pulseaudio! Препоручује Вам Ñе да "
"кориÑтите Linux језгро Ñа омогућеним бројачима виÑоке резолуције."
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "ÐеуÑпела функција pa_core_new()."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "ÐеуÑпешно покретање демона."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Демон је покренут без иједног учитаног модула, одбија да ради."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Покретање демона уÑпешно."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Покренуто гашење демона."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Рад демона је прекинут."
@@ -583,14 +489,14 @@ msgid ""
"\n"
" -n Don't load default script file\n"
msgstr ""
-"%s [options]\n"
+"%s [опције]\n"
"\n"
"ÐÐРЕДБЕ:\n"
" -h, --help Прикажи ову помоћ\n"
" --version Прикажи верзију\n"
-" --dump-conf ИзлиÑтај подразумевана подешавања\n"
-" --dump-modules ИзлиÑтај ÑпиÑак доÑтупних модула\n"
-" --dump-resample-methods ИзлиÑтај доÑтупне вредноÑти "
+" --dump-conf ИÑпиши подразумевана подешавања\n"
+" --dump-modules ИÑпиши ÑпиÑак доÑтупних модула\n"
+" --dump-resample-methods ИÑпиши доÑтупне вредноÑти "
"диÑкретизације\n"
" --cleanup-shm ОчиÑти бајате делове дељене "
"меморије\n"
@@ -636,7 +542,7 @@ msgstr ""
" --log-backtrace=FRAMES Укључи трагове у порукама дневника\n"
" -p, --dl-search-path=ПУТÐЊРПоÑтави путању претраге за динамички "
"дељене\n"
-" објекте (додатци)\n"
+" објекте (додаци)\n"
" --resample-method=ÐÐЧИРКориÑти наведени начин "
"диÑкретизације\n"
" (Погледај --dump-resample-methods "
@@ -663,39 +569,39 @@ msgstr ""
#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
-msgstr "--daemonize очекује логичку вредноÑÑ‚"
+msgstr "--daemonize очекује логички аргумент"
#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
-msgstr "--fail очекује логичку вредноÑÑ‚"
+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 очекује параметар за ниво опширноÑти (нумеричка вредноÑÑ‚ између "
-"0 и 4 или једно од: debug, info, notice, warn, error)."
+"--log-level очекује аргумент за ниво запиÑа (или нумеричка вредноÑÑ‚ у опÑегу "
+"0..4 или једно од debug, info, notice, warn, error)."
#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
-msgstr "--high-priority очекује логичку вредноÑÑ‚"
+msgstr "--high-priority очекује логички аргумент"
#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
-msgstr "--realtime очекује логичку вредноÑÑ‚"
+msgstr "--realtime очекује логички аргумент"
#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
-msgstr "--disallow-module-loading очекује логичку вредноÑÑ‚"
+msgstr "--disallow-module-loading очекује логички аргумент"
#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit очекује логичку вредноÑÑ‚"
+msgstr "--disallow-exit очекује логички аргумент"
#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
-msgstr "--use-pid-file очекује логичку вредноÑÑ‚"
+msgstr "--use-pid-file очекује логички аргумент"
#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
@@ -704,11 +610,11 @@ msgstr ""
#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
-msgstr "--log-time очекује логичку вредноÑÑ‚"
+msgstr "--log-time очекује логички аргумент"
#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
-msgstr "--log-meta очекује логичку вредноÑÑ‚"
+msgstr "--log-meta очекује логички аргумент"
#: ../src/daemon/cmdline.c:354
#, c-format
@@ -717,15 +623,15 @@ msgstr "ÐеиÑправан начин диÑкретизације „%s“."
#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
-msgstr "--system очекује логичку вредноÑÑ‚"
+msgstr "--system очекује логички аргумент"
#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
-msgstr "--no-cpu-limit очекује логичку вредноÑÑ‚"
+msgstr "--no-cpu-limit очекује логички аргумент"
#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
-msgstr "--disable-shm очекује логичку вредноÑÑ‚"
+msgstr "--disable-shm очекује логички аргумент"
#: ../src/daemon/dumpmodules.c:60
#, c-format
@@ -765,79 +671,79 @@ msgstr "Учитај једном: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "УПОЗОРЕЊЕ О ПРЕВÐЗИЛÐЖЕЊУ: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Путања: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ÐеиÑправан циљни дневник „%s“."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ÐеиÑправан ниво опширноÑти у дневнику „%s“."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ÐеиÑправан начин диÑкретизације „%s“."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ÐеиÑправан rlimit „%s“."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit није подржан на овој платформи."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ÐеиÑправан формат узорка „%s“."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ÐеиÑправна учеÑтаноÑÑ‚ диÑкретизације „%s“."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ÐеиÑправни канали узорка „%s“."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ÐеиÑправна мапа канала „%s“."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ÐеиÑправан број одломака „%s“."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ÐеиÑправна величина одломка „%s“."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ÐеиÑправан ниво приоритета „%s“."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ÐеуÑпело отварање датотеке подешавања: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -845,18 +751,14 @@ msgstr ""
"Ðаведена мапа канала има нема иÑти број канала као што је наведено у "
"подразумеваном броју канала."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Прочитај из датотеке подешавања: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Одбацујем root повлаÑтице."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "УÑпешно ограничио могућноÑти на CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "ЧиÑтим повлаÑтице."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -866,31 +768,7 @@ msgstr "PulseAudio звучни ÑиÑтем"
msgid "Start the PulseAudio Sound System"
msgstr "Покрени PulseAudio звучни ÑиÑтем"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
-"ВиÑокоприоритетно раÑпоређивање (негативни Unix нивои финоће, тј. nice "
-"нивои) за PulseAudio демона"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "СтварновременÑко раÑпоређивање за PulseAudio демона"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Моно"
@@ -1094,33 +972,33 @@ msgstr "Горњи позадинÑки леви"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(неиÑправно)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Стерео"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Окружујући 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Окружујући 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Окружујући 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Окружујући 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Окружујући 7.1"
@@ -1138,7 +1016,7 @@ msgstr "Ðепозната наредба"
#: ../src/pulse/error.c:46
msgid "Invalid argument"
-msgstr "ÐеиÑправан параметар"
+msgstr "ÐеиÑправан аргумент"
#: ../src/pulse/error.c:47
msgid "Entity exists"
@@ -1162,7 +1040,7 @@ msgstr "Време иÑтекло"
#: ../src/pulse/error.c:52
msgid "No authorization key"
-msgstr "Ðема кључа за ауторизацију"
+msgstr "Ðема кључа за овлашћење"
#: ../src/pulse/error.c:53
msgid "Internal error"
@@ -1210,7 +1088,7 @@ msgstr "Ко̑д грешке је непознат"
#: ../src/pulse/error.c:64
msgid "No such extension"
-msgstr "Ðе поÑтоји таква екÑтензија"
+msgstr "Ðе поÑтоји такво проширење"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
@@ -1220,32 +1098,39 @@ msgstr "Избачена функционалноÑÑ‚"
msgid "Missing implementation"
msgstr "Ðије одрађено"
-# ÐиÑам Ñигуран да имамо реч за форк. Можда да кориÑтимо форкирање? Ружно звучи, али гранање није најбоље. -- Игор
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr "Клијент израчван"
+msgstr "Клијент је израчван"
+
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1258,193 +1143,191 @@ msgstr "ÐеуÑпела функција XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "ÐеуÑпешно тумачење података из колачића"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ÐеуÑпешно отварање датотеке подешавања „%s“: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "Колачић није учитан. Покушавам Ñе повезати без колачића."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Примио поруку за непознати локал „%s“"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ÐеуÑпешно иÑушивање тока: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "ÐеуÑпешно иÑушивање тока: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Репродукциони ток иÑушен.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Репродукциони ток је иÑушен."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Веза до Ñервера Ñе иÑушује.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Веза до Ñервера Ñе иÑушује."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "ÐеуÑпела функција pa_stream_write(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_write(): %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "ÐеуÑпела функција pa_stream_peek(): %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_write(): %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Ток уÑпешно направљен.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_peek(): %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Ток је уÑпешно направљен."
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "ÐеуÑпешно pa_stream_get_buffer_attr(): %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_get_buffer_attr(): %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "Метрике бафера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Мере бафера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Метрике бафера: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Мере бафера: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "КориÑтим Ñледеће параметре узорка „%s“ и мапу канала „%s“.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "КориÑтим Ñледеће параметре узорка „%s“ и мапу канала „%s“."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "Прикључен на уређај %s (%u, %s обуÑтављено).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "Прикључен на уређај %s (%u, %s обуÑтављено)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Грешка тока: %s\n"
+msgid "Stream error: %s"
+msgstr "Грешка тока: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Уређај тока обуÑтављен.%s\n"
+msgid "Stream device suspended.%s"
+msgstr "Уређај тока обуÑтављен.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Уређај тока наÑтављен.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "Уређај тока наÑтављен.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Ток није попуњен. %s \n"
+msgid "Stream underrun.%s"
+msgstr "Ток није попуњен.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Ток Ñе прелива.%s \n"
+msgid "Stream overrun.%s"
+msgstr "Ток Ñе прелива.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Ток покренут. %s \n"
+msgid "Stream started.%s"
+msgstr "Ток је покренут.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "Ток пребачен на уређај %s (%u, %s обуÑтављено). %s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Ток пребачен на уређај %s (%u, %s обуÑтављено).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "није"
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Параметри бафера тока Ñу промењени. %s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Параметри бафера тока Ñу промењени.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Веза уÑпоÑтављена.%s \n"
+msgid "Connection established.%s"
+msgstr "Веза уÑпоÑтављена.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "ÐеуÑпела функција pa_stream_new() : %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_new(): %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "ÐеуÑпела функција pa_stream_connect_playback(): %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_connect_playback(): %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "ÐеуÑпела функција pa_stream_connect_record(): %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_connect_record(): %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "ÐеуÑпешно повезивање: %s\n"
-
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Дошао до краја датотеке.\n"
+msgid "Connection failure: %s"
+msgstr "ÐеуÑпешно повезивање: %s"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "ÐеуÑпела функција read(): %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Добих EOF."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "ÐеуÑпела функција write(): %s\n"
+msgid "write() failed: %s"
+msgstr "ÐеуÑпела функција write(): %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Добио Ñигнал, излазим.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Добих Ñигнал, излазим."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Ðемогу добити вредноÑÑ‚ кашњења: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Ðе могу добити вредноÑÑ‚ кашњења: %s"
-#: ../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:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "Време: %0.3f s; Кашњење: %0.0f μs. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "ÐеуÑпела функција pa_stream_update_timing_info(): %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "ÐеуÑпела функција pa_stream_update_timing_info(): %s"
-# Шта да радимо Ñа downmix и upmix. ПреÑликај навише и преÑликај наниже? -- Игор
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1502,7 +1385,7 @@ msgid ""
" --file-format=FFORMAT Record/play formatted PCM data.\n"
" --list-file-formats List available file formats.\n"
msgstr ""
-"%s[опције]\n"
+"%s [опције]\n"
"\n"
" -h, --help Прикажи ову помоћ\n"
" --version Прикажи верзију\n"
@@ -1512,40 +1395,50 @@ msgstr ""
"\n"
" -v, --verbose Омогући опширан Ð¾Ð¿Ð¸Ñ Ñ€Ð°Ð´ÑšÐµ\n"
"\n"
-" -s, --server=СЕРВЕР Ðазив Ñервера Ñа којим ће Ñе "
-"повезати\n"
-" -d, --device=УРЕЂÐЈ Ðазив Ñливника/извора на који ће Ñе "
+" -s, --server=СЕРВЕР Име Ñервера на који Ñе треба "
"повезати\n"
+" -d, --device=УРЕЂÐЈ Ðазив Ñливника/извора на који Ñе "
+"треба повезати\n"
" -n, --client-name=ИМЕ Како назвати овог клијента на "
"Ñерверу\n"
" --stream-name=ИМЕ Како назвати овај ток на Ñерверу\n"
-" --volume=ГЛÐСÐОСТ Ðаведи почетну јачину звука између "
-"0...65536 (линеарна Ñкала)\n"
-" --rate=УЧЕСТÐÐОСТ УчеÑтаноÑÑ‚ диÑкретизације у херцима "
+" --volume=ЈÐЧИÐÐ Ðаведи почетну (линеарну) јачину "
+"звука у опÑегу 0...65536\n"
+" --rate=УЧЕСТÐÐОСТ УчеÑтаноÑÑ‚ диÑкретизације у Hz "
"(подразумевана 44100)\n"
-" --format=ФОРМÐТУЗОРКРФормат узорка, једно од s16le, s16be, "
+" --format=ФОРМÐТУЗОРКРВрÑта узорка, једна од s16le, s16be, "
"u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(подразумевано s16ne)\n"
-" --channels=БРОЈКÐÐÐЛРБрој канала, 1 за моно, 2 за Ñтерео\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (подразумевано "
+"s16ne)\n"
+" --channels=КÐÐÐЛИ Број канала, 1 за моно, 2 за Ñтерео\n"
" (подразумевано 2)\n"
" --channel-map=ÐœÐПÐКÐÐÐЛРМапу канала коју треба кориÑтити "
"умеÑто подразумеване\n"
-" --fix-format Преузми формат узорка из Ñливника\n"
-" на који је ток прикључен.\n"
+" --fix-format Преузми формат узорка из Ñливника на "
+"који Ñе ток\n"
+" прикључује.\n"
" --fix-rate Преузми учеÑтаноÑÑ‚ диÑкретизације из "
-"одлива \n"
-" на који је ток прикључен.\n"
+"одлива на који\n"
+" Ñе ток прикључује.\n"
" --fix-channels Преузми број и мапу канала из "
-"Ñливника на\n"
-" који је ток прикључен.\n"
-" --no-remix Без Ñажимања или раширивања броја "
-"канала.\n"
-" --no-remap Ðазначи канале по индекÑу умеÑто по "
+"Ñливника на који Ñе\n"
+" ток прикључује.\n"
+" --no-remix Без Ñтапања или раздвајања канала.\n"
+" --no-remap Мапирај канале по индекÑу умеÑто по "
"називу.\n"
" --latency=БÐЈТОВРТражи наведено кашњење у бајтовима.\n"
" --process-time=БÐЈТОВРТражи наведено време процеÑа по "
"захтеву у бајтовима.\n"
+" --property=СВОЈСТВО=ВРЕДÐОСТ ПоÑтави наведено ÑвојÑтво на "
+"наведену вредноÑÑ‚.\n"
+" --raw Снимај/репродукуј Ñирове PCM "
+"податке.\n"
+" --file-format=ФОРМÐТ Снимај/репродукуј форматиране PCM "
+"податке.\n"
+" --list-file-formats ИÑпиши Ñве доÑтупне формате "
+"података.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1558,136 +1451,129 @@ msgstr ""
"Компајлирано Ñа 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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "ÐеиÑправно име клијента „%s“"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "ÐеиÑправан начин диÑкретизације „%s“."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "ÐеиÑправно име тока „%s“"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "ÐеиÑправна мапа канала „%s“\n"
+msgid "Invalid channel map '%s'"
+msgstr "ÐеиÑправна мапа канала „%s“"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "ÐеиÑправан параметар кашњења „%s“\n"
+msgid "Invalid latency specification '%s'"
+msgstr "ÐеиÑправан параметар кашњења „%s“"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "ÐеиÑправан параметар за време процеÑа „%s“\n"
+msgid "Invalid process time specification '%s'"
+msgstr "ÐеиÑправан параметар за време процеÑа „%s“"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "ÐеиÑправан начин диÑкретизације „%s“."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "ÐеиÑправно ÑвојÑтво „%s“"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Ðепознат %s формат датотеке."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "ÐеиÑправни параметри узорка\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "ÐеиÑправан параметар узорка"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Превише параметара.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Превише аргумената."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "Ðије уÑпело добављање података о узорку: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "Ðије уÑпело прављење параметара узорка за датотеку."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "Ðије уÑпело отварање звучне датотеке.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "Ðије уÑпело отварање звучне датотеке."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "ÐеуÑпешно утврђивање параметара узорка из датотеке."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Упозорење: ÐеуÑпешно утврђивање мапе канала из датотеке."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "Мапа канала Ñе не поклапа Ñа параметрима узорка\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "Мапа канала Ñе не поклапа Ñа параметрима узорка"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Упозорење: ÐеуÑпешно запиÑивање мапе канала у датотеку."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "Отварам ток %s Ñа Ñледећим параметрима узорка „%s“.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "Отварам ток %s Ñа параметрима узорка „%s“ и мапом канала „%s“."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "Ñнима"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "ÐеуÑпела функција pa_mainloop_new()."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "ÐеуÑпела функција io_new() \n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "ÐеуÑпела функција io_new()."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "ÐеуÑпела функција pa_context_new()."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "ÐеуÑпела функција pa_context_connect(): %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "ÐеуÑпела функција time_new() \n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "ÐеуÑпела функција pa_context_new()."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "ÐеуÑпела функција pa_mainloop_run()."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1714,7 +1600,12 @@ msgstr "ÐеуÑпешно наÑтављање: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "УПОЗОРЕЊЕ: Звучни Ñервер није локални, не зауÑтављам.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "ÐеуÑпешно повезивање: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Добих SIGINT, излазим.\n"
@@ -1739,7 +1630,8 @@ msgstr ""
"\n"
" -h, --help Прикажи ову помоћ\n"
" --version Прикажи верзију\n"
-" -s, --server=СЕРВЕР Име Ñервера Ñа којим Ñе повезује\n"
+" -s, --server=СЕРВЕР Име Ñервера на који Ñе треба "
+"повезати\n"
"\n"
#: ../src/utils/pasuspender.c:248
@@ -1753,32 +1645,47 @@ msgstr ""
"Компајлирано Ñа libpulse %s\n"
"Повезано Ñа libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "ÐеуÑпела функција pa_mainloop_new().\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "ÐеуÑпела функција pa_context_new().\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "ÐеуÑпела функција pa_mainloop_run().\n"
+
+#: ../src/utils/pactl.c:135
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "ÐеуÑпешно добављање ÑтатиÑтике: %s\n"
+msgid "Failed to get statistics: %s"
+msgstr "ÐеуÑпешно добављање ÑтатиÑтике: %s"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Тренутно у употреби: %u блокова Ñадржи укупно %s бајтова.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Смештено од покретања: %u блокова Ñадржи укупно %s бајтова.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Величина кеш меморије узорка: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "ÐеуÑпешно добијање података о Ñерверу: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "ÐеуÑпешно добављање података о Ñерверу: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1801,12 +1708,12 @@ msgstr ""
"Подразумевани извор: %s\n"
"Колачић: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "ÐеуÑпешно добијање података о Ñливнику: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "ÐеуÑпешно добављање података о Ñливнику: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1845,22 +1752,22 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tПрофили:\n"
+msgstr "\tПортови:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tÐктивни профил: %s\n"
+msgstr "\tÐктивни порт: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "Ðије уÑпело добављање података о извору: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "ÐеуÑпешно добављање података о извору: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1899,20 +1806,20 @@ msgstr ""
"\tСвојÑтва:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "непознато"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "ÐеуÑпешно добијање података о модулу: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "ÐеуÑпешно добављање података о модулу: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1924,17 +1831,17 @@ msgid ""
msgstr ""
"Модул #%u\n"
"\tИме: %s\n"
-"\tПараметар: %s\n"
+"\tÐргумент: %s\n"
"\tБројач коришћења: %s\n"
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "ÐеуÑпешно добијање података о клијенту: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "ÐеуÑпешно добављање података о клијенту: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1949,12 +1856,12 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "ÐеуÑпешно добијање података о картици: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "ÐеуÑпешно добављање података о картици: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1971,22 +1878,22 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tПрофили:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tÐктивни профил: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "Ðије уÑпело добијање података о улазу Ñливника: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "ÐеуÑпешно добављање података о улазу Ñливника: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2023,12 +1930,12 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "Ðије уÑпело добијање података о излазу извора: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "ÐеуÑпешно добављање података о излазу извора: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2057,12 +1964,12 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "Ðије уÑпело добављање података о узорку: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "ÐеуÑпешно добављање података о узорку: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2093,22 +2000,26 @@ msgstr ""
"\tСвојÑтва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "ÐеуÑпех: %s\n"
+msgid "Failure: %s"
+msgstr "ÐеуÑпех: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "Ðије уÑпело учитавање узорка: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "Ðије уÑпело поÑтављање узорка: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "Прерани крај датотеке\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "Прерани крај датотеке"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Добих SIGINT, излазим."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2116,15 +2027,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2140,23 +2057,31 @@ msgstr ""
"%s [опције] upload-sample ИМЕДÐТОТЕКЕ [ИМЕ]\n"
"%s [опције] play-sample ИМЕ [СЛИВÐИК]\n"
"%s [опције] remove-sample ИМЕ\n"
-"%s [опције] move-sink-input ИБ СЛИВÐИКÐ\n"
-"%s [опције] move-source-output ИБ ИЗВОРÐ\n"
-"%s [опције] load-module ИМЕ [ПÐРÐÐœ. ...]\n"
-"%s [опције] unload-module ИБ\n"
-"%s [опције] suspend-sink [СЛИВÐИК] 1|0\n"
-"%s [опције] suspend-source [ИЗВОР] 1|0\n"
-"%s [опције] set-card-profile [КÐРТИЦÐ] [ПРОФИЛ] \n"
+"%s [опције] move-sink-input УЛÐЗСЛИВÐИКРСЛИВÐИК\n"
+"%s [опције] move-source-output ИЗЛÐЗИЗВОРРИЗВОР\n"
+"%s [опције] load-module ИМЕ [ÐРГ ...]\n"
+"%s [опције] unload-module МОДУЛ\n"
+"%s [опције] suspend-sink СЛИВÐИК 1|0\n"
+"%s [опције] suspend-source ИЗВОР 1|0\n"
+"%s [опције] set-card-profile КÐРТИЦРПРОФИЛ\n"
+"%s [опције] set-sink-port СЛИВÐИК ПОРТ\n"
+"%s [опције] set-source-port ИЗВОР ПОРТ\n"
+"%s [опције] set-sink-volume СЛИВÐИК ЈÐЧИÐÐ\n"
+"%s [опције] set-source-volume ИЗВОР ЈÐЧИÐÐ\n"
+"%s [опције] set-sink-input-volume УЛÐЗСЛИВÐИКРЈÐЧИÐÐ\n"
+"%s [опције] set-sink-mute СЛИВÐИК 1|0\n"
+"%s [опције] set-source-mute ИЗВОР 1|0\n"
+"%s [опције] set-sink-input-mute УЛÐЗСЛИВÐИКР1|0\n"
"\n"
" -h, --help Прикажи ову помоћ\n"
" --version Прикажи верзију\n"
"\n"
" -s, --server=СЕРВЕР Име Ñервера на који Ñе треба "
-"прикључити\n"
+"повезати\n"
" -n, --client-name=ИМЕ Како назвати овог клијента на "
"Ñерверу\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2167,77 +2092,108 @@ msgstr ""
"Компајлирано Ñа libpulse %s\n"
"Повезано Ñа libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "Ðаведите датотеку узорка коју треба учитати\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "Ðаведите датотеку узорка коју треба учитати"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "Ðије уÑпело отварање звучне датотеке.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "Ðије уÑпело отварање звучне датотеке."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "Отварам ток %s Ñа Ñледећим параметрима узорка „%s“.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "Упозорење: ÐеуÑпешно утврђивање параметара узорка из датотеке."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "Морате навеÑти име узорка којег желите пуÑтити\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "Морате навеÑти име узорка којег желите репродуковати"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "Морате навеÑти име узорка којег желите уклонити\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Морате навеÑти име узорка којег желите уклонити"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ ÑƒÐ»Ð°Ð·Ð° у Ñливнику и Ñливник\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ ÑƒÐ»Ð°Ð·Ð° Ñливника и Ñливник"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð·Ð»Ð°Ð·Ð° у извору и извор\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð·Ð»Ð°Ð·Ð° извора и извор"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "Морате навеÑти име и параметре модула.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Морате навеÑти име и аргументе модула."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð´ÑƒÐ»Ð°"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
-msgstr "Можете навеÑти Ñамо један Ñливник. Морате навеÑти логичку вредноÑÑ‚.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr ""
+"Ðе можете навеÑти више од једног Ñливника. Морате навеÑти логичку вредноÑÑ‚."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
-msgstr "Можете навеÑти Ñамо један извор. Морате навеÑти логичку вредноÑÑ‚.\n"
+"value."
+msgstr ""
+"Ðе можете навеÑти више од једног извора. Морате навеÑти логичку вредноÑÑ‚."
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸Ñ†Ðµ и име профила"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ Ñливника и име порта"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð·Ð²Ð¾Ñ€Ð° и име порта"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Ðи једна иÑправна наредба није наведена.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ Ñливника и јачину"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "ÐеуÑпела функција pa_context_connect(): %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "ÐеиÑправан параметар јачине"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð·Ð²Ð¾Ñ€Ð° и јачину"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ ÑƒÐ»Ð°Ð·Ð° Ñливника и јачину"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "ÐеиÑправан Ð¸Ð½Ð´ÐµÐºÑ ÑƒÐ»Ð°Ð·Ð° Ñливника"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ Ñливника и логичку вредноÑÑ‚ за иÑкључивање"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Морате навеÑти име/Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð·Ð²Ð¾Ñ€Ð° и логичку вредноÑÑ‚ за иÑкључивање"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "Морате навеÑти Ð¸Ð½Ð´ÐµÐºÑ ÑƒÐ»Ð°Ð·Ð° Ñливника и логичку вредноÑÑ‚ за иÑкључивање"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "ÐеиÑправан параметар индекÑа улаза Ñливника"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Ðије наведена иÑправна наредба."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2320,49 +2276,49 @@ msgstr "ÐеуÑпешно учитавање датотека колачића\
msgid "Not yet implemented.\n"
msgstr "Ðије још имплементирано.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"Ðема покренутог PulseAudio демона, или Ñе не извршава као демон ÑеÑије."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Ðије уÑпело убијање PulseAudio демона."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Демон Ñе не одазива."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-# Како превеÑти autospawn (могућноÑÑ‚ прављења или покретања процеÑа из иÑтог) -- Игор
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Ðије могуће приÑтупити датотеци закључавања за Ñамоумножавање."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2379,7 +2335,7 @@ msgstr ""
"Пробуђени Ñмо Ñа поÑтављеним POLLOUT-ом -- али Ñледећи snd_pcm_avail() је "
"вратио 0 или неку другу вредноÑÑ‚ мању од min_avail."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2397,128 +2353,22 @@ msgstr ""
"вратио 0 или неку другу вредноÑÑ‚ мању од min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "ИÑкључено"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Репродукција виÑоке тачноÑти (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Снимање виÑоке тачноÑти (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "ДвоÑтрано телефонирање (HSP/HFP)"
#: ../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 e5b0f7b1..d64f7493 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -1,25 +1,29 @@
# Serbian(Latin) translations for pulseaudio
# Copyright (C) 2006 Lennart Poettering
# This file is distributed under the same license as the pulseaudio package.
-#
# Igor Miletic (Igor Miletić) <grejigl-gnomeprevod@yahoo.ca>, 2009.
# MiloÅ¡ KomarÄević <kmilos@gmail.com>, 2009.
+#
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: 2009-04-07 23:02+0100\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-09 21:33+0100\n"
"Last-Translator: MiloÅ¡ KomarÄević <kmilos@gmail.com>\n"
-"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
+"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
"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"
-"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -32,7 +36,7 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u „%s“ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -45,7 +49,7 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u „%s“ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -58,9 +62,17 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u „%s“ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Virtuelni LADSPA slivnik"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -70,12 +82,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<ime slivnika> sink_properties=<svojstva slivnika> master=<ime "
+"slivnika za filtriranje> format=<format uzorka> rate=<uÄestanost "
+"diskretizacije> channels=<broj kanala> channel_map=<mapa kanala> plugin=<ime "
+"ladspa dodatka> label=<oznaka ladspa dodatka> control=<spisak ulaznih "
+"kontrolnih vrednosti razdvojenih zarezom>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Unutrašnji zvuk"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Modem"
@@ -91,223 +116,92 @@ msgstr "NeuspeÅ¡no smeÅ¡tanje novog dl uÄitavaÄa."
msgid "Failed to add bind-now-loader."
msgstr "NeuspeÅ¡no dodavanje „poveži odmah“ uÄitavaÄa."
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr "Nije se moguće prikljuÄiti na sistemsku magistralu: %s"
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr "Ne mogu dobaviti pozivnika iz PID-a: %s"
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr "Ne mogu postaviti UID za pozivniÄki objekat."
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr "Neuspešno dobavljanje CK sesije."
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr "Ne mogu postaviti UID za objekat sesije."
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr "Ne mogu postaviti PolKitAction."
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr "Ne mogu postaviti action_id"
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr "Ne mogu postaviti PolKitContext."
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr "Ne mogu inicijalizovati PolKitContex: %s"
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr "Nije moguće odrediti ovlašćenje pozivnika: %s"
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr "Ne mogu dobiti ovlašćenje: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit je odgovorio sa „%s“"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Dobih signal %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Napuštam."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ne mogu naći korisnika „%s“."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ne mogu naći grupu „%s“."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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:201
+#: ../src/daemon/main.c:200
#, 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:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Neuspešno pravljenje „%s“: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Neuspešna promena grupnog spiska: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Neuspešna promena GID-a: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Neuspešna promena UID-a: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "UspeÅ¡no odbaÄena root ovlašćenja."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "Režim za Äitav sistem nije podržan na ovoj platformi."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nije uspelo: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
msgid "Failed to parse command line."
msgstr "NeuspeÅ¡no tumaÄenje komandne linije."
-#: ../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: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:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit nam je dao ovlašćenje za dobijanje visokog prioriteta."
-
-#: ../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: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:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit odbija ovlašćenje za dobijanje rada u stvarnom vremenu."
-
-#
-#: ../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 root i stvarnovremensko i/ili visokoprioritetno raspoređivanje je "
-"zahtevano u podešavanjima. Međutim, nemamo potrebna ovlašćenja:\n"
-"nismo u grupi „%s“, PolicyKit odbija da nam dȃ tražena ovlašćenja i nemamo "
-"sredstava za povećanje RLIMIT_NICE/RLIMIT_RTPRIO ograniÄenja.\n"
-"Morate dobiti odgovarajuća PolicyKit ovlašćenja, ili postati Älan grupe „%"
-"s“, ili povećati ograniÄenja za RLIMIT_NICE/RLIMIT_RTPRIO sredstva ovog "
-"korisnika kako bi omogućili stvarnovremensko ili visokoprioritetno "
-"raspoređivanje."
-
-#: ../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:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr "UspeÅ¡no povećano RLIMIT_RTPRIO ograniÄenje"
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "Neuspešno postavljanje RLIMIT_RTPRIO-a:%s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr "Odustajem od CAP_NICE"
-
-#: ../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:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Demon nije pokrenut"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon je pokrenut sa PID-om %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Neuspešno ubijanje demona: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -315,154 +209,159 @@ msgstr ""
"Nije nameravano da se ovaj program pokreće iz root naloga (osim u sluÄaju "
"kada je --system navedeno)"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Potrebna su root ovlašćenja."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start nije podržano za sistemske primerke."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
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:737
+#: ../src/daemon/main.c:581
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:740
+#: ../src/daemon/main.c:584
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:745
+#: ../src/daemon/main.c:589
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:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Neuspešno pronalaženje standardnog ulaza/izlaza."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "Neuspešno puštanje podataka kroz cev: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "Neuspela funkcija fork(): %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "Neuspela funkcija read(): %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Demon uspešno pokrenut."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ovo je PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Domaćin kompajliranja: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompajliranja: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Pokrenut na domaćinu: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Našao %u procesor(a)"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "VeliÄina stranice je %lu bajtova"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Kompajlirano sa podrškom za Valgrind: da"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Kompajlirano sa podrškom za Valgrind: ne"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Pokrenut u Valgrind režimu: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimizovana izgradnja: da"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Optimizovana izgradnja: ne"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definisan, sva obaveÅ¡tenja iskljuÄena."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definisan, samo obaveÅ¡tenja brze putanje iskljuÄena."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "Sva obaveštenja omogućena."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Neuspešno dobavljanje IB mašine"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "IB mašine je %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "IB mašine je %s."
+msgstr "IB sesije je %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Koristi se %s izvršni direktorijum."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Koristi se %s direktorijum stanja."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Koristi se %s direktorijum modula."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "Pokrenuto u sistemskom režimu: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -471,16 +370,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
-
-#: ../src/daemon/main.c:951
+"U redu, znaÄi izvrÅ¡avate PA u sistemskom režimu. Primite k znanju da to "
+"verovatno ne bi trebalo da radite.\n"
+"Ako to svejedno Äinite onda je vaÅ¡a krivica ako stvari ne rade onako kako se "
+"oÄekuje.\n"
+"ProÄitajte http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode radi "
+"objaÅ¡njenja zaÅ¡to je sistemski režim obiÄno loÅ¡a ideja."
+
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "Neuspela funkcija pa_pid_file_create()."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Dostupni su novi brojaÄi visoke rezolucije! Prijatno!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -488,27 +393,27 @@ 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:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "Neuspela funkcija pa_core_new()."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
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:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "Pokretanje demona uspešno."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Pokrenuto gašenje demona."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Rad demona je prekinut."
@@ -585,14 +490,14 @@ msgid ""
"\n"
" -n Don't load default script file\n"
msgstr ""
-"%s [options]\n"
+"%s [opcije]\n"
"\n"
"NAREDBE:\n"
" -h, --help Prikaži ovu pomoć\n"
" --version Prikaži verziju\n"
-" --dump-conf Izlistaj podrazumevana podešavanja\n"
-" --dump-modules Izlistaj spisak dostupnih modula\n"
-" --dump-resample-methods Izlistaj dostupne vrednosti "
+" --dump-conf Ispiši podrazumevana podešavanja\n"
+" --dump-modules Ispiši spisak dostupnih modula\n"
+" --dump-resample-methods Ispiši dostupne vrednosti "
"diskretizacije\n"
" --cleanup-shm OÄisti bajate delove deljene "
"memorije\n"
@@ -638,7 +543,7 @@ msgstr ""
" --log-backtrace=FRAMES UkljuÄi tragove u porukama dnevnika\n"
" -p, --dl-search-path=PUTANJA Postavi putanju pretrage za "
"dinamiÄki deljene\n"
-" objekte (dodatci)\n"
+" objekte (dodaci)\n"
" --resample-method=NAÄŒIN Koristi navedeni naÄin "
"diskretizacije\n"
" (Pogledaj --dump-resample-methods "
@@ -665,39 +570,39 @@ msgstr ""
#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
-msgstr "--daemonize oÄekuje logiÄku vrednost"
+msgstr "--daemonize oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
-msgstr "--fail oÄekuje logiÄku vrednost"
+msgstr "--fail oÄekuje logiÄki argument"
#: ../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 oÄekuje parametar za nivo opÅ¡irnosti (numeriÄka vrednost izmeÄ‘u "
-"0 i 4 ili jedno od: debug, info, notice, warn, error)."
+"--log-level oÄekuje argument za nivo zapisa (ili numeriÄka vrednost u opsegu "
+"0..4 ili jedno od debug, info, notice, warn, error)."
#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
-msgstr "--high-priority oÄekuje logiÄku vrednost"
+msgstr "--high-priority oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
-msgstr "--realtime oÄekuje logiÄku vrednost"
+msgstr "--realtime oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
-msgstr "--disallow-module-loading oÄekuje logiÄku vrednost"
+msgstr "--disallow-module-loading oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit oÄekuje logiÄku vrednost"
+msgstr "--disallow-exit oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
-msgstr "--use-pid-file oÄekuje logiÄku vrednost"
+msgstr "--use-pid-file oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
@@ -706,11 +611,11 @@ msgstr ""
#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
-msgstr "--log-time oÄekuje logiÄku vrednost"
+msgstr "--log-time oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
-msgstr "--log-meta oÄekuje logiÄku vrednost"
+msgstr "--log-meta oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:354
#, c-format
@@ -719,15 +624,15 @@ msgstr "Neispravan naÄin diskretizacije „%s“."
#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
-msgstr "--system oÄekuje logiÄku vrednost"
+msgstr "--system oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
-msgstr "--no-cpu-limit oÄekuje logiÄku vrednost"
+msgstr "--no-cpu-limit oÄekuje logiÄki argument"
#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
-msgstr "--disable-shm oÄekuje logiÄku vrednost"
+msgstr "--disable-shm oÄekuje logiÄki argument"
#: ../src/daemon/dumpmodules.c:60
#, c-format
@@ -767,79 +672,79 @@ msgstr "UÄitaj jednom: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "UPOZORENJE O PREVAZILAŽENJU: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Putanja: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neispravan nivo opširnosti u dnevniku „%s“."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neispravan naÄin diskretizacije „%s“."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neispravan rlimit „%s“."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, 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:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neispravan format uzorka „%s“."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neispravna uÄestanost diskretizacije „%s“."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neispravni kanali uzorka „%s“."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neispravna mapa kanala „%s“."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neispravan broj odlomaka „%s“."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neispravna veliÄina odlomka „%s“."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neispravan nivo prioriteta „%s“."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Neuspelo otvaranje datoteke podešavanja: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -847,18 +752,14 @@ msgstr ""
"Navedena mapa kanala ima nema isti broj kanala kao Å¡to je navedeno u "
"podrazumevanom broju kanala."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ProÄitaj iz datoteke podeÅ¡avanja: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "Odbacujem root povlastice."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "UspeÅ¡no ograniÄio mogućnosti na CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "ÄŒistim povlastice."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -868,31 +769,7 @@ msgstr "PulseAudio zvuÄni sistem"
msgid "Start the PulseAudio Sound System"
msgstr "Pokreni PulseAudio zvuÄni sistem"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
-"Visokoprioritetno raspoređivanje (negativni Unix nivoi finoće, tj. nice "
-"nivoi) za PulseAudio demona"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Stvarnovremensko raspoređivanje za PulseAudio demona"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"Sistemska politika spreÄava PulseAudiu da dobije visokoprioritetno "
-"raspoređivanje."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:4
-msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
-"Sistemska politika spreÄava PulseAudiu da dobije stvarnovremensko "
-"raspoređivanje."
-
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -1096,33 +973,33 @@ msgstr "Gornji pozadinski levi"
msgid "Top Rear Right"
msgstr "Gornji pozadinski desni"
-#: ../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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(neispravno)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Okružujući 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Okružujući 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Okružujući 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Okružujući 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Okružujući 7.1"
@@ -1140,7 +1017,7 @@ msgstr "Nepoznata naredba"
#: ../src/pulse/error.c:46
msgid "Invalid argument"
-msgstr "Neispravan parametar"
+msgstr "Neispravan argument"
#: ../src/pulse/error.c:47
msgid "Entity exists"
@@ -1164,7 +1041,7 @@ msgstr "Vreme isteklo"
#: ../src/pulse/error.c:52
msgid "No authorization key"
-msgstr "Nema kljuÄa za autorizaciju"
+msgstr "Nema kljuÄa za ovlašćenje"
#: ../src/pulse/error.c:53
msgid "Internal error"
@@ -1212,7 +1089,7 @@ msgstr "Kȏd greške je nepoznat"
#: ../src/pulse/error.c:64
msgid "No such extension"
-msgstr "Ne postoji takva ekstenzija"
+msgstr "Ne postoji takvo proširenje"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
@@ -1222,32 +1099,39 @@ msgstr "IzbaÄena funkcionalnost"
msgid "Missing implementation"
msgstr "Nije odrađeno"
-# Nisam siguran da imamo reÄ za fork. Možda da koristimo forkiranje? Ružno zvuÄi, ali grananje nije najbolje. -- Igor
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr "Klijent izraÄvan"
+msgstr "Klijent je izraÄvan"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1260,193 +1144,191 @@ msgstr "Neuspela funkcija XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "NeuspeÅ¡no tumaÄenje podataka iz kolaÄića"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Neuspešno otvaranje datoteke podešavanja „%s“: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "KolaÄić nije uÄitan. PokuÅ¡avam se povezati bez kolaÄića."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Primio poruku za nepoznati lokal „%s“"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Neuspešno isušivanje toka: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Neuspešno isušivanje toka: %s"
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Reprodukcioni tok je isušen."
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Reprodukcioni tok isušen.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Veza do servera se isušuje."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Veza do servera se isušuje.\n"
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "Neuspela funkcija pa_stream_write(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "Neuspela funkcija pa_stream_write(): %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "Neuspela funkcija pa_stream_write(): %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "Neuspela funkcija pa_stream_peek(): %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "Neuspela funkcija pa_stream_peek(): %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Tok uspešno napravljen.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Tok je uspešno napravljen."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "Neuspešno pa_stream_get_buffer_attr(): %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "Neuspela funkcija pa_stream_get_buffer_attr(): %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Mere bafera: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Metrike bafera: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Mere bafera: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "Koristim sledeće parametre uzorka „%s“ i mapu kanala „%s“.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "Koristim sledeće parametre uzorka „%s“ i mapu kanala „%s“."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "PrikljuÄen na ureÄ‘aj %s (%u, %s obustavljeno).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "PrikljuÄen na ureÄ‘aj %s (%u, %s obustavljeno)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Greška toka: %s\n"
+msgid "Stream error: %s"
+msgstr "Greška toka: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Uređaj toka obustavljen.%s\n"
+msgid "Stream device suspended.%s"
+msgstr "Uređaj toka obustavljen.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Uređaj toka nastavljen.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "Uređaj toka nastavljen.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "Tok nije popunjen. %s \n"
+msgid "Stream underrun.%s"
+msgstr "Tok nije popunjen.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "Tok se preliva.%s \n"
+msgid "Stream overrun.%s"
+msgstr "Tok se preliva.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Tok pokrenut. %s \n"
+msgid "Stream started.%s"
+msgstr "Tok je pokrenut.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, 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"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Tok prebaÄen na ureÄ‘aj %s (%u, %s obustavljeno).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "nije"
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "Parametri bafera toka su promenjeni. %s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "Parametri bafera toka su promenjeni.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Veza uspostavljena.%s \n"
+msgid "Connection established.%s"
+msgstr "Veza uspostavljena.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "Neuspela funkcija pa_stream_new() : %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "Neuspela funkcija pa_stream_new(): %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "Neuspela funkcija pa_stream_connect_playback(): %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "Neuspela funkcija pa_stream_connect_playback(): %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "Neuspela funkcija pa_stream_connect_record(): %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "Neuspela funkcija pa_stream_connect_record(): %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Neuspešno povezivanje: %s\n"
+msgid "Connection failure: %s"
+msgstr "Neuspešno povezivanje: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Došao do kraja datoteke.\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Dobih EOF."
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "read() failed: %s\n"
-msgstr "Neuspela funkcija read(): %s\n"
+msgid "write() failed: %s"
+msgstr "Neuspela funkcija write(): %s"
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
-msgstr "Neuspela funkcija write(): %s\n"
-
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Dobio signal, izlazim.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Dobih signal, izlazim."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Nemogu dobiti vrednost kašnjenja: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Ne mogu dobiti vrednost kašnjenja: %s"
-#: ../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:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "Vreme: %0.3f s; Kašnjenje: %0.0f μs. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "Neuspela funkcija pa_stream_update_timing_info(): %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "Neuspela funkcija pa_stream_update_timing_info(): %s"
-# Šta da radimo sa downmix i upmix. Preslikaj naviše i preslikaj naniže? -- Igor
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1504,7 +1386,7 @@ msgid ""
" --file-format=FFORMAT Record/play formatted PCM data.\n"
" --list-file-formats List available file formats.\n"
msgstr ""
-"%s[opcije]\n"
+"%s [opcije]\n"
"\n"
" -h, --help Prikaži ovu pomoć\n"
" --version Prikaži verziju\n"
@@ -1514,41 +1396,52 @@ msgstr ""
"\n"
" -v, --verbose Omogući opširan opis radnje\n"
"\n"
-" -s, --server=SERVER Naziv servera sa kojim će se "
-"povezati\n"
-" -d, --device=UREÄAJ Naziv slivnika/izvora na koji će se "
+" -s, --server=SERVER Ime servera na koji se treba "
"povezati\n"
+" -d, --device=UREÄAJ Naziv slivnika/izvora na koji se "
+"treba povezati\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 jaÄinu zvuka izmeÄ‘u "
-"0...65536 (linearna skala)\n"
-" --rate=UÄŒESTANOST UÄestanost diskretizacije u hercima "
+" --volume=JAÄŒINA Navedi poÄetnu (linearnu) jaÄinu "
+"zvuka u opsegu 0...65536\n"
+" --rate=UÄŒESTANOST UÄestanost diskretizacije u Hz "
"(podrazumevana 44100)\n"
-" --format=FORMATUZORKA Format uzorka, jedno od s16le, s16be, "
+" --format=FORMATUZORKA Vrsta uzorka, jedna od s16le, s16be, "
"u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(podrazumevano s16ne)\n"
-" --channels=BROJKANALA Broj kanala, 1 za mono, 2 za stereo\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (podrazumevano "
+"s16ne)\n"
+" --channels=KANALI Broj kanala, 1 za mono, 2 za stereo\n"
" (podrazumevano 2)\n"
" --channel-map=MAPAKANALA Mapu kanala koju treba koristiti "
"umesto podrazumevane\n"
-" --fix-format Preuzmi format uzorka iz slivnika\n"
-" na koji je tok prikljuÄen.\n"
+" --fix-format Preuzmi format uzorka iz slivnika na "
+"koji se tok\n"
+" prikljuÄuje.\n"
" --fix-rate Preuzmi uÄestanost diskretizacije iz "
-"odliva \n"
-" na koji je tok prikljuÄen.\n"
+"odliva na koji\n"
+" se tok prikljuÄuje.\n"
" --fix-channels Preuzmi broj i mapu kanala iz "
-"slivnika na\n"
-" koji je tok prikljuÄen.\n"
-" --no-remix Bez sažimanja ili raširivanja broja "
+"slivnika na koji se\n"
+" tok prikljuÄuje.\n"
+" --no-remix Bez stapanja ili razdvajanja "
"kanala.\n"
-" --no-remap NaznaÄi kanale po indeksu umesto po "
+" --no-remap Mapiraj kanale po indeksu umesto po "
"nazivu.\n"
" --latency=BAJTOVA Traži navedeno kašnjenje u "
"bajtovima.\n"
" --process-time=BAJTOVA Traži navedeno vreme procesa po "
"zahtevu u bajtovima.\n"
+" --property=SVOJSTVO=VREDNOST Postavi navedeno svojstvo na "
+"navedenu vrednost.\n"
+" --raw Snimaj/reprodukuj sirove PCM "
+"podatke.\n"
+" --file-format=FORMAT Snimaj/reprodukuj formatirane PCM "
+"podatke.\n"
+" --list-file-formats Ispiši sve dostupne formate "
+"podataka.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1561,136 +1454,129 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Neispravno ime klijenta „%s“"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "Neispravan naÄin diskretizacije „%s“."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Neispravno ime toka „%s“"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Neispravna mapa kanala „%s“\n"
+msgid "Invalid channel map '%s'"
+msgstr "Neispravna mapa kanala „%s“"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Neispravan parametar kašnjenja „%s“\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Neispravan parametar kašnjenja „%s“"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Neispravan parametar za vreme procesa „%s“\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Neispravan parametar za vreme procesa „%s“"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Neispravan naÄin diskretizacije „%s“."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Neispravno svojstvo „%s“"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Nepoznat %s format datoteke."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Neispravni parametri uzorka\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Neispravan parametar uzorka"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Previše parametara.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Previše argumenata."
-#: ../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:929
+msgid "Failed to generate sample specification for file."
+msgstr "Nije uspelo pravljenje parametara uzorka za datoteku."
-#: ../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:949
+msgid "Failed to open audio file."
+msgstr "Nije uspelo otvaranje zvuÄne datoteke."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
msgstr ""
+"Upozorenje: navedeni parametri uzorka će biti prebrisani parametrima iz "
+"datoteke."
-#: ../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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Neuspešno utvrđivanje parametara uzorka iz datoteke."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "Upozorenje: Neuspešno utvrđivanje mape kanala iz datoteke."
-#: ../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:978
+msgid "Channel map doesn't match sample specification"
+msgstr "Mapa kanala se ne poklapa sa parametrima uzorka"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "Upozorenje: Neuspešno zapisivanje mape kanala u datoteku."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, 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"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "Otvaram tok %s sa parametrima uzorka „%s“ i mapom kanala „%s“."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "snima"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "playback"
msgstr "pušta"
-#: ../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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "Neuspela funkcija pa_mainloop_new()."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "Neuspela funkcija io_new() \n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "Neuspela funkcija io_new()."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "Neuspela funkcija pa_context_new()."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "Neuspela funkcija pa_context_connect(): %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "Neuspela funkcija time_new() \n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "Neuspela funkcija pa_context_new()."
-#: ../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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "Neuspela funkcija pa_mainloop_run()."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1717,7 +1603,12 @@ 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:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Neuspešno povezivanje: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Dobih SIGINT, izlazim.\n"
@@ -1742,7 +1633,8 @@ msgstr ""
"\n"
" -h, --help Prikaži ovu pomoć\n"
" --version Prikaži verziju\n"
-" -s, --server=SERVER Ime servera sa kojim se povezuje\n"
+" -s, --server=SERVER Ime servera na koji se treba "
+"povezati\n"
"\n"
#: ../src/utils/pasuspender.c:248
@@ -1756,32 +1648,47 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "Neuspešno dobavljanje statistike: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "Neuspela funkcija pa_mainloop_new().\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "Neuspela funkcija pa_context_new().\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "Neuspela funkcija pa_mainloop_run().\n"
+
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "Neuspešno dobavljanje statistike: %s"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, 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:137
+#: ../src/utils/pactl.c:144
#, 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:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "VeliÄina keÅ¡ memorije uzorka: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "Neuspešno dobijanje podataka o serveru: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "Neuspešno dobavljanje podataka o serveru: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1804,12 +1711,12 @@ msgstr ""
"Podrazumevani izvor: %s\n"
"KolaÄić: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "Neuspešno dobijanje podataka o slivniku: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "Neuspešno dobavljanje podataka o slivniku: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1848,22 +1755,22 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tProfili:\n"
+msgstr "\tPortovi:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tAktivni profil: %s\n"
+msgstr "\tAktivni port: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "Nije uspelo dobavljanje podataka o izvoru: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "Neuspešno dobavljanje podataka o izvoru: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1902,20 +1809,20 @@ msgstr ""
"\tSvojstva:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "nepoznato"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "Neuspešno dobijanje podataka o modulu: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "Neuspešno dobavljanje podataka o modulu: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1927,17 +1834,17 @@ msgid ""
msgstr ""
"Modul #%u\n"
"\tIme: %s\n"
-"\tParametar: %s\n"
+"\tArgument: %s\n"
"\tBrojaÄ korišćenja: %s\n"
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "Neuspešno dobijanje podataka o klijentu: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "Neuspešno dobavljanje podataka o klijentu: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1952,12 +1859,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "Neuspešno dobijanje podataka o kartici: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "Neuspešno dobavljanje podataka o kartici: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1974,22 +1881,22 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfili:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktivni profil: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "Nije uspelo dobijanje podataka o ulazu slivnika: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "Neuspešno dobavljanje podataka o ulazu slivnika: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2026,12 +1933,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "Nije uspelo dobijanje podataka o izlazu izvora: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "Neuspešno dobavljanje podataka o izlazu izvora: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2060,12 +1967,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "Neuspešno dobavljanje podataka o uzorku: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2096,22 +2003,26 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "Neuspeh: %s\n"
+msgid "Failure: %s"
+msgstr "Neuspeh: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "Nije uspelo uÄitavanje uzorka: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "Nije uspelo postavljanje uzorka: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "Prerani kraj datoteke\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "Prerani kraj datoteke"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Dobih SIGINT, izlazim."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2119,15 +2030,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2143,23 +2060,31 @@ msgstr ""
"%s [opcije] upload-sample IMEDATOTEKE [IME]\n"
"%s [opcije] play-sample IME [SLIVNIK]\n"
"%s [opcije] remove-sample IME\n"
-"%s [opcije] move-sink-input IB SLIVNIKA\n"
-"%s [opcije] move-source-output IB IZVORA\n"
-"%s [opcije] load-module IME [PARAM. ...]\n"
-"%s [opcije] unload-module IB\n"
-"%s [opcije] suspend-sink [SLIVNIK] 1|0\n"
-"%s [opcije] suspend-source [IZVOR] 1|0\n"
-"%s [opcije] set-card-profile [KARTICA] [PROFIL] \n"
+"%s [opcije] move-sink-input ULAZSLIVNIKA SLIVNIK\n"
+"%s [opcije] move-source-output IZLAZIZVORA IZVOR\n"
+"%s [opcije] load-module IME [ARG ...]\n"
+"%s [opcije] unload-module MODUL\n"
+"%s [opcije] suspend-sink SLIVNIK 1|0\n"
+"%s [opcije] suspend-source IZVOR 1|0\n"
+"%s [opcije] set-card-profile KARTICA PROFIL\n"
+"%s [opcije] set-sink-port SLIVNIK PORT\n"
+"%s [opcije] set-source-port IZVOR PORT\n"
+"%s [opcije] set-sink-volume SLIVNIK JAÄŒINA\n"
+"%s [opcije] set-source-volume IZVOR JAÄŒINA\n"
+"%s [opcije] set-sink-input-volume ULAZSLIVNIKA JAÄŒINA\n"
+"%s [opcije] set-sink-mute SLIVNIK 1|0\n"
+"%s [opcije] set-source-mute IZVOR 1|0\n"
+"%s [opcije] set-sink-input-mute ULAZSLIVNIKA 1|0\n"
"\n"
" -h, --help Prikaži ovu pomoć\n"
" --version Prikaži verziju\n"
"\n"
" -s, --server=SERVER Ime servera na koji se treba "
-"prikljuÄiti\n"
+"povezati\n"
" -n, --client-name=IME Kako nazvati ovog klijenta na "
"serveru\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2170,77 +2095,109 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../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:979
+msgid "Please specify a sample file to load"
+msgstr "Navedite datoteku uzorka koju treba uÄitati"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "Nije uspelo otvaranje zvuÄne datoteke.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "Nije uspelo otvaranje zvuÄne datoteke."
-#: ../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:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "Upozorenje: Neuspešno utvrđivanje parametara uzorka iz datoteke."
-#: ../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:1014
+msgid "You have to specify a sample name to play"
+msgstr "Morate navesti ime uzorka kojeg želite reprodukovati"
-#: ../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:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Morate navesti ime uzorka kojeg želite ukloniti"
-#: ../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:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Morate navesti indeks ulaza slivnika i slivnik"
-#: ../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:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Morate navesti indeks izlaza izvora i izvor"
-#: ../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:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Morate navesti ime i argumente modula."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "Morate navesti indeks modula\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "Morate navesti indeks modula"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
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"
+"You may not specify more than one sink. You have to specify a boolean value."
+msgstr ""
+"Ne možete navesti viÅ¡e od jednog slivnika. Morate navesti logiÄku vrednost."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
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"
+"value."
+msgstr ""
+"Ne možete navesti viÅ¡e od jednog izvora. Morate navesti logiÄku vrednost."
-#: ../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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Morate navesti ime/indeks kartice i ime profila"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Morate navesti ime/indeks slivnika i ime porta"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Morate navesti ime/indeks izvora i ime porta"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Ni jedna ispravna naredba nije navedena.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Morate navesti ime/indeks slivnika i jaÄinu"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "Neuspela funkcija pa_context_connect(): %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Neispravan parametar jaÄine"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Morate navesti ime/indeks izvora i jaÄinu"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Morate navesti indeks ulaza slivnika i jaÄinu"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Neispravan indeks ulaza slivnika"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "Morate navesti ime/indeks slivnika i logiÄku vrednost za iskljuÄivanje"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "Morate navesti ime/indeks izvora i logiÄku vrednost za iskljuÄivanje"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+"Morate navesti indeks ulaza slivnika i logiÄku vrednost za iskljuÄivanje"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Neispravan parametar indeksa ulaza slivnika"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Nije navedena ispravna naredba."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2323,49 +2280,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:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"Nema pokrenutog PulseAudio demona, ili se ne izvršava kao demon sesije."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Nije uspelo ubijanje PulseAudio demona."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Demon se ne odaziva."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-# Kako prevesti autospawn (mogućnost pravljenja ili pokretanja procesa iz istog) -- Igor
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Nije moguće pristupiti datoteci zakljuÄavanja za samoumnožavanje."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2382,7 +2339,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:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2400,128 +2357,22 @@ msgstr ""
"vratio 0 ili neku drugu vrednost manju od min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "IskljuÄeno"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodukcija visoke taÄnosti (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "Snimanje visoke taÄnosti (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Dvostrano telefoniranje (HSP/HFP)"
#: ../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 3f91c9ae..89a4fc3d 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-06-17 23:42+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+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,7 +15,12 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -24,7 +29,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -33,7 +38,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -42,6 +47,14 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr ""
@@ -55,12 +68,20 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2613
#, fuzzy
msgid "Internal Audio"
msgstr "Internt fel"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr ""
@@ -77,208 +98,92 @@ msgstr "Misslyckades med att öppna ljudfil.\n"
msgid "Failed to add bind-now-loader."
msgstr ""
-#: ../src/daemon/polkit.c:55
-#, c-format
-msgid "Cannot connect to system bus: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:65
-#, c-format
-msgid "Cannot get caller from PID: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:77
-msgid "Cannot set UID on caller object."
-msgstr ""
-
-#: ../src/daemon/polkit.c:82
-msgid "Failed to get CK session."
-msgstr ""
-
-#: ../src/daemon/polkit.c:90
-msgid "Cannot set UID on session object."
-msgstr ""
-
-#: ../src/daemon/polkit.c:95
-msgid "Cannot allocate PolKitAction."
-msgstr ""
-
-#: ../src/daemon/polkit.c:100
-msgid "Cannot set action_id"
-msgstr ""
-
-#: ../src/daemon/polkit.c:105
-msgid "Cannot allocate PolKitContext."
-msgstr ""
-
-#: ../src/daemon/polkit.c:110
-#, c-format
-msgid "Cannot initialize PolKitContext: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:119
-#, c-format
-msgid "Could not determine whether caller is authorized: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:139
-#, c-format
-msgid "Cannot obtain auth: %s"
-msgstr ""
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "PolicyKit svarade med \"%s\""
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Fick signal %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Avslutar."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Misslyckades med att hitta användaren \"%s\"."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Misslyckades med att hitta gruppen \"%s\"."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:201
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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:209 ../src/daemon/main.c:214
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Misslyckades med att skapa \"%s\": %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 ""
-
-#: ../src/daemon/main.c:512
-#, c-format
-msgid "We're in the group '%s', allowing real-time scheduling."
-msgstr ""
-
-#: ../src/daemon/main.c:520
-msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr ""
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr ""
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr ""
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr ""
-
-#: ../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 ""
-
-#: ../src/daemon/main.c:614
-msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr ""
-
-#: ../src/daemon/main.c:617
-#, c-format
-msgid "RLIMIT_RTPRIO failed: %s"
-msgstr "RLIMIT_RTPRIO misslyckades: %s"
-
-#: ../src/daemon/main.c:624
-msgid "Giving up CAP_NICE"
-msgstr ""
-
-#: ../src/daemon/main.c:631
-msgid ""
-"Real-time scheduling enabled in configuration but not allowed by policy."
-msgstr ""
-
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -286,151 +191,156 @@ msgstr ""
"Detta program är inte tänkt att köras som root (såvida inte --system har "
"angivits)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
#, fuzzy
msgid "Root privileges required."
msgstr "Root-behörighet krävs."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start stöds inte för systeminstanser."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "pipe misslyckades: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() misslyckades: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() misslyckades: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Detta är PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:768
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -440,41 +350,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr ""
@@ -663,91 +573,87 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Sökväg: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
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
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
-#: ../src/daemon/caps.c:63
+#: ../src/daemon/caps.c:62
#, fuzzy
-msgid "Dropping root privileges."
+msgid "Cleaning up privileges."
msgstr "Släpper root-behörighet."
-#: ../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 ""
@@ -756,25 +662,7 @@ msgstr ""
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 ""
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -978,34 +866,34 @@ msgstr ""
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
#, fuzzy
msgid "(invalid)"
msgstr "Ogiltig"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr ""
@@ -1109,27 +997,35 @@ msgstr ""
msgid "Client forked"
msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr ""
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr ""
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr ""
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr ""
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr ""
@@ -1142,188 +1038,189 @@ msgstr "XOpenDisplay() misslyckades"
msgid "Failed to parse cookie data"
msgstr ""
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Misslyckades med att öppna konfigurationsfilen \"%s\": %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:107
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
+#: ../src/utils/pacat.c:108
+#, fuzzy, c-format
+msgid "Failed to drain stream: %s"
+msgstr "Misslyckades med att hitta användaren \"%s\"."
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
msgstr ""
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
msgstr ""
-#: ../src/utils/pacat.c:135
-#, c-format
-msgid "pa_stream_drain(): %s\n"
+#: ../src/utils/pacat.c:136
+#, fuzzy, c-format
+msgid "pa_stream_drain(): %s"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:158
-#, c-format
-msgid "pa_stream_write() failed: %s\n"
+#: ../src/utils/pacat.c:159
+#, fuzzy, c-format
+msgid "pa_stream_write() failed: %s"
msgstr "pa_stream_write() misslyckades: %s\n"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
-#, c-format
-msgid "pa_stream_peek() failed: %s\n"
+#: ../src/utils/pacat.c:197
+#, fuzzy, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() misslyckades: %s\n"
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, fuzzy, c-format
+msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek() misslyckades: %s\n"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
msgstr ""
-#: ../src/utils/pacat.c:305
-#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
+#: ../src/utils/pacat.c:310
+#, fuzzy, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
msgstr "pa_stream_get_buffer_attr() misslyckades: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
msgstr ""
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
msgstr ""
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
msgstr ""
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
msgstr ""
-#: ../src/utils/pacat.c:330
-#, c-format
-msgid "Stream error: %s\n"
+#: ../src/utils/pacat.c:335
+#, fuzzy, c-format
+msgid "Stream error: %s"
msgstr "Strömfel: %s\n"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
+msgid "Stream device suspended.%s"
msgstr ""
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
+msgid "Stream device resumed.%s"
msgstr ""
-#: ../src/utils/pacat.c:350
-#, c-format
-msgid "Stream underrun.%s \n"
-msgstr ""
+#: ../src/utils/pacat.c:355
+#, fuzzy, c-format
+msgid "Stream underrun.%s"
+msgstr "Strömfel: %s\n"
-#: ../src/utils/pacat.c:357
-#, c-format
-msgid "Stream overrun.%s \n"
-msgstr ""
+#: ../src/utils/pacat.c:362
+#, fuzzy, c-format
+msgid "Stream overrun.%s"
+msgstr "Strömfel: %s\n"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
+msgid "Stream started.%s"
msgstr ""
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
msgstr ""
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "inte "
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
+msgid "Stream buffer attributes changed.%s"
msgstr ""
-#: ../src/utils/pacat.c:411
-#, c-format
-msgid "Connection established.%s \n"
-msgstr ""
+#: ../src/utils/pacat.c:415
+#, fuzzy, c-format
+msgid "Connection established.%s"
+msgstr "Anslutning etablerad.\n"
-#: ../src/utils/pacat.c:414
-#, c-format
-msgid "pa_stream_new() failed: %s\n"
+#: ../src/utils/pacat.c:418
+#, fuzzy, c-format
+msgid "pa_stream_new() failed: %s"
msgstr "pa_stream_new() misslyckades: %s\n"
-#: ../src/utils/pacat.c:442
-#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
+#: ../src/utils/pacat.c:446
+#, fuzzy, c-format
+msgid "pa_stream_connect_playback() failed: %s"
msgstr "pa_stream_connect_playback() misslyckades: %s\n"
-#: ../src/utils/pacat.c:448
-#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
+#: ../src/utils/pacat.c:452
+#, fuzzy, c-format
+msgid "pa_stream_connect_record() failed: %s"
msgstr "pa_stream_connect_record() misslyckades: %s\n"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
-#, c-format
-msgid "Connection failure: %s\n"
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, fuzzy, c-format
+msgid "Connection failure: %s"
msgstr "Anslutningsfel: %s\n"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
+#: ../src/utils/pacat.c:499
+#, fuzzy
+msgid "Got EOF."
msgstr "Fick filslut.\n"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() misslyckades: %s\n"
-
-#: ../src/utils/pacat.c:532
-#, c-format
-msgid "write() failed: %s\n"
+#: ../src/utils/pacat.c:536
+#, fuzzy, c-format
+msgid "write() failed: %s"
msgstr "write() misslyckades: %s\n"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr ""
+#: ../src/utils/pacat.c:557
+#, fuzzy
+msgid "Got signal, exiting."
+msgstr "Fick signal %s."
-#: ../src/utils/pacat.c:567
-#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr ""
+#: ../src/utils/pacat.c:571
+#, fuzzy, c-format
+msgid "Failed to get latency: %s"
+msgstr "Misslyckades med att få statistik: %s\n"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "Tid: %0.3f sec; Latens: %0.0f ms \r"
-#: ../src/utils/pacat.c:592
-#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
+#: ../src/utils/pacat.c:595
+#, fuzzy, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr "pa_stream_update_timing_info() misslyckades: %s\n"
#: ../src/utils/pacat.c:605
@@ -1394,134 +1291,137 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
-#, c-format
-msgid "Invalid client name '%s'\n"
-msgstr ""
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
+#, fuzzy, c-format
+msgid "Invalid client name '%s'"
+msgstr "Ogiltig server"
-#: ../src/utils/pacat.c:776
-#, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr ""
+#: ../src/utils/pacat.c:775
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Ogiltig server"
-#: ../src/utils/pacat.c:813
-#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr ""
+#: ../src/utils/pacat.c:812
+#, fuzzy, c-format
+msgid "Invalid channel map '%s'"
+msgstr "Ogiltig server"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
+msgid "Invalid latency specification '%s'"
msgstr ""
-#: ../src/utils/pacat.c:849
-#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr ""
+#: ../src/utils/pacat.c:848
+#, fuzzy, c-format
+msgid "Invalid process time specification '%s'"
+msgstr "Ogiltig server"
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
+msgid "Invalid property '%s'"
msgstr "Ogiltig server"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr ""
+#: ../src/utils/pacat.c:896
+#, fuzzy
+msgid "Invalid sample specification"
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pacat.c:907
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:906
+#, fuzzy, c-format
+msgid "open(): %s"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:912
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:911
+#, fuzzy, c-format
+msgid "dup2(): %s"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
+#: ../src/utils/pacat.c:918
+#, fuzzy
+msgid "Too many arguments."
msgstr "För många argument.\n"
-#: ../src/utils/pacat.c:930
+#: ../src/utils/pacat.c:929
#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
+msgid "Failed to generate sample specification for file."
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pacat.c:950
+#: ../src/utils/pacat.c:949
#, fuzzy
-msgid "Failed to open audio file.\n"
+msgid "Failed to open audio file."
msgstr "Misslyckades med att öppna ljudfil.\n"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
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:958 ../src/utils/pactl.c:997
+#, fuzzy
+msgid "Failed to determine sample specification from file."
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
msgstr ""
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr ""
+#: ../src/utils/pacat.c:978
+#, fuzzy
+msgid "Channel map doesn't match sample specification"
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
msgstr ""
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr ""
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr ""
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+#, fuzzy
+msgid "pa_mainloop_new() failed."
msgstr "pa_mainloop_new() misslyckades.\n"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
+#: ../src/utils/pacat.c:1050
+#, fuzzy
+msgid "io_new() failed."
msgstr "io_new() misslyckades.\n"
-#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
-#: ../src/utils/pactl.c:1116
-#, c-format
-msgid "pa_context_new() failed.\n"
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+#, fuzzy
+msgid "pa_context_new() failed."
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:1066
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() misslyckades.\n"
+#: ../src/utils/pacat.c:1071
+#, fuzzy
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
-#, c-format
-msgid "pa_mainloop_run() failed.\n"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+#, fuzzy
+msgid "pa_mainloop_run() failed."
msgstr "pa_mainloop_run() misslyckades.\n"
#: ../src/utils/pasuspender.c:81
@@ -1549,7 +1449,12 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Anslutningsfel: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1582,32 +1487,47 @@ msgstr ""
"Kompilerad med libpulse %s\n"
"Länkad med libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() misslyckades.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() misslyckades.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() misslyckades.\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "Misslyckades med att få statistik: %s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:149
-#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1621,12 +1541,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
+msgstr "Misslyckades med att få klientinformation: %s\n"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1648,22 +1568,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, c-format
msgid "\tPorts:\n"
msgstr ""
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
#, 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:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1685,20 +1605,20 @@ msgid ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1709,12 +1629,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "Misslyckades med att få klientinformation: %s\n"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1724,12 +1644,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, fuzzy, c-format
-msgid "Failed to get card information: %s\n"
+msgid "Failed to get card information: %s"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1740,22 +1660,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "pipe misslyckades: %s"
-#: ../src/utils/pactl.c:489
-#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
+msgstr "Misslyckades med att få klientinformation: %s\n"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1776,12 +1696,12 @@ msgid ""
"\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:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1798,12 +1718,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -1821,21 +1741,26 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "Fel: %s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr ""
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
+msgstr "Misslyckades med att hitta användaren \"%s\"."
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "Fick signal %s."
+
+#: ../src/utils/pactl.c:869
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1844,15 +1769,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -1863,7 +1794,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -1874,74 +1805,110 @@ msgstr ""
"Kompilerad med libpulse %s\n"
"Länkad med libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
msgstr ""
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
msgstr "Misslyckades med att öppna ljudfil.\n"
-#: ../src/utils/pactl.c:951
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr ""
+#: ../src/utils/pactl.c:1004
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
msgstr ""
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
msgstr ""
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
msgstr ""
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
msgstr ""
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
msgstr ""
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
msgstr ""
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr ""
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
+#: ../src/utils/pactl.c:1115
+msgid "You have to specify a card name/index and a profile name"
msgstr ""
-#: ../src/utils/pactl.c:1073
-msgid "You have to specify a sink name/index and a port name\n"
+#: ../src/utils/pactl.c:1126
+msgid "You have to specify a sink name/index and a port name"
msgstr ""
-#: ../src/utils/pactl.c:1084
-msgid "You have to specify a source name/index and a port name\n"
+#: ../src/utils/pactl.c:1137
+msgid "You have to specify a source name/index and a port name"
msgstr ""
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
msgstr ""
-#: ../src/utils/pactl.c:1122
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_new() misslyckades.\n"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+#, fuzzy
+msgid "Invalid volume specification"
+msgstr "Misslyckades med att få modulinformation: %s\n"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr ""
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr ""
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "Misslyckades med att få modulinformation: %s\n"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr ""
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2015,48 +1982,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr "Ännu inte implementerad.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2067,7 +2034,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2079,15 +2046,19 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
@@ -2095,8 +2066,24 @@ msgstr ""
msgid "PulseAudio Sound Server"
msgstr ""
-#~ msgid "Connection established.\n"
-#~ msgstr "Anslutning etablerad.\n"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit svarade med \"%s\""
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read() misslyckades: %s\n"
+
+#, fuzzy
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_new() misslyckades.\n"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO misslyckades: %s"
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new() misslyckades.\n"
#~ msgid ""
#~ "paplay %s\n"
diff --git a/po/ta.po b/po/ta.po
index a10b0168..dc1a861a 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -1,14 +1,14 @@
-# translation of pulseaudio.master-tx.pulseaudio.po to Tamil
+# translation of pulseaudio.master-tx.ta.po to Tamil
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# I. Felix <ifelix@redhat.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Project-Id-Version: pulseaudio.master-tx.ta\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-12 05:02+0530\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 15:57+0530\n"
"Last-Translator: I. Felix <ifelix@redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -33,8 +33,16 @@ msgstr ""
"\n"
"\n"
"\n"
+"\n"
+"\n"
+"\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -47,7 +55,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:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -60,7 +68,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:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -73,9 +81,17 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr "ஒர௠பூஜà¯à®œà®¿à®¯à®®à¯ இரà¯à®¨à¯à®¤à®¾à®²à¯à®®à¯ கà¯à®±à¯ˆà®¨à¯à®¤à®¤à¯ ஒனà¯à®±à¯ˆ மடà¯à®Ÿà¯à®®à¯ வைதà¯à®¤à®¿à®°à¯à®•à¯à®•à®µà¯à®®à¯"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "டமà¯à®®à®¿ வெளிபà¯à®ªà®¾à®Ÿà¯"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "மெயà¯à®¨à®¿à®•à®°à¯ LADSPA சினà¯à®•à¯"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -85,12 +101,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"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>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "கடிகார பூஜà¯à®œà®¿à®¯ சிஙà¯"
+
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "பூஜà¯à®œà®¿à®¯ வெளிபà¯à®ªà®¾à®Ÿà¯"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "உடà¯à®ªà¯à®± ஆடியோ"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "மாதிரி"
@@ -106,373 +135,247 @@ msgstr "பà¯à®¤à®¿à®¯ dl à®à®±à¯à®±à¯à®ªà®µà®°à¯ˆ ஒதà¯à®•à¯à®•à®¿à®°à
msgid "Failed to add bind-now-loader."
msgstr "இபà¯à®ªà¯‹à®¤à¯ பிணைகà¯à®•à¯à®®à¯ à®à®±à¯à®ªà®¿à®¯à¯ˆ சேரà¯à®ªà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../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 "செயலை அமைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ (_i)"
-
-#: ../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 "auth஠பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-
-#: ../src/daemon/polkit.c:148
-#, c-format
-msgid "PolicyKit responded with '%s'"
-msgstr "'%s'உடன௠பாலிஸிகிட௠ஒதà¯à®¤à¯à®ªà¯‹à®•à®¿à®±à®¤à¯"
-
-#: ../src/daemon/main.c:142
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%sகà¯à®•à¯ சிகà¯à®©à®²à¯ கிடைதà¯à®¤à¯à®µà®¿à®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "வெளியேறà¯à®¤à®²à¯."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' பயனரை கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' கà¯à®´à¯à®µà¯ˆ கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID ன௠பயனர௠'%s' மறà¯à®±à¯à®®à¯ '%s' கà¯à®´à¯à®µà¯à®Ÿà®©à¯ ஒதà¯à®¤à¯ போகவிலà¯à®²à¯ˆ."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s'஠உரà¯à®µà®¾à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "கà¯à®´à¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GIDகà¯à®•à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UIDகà¯à®•à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "ரூட௠மà¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• விடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "இநà¯à®¤ தளதà¯à®¤à®¿à®²à¯ கணினியின௠திறநà¯à®¤ à®®à¯à®±à¯ˆà®®à¯ˆ தà¯à®£à¯ˆà®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 acquire-real-time à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ˆ கொடà¯à®•à¯à®•à®¿à®±à®¤à¯."
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit acquire-real-time à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ˆ நிராகரிகà¯à®•à®¿à®±à®¤à¯."
-
-#: ../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 ""
-"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: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஠மேலே கொடà¯à®•à¯à®•à®¿à®±à®¤à¯ (_N\n"
-")"
-
-#: ../src/daemon/main.c:631
-msgid ""
-"Real-time scheduling enabled in configuration but not allowed by policy."
-msgstr ""
-"நிகழà¯à®¨à¯‡à®° திடà¯à®Ÿà®®à®¿à®Ÿà¯à®¤à®²à¯ கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà®¿à®²à¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ ஆனால௠கொளà¯à®•à¯ˆà®¯à®¾à®²à¯ அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®µà®¤à®¿à®²à¯à®²à¯ˆ"
-
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "டோமோன௠இயஙà¯à®•à®µà®¿à®²à¯à®²à¯ˆ"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %uவாக டோமோன௠இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "டோமோனà¯à®•à¯à®•à¯ à®®à¯à®Ÿà®¿à®µà¯ கடà¯à®Ÿà¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "இநà¯à®¤ நிரல௠ரூடà¯à®Ÿà®¾à®• இயஙà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ (--system கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®¾à®¤ வரை)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "ரூட௠மà¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ தேவைபà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start கணினி நிகழà¯à®µà®¿à®²à¯ தà¯à®£à¯ˆà®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, ஆனால௠--disallow-exit அமைகà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, ஆனால௠--disallow-module-loading அமைகà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, SHM à®®à¯à®±à¯ˆà®®à¯ˆ செயலà¯à®¨à¯€à®•à¯à®•à¯à®¤à®²à¯ கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "கணினி à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯, வெறà¯à®®à¯ˆ நேரதà¯à®¤à¯ˆ செயலà¯à®¨à¯€à®•à¯à®• கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio஠பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "பைப௠தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "வாசிபà¯à®ªà®¤à®¿à®²à¯() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "டோமோனை தà¯à®µà®•à¯à®•à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "டோமோனை வெறà¯à®±à®¿à®•à®°à®®à®¾à®• தà¯à®µà®•à¯à®•à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "இத௠தான௠பளà¯à®¸à¯ ஆடியோ %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "தொகà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ பà¯à®°à®µà®²à®©à¯: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "தொகà¯à®ªà¯à®ªà¯ CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "பà¯à®°à®µà®²à®©à®¾à®• இயஙà¯à®•à¯à®•à®¿à®±à®¤: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "CPUs %uவில௠காணபà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯ ."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "பகà¯à®• அளவà¯à®•à®³à¯ %lu பைடà¯à®¸à¯"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Compiled with Valgrind support: yes"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Compiled with Valgrind support: no"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à®®à¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Optimized build: yes"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "சà¯à®°à¯à®•à¯à®•à®®à®¾à®© உரà¯à®µà®¾à®•à¯à®•à®®à¯: இலà¯à®²à¯ˆ"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
-msgstr ""
+msgstr "NDEBUG வரையறà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, அனைதà¯à®¤à¯à®®à¯ உறà¯à®¤à®¿à®¯à®¾à®• செயலà¯à®¨à¯€à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
-msgstr ""
+msgstr "FASTPATH வரையறà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, விரைவ௠பாதை மடà¯à®Ÿà¯à®®à¯ உறà¯à®¤à®¿à®¯à®¾à®• செயலà¯à®¨à¯€à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
-msgstr ""
+msgstr "அனைதà¯à®¤à¯ உறà¯à®¤à®¿à®¯à®¾à®• செயலà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "கணினி கà¯à®±à®¿à®¯à¯€à®Ÿà¯ˆ பெறà¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "கணினி கà¯à®±à®¿à®¯à¯€à®Ÿà¯ %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "கணினி கà¯à®±à®¿à®¯à¯€à®Ÿà¯ %s."
+msgstr "அமரà¯à®µà¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯ %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "ஓடà¯à®®à¯à®¨à¯‡à®°à®®à¯ %s அடைவை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "%s நிலை அடைவினை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "தொகà¯à®¤à®¿ %s அடைவை பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "கணினியின௠மà¯à®±à¯ˆà®®à¯ˆà®¯à®¿à®²à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -481,16 +384,22 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"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."
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "உயரà¯à®¨à¯à®¤ திரைதà¯à®¤à®¿à®±à®©à¯ நேரமà¯à®•à®¾à®Ÿà¯à®Ÿà®¿ கிடைகà¯à®•à®¿à®³à®¤à¯! Bon appetit!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -498,27 +407,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "டோமோனை ஆரமà¯à®ªà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "டீமான௠தà¯à®µà®•à¯à®•à®®à¯ எநà¯à®¤ தொகà¯à®¤à®¿à®•à®³à¯à®®à¯ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà®¾à®®à®²à¯, வேலையை நிராகரிகà¯à®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "டோமோன௠தà¯à®µà®•à¯à®•à¯à®µà®¤à¯ à®®à¯à®Ÿà®¿à®µà®Ÿà¯ˆà®¨à¯à®¤à®¤à¯."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "டோமோன௠பணிநிறà¯à®¤à¯à®¤à®®à¯ à®®à¯à®©à¯ˆà®•à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "டோமோன௠நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®¤à¯."
@@ -768,79 +677,79 @@ msgstr "à®’à®°à¯à®®à¯à®±à¯ˆ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "DEPRECATION WARNING: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "பாதை: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] தவறான பதிவ௠இலகà¯à®•à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] தவறான பதிவ௠இலகà¯à®•à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ˆ '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] தவறான rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit இநà¯à®¤ தளதà¯à®¤à®¿à®²à¯ தà¯à®£à¯ˆà®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] தவறான மாதிரி à®®à¯à®±à¯ˆ '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] தவறான மாதிரி விலை '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] தவறான மாதிரி சேனலà¯à®•à®³à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] தவறான சேனல௠படம௠'%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] பகà¯à®ªà¯à®ªà¯ '%s'கà¯à®•à¯ தவறான எணà¯"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] தவறான பகà¯à®ªà¯à®ªà¯ அளவ௠'%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] தவறான நலà¯à®² நிலை '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "கடà¯à®Ÿà®®à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¿à®©à¯ˆ திறபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -848,18 +757,14 @@ msgstr ""
"கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ சேனல௠மேப௠வேறà¯à®ªà®Ÿà¯à®Ÿ சேனலà¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆà®¯à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ "
"à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ சேனலà¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆà®¯à¯ˆ விட கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, 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/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•à®³à¯ˆ தà¯à®Ÿà¯ˆà®•à¯à®•à®¿à®±à®¤à¯."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -869,27 +774,7 @@ msgstr "பளà¯à®¸à¯ ஆடியோ ஒலி கணினி"
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 daemonகà¯à®•à¯"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio daemonகà¯à®•à®¾à®© நிகழà¯à®¨à¯‡à®° திடà¯à®Ÿà®®à®¿à®Ÿà¯à®¤à®²à¯"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "மோனோ"
@@ -1093,33 +978,33 @@ msgstr "மேலே பின௠இடதà¯"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(தவறான)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ஸà¯à®Ÿà®¿à®°à®¿à®¯à¯‹"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1223,27 +1108,35 @@ msgstr "விடà¯à®ªà®Ÿà¯à®Ÿ செயலà¯à®ªà®¾à®Ÿà¯"
msgid "Client forked"
msgstr "கிளையன௠நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1256,192 +1149,191 @@ msgstr "XOpenகாடà¯à®šà®¿() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯"
msgid "Failed to parse cookie data"
msgstr "கà¯à®•à¯à®•à¯€ தரவை மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "'%s'கடà¯à®Ÿà®®à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà®¿à®©à¯ˆ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "கà¯à®•à¯à®•à®¿ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. இணைபà¯à®ªà®¿à®²à¯à®²à®¾à®®à®²à¯ à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "தெரியாத தொடரிசà¯à®šà®¿à®¯à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ '%s'கà¯à®•à¯ செயà¯à®¤à®¿à®•à®³à¯ பெறபà¯à®ªà®Ÿà¯à®Ÿà®©"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ˆ டà¯à®°à¯ˆà®©à¯ செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ˆ இழகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
+
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "பினà¯à®©à®£à®¿ ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ இழகà¯à®•à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "டà¯à®°à¯ˆà®©à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ ஸà¯à®Ÿà¯€à®°à®¿à®®à¯.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "சேவையகதà¯à®¤à®¿à®±à¯à®•à¯ இணைபà¯à®ªà¯ இழகà¯à®•à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "டà¯à®°à¯ˆà®©à¯ செயà¯à®¯à¯à®®à¯ இணைபà¯à®ªà¯ சேவையகதà¯à®¤à®¿à®±à¯à®•à¯.\n"
+#: ../src/utils/pacat.c:136
+#, c-format
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.\n"
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯."
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Buffer metrics: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ கà¯à®±à®¿à®ªà¯à®ªà¯ '%s', சேனல௠மேப௠'%s'஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ கà¯à®±à®¿à®ªà¯à®ªà¯ '%s', சேனல௠வரைபடதà¯à®¤à¯ˆ '%s'஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "%s சாதனதà¯à®¤à¯à®Ÿà®©à¯ இணைகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (%u, %ssuspended).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "%s சாதனதà¯à®¤à¯à®Ÿà®©à¯ இணைகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (%u, %ssuspended)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ பிழை: %s\n"
+msgid "Stream error: %s"
+msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ பிழை: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ சாதனம௠இடைநீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ சாதனம௠இடைநீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ சாதனம௠தொடரà¯à®•à®¿à®±à®¤à¯.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ சாதனம௠தொடரà¯à®•à®¿à®±à®¤à¯.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯.%s \n"
+msgid "Stream underrun.%s"
+msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ அதிகளவ௠இயஙà¯à®•à®¿à®¯à®¤à¯.%s \n"
+msgid "Stream overrun.%s"
+msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ அதிகளவ௠இயஙà¯à®•à®¿à®¯à®¤à¯.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ %s தà¯à®µà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ \n"
+msgid "Stream started.%s"
+msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ %s தà¯à®µà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ %s இயகà¯à®•à®¿à®•à¯à®•à¯ நகரà¯à®¨à¯à®¤à®¤à¯ (%u, %ssuspended).%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "ஸà¯à®Ÿà®¿à®°à¯€à®®à¯ %s சாதனதà¯à®¤à®¿à®±à¯à®•à¯ நகரà¯à®¨à¯à®¤à®¤à¯ (%u, %ssuspended).%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "இலà¯à®²à¯ˆ"
-#: ../src/utils/pacat.c:378
-#, fuzzy, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ இயஙà¯à®•à¯à®•à®¿à®±à®¤à¯.%s \n"
-
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Connection established.%s \n"
-msgstr "இணைபà¯à®ªà¯ தà¯à®µà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "ஸà¯à®Ÿà¯€à®°à®¿à®®à¯ ஃபபà¯à®ªà®°à¯ பணà¯à®ªà¯à®•à®³à¯ˆ மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "Connection established.%s"
+msgstr "இணைபà¯à®ªà¯ தà¯à®µà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.%s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "இணைபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s\n"
-
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF கிடைகà¯à®•à®ªà¯ பெறà¯à®±à®¤à¯\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "read() failed: %s\n"
-msgstr "வாசிபà¯à®ªà®¤à®¿à®²à¯ () தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "Connection failure: %s"
+msgstr "இணைபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s"
+
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF கிடைகà¯à®•à®ªà¯ பெறà¯à®±à®¤à¯"
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "எழà¯à®¤à¯à®µà®¤à®¿à®²à¯ () தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
+msgid "write() failed: %s"
+msgstr "எழà¯à®¤à¯à®µà®¤à®¿à®²à¯ () தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "சிகà¯à®©à®²à¯ கிடைதà¯à®¤à®¤à¯, வெளியேறà¯à®•à®¿à®±à®¤à¯.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "சிகà¯à®©à®²à¯ கிடைதà¯à®¤à®¤à¯, வெளியேறà¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "லடனà¯à®šà®¿à®¯à¯ˆ பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "லடனà¯à®šà®¿à®¯à¯ˆ பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "Time: %0.3f sec; Latency: %0.0f usec."
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() தோலà¯à®µà®¿: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() தோலà¯à®µà®¿: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1523,8 +1415,10 @@ msgstr ""
"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"
@@ -1547,6 +1441,11 @@ msgstr ""
"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"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1559,136 +1458,129 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with 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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "தவறான கிளையன௠பெயர௠'%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ˆ '%s'."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "தவறான ஸà¯à®Ÿà¯€à®°à¯€à®®à¯ பெயர௠'%s'."
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "தவறான சேனல௠வரைபடம௠'%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "தவறான சேனல௠வரைபடம௠'%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "தவறான லேடனà¯à®šà®¿ கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "தவறான லேடனà¯à®šà®¿ கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "தவறான செயல௠நேர கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "தவறான செயல௠நேர கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ˆ '%s'."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "தவறான தனà¯à®®à¯ˆ '%s'."
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "தெரியாத கோபà¯à®ªà¯ வடிவம௠%s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "தவறான மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "தவறான மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "நிறைய விவாதஙà¯à®•à®³à¯.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "நிறைய விவாதஙà¯à®•à®³à¯."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "மாதிரி தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "மாதிரி தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.: %s"
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "ஒலி கோபà¯à®ªà®¿à®©à¯ˆ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "ஒலி கோபà¯à®ªà®¿à®©à¯ˆ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "கோபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯à®Ÿà¯ˆ வரையறà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: கோபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ சேனல௠வரைபடதà¯à®¤à¯ˆ வரையறà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "சேனல௠மேப௠மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯à®Ÿà¯à®Ÿà®©à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "சேனல௠வரைபடம௠மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯à®Ÿà¯à®Ÿà®©à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: கோபà¯à®ªà¯à®•à¯à®•à¯ சேனல௠வரைபடதà¯à®¤à¯ˆ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "ஒர௠%s ஸà¯à®Ÿà¯€à®°à®®à¯ˆ மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'உடன௠திறகà¯à®•à®¿à®±à®¤à¯.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"ஒர௠%s ஸà¯à®Ÿà¯€à®°à®®à¯ மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯à®Ÿà¯ˆ '%s' மறà¯à®±à¯à®®à¯ சேனல௠வரைபடà¯à®Ÿà®®à¯ '%s' உடன௠திறகà¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "ஒலிபà¯à®ªà®¤à®¿à®µà¯"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() தோலà¯à®µà®¿."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_பà¯à®¤à®¿à®¯() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯.(_n) \n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() தோலà¯à®µà®¿."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() தோலà¯à®µà®¿: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() தோலà¯à®µà®¿.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() தோலà¯à®µà®¿."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1715,7 +1607,12 @@ msgstr "தொடர à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: ஒலி சேவையம௠உளà¯à®³à®®à¯ˆà®µà®¾à®• இலà¯à®²à¯ˆ, இடைநிறà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "இணைபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT பெறபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, வெளியேறà¯à®•à®¿à®±à®¤à¯.\n"
@@ -1754,33 +1651,48 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() தோலà¯à®µà®¿.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() தோலà¯à®µà®¿.\n"
+
+#: ../src/utils/pasuspender.c:298
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "பà¯à®³à¯à®³à®¿à®µà®¿à®µà®°à®¤à¯à®¤à¯ˆ பெற இயலாதà¯: %s\n"
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() தோலà¯à®µà®¿.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "பà¯à®³à¯à®³à®¿à®µà®¿à®µà®°à®¤à¯à®¤à¯ˆ பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "தறà¯à®ªà¯‹à®¤à¯ பயனிலà¯à®³à¯à®³à®¤à¯: %u தொகà¯à®¤à®¿à®•à®³à¯ %s பைடà¯à®•à®³à¯ˆ மொதà¯à®¤à®®à®¾à®• கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"வாழà¯à®•à¯à®•à¯ˆ à®®à¯à®´à¯à®µà®¤à¯à®®à¯ ஒதà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: %u தொகà¯à®¤à®¿à®•à®³à¯ %s பைடà¯à®•à®³à¯ˆ மொதà¯à®¤à®®à®¾à®• கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "மாதிரி இடையக அளவà¯: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "சேவையகதà¯à®¤à®¿à®©à¯ தகவலை பெற இயலவிலà¯à®²à¯ˆ: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "சேவையகதà¯à®¤à®¿à®©à¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1803,12 +1715,12 @@ msgstr ""
"à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ மூலஙà¯à®•à®³à¯: %s\n"
"கூகà¯à®•à®¿: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "சà¯à®°à¯à®•à¯à®•à®®à®¾à®© தகவலை பெற௠மà¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "சà¯à®°à¯à®•à¯à®•à®®à®¾à®© தகவலை பெற௠மà¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1847,22 +1759,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tவிவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯:\n"
+msgstr "\tPorts:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
msgstr "\tசெயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯à®³à¯à®³ விவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "மூலதà¯à®¤à®¿à®©à¯ தகவலை பெற இயலவிலà¯à®²à¯ˆ: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "மூலதà¯à®¤à®¿à®©à¯ தகவலை பெற இயலவிலà¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1901,20 +1813,20 @@ msgstr ""
"\tபணà¯à®ªà¯à®•à®³à¯:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "தொகà¯à®¤à®¿ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "தொகà¯à®¤à®¿ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1931,12 +1843,12 @@ msgstr ""
"\tபணà¯à®ªà¯à®•à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "கிளையனà¯à®Ÿà¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "கிளையனà¯à®Ÿà¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1951,12 +1863,12 @@ msgstr ""
"\tபணà¯à®ªà¯à®•à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "அடà¯à®Ÿà¯ˆ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "அடà¯à®Ÿà¯ˆ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1973,22 +1885,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tவிவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tசெயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯à®³à¯à®³ விவரகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "சிஙà¯à®•à¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "சிஙà¯à®•à¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2025,12 +1937,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "மூல வெளிபà¯à®ªà®¾à®Ÿà¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "மூல வெளிபà¯à®ªà®¾à®Ÿà¯ தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2059,12 +1971,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "மாதிரி தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "மாதிரி தகவலை பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2095,22 +2007,26 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "தோலà¯à®µà®¿: %s\n"
+msgid "Failure: %s"
+msgstr "தோலà¯à®µà®¿: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "மாதிரியை மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "மாதிரியை மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "à®®à¯à®©à¯à®©à®¾à®• கோபà¯à®ªà¯ à®®à¯à®Ÿà®¿à®¤à¯à®¤à®²à¯"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "à®®à¯à®©à¯à®©à®¾à®• கோபà¯à®ªà¯ à®®à¯à®Ÿà®¿à®¤à¯à®¤à®²à¯\n"
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT பெறபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, வெளியேறà¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2118,15 +2034,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2142,13 +2064,21 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2158,7 +2088,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2169,83 +2099,108 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "à®à®±à¯à®±à¯à®µà®¤à®±à¯à®•à¯ ஒர௠மாதிரி கோபà¯à®ªà®¿à®©à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà¯à®®à¯\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "à®à®±à¯à®±à¯à®µà®¤à®±à¯à®•à¯ ஒர௠மாதிரி கோபà¯à®ªà®¿à®©à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà¯à®®à¯"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "ஒலி கோபà¯à®ªà®¿à®©à¯ˆ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "ஒலி கோபà¯à®ªà®¿à®©à¯ˆ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "ஒர௠%s ஸà¯à®Ÿà¯€à®°à®®à¯ˆ மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯ '%s'உடன௠திறகà¯à®•à®¿à®±à®¤à¯.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: கோபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ மாதிரி கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯à®Ÿà¯ˆ வரையறà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "இயகà¯à®•à®¿à®µà®¤à®±à¯à®•à¯ நீஙà¯à®•à®³à¯ ஒர௠மாதிரி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "இயகà¯à®•à®¿à®µà®¤à®±à¯à®•à¯ நீஙà¯à®•à®³à¯ ஒர௠மாதிரி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯ நீஙà¯à®•à®³à¯ ஒர௠மாதிரி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯ நீஙà¯à®•à®³à¯ ஒர௠மாதிரி பெயர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ உளà¯à®³à¯€à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠சிஙà¯à®•à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ உளà¯à®³à¯€à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠சிஙà¯à®•à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "நீஙà¯à®•à®³à¯ ஒர௠மூல வெளிபà¯à®ªà®¾à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠மூலதà¯à®¤à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "நீஙà¯à®•à®³à¯ ஒர௠மூல வெளிபà¯à®ªà®¾à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠மூலதà¯à®¤à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "தொகà¯à®¤à®¿ பெயர௠மறà¯à®±à¯à®®à¯ விவாதஙà¯à®•à®³à¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯. \n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "தொகà¯à®¤à®¿ பெயர௠மறà¯à®±à¯à®®à¯ விவாதஙà¯à®•à®³à¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "தொகà¯à®¤à®¿ அடà¯à®Ÿà®µà®£à¯ˆà®¯à¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "தொகà¯à®¤à®¿ அடà¯à®Ÿà®µà®£à¯ˆà®¯à¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"ஒர௠சிஙà¯à®•à®¿à®±à¯à®•à¯ மேல௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®•à¯ கூடாதà¯. பூலியன௠மதிபà¯à®ªà¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯.\n"
+"ஒர௠சிஙà¯à®•à®¿à®±à¯à®•à¯ மேல௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®•à¯ கூடாதà¯. பூலியன௠மதிபà¯à®ªà¯ˆ நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "ஒர௠அடà¯à®Ÿà¯ˆ பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠விவரசà¯à®šà¯€à®Ÿà¯à®Ÿà¯ பெயர௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠தà¯à®±à¯ˆà®ªà¯ பெயரை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "ஒர௠மூலப௠பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠தà¯à®±à¯ˆà®ªà¯ பெயர௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "சரியான கடà¯à®Ÿà®³à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ \n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠தà¯à®±à¯ˆà®ªà¯ பெயரை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() தோலà¯à®µà®¿: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "தவறான தொகà¯à®¤à®¿ கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "ஒர௠மூலப௠பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠தà¯à®±à¯ˆà®ªà¯ பெயர௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ உளà¯à®³à¯€à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠சிஙà¯à®•à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "தவறான சà¯à®°à¯à®•à¯à®• உளà¯à®³à¯€à®Ÿà¯ அடà¯à®Ÿà®µà®£à¯ˆ"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠தà¯à®±à¯ˆà®ªà¯ பெயரை கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "ஒர௠மூலப௠பெயரà¯/ à®®à¯à®©à¯à®ªà®•à¯à®•à®®à¯ மறà¯à®±à¯à®®à¯ ஒர௠தà¯à®±à¯ˆà®ªà¯ பெயர௠நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "நீஙà¯à®•à®³à¯ ஒர௠சிஙà¯à®•à¯ உளà¯à®³à¯€à®Ÿà¯ சà¯à®Ÿà¯à®Ÿà®¿ மறà¯à®±à¯à®®à¯ ஒர௠சிஙà¯à®•à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "தவறான சà¯à®°à¯à®•à¯à®• உளà¯à®³à¯€à®Ÿà¯ அடà¯à®Ÿà®µà®£à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà¯€à®Ÿà¯"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "சரியான கடà¯à®Ÿà®³à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2326,48 +2281,48 @@ msgstr "கà¯à®•à¯à®•à¯€ தரவை à®à®±à¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯
msgid "Not yet implemented.\n"
msgstr "இனà¯à®©à¯à®®à¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "PulseAudio டீமான௠இயஙà¯à®•à®µà®¿à®²à¯à®²à¯ˆ, அலà¯à®²à®¤à¯ அமரà¯à®µà¯ டீமானாக இயஙà¯à®•à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio daemon஠நிறà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "டோமோன௠பதிலளிகà¯à®• மறà¯à®•à¯à®•à®¿à®±à®¤à¯."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "autospawn பூடà¯à®Ÿà¯ˆ அணà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2377,8 +2332,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"
+"இநà¯à®¤ ஒர௠பிழையானத௠ALSA இயகà¯à®•à®¿ '%s'. இநà¯à®¤ வெளிபà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ˆ ALSA வலà¯à®²à¯à®¨à®°à¯à®•à®³à¯à®•à¯à®•à¯ "
+"அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà®µà¯à®®à¯.\n"
+"POLLOUT அமைவà¯à®Ÿà®©à¯ நாஙà¯à®•à®³à¯ எழà¯à®¨à¯à®¤à®¿à®°à¯à®¨à¯à®¤à¯‹à®®à¯-- எபà¯à®ªà®Ÿà®¿à®¯à®¿à®°à¯à®¨à¯à®¤à¯à®®à¯ அடà¯à®¤à¯à®¤à®Ÿà¯à®¤à¯à®¤à¯ snd_pcm_avail"
+"() r0 அலà¯à®²à®¤à¯ வேறொர௠மதிபà¯à®ªà¯ < min_avail திரà¯à®®à¯à®ªà®¿à®¯à®¤à¯."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2388,123 +2349,30 @@ msgid ""
"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"
+"POLLOUT அமைவà¯à®Ÿà®©à¯ நாஙà¯à®•à®³à¯ எழà¯à®¨à¯à®¤à®¿à®°à¯à®¨à¯à®¤à¯‹à®®à¯-- எபà¯à®ªà®Ÿà®¿à®¯à®¿à®°à¯à®¨à¯à®¤à¯à®®à¯ அடà¯à®¤à¯à®¤à®Ÿà¯à®¤à¯à®¤à¯ snd_pcm_avail"
+"() 0 அலà¯à®²à®¤à¯ வேறொர௠மதிபà¯à®ªà¯ < min_avail திரà¯à®®à¯à®ªà®¿à®¯à®¤à¯."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
-msgstr ""
+msgstr "ஆஃபà¯"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "High Fidelity Playback (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "High Fidelity Capture (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "Telephony Duplex (HSP/HFP)"
#: ../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"
+msgstr "PulseAudio ஒலி சேவையகமà¯"
diff --git a/po/te.po b/po/te.po
index d4f79e06..778c283a 100644
--- a/po/te.po
+++ b/po/te.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.te\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-08 18:21+0530\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-10 16:54+0530\n"
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\n"
"MIME-Version: 1.0\n"
@@ -20,8 +20,15 @@ msgstr ""
"\n"
"\n"
"\n"
+"\n"
+"\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -33,7 +40,7 @@ msgstr ""
"సాదారణంగా యిది ALSA à°¡à±à°°à±ˆà°µà°°à± '%s' నందలి బగౠకావచà±à°šà±à°¨à±. దయచేసి దీనిని ALSA అభివృదà±à°¦à°¿ కారà±à°²à°•à± "
"నివేదించà±à°®à±."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -45,7 +52,7 @@ msgstr ""
"సాదారణంగా యిది ALSA à°¡à±à°°à±ˆà°µà°°à± '%s' నందౠబగౠకావచà±à°šà±à°¨à± . దయచేసి దీనిని ALSA అభివృదà±à°¦à°¿à°•à°¾à°°à±à°²à°• "
"నివేదించà±à°®à±."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -56,9 +63,17 @@ msgstr ""
"snd_pcm_mmap_begin() à°…à°¨à±à°¨à°¦à°¿ పెదà±à°¦ విలà±à°µà°¨à± యిచà±à°šà°¿à°¨à°¦à°¿: %lu bytes (%lu ms).\n"
"సాదారణంగా యిది ALSA à°¡à±à°°à±ˆà°µà°°à± '%s'నందలి బగౠకావచà±à°šà±à°¨à±. దయచేసి దీనిని ALSA అభివృదà±à°¦à°¿à°•à°¾à°°à±à°²à°¨à± నివేదించండి."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr "ఒకవేళ అది null అయినా కూడా యెలà±à°²à°ªà±à°ªà±à°¡à±‚ కనీసం వొక సింకౠలోడైనటà±à°²à± à°µà±à°‚à°šà±à°¤à±à°‚ది"
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr "à°¡à°®à±à°®à±€ à°…à°µà±à°Ÿà±à°ªà±à°Ÿà±"
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "వరà±à°šà±à°¯à±à°µà°²à± LADSPA సింకà±"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -68,12 +83,24 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<సింకౠనామమà±> sink_properties=<సింకౠలకà±à°·à°£à°®à±à°²à±> master=<à°«à°¿à°²à±à°Ÿà°°à±â€Œà°•à± సింకౠ"
+"నామమà±> format=<మాదిరి ఫారà±à°®à°¾à°Ÿà±> rate=<మాదిరి రేటà±> channels=<చానలà±à°¸à± సంఖà±à°¯> "
+"channel_map=<చానలౠమాపà±> plugin=<ladspa à°ªà±à°²à°—ినౠనామమà±> label=<ladspa à°ªà±à°²à°—ినౠలేబà±à°²à±> "
+"control=<ఇనà±à°ªà±à°Ÿà± నియంతà±à°°à°£ విలà±à°µà°²à°¯à±Šà°•à±à°• జాబితా>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr "NULL సింకౠకà±à°²à°¾à°•à±â€Œà°šà±‡à°¯à°¬à°¡à°¿à°‚ది"
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr "Null à°…à°µà±à°Ÿà±à°ªà±à°Ÿà±"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "అంతరà±à°—à°¤ ఆడియో"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "మోడెమà±"
@@ -89,364 +116,246 @@ msgstr "కొతà±à°¤ dl లోడరౠకేటాయించà±à°Ÿà°²à±‹
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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "సంకేతమౠ%s పొందినది."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "వినియోగదారి '%s'నౠకనà±à°—ొనà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "సమూహం '%s' à°•à°¨à±à°—ొనà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "వినియోగదారి '%s' మరియౠసమూహమౠ'%s' యొకà±à°• GID సరితూగలేదà±."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' సృషà±à°Ÿà°¿à°‚à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "సమూహ జాబితా మారà±à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID మారà±à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID మారà±à°šà°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "root à°…à°¨à±à°®à°¤à±à°²à± విజయవంతంగా తిసివేయబడినాయి."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "à°ˆ à°ªà±à°²à°¾à°Ÿà±â€Œà°«à°¾à°‚ నందౠసిసà±à°Ÿà°®à± తరహా రీతి మదà±à°¦à°¤à±€à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) విఫలమైంది: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 మనకౠacquire-high-priority à°…à°¨à±à°®à°¤à°¿à°¨à°¿ యిచà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit à°…à°¨à±à°¨à°¦à°¿ acquire-high-priority à°…à°¨à±à°®à°¤à°¿à°¨à°¿ తిరసà±à°•à°°à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit మనకౠacquire-real-time à°…à°¨à±à°®à°¤à°¿à°¨à°¿ యిచà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit acquire-real-time à°…à°¨à±à°®à°¤à°¿à°¨à°¿ తిరసà±à°•à°°à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-
-#: ../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 root కాలౠచేసింది మరియౠవాసà±à°¤à°µ-సమయ మరియà±/లేదా అదిక-à°ªà±à°°à°¾à°®à±à°–à±à°¯à°¤ à°ªà±à°°à°£à°¾à°³à°¿à°• à°…à°­à±à°¯à°°à±à°§à°¿à°‚బడింది "
-"ఆకృతీకరణనందà±. à°à°®à±ˆà°¨à°ªà±à°ªà±à°Ÿà°¿à°•à°¿, మనకౠఅవసరమైన à°…à°¨à±à°®à°¤à°²à± లోపించినవి:\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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "డెమోనౠనడà±à°šà±à°Ÿ లేదà±"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "డెమోనౠPID %u వలె నడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "డెమోనౠచంపà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à°ˆ à°ªà±à°°à±‹à°—à±à°°à°¾à°®à± root లా నడà±à°ªà°µà°²à°¸à°¿à°‚ది కాదౠ(--system తెలిపితే తపà±à°ª)"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Root à°…à°¨à±à°®à°¤à±à°²à± అవసరమà±."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "--start సిసà±à°Ÿà°®à± సంభవాల à°¦à±à°µà°¾à°°à°¾ మదà±à°¦à°¤à±€à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "సిసà±à°Ÿà°®à± మోడౠనందౠనడà±à°ªà±à°¤à±‹à°‚ది, అయితే --disallow-exit అమరà±à°šà°²à±‡à°¦à±!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠనడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿, అయితే --disallow-module-loading అమరà±à°šà°²à±‡à°¦à±!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠనడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿, బలవంతంగా SHM రీతిని అచేతనమౠచేసà±à°¤à±‹à°‚ది!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠనడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿, బలవంతంగా నిషà±à°•à±à°°à°®à°£ వృధా సమయానà±à°¨à°¿ అచేతనమౠచేయà±à°šà±à°¨à±à°¨à°¦à°¿!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "stdio పొందà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "పైరౠవిఫలమైంది: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork() విఫలమైంది: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read() విఫలమైంది: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "డెమోనౠపà±à°°à°¾à°°à°‚à°­à°‚ విఫలమైంది."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "డెమోనౠపà±à°°à°¾à°°à°‚భమౠసఫలమైంది."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "ఇది PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ హోసà±à°Ÿà±: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ CFLAGS: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "హోసà±à°Ÿà±à°¨à± నడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUలనౠకనà±à°—ొనà±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "పేజీ పరిమాణమౠ%lu బైటà±à°²à±"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à±‹ నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది: à°…à°µà±à°¨à±"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à±‹ నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది: లేదà±"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind రీతినందౠనడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "ఆపà±à°Ÿà°¿à°®à±ˆà°œà±à°¡à± à°¬à±à°²à±à°¡à±: à°…à°µà±à°¨à±"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "ఆపà±à°Ÿà°¿à°®à±ˆà°œà±à°¡à± à°¬à±à°²à±à°¡à±: కాదà±"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG నిరà±à°µà°šà°¿à°‚చబడింది, à°…à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± అచేతనమైనవి."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH నిరà±à°µà°šà°¿à°‚చబడింది, ఫాసà±à°Ÿà± పాతౠసà±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± మాతà±à°°à°®à±‡ అచేతనమైనవి."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "à°…à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± చేతనమైనవి."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "మిషనౠID పొందà±à°Ÿà°•à± విఫలమైంది"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "మిషనౠID %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "మిషనౠID %s."
+msgstr "సెషనౠID %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "à°°à°¨à±â€Œà°Ÿà±ˆà°®à± డైరెకà±à°Ÿà°°à±€à°¨à± à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "à°¸à±à°¥à°¿à°¤à°¿ డైరెకà±à°Ÿà°°à±€à°¨à± à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "మాడà±à°¯à±‚à°³à±à°³ డైరెకà±à°Ÿà°°à±€ %s à°µà±à°ªà°¯à±‹à°—à°¿à°¸à±à°¤à±‹à°‚ది."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "సిసà±à°Ÿà°®à± రీతినందౠవà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -455,42 +364,46 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"సరే, అయితే మీరౠPAనౠసిసà±à°Ÿà°®à± రీతినందౠనడà±à°ªà±à°¤à±à°¨à±à°¨à°¾à°°à±. మీరౠఅలా చేయకూడదని దయచేసి గమనించండి.\n"
+"ఒకవేళ మీరౠఅలా చేసà±à°¤à±‡ తరà±à°µà°¾à°¤ మీరౠఅనà±à°•à±Šà°¨à±à°¨à°Ÿà±à°²à± పనిచేయకపోతే అది యిక మీ తపà±à°ªà±‡.\n"
+"సిసà±à°Ÿà°®à± రీతి à°…à°¨à±à°¨à°¦à°¿ సరైనటà±à°µà°‚టిది యెందà±à°•à± కాదో వివరణ కొరకౠదయచేసి యికà±à°•à°¡ చదవండి http://"
+"pulseaudio.org/wiki/WhatIsWrongWithSystemMode"
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() విఫలమైంది."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "తాజా అధిక-తీవà±à°°à°¤ కాలసూచికలౠఅందà±à°¬à°¾à°Ÿà±à°²à±‹ à°µà±à°¨à±à°¨à°¾à°¯à°¿! బానౠఎపటైటà±!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "మితà±à°°à°®à°¾, నీ కెరà±à°¨à°²à± చెడిపోయింది! అధిక-తీవà±à°°à°¤ కాలసూచకిలనౠచేతనమౠచేయమని సూచించడమైనది!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new() విఫలమైంది."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "డెమోనౠసిదà±à°¦à°®à±à°šà±‡à°¯à±à°Ÿà°•à± విఫలమైంది."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "à°à°µà°¿à°§à°®à±ˆà°¨ మాడà±à°¯à±‚à°³à±à°³à± లోడవకà±à°‚à°¡à°¾ డెమోనౠపà±à°°à°¾à°°à°‚à°­à°®à±, పనిచేయà±à°Ÿà°•à± తిరసà±à°•à°°à°¿à°‚చబడింది."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "డెమోనౠపà±à°°à°¾à°°à°‚భమౠపూరà±à°¤à±ˆà°¨à°¦à°¿."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "డెమోనౠమూసివేత సిదà±à°¦à°®à±à°šà±‡à°¯à°¬à°¡à°¿à°‚ది."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "డెమోనౠఅంతమà±à°šà±‡à°¯à°¬à°¡à°¿à°‚ది."
@@ -740,79 +653,79 @@ msgstr "ఒకసారి లోడà±à°šà±‡à°¯à±à°®à±: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "తీసివేత హెచà±à°šà°°à°¿à°•: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "పాతà±: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ లాగౠలకà±à°·à±à°¯à°®à± '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ లాగౠసà±à°¥à°¾à°¯à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ à°ªà±à°¨à°ƒà°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à°…à°¨à±à°¨à°¦à°¿ à°ˆ à°ªà±à°²à°¾à°Ÿà±â€Œà°«à°¾à°‚ నందౠమదà±à°¦à°¤à°¿à°µà±à°µà°¬à°¡à°¦à±."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ మాదిరి ఫారà±à°®à°¾à°Ÿà± '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ మాదిరి రేటౠ'%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ మాదిరి చానళà±à°³à± '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ ఛానలౠమాపౠ'%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ à°®à±à°•à±à°•à°²à± సంఖà±à°¯ '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ à°®à±à°•à±à°• పరిమాణమౠ'%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] చెలà±à°²à°¨à°¿ సాదా à°¸à±à°¥à°¾à°¯à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ఆకృతీకరణ దసà±à°¤à±à°°à°®à±à°¨à± తెరà±à°šà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -820,18 +733,14 @@ msgstr ""
"తెలà±à°ªà°¬à°¡à°¿à°¨ à°…à°ªà±à°°à°®à±‡à°¯ à°ªà±à°°à°¾à°¸à°¾à°°à°®à°¾à°°à±à°—à°‚ మాపౠతెలà±à°ªà°¬à°¡à°¿à°¨ à°…à°ªà±à°°à°®à±‡à°¯ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°—à°®à±à°² à°•à°¨à±à°¨à°¾ విభినà±à°¨ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°—à°®à±à°² "
"సంఖà±à°¯à°¨à± కలిగివà±à°‚ది."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ఆకృతీకరణ దసà±à°¤à±à°°à°®à±à°¨à±à°‚à°¡à°¿ à°šà°¦à±à°µà±à°®à±: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "root à°…à°¨à±à°®à°¤à±à°²à°¨à± తీసివేయà±à°šà±à°¨à±à°¨à°¦à°¿."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "సామరà±à°§à±à°¯à°¾à°²à°¨à± CAP_SYS_NICE కౠసమరà±à°¦à°µà°‚తంగా పరిమితం చేయబడినవి."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "à°…à°¨à±à°®à°¤à±à°²à°¨à± à°¶à±à°­à±à°°à°ªà°°à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -841,25 +750,7 @@ msgstr "PulseAudio శబà±à°¦à°ªà± సిసà±à°Ÿà°®à±"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio శబà±à°¦à°ªà± సిసà±à°Ÿà°®à±â€Œà°¨à± à°ªà±à°°à°¾à°°à°‚à°­à°¿à°‚à°šà±à°®à±"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "అధిక-à°ªà±à°°à°¾à°®à±à°–à±à°¯à°¤à°¾ à°ªà±à°°à°£à°¾à°³à°¿à°• (à°‹à°£ à°¯à±à°¨à°¿à°•à±à°¸à± సాదా à°¸à±à°¥à°¾à°¯à°¿) PulseAudio డెమోనà±â€Œà°•à±"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio డెమోనà±â€Œ కొరకౠవాసà±à°¤à°µ-సమయ à°ªà±à°°à°£à°¾à°³à°¿à°•"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "మోనో"
@@ -1063,33 +954,33 @@ msgstr "పైన వెనà±à°• ఎడమవైపà±"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(చెలà±à°²à°¨à°¿)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "à°¸à±à°Ÿà±€à°°à°¿à°¯à±‹"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "సరౌండౠ4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "సరౌండౠ4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "సరౌండౠ5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "సరౌండౠ5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "సరౌండౠ7.1"
@@ -1193,27 +1084,35 @@ msgstr "తపà±à°ªà°¿à°ªà±‹à°¯à°¿à°¨ యింపà±à°²à°¿à°®à±†à°‚టేషà°
msgid "Client forked"
msgstr "à°•à°•à±à°·à°¿à°¦à°¾à°°à°¿ పోరà±à°•à± చేసిన"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1226,192 +1125,191 @@ msgstr "XOpenDisplay() విఫలమైంది"
msgid "Failed to parse cookie data"
msgstr "à°•à±à°•à±€ డాటా పారà±à°¶à± చేయà±à°Ÿà°•à± విఫలమైంది"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ఆకృతీకరణ దసà±à°¤à±à°°à°®à± '%s' తెరà±à°µà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "à° à°•à±à°•à±€ లోడవలేదà±. లేకà±à°‚à°¡à°¾ à°…à°¨à±à°¸à°‚ధానమగà±à°Ÿà°•à± à°ªà±à°°à°¯à°¤à±à°¨à°¿à°¸à±à°¤à±‹à°‚ది."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "తెలియని పొడిగింపౠకొరకౠసందేశమౠసà±à°µà±€à°•à°°à°¿à°‚చింది '%s'"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± à°Žà°‚à°¡à°—à°Ÿà±à°Ÿà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à±â€Œà°¨à± à°¡à±à°°à±ˆà°¯à°¿à°¨à± చేయà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "à°ªà±à°²à±‡à°¬à±à°¯à°¾à°•à± à°¸à±à°Ÿà±à°°à±€à°®à± à°Žà°‚à°¡à°—à°Ÿà±à°Ÿà°¿à°¨à°¦à°¿.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "à°ªà±à°²à±‡à°¬à±à°¯à°¾à°•à± à°¸à±à°Ÿà±à°°à±€à°®à± à°¡à±à°°à±†à°¯à°¿à°¨à± అయినది."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "సేవికకౠఅనà±à°¸à°‚ధానమà±à°¨à± నశింపచేసà±à°¤à±‹à°‚ది.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "సేవికకౠఅనà±à°¸à°‚ధానమà±à°¨à± à°Žà°‚à°¡à°—à°Ÿà±à°Ÿà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "pa_stream_write() విఫలమైంది: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "pa_stream_write() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "pa_stream_peek() విఫలమైంది: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_begin_write() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± సమరà±à°§à°µà°‚తంగా సృషà±à°Ÿà°¿à°‚చబడింది.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "pa_stream_peek() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± సమరà±à°§à°µà°‚తంగా సృషà±à°Ÿà°¿à°‚చబడింది."
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "pa_stream_get_buffer_attr() విఫలమైంది: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "pa_stream_get_buffer_attr() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, 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"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "బఫరౠపà±à°°à°®à°¾à°£à°¾à°²à±: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "బఫరౠపà±à°°à°®à°¾à°£à°¾à°²à±: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "సాదారణ విశదీకరణ(à°¸à±à°ªà±†à°•à±) '%s' à°µà±à°ªà°¯à±‹à°—à°¿à°¸à±à°¤à±‹à°‚ది, à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°—à°‚ మాపౠ'%s'.\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "సాదారణ విశదీకరణ(à°¸à±à°ªà±†à°•à±) '%s' à°µà±à°ªà°¯à±‹à°—à°¿à°¸à±à°¤à±‹à°‚ది, à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°—à°‚ మాపౠ'%s'."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "పరికరమౠ%s (%u, %ssuspended) à°•à± à°…à°¨à±à°¸à°‚ధానించబడింది.\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "పరికరమౠ%s (%u, %ssuspended) à°•à± à°…à°¨à±à°¸à°‚ధానించబడింది."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± దోషమà±: %s\n"
+msgid "Stream error: %s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± దోషమà±: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠఅరà±à°¦à°¾à°‚తరమà±à°—à°¾ నిలిపివేయి.%s \n"
+msgid "Stream device suspended.%s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠఅరà±à°¦à°¾à°‚తరమà±à°—à°¾ నిలిపివేయబడింది.%s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠతిరిగికొనసాగించబడింది.%s \n"
+msgid "Stream device resumed.%s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠతిరిగికొనసాగించబడింది.%s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± తకà±à°•à±à°µà°—ానడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.%s \n"
+msgid "Stream underrun.%s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± తకà±à°•à±à°µà°—ానడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.%s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± మించినడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.%s \n"
+msgid "Stream overrun.%s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± మించినడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.%s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± à°ªà±à°°à°¾à°°à°‚భమైంది.%s \n"
+msgid "Stream started.%s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± à°ªà±à°°à°¾à°°à°‚భమైంది.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠ%s (%u, %ssuspended) à°•à± à°•à°¦à±à°ªà°¬à°¡à°¿à°‚ది.%s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± పరికరమౠ%s (%u, %ssuspended) à°•à± à°•à°¦à±à°ªà°¬à°¡à°¿à°‚ది.%s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "కాదౠ"
-#: ../src/utils/pacat.c:378
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± బఫరౠయాటà±à°°à°¿à°¬à±à°¯à±‚à°Ÿà±à°²à± మారà±à°šà°¬à°¡à°¿à°¨à°µà°¿.%s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "à°¸à±à°Ÿà±à°°à±€à°®à± బఫరౠయాటà±à°°à°¿à°¬à±à°¯à±‚à°Ÿà±à°²à± మారà±à°šà°¬à°¡à°¿à°¨à°µà°¿.%s"
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "Connection established.%s \n"
-msgstr "à°…à°¨à±à°¸à°‚ధానమౠà°à°°à±à°ªà°¡à°¿à°¨à°¦à°¿.%s \n"
+msgid "Connection established.%s"
+msgstr "à°…à°¨à±à°¸à°‚ధానమౠà°à°°à±à°ªà°¡à°¿à°¨à°¦à°¿.%s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "pa_stream_new() విఫలమైంది: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "pa_stream_new() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "pa_stream_connect_playback() విఫలమైంది: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "pa_stream_connect_playback() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "pa_stream_connect_record() విఫలమైంది: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "pa_stream_connect_record() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "à°…à°¨à±à°¸à°‚ధానమౠవైఫలà±à°¯à°®à±: %s\n"
-
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "EOF పొందింది.\n"
+msgid "Connection failure: %s"
+msgstr "à°…à°¨à±à°¸à°‚ధానమౠవైఫలà±à°¯à°®à±: %s"
-#: ../src/utils/pacat.c:500
-#, c-format
-msgid "read() failed: %s\n"
-msgstr "read() విఫలమైంది: %s\n"
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "EOF పొందింది."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "write() విఫలమైంది: %s\n"
+msgid "write() failed: %s"
+msgstr "write() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "సంకేతమౠపొందినది, నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "సంకేతమౠపొందినది, నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "à°•à±à°°à°¿à°¯à°¾à°¹à±€à°¨à°¤à°¨à± పొందà±à°Ÿà°²à±‹ విఫలమైంది: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "లేటెనà±à°¸à±€à°¨à°¿ పొందà±à°Ÿà°²à±‹ విఫలమైంది: %s"
-#: ../src/utils/pacat.c:572
+#: ../src/utils/pacat.c:576
#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "సమయం: %0.3f sec; à°•à±à°°à°¿à°¯à°¾à°¹à±€à°¨à°¤: %0.0f usec. \r"
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
+msgstr "సమయం: %0.3f సెకనà±; లెటెనà±à°¸à±€: %0.0f usec."
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr "pa_stream_update_timing_info() విఫలమైంది: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
+msgstr "pa_stream_update_timing_info() విఫలమైంది: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1493,8 +1391,10 @@ msgstr ""
"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 +1417,11 @@ msgstr ""
"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"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1529,136 +1434,127 @@ msgstr ""
"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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "చెలà±à°²à°¨à°¿ à°•à°•à±à°·à°¿à°¦à°¾à°°à°¿ నామమౠ'%s'"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°¨à°ƒà°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "చెలà±à°²à°¨à°¿ à°¸à±à°Ÿà±à°°à±€à°®à± నామమౠ'%s'"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠ'%s'\n"
+msgid "Invalid channel map '%s'"
+msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠ'%s'"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "చెలà±à°²à°¨à°¿ à°•à±à°°à°¿à°¯à°¾à°¹à±€à°¨ విశదీకరణమౠ'%s'\n"
+msgid "Invalid latency specification '%s'"
+msgstr "చెలà±à°²à°¨à°¿ లేటెనà±à°¸à±€ విశదీకరణమౠ'%s'"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "చెలà±à°²à°¨à°¿ కారà±à°¯à°•à±à°°à°®à°®à± సమయ విశదీకరణ '%s'\n"
+msgid "Invalid process time specification '%s'"
+msgstr "చెలà±à°²à°¨à°¿ కారà±à°¯à°•à±à°°à°®à°®à± సమయ విశదీకరణ '%s'"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "చెలà±à°²à°¨à°¿ à°ªà±à°¨à°ƒà°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "చెలà±à°²à°¨à°¿ లకà±à°·à°£à°®à± '%s'"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "తెలియని ఫైలౠఫారà±à°®à°¾à°Ÿà± %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "చెలà±à°²à°¨à°Ÿà±à°µà°‚à°Ÿà°¿ మాదిరి విశదీకరణ\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "చెలà±à°²à°¨à°Ÿà±à°µà°‚à°Ÿà°¿ మాదిరి విశదీకరణ"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "చాలా యెకà±à°•à±à°µ ఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°²à±.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "చాలా యెకà±à°•à±à°µ ఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°²à±."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "మాదిరి సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "దసà±à°¤à±à°°à°®à± కొరకౠమాదిరి సమాచారమౠజనియింపచేయà±à°Ÿà°²à±‹ విఫలమైంది."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "శబà±à°¦à°ªà± దసà±à°¤à±à°°à°®à±à°¨à± తెరà±à°µà±à°Ÿà°•à± విఫలమైంది.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "ఆడియో ఫైలà±à°¨à± తెరà±à°µà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "దసà±à°¤à±à°°à°®à±à°¨à±à°‚à°¡à°¿ మాదిరి విశదీకరణనౠనిరà±à°§à°¾à°°à°¿à°‚à°šà±à°Ÿà°²à±‹ విఫలమైంది."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "హెచà±à°šà°°à°¿à°•: దసà±à°¤à±à°°à°®à±à°¨à±à°‚à°¡à°¿ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠనిరà±à°§à°¾à°°à°¿à°‚à°šà±à°Ÿà°²à±‹ విఫలమైంది."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠమాదిరి విశదీకరణితో సరిపోలà±à°Ÿà°²à±‡à°¦à±\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠమాదిరి విశదీకరణితో సరిపోలà±à°Ÿà°²à±‡à°¦à±"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "హెచà±à°šà°°à°¿à°•: à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపà±â€Œà°¨à± దసà±à°¤à±à°°à°®à±à°•à± à°µà±à°°à°¾à°¯à±à°Ÿà°²à±‹ విఫలమైంది."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "%s à°¸à±à°Ÿà±à°°à±€à°®à±â€Œà°¨à± మాదిరి విశదీకరణి '%s'తో తెరà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr "%s à°¸à±à°Ÿà±à°°à±€à°®à±â€Œà°¨à± మాదిరి విశదీకరణ '%s' మరియౠపà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°— మాపౠ'%s'తో తెరà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "రికారà±à°¡à°¿à°‚à°—à±"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "pa_mainloop_new() విఫలమైంది."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "io_new() విఫలమైంది.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "io_new() విఫలమైంది."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "pa_context_new() విఫలమైంది."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() విఫలమైంది: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new() విఫలమైంది.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_rttime_new() విఫలమైంది."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "pa_mainloop_run() విఫలమైంది."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1685,7 +1581,12 @@ msgstr "తిరిగికొనసాగింపౠవైఫలà±à°¯à°®à±
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "హెచà±à°šà°°à°¿à°•: శబà±à°§à°ªà± సేవిక à°¸à±à°¥à°¾à°¨à°¿à°•à°‚ కాదà±, à°…à°°à±à°§à°¾à°‚తరనిలà±à°ªà±à°¦à°² కావడంలేదà±.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "à°…à°¨à±à°¸à°‚ధానమౠవైఫలà±à°¯à°®à±: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT పొందింది, నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
@@ -1725,32 +1626,47 @@ msgstr ""
"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది %s\n"
"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "గణాంకాలనౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() విఫలమైంది.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() విఫలమైంది.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() విఫలమైంది.\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:135
+#, c-format
+msgid "Failed to get statistics: %s"
+msgstr "గణాంకాలనౠపొందà±à°Ÿà°•à± విఫలమైంది: %s"
+
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ à°µà±à°ªà°¯à±‹à°—ంలోవà±à°‚ది: %u à°¬à±à°²à°¾à°•à±â€Œà°²à± %s బైటà±à°²à°¨à± మొతà±à°¤à°‚à°—à°¾ కలిగి à°µà±à°¨à±à°¨à°¾à°¯à°¿.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "మొతà±à°¤à°‚ లైఫà±â€Œà°Ÿà±ˆà°®à±à°²à±‹ కేటాయించబడింది: %u à°¬à±à°²à°¾à°•à±à°²à± %s బైటà±à°²à°¨à± మొతà±à°¤à°‚à°—à°¾ కలిగివà±à°¨à±à°¨à°¾à°¯à°¿.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "మాదిరి à°•à±à°¯à°¾à°šà°¿ పరిమాణమà±: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "సేవిక సమాచారమà±à°¨à± పొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "సేవిక సమాచారమà±à°¨à± పొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1773,12 +1689,12 @@ msgstr ""
"à°…à°ªà±à°°à°®à±‡à°¯ మూలమà±: %s\n"
"à°•à±à°•à±€: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "సింకౠసమాచారమà±à°¨à± పొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "సింకౠసమాచారమà±à°¨à± పొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1817,22 +1733,22 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tà°ªà±à°°à±‹à°«à±ˆà°²à±à°¸à±:\n"
+msgstr "\tపోరà±à°Ÿà±à°²à±:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tà°•à±à°°à°¿à°¯à°¾à°¶à±€à°² à°ªà±à°°à±Šà°«à±ˆà°²à±: %s\n"
+msgstr "\tà°•à±à°°à°¿à°¯à°¾à°¶à±€à°² పోరà±à°Ÿà±: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "మూలమౠసమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "మూలమౠసమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1871,20 +1787,20 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "వరà±à°¤à°¿à°‚à°šà°¦à±"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "మాడà±à°¯à±‚లౠసమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "మాడà±à°¯à±‚లౠసమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1901,12 +1817,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "à°•à°•à±à°·à°¿à°¦à°¾à°°à°¿ సమాచారమౠపొందà±à°Ÿà°²à±‹ విఫలమైంది: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "à°•à°•à±à°·à°¿à°¦à°¾à°°à°¿ సమాచారమౠపొందà±à°Ÿà°²à±‹ విఫలమైంది: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1921,12 +1837,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "కారà±à°¡à± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "కారà±à°¡à± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1943,22 +1859,22 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tà°ªà±à°°à±‹à°«à±ˆà°²à±à°¸à±:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tà°•à±à°°à°¿à°¯à°¾à°¶à±€à°² à°ªà±à°°à±Šà°«à±ˆà°²à±: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "సింకౠఇనà±à°ªà±à°Ÿà± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "సింకౠఇనà±à°ªà±à°Ÿà± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1995,12 +1911,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "మూలపౠఅవà±à°Ÿà±à°ªà±à°Ÿà± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "మూలపౠఅవà±à°Ÿà±à°ªà±à°Ÿà± సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2029,12 +1945,12 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "మాదిరి సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "మాదిరి సమాచారమౠపొందà±à°Ÿà°•à± విఫలమైంది: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2065,22 +1981,26 @@ msgstr ""
"\tలకà±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "విఫైలà±à°¯à°®à±: %s\n"
+msgid "Failure: %s"
+msgstr "వైఫైలà±à°¯à°®à±: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "మాదిరి à°…à°ªà±â€Œà°²à±‹à°¡à± చేయà±à°Ÿà°•à± విఫలమైంది: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "మాదిరి à°…à°ªà±â€Œà°²à±‹à°¡à± చేయà±à°Ÿà°•à± విఫలమైంది: %s"
+
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "దసà±à°¤à±à°°à°®à± యొకà±à°• అపరిపకà±à°µ à°®à±à°—à°¿à°‚à°ªà±"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "దసà±à°¤à±à°°à°®à± యొకà±à°• అపరిపకà±à°µ à°®à±à°—à°¿à°‚à°ªà±\n"
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "SIGINT పొందింది, నిషà±à°•à±à°°à°®à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2088,15 +2008,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2112,13 +2038,21 @@ msgstr ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2128,7 +2062,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2139,79 +2073,108 @@ msgstr ""
"libpulse తో నిరà±à°µà°°à±à°¤à°¿à°‚చబడింది%s\n"
"libpulse తో లింకà±à°šà±‡à°¯à°¬à°¡à°¿à°‚ది %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "లోడà±à°µà±à°µà±à°Ÿà°•à± దయచేసి మాదిరి దసà±à°¤à±à°°à°®à±à°¨à± తెలà±à°ªà±à°®à±\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "లోడà±à°µà±à°µà±à°Ÿà°•à± దయచేసి మాదిరి దసà±à°¤à±à°°à°®à±à°¨à± తెలà±à°ªà±à°®à±"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "శబà±à°¦à°ªà± దసà±à°¤à±à°°à°®à±à°¨à± తెరà±à°µà±à°Ÿà°•à± విఫలమైంది.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "శబà±à°¦à°ªà± దసà±à°¤à±à°°à°®à±à°¨à± తెరà±à°µà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "%s à°¸à±à°Ÿà±à°°à±€à°®à±â€Œà°¨à± మాదిరి విశదీకరణి '%s'తో తెరà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿.\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr "హెచà±à°šà°°à°¿à°•: దసà±à°¤à±à°°à°®à±à°¨à±à°‚à°¡à°¿ మాదిరి విశదీకరణనౠనిరà±à°£à°¯à°¿à°‚à°šà±à°Ÿà°•à± విఫలమైంది."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "à°ªà±à°²à±‡ చేయà±à°Ÿà°•à± మీరౠమాదిరి నామమà±à°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "à°ªà±à°²à±‡ చేయà±à°Ÿà°•à± మీరౠమాదిరి నామమà±à°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "తొలగించà±à°Ÿà°•à± మీరౠమాదిరి నామమà±à°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "తొలగించà±à°Ÿà°•à± మీరౠమాదిరి నామమà±à°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "మీరౠసింకౠఇనà±à°ªà±à°Ÿà± విషయసూచిక మరియౠసింకౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "మీరౠసింకౠఇనà±à°ªà±à°Ÿà± విషయసూచిక మరియౠసింకౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "మీరౠమూలమౠఅవà±à°Ÿà±à°ªà±à°Ÿà± విషయసూచిక మరియౠమూలమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "మీరౠమూలమౠఅవà±à°Ÿà±à°ªà±à°Ÿà± విషయసూచిక మరియౠమూలమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "మీరౠమాడà±à°¯à±‚లౠనామమౠమరియౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°²à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "మీరౠమాడà±à°¯à±‚లౠనామమౠమరియౠఆరà±à°—à±à°®à±†à°‚à°Ÿà±à°²à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "మీరౠమాడà±à°¯à±‚లౠవిషయసూచిక తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "మీరౠమాడà±à°¯à±‚లౠవిషయసూచిక తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
-"మీరౠవొక సింకౠకనà±à°¨à°¾ యెకà±à°•à±à°µ తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚డకపోవచà±à°šà±. మీరౠబూలియనౠవిలà±à°µà°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది.\n"
+"మీరౠవొక సింకౠకనà±à°¨à°¾ యెకà±à°•à±à°µ తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚డకపోవచà±à°šà±. మీరౠబూలియనౠవిలà±à°µà°¨à± తెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "మీరౠకారà±à°¡à± నామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "మీరౠసింకà±â€Œ నామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "మీరౠమూలమౠనామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "à°Žà°Ÿà±à°µà°‚à°Ÿà°¿ విలà±à°µà±ˆà°¨ ఆదేశమౠతెలà±à°ªà°²à±‡à°¦à±.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "మీరౠసింకౠనామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect() విఫలమైంది: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "చెలà±à°²à°¨à°Ÿà±à°µà°‚à°Ÿà°¿ వాలà±à°¯à±‚మౠవిశదీకరణ"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "మీరౠమూలమౠనామమà±/విషయసూచిక మరియౠపà±à°°à±Šà°«à±ˆà°²à± నామమౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "మీరౠసింకౠఇనà±à°ªà±à°Ÿà± విషయసూచిక మరియౠవాలà±à°¯à±‚మౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "చెలà±à°²à°¨à°¿ సింకౠయినà±à°ªà±à°Ÿà± విషయసూచిక"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "మీరౠసింకà±â€Œ నామమà±/విషయసూచిక మరియౠమà±à°¯à±‚టౠబూలియనౠతెలà±à°ªà°µà°²à°¸à°¿ à°µà±à°‚ది"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "మీరౠమూలపౠనామమà±/విషయసూచిక మరియౠమà±à°¯à±‚టౠబూలియనౠతెలà±à°ªà°µà°²à°¸à°¿à°µà±à°‚ది"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "మీరౠసింకౠఇనà±à°ªà±à°Ÿà± విషయసూచిక మరియౠమà±à°¯à±‚టౠబూలియనౠతెలà±à°ªà°µà°²à°¸à°¿à°µà±à°‚ది"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "చెలà±à°²à°¨à°Ÿà±à°µà°‚à°Ÿà°¿ సింకౠయినà±à°ªà±à°Ÿà± విషయసూచిక విశదీకరణ"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "à°Žà°Ÿà±à°µà°‚à°Ÿà°¿ విలà±à°µà±ˆà°¨ ఆదేశమౠతెలà±à°ªà°¬à°¡à°²à±‡à°¦à±."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2292,48 +2255,48 @@ msgstr "à°•à±à°•à±€ డాటా లోడౠచేయà±à°Ÿà°•à± విఫà°
msgid "Not yet implemented.\n"
msgstr "ఇంకా యింపà±à°²à°¿à°®à±†à°‚టౠచేయలేదà±\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr ""
+msgstr "PulseAudio డెమోనౠనడà±à°šà±à°Ÿà°²à±‡à°¦à±, లేదా సెషనౠడెమోనౠవలె నడà±à°šà±à°Ÿà°²à±‡à°¦à±."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio డెమోనౠనాశనం చేయà±à°Ÿà°²à±‹ విఫలమైంది."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "డెమోనౠసà±à°ªà°‚దించà±à°Ÿà°²à±‡à°¦à±."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "ఆటోసà±à°ªà°¾à°¨à± తాళంనౠయాకà±à°¸à°¿à°¸à± చేయలేదà±."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2349,7 +2312,7 @@ msgstr ""
"మనమౠPOLLOUT అమరà±à°ªà± à°¦à±à°µà°¾à°°à°¾ జాగరూక పరచబడినామౠ-- à°à°®à±ˆà°¨à°ªà±à°ªà°Ÿà°¿à°•à°¿ snd_pcm_avail() à°…à°¨à±à°¨à°¦à°¿ 0 నౠ"
"యిసà±à°¤à±à°‚ది లేదా వేరొక విలà±à°µ < min_avail యిసà±à°¤à±à°‚ది."
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2366,129 +2329,22 @@ msgstr ""
"యిసà±à°¤à±à°‚ది లేదా వేరొక విలà±à°µ < min_avail యిసà±à°¤à±à°‚ది."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "ఆఫà±"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "హై ఫెడిలిటి à°ªà±à°²à±‡à°¬à±à°¯à°¾à°•à± (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "హై ఫెడిలిటి కాపà±à°šà°°à± (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
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 "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 c8b21c37..b2315bd9 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-17 23:42+0200\n"
-"PO-Revision-Date: 2009-04-18 11:13+0300\n"
+"POT-Creation-Date: 2009-09-11 01:26+0200\n"
+"PO-Revision-Date: 2009-09-05 16:47+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
"MIME-Version: 1.0\n"
@@ -17,7 +17,12 @@ 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:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -30,7 +35,7 @@ msgstr ""
"Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь лаÑка, повідомте "
"про цю ваду розробникам ALSA."
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -43,7 +48,7 @@ msgstr ""
"Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь лаÑка, повідомте "
"про цю ваду розробникам ALSA."
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -56,9 +61,17 @@ msgstr ""
"Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь лаÑка, повідомте "
"про цю ваду розробникам ALSA."
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
-msgstr ""
+msgstr "Віртуальний приймач LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
msgid ""
@@ -68,12 +81,25 @@ msgid ""
"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
"input control values>"
msgstr ""
+"sink_name=<назва приймача> sink_properties=<влаÑтивоÑÑ‚Ñ– приймача> "
+"master=<назва приймача Ð´Ð»Ñ Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ> format=<формат Ñемплу> "
+"rate=<чаÑтота вибірки> channels=<кількіÑÑ‚ÑŒ каналів> channel_map=<карта "
+"каналів> plugin=<назва додатка ladspa> label=<мітка додатка ladspa> "
+"control=<розділений комами ÑпиÑок значень вхідних параметрів>"
+
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:291
+msgid "Null Output"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "Вбудоване аудіо"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "Модем"
@@ -92,225 +118,92 @@ msgstr ""
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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Отримано Ñигнал %s."
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ кориÑтувача «%s»."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ групу «%s»."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID кориÑтувача «%s» Ñ– групи «%s» не збігаютьÑÑ."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Ðе вдалоÑÑ Ñтворити «%s»: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ ÑпиÑок груп: %s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ GID: %s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ UID: %s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "Програма уÑпішно позбулаÑÑ Ð¿Ñ€Ð°Ð² доÑтупу кориÑтувача root."
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "ЗагальноÑиÑтемний режим не підтримуєтьÑÑ Ð½Ð° цій платформі."
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "Спроба виконати setrlimit(%s, (%u, %u)) була невдалою: %s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 надала нам права доÑтупу acquire-high-priority."
-
-#: ../src/daemon/main.c:523
-msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit відмовила у наданні прав доÑтупу acquire-high-priority."
-
-#: ../src/daemon/main.c:528
-msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit надала нам права доÑтупу acquire-real-time."
-
-#: ../src/daemon/main.c:531
-msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit відмовила у наданні прав доÑтупу acquire-real-time."
-
-#: ../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 root Ñ– Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ реального "
-"чаÑу Ñ–/або режиму виÑокого пріоритету. Ðле у Ð½Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” потрібних прав "
-"доÑтупу:\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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "Фонову Ñлужбу не запущено"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "Фонову Ñлужбу запущено Ñк PID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚Ð¸ роботу фонової Ñлужби: %s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -318,156 +211,161 @@ msgstr ""
"Цю програму не призначено Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку від імені кориÑтувача root (Ñкщо не "
"вказано параметра --system)."
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "Потрібні права доÑтупу кориÑтувача root."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr ""
"Параметр --start не підтримуєтьÑÑ Ð´Ð»Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑиÑтемних екземплÑрів програми."
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ЗапуÑк у загальноÑиÑтемному режимі, але не вÑтановлено --disallow-exit!"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ЗапуÑк у загальноÑиÑтемному режимі, але не вÑтановлено --disallow-module-"
"loading!"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ЗапуÑк у загальноÑиÑтемному режимі, примуÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ SHM!"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ЗапуÑк у загальноÑиÑтемному режимі, примуÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ параметрів "
"чаÑу виходу за відÑутноÑÑ‚Ñ– активноÑÑ‚Ñ–!"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ stdio."
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "Спроба ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ fork() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ read() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "Спроба запуÑку фонової Ñлужби завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "Фонову Ñлужбу уÑпішно запущено."
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "Це PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "Вузол збираннÑ: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS збираннÑ: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "Запущено на вузлі: %s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "Знайдено %u процеÑорів."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "Розмір Ñторінки дорівнює %lu байтам"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "Зібрано з підтримкою Valgrind: так"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "Зібрано з підтримкою Valgrind: ні"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "ЗапуÑк у режимі valgrind: %s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "Зібрано з оптимізацією: так"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "Зібрано з оптимізацією: ні"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
-msgstr ""
+msgstr "Визначено NDEBUG, вÑÑ– Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
-msgstr ""
+msgstr "Визначено FASTPATH, вимкнено лише Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¸Ñ… шлÑхів."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
-msgstr ""
+msgstr "Увімкнено вÑÑ– додаваннÑ."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "Спроба отримати ідентифікатор ÑиÑтеми завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "Ідентифікатор ÑиÑтеми %s."
-#: ../src/daemon/main.c:917
-#, fuzzy, c-format
+#: ../src/daemon/main.c:768
+#, c-format
msgid "Session ID is %s."
-msgstr "Ідентифікатор ÑиÑтеми %s."
+msgstr "Ідентифікатор ÑеанÑу — %s."
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "Каталог запуÑку: %s."
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "Каталог Ñтану: %s."
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, c-format
+msgid "Using modules directory %s."
+msgstr "Каталог модулів: %s."
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "ЗапуÑку у загальноÑиÑтемному режимі: %s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -476,16 +374,23 @@ msgid ""
"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
"explanation why system mode is usually a bad idea."
msgstr ""
+"Гаразд, ви запуÑтили PA у ÑиÑтемному режимі. Будь лаÑка, зауважте, що "
+"здебільшого у цьому немає потреби.\n"
+"Якщо ви вÑе ж це зробили, відповідальніÑÑ‚ÑŒ за вÑÑ– негаразди лÑгає Ñаме на "
+"ваÑ.\n"
+"Будь лаÑка, ознайомтеÑÑ Ð·Ñ– Ñтаттею http://pulseaudio.org/wiki/"
+"WhatIsWrongWithSystemMode, щоб дізнатиÑÑ Ð¿Ñ€Ð¾ те, чому не варто "
+"викориÑтовувати ÑиÑтемний режим."
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_pid_file_create() зазнала невдачі."
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ДоÑтупні Ñвіжі виÑокоточні таймери! Смачного!"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -493,29 +398,29 @@ msgstr ""
"Чувак, твоє Ñдро — лайно! Круті пацани рекомендують Linux з увімкненими "
"виÑокоточними таймерами!"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_core_new() зазнала невдачі."
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ фонову Ñлужбу."
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"ЗапуÑк фонової Ñлужби без жодного завантаженого модулÑ, Ñлужба не буде "
"працездатною."
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "ЗапуÑк фонової Ñлужби завершено."
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "Ініційовано Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ фонової Ñлужби."
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ñ— Ñлужби перервано."
@@ -782,79 +687,79 @@ msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸: %s\n"
#: ../src/daemon/dumpmodules.c:75
#, c-format
msgid "DEPRECATION WARNING: %s\n"
-msgstr ""
+msgstr "ПОПЕРЕДЖЕÐÐЯ ПРО ЗÐСТÐРІЛІСТЬ: %s\n"
#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ШлÑÑ…: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ðекоректний журнал «%s»."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ðекоректний рівень Ð¶ÑƒÑ€Ð½Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Â«%s»."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ðекоректний метод зміни чаÑтотних характериÑтик «%s»."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ rlimit «%s»."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit не підтримуєтьÑÑ Ð½Ð° цій платформі."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ðекоректний формат фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ðекоректна чаÑтота вибірки «%s»."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ðекоректні канали фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ðекоректна карта каналів «%s»'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ðекоректна кількіÑÑ‚ÑŒ фрагментів «%s»."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ðекоректний розмір фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ðекоректний рівень nice «%s»."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл налаштувань: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -862,18 +767,14 @@ msgstr ""
"У вказаній типовій карті каналів визначаєтьÑÑ Ñ–Ð½ÑˆÐ° кількіÑÑ‚ÑŒ каналів, ніж "
"типова кількіÑÑ‚ÑŒ каналів."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Прочитано з файла налаштувань: %s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
-msgstr "ПозбуваємоÑÑ Ð¿Ñ€Ð°Ð² доÑтупу root."
-
-#: ../src/daemon/caps.c:103
-msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr "УÑпішно обмежено можливоÑÑ‚Ñ– до CAP_SYS_NICE."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
+msgstr "ПозбуваємоÑÑ Ð¿Ñ€Ð°Ð² доÑтупу."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -883,29 +784,7 @@ msgstr "Звукова ÑиÑтема PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "ЗапуÑтити звукову ÑиÑтему 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
-#, fuzzy
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr ""
-"Спроба Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ фонової Ñлужби PulseAudio завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
-msgid ""
-"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr ""
-"Ми перебуваємо у групі «%s», що надає змогу Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð· виÑоким пріоритетом."
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Моно"
@@ -1109,33 +988,33 @@ msgstr "Верхній задній лівий"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(некоректний)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Стерео"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Об'ємний 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Об'ємний 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Об'ємний 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Об'ємний 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Об'ємний 7.1"
@@ -1239,27 +1118,35 @@ msgstr "ВідÑÑƒÑ‚Ð½Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ"
msgid "Client forked"
msgstr "Клієнт розгалужено"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uкан. %uГц"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f ГБ"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f МБ"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f кБ"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u Б"
@@ -1272,194 +1159,193 @@ msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ XOpenDisplay() завершилаÑÑ Ð½
msgid "Failed to parse cookie data"
msgstr "Ðе вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ дані куки"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Â«%s»: %s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
"Куків не завантажено. Буде виконано Ñпробу Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð° Ñ—Ñ… відÑутноÑÑ‚Ñ–."
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Отримано Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ невідомий додаток «%s»"
-#: ../src/utils/pacat.c:107
+#: ../src/utils/pacat.c:108
#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Ðе вдалоÑÑ Ñтворити тунель Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ: %s\n"
+msgid "Failed to drain stream: %s"
+msgstr "Ðе вдалоÑÑ Ñтворити тунель Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ: %s"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
-msgstr "Потік Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚ÑƒÐ½ÐµÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¾.\n"
+#: ../src/utils/pacat.c:113
+msgid "Playback stream drained."
+msgstr "Потік Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚ÑƒÐ½ÐµÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¾."
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
-msgstr "Тунельне Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñервером.\n"
+#: ../src/utils/pacat.c:123
+msgid "Draining connection to server."
+msgstr "Тунельне Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñервером."
-#: ../src/utils/pacat.c:135
+#: ../src/utils/pacat.c:136
#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
+msgid "pa_stream_drain(): %s"
+msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:158
+#: ../src/utils/pacat.c:159
#, c-format
-msgid "pa_stream_write() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_write() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
+msgid "pa_stream_write() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_write() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:197
#, c-format
-msgid "pa_stream_peek() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_peek() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_write() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
-msgstr "Потік було уÑпішно Ñтворено.\n"
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
+msgid "pa_stream_peek() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_peek() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:305
+#: ../src/utils/pacat.c:307
+msgid "Stream successfully created."
+msgstr "Потік було уÑпішно Ñтворено."
+
+#: ../src/utils/pacat.c:310
#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_get_buffer_attr() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
+msgid "pa_stream_get_buffer_attr() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_get_buffer_attr() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:314
#, c-format
-msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "Метрика буфера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
+msgstr "Метрика буфера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:312
+#: ../src/utils/pacat.c:317
#, c-format
-msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr "Метрика буфера: maxlength=%u, fragsize=%u\n"
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
+msgstr "Метрика буфера: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:316
+#: ../src/utils/pacat.c:321
#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð°Ñтотної Ñпецифікації «%s», карта каналів «%s».\n"
+msgid "Using sample spec '%s', channel map '%s'."
+msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð°Ñтотної Ñпецифікації «%s», карта каналів «%s»."
-#: ../src/utils/pacat.c:320
+#: ../src/utils/pacat.c:325
#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
-msgstr "З’єднано з приÑтроєм %s (%u, %s призупинено).\n"
+msgid "Connected to device %s (%u, %ssuspended)."
+msgstr "З’єднано з приÑтроєм %s (%u, %s призупинено)."
-#: ../src/utils/pacat.c:330
+#: ../src/utils/pacat.c:335
#, c-format
-msgid "Stream error: %s\n"
-msgstr "Помилка потоку: %s\n"
+msgid "Stream error: %s"
+msgstr "Помилка потоку: %s"
-#: ../src/utils/pacat.c:340
+#: ../src/utils/pacat.c:345
#, c-format
-msgid "Stream device suspended.%s \n"
-msgstr "Призупинено приÑтрій потоку. %s \n"
+msgid "Stream device suspended.%s"
+msgstr "Призупинено приÑтрій потоку. %s"
-#: ../src/utils/pacat.c:342
+#: ../src/utils/pacat.c:347
#, c-format
-msgid "Stream device resumed.%s \n"
-msgstr "Відновлено приÑтрій потоку. %s \n"
+msgid "Stream device resumed.%s"
+msgstr "Відновлено приÑтрій потоку. %s"
-#: ../src/utils/pacat.c:350
+#: ../src/utils/pacat.c:355
#, c-format
-msgid "Stream underrun.%s \n"
-msgstr "ÐÐµÐ´Ð¾Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s \n"
+msgid "Stream underrun.%s"
+msgstr "ÐÐµÐ´Ð¾Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s"
-#: ../src/utils/pacat.c:357
+#: ../src/utils/pacat.c:362
#, c-format
-msgid "Stream overrun.%s \n"
-msgstr "ÐŸÐµÑ€ÐµÐ²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s \n"
+msgid "Stream overrun.%s"
+msgstr "ÐŸÐµÑ€ÐµÐ²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s"
-#: ../src/utils/pacat.c:364
+#: ../src/utils/pacat.c:369
#, c-format
-msgid "Stream started.%s \n"
-msgstr "Потік запущено. %s \n"
+msgid "Stream started.%s"
+msgstr "Потік запущено. %s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "Потік переÑунуто на приÑтрій %s (%u, %s призупинено). %s \n"
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
+msgstr "Потік переÑунуто на приÑтрій %s (%u, %s призупинено). %s"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "не "
-#: ../src/utils/pacat.c:378
-#, fuzzy, c-format
-msgid "Stream buffer attributes changed.%s \n"
-msgstr "ÐÐµÐ´Ð¾Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s \n"
-
-#: ../src/utils/pacat.c:411
+#: ../src/utils/pacat.c:383
#, c-format
-msgid "Connection established.%s \n"
-msgstr "Ð’Ñтановлено з’єднаннÑ. %s \n"
+msgid "Stream buffer attributes changed.%s"
+msgstr "ÐÐµÐ´Ð¾Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ. %s"
-#: ../src/utils/pacat.c:414
+#: ../src/utils/pacat.c:415
#, c-format
-msgid "pa_stream_new() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_new() зазнала невдачі: %s\n"
+msgid "Connection established.%s"
+msgstr "Ð’Ñтановлено з’єднаннÑ. %s"
-#: ../src/utils/pacat.c:442
+#: ../src/utils/pacat.c:418
#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_playback() зазнала невдачі: %s\n"
+msgid "pa_stream_new() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_new() зазнала невдачі: %s"
-#: ../src/utils/pacat.c:448
+#: ../src/utils/pacat.c:446
#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_record() зазнала невдачі: %s\n"
+msgid "pa_stream_connect_playback() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_playback() зазнала невдачі: %s"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pacat.c:452
#, c-format
-msgid "Connection failure: %s\n"
-msgstr "Спроба вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð° невдачі: %s\n"
+msgid "pa_stream_connect_record() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_record() зазнала невдачі: %s"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
-msgstr "Отримано EOF.\n"
-
-#: ../src/utils/pacat.c:500
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
#, c-format
-msgid "read() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ read() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
+msgid "Connection failure: %s"
+msgstr "Спроба вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð° невдачі: %s"
+
+#: ../src/utils/pacat.c:499
+msgid "Got EOF."
+msgstr "Отримано EOF."
-#: ../src/utils/pacat.c:532
+#: ../src/utils/pacat.c:536
#, c-format
-msgid "write() failed: %s\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ write() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
+msgid "write() failed: %s"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ write() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
-msgstr "Отримано Ñигнал, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n"
+#: ../src/utils/pacat.c:557
+msgid "Got signal, exiting."
+msgstr "Отримано Ñигнал, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸."
-#: ../src/utils/pacat.c:567
+#: ../src/utils/pacat.c:571
#, c-format
-msgid "Failed to get latency: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ латентніÑÑ‚ÑŒ: %s\n"
+msgid "Failed to get latency: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ латентніÑÑ‚ÑŒ: %s"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "ЧаÑ: %0.3f Ñек.; ЛатентніÑÑ‚ÑŒ: %0.0f мкÑ. \r"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:595
#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr ""
-"Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_update_timing_info() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
+"Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_update_timing_info() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
#: ../src/utils/pacat.c:605
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1563,6 +1449,14 @@ msgstr ""
"латентніÑÑ‚ÑŒ у байтах.\n"
" --process-time=БÐЙТИ ÐадіÑлати запит щодо вказаного чаÑу "
"обробки на запит у байтах.\n"
+" --property=ВЛÐСТИВІСТЬ=ЗÐÐЧЕÐÐЯ Ð’Ñтановити Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ— влаÑтивоÑÑ‚Ñ– "
+"вказане значеннÑ.\n"
+" --raw ЗапиÑати/Відтворити не оброблені "
+"дані PCM.\n"
+" --file-format=ФОРМÐТ ЗапиÑати/Відтворити форматовані дані "
+"PCM.\n"
+" --list-file-formats Показати ÑпиÑок можливих форматів "
+"файлів.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1575,136 +1469,130 @@ msgstr ""
"Зібрано з 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:760 ../src/utils/pactl.c:953
+#, c-format
+msgid "Invalid client name '%s'"
+msgstr "Ðекоректна назва клієнта «%s»"
-#: ../src/utils/pacat.c:776
-#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
-msgstr "Ðекоректний метод зміни чаÑтотних характериÑтик «%s»."
+#: ../src/utils/pacat.c:775
+#, c-format
+msgid "Invalid stream name '%s'"
+msgstr "Ðекоректна назва потоку «%s»"
-#: ../src/utils/pacat.c:813
+#: ../src/utils/pacat.c:812
#, c-format
-msgid "Invalid channel map '%s'\n"
-msgstr "Ðекоректна карта каналів «%s»\n"
+msgid "Invalid channel map '%s'"
+msgstr "Ðекоректна карта каналів «%s»"
-#: ../src/utils/pacat.c:842
+#: ../src/utils/pacat.c:841
#, c-format
-msgid "Invalid latency specification '%s'\n"
-msgstr "Ðекоректна ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð»Ð°Ñ‚ÐµÐ½Ñ‚Ð½Ð¾ÑÑ‚Ñ– «%s»\n"
+msgid "Invalid latency specification '%s'"
+msgstr "Ðекоректна ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð»Ð°Ñ‚ÐµÐ½Ñ‚Ð½Ð¾ÑÑ‚Ñ– «%s»"
-#: ../src/utils/pacat.c:849
+#: ../src/utils/pacat.c:848
#, c-format
-msgid "Invalid process time specification '%s'\n"
-msgstr "Ðекоректна чаÑова ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Â«%s»\n"
+msgid "Invalid process time specification '%s'"
+msgstr "Ðекоректна чаÑова ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Â«%s»"
-#: ../src/utils/pacat.c:861
-#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
-msgstr "Ðекоректний метод зміни чаÑтотних характериÑтик «%s»."
+#: ../src/utils/pacat.c:860
+#, c-format
+msgid "Invalid property '%s'"
+msgstr "Ðекоректна влаÑтивіÑÑ‚ÑŒ «%s»"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
-msgstr ""
+msgstr "Ðевідомий формат файлів %s."
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
-msgstr "Ðекоректна чаÑтотна ÑпецифікаціÑ\n"
+#: ../src/utils/pacat.c:896
+msgid "Invalid sample specification"
+msgstr "Ðекоректна чаÑтотна ÑпецифікаціÑ"
-#: ../src/utils/pacat.c:907
+#: ../src/utils/pacat.c:906
#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
+msgid "open(): %s"
+msgstr "open(): %s"
-#: ../src/utils/pacat.c:912
+#: ../src/utils/pacat.c:911
#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
+msgid "dup2(): %s"
+msgstr "dup2(): %s"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
-msgstr "Забагато аргументів.\n"
+#: ../src/utils/pacat.c:918
+msgid "Too many arguments."
+msgstr "Забагато аргументів."
-#: ../src/utils/pacat.c:930
-#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо фрагмента: %s\n"
+#: ../src/utils/pacat.c:929
+msgid "Failed to generate sample specification for file."
+msgstr "Ðе вдалоÑÑ Ñтворити чаÑтотну Ñпецифікацію Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð°."
-#: ../src/utils/pacat.c:950
-#, fuzzy
-msgid "Failed to open audio file.\n"
-msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ звуковий файл.\n"
+#: ../src/utils/pacat.c:949
+msgid "Failed to open audio file."
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ звуковий файл."
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
+"specification from file."
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:958 ../src/utils/pactl.c:997
+msgid "Failed to determine sample specification from file."
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо чаÑтотної Ñпецифікації з файла."
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+msgid "Warning: Failed to determine channel map from file."
+msgstr "ПопередженнÑ: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо карти каналів з файла."
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
-msgstr "Карта каналі не відповідає чаÑтотній Ñпецифікації\n"
+#: ../src/utils/pacat.c:978
+msgid "Channel map doesn't match sample specification"
+msgstr "Карта каналів не відповідає чаÑтотній Ñпецифікації"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+msgid "Warning: failed to write channel map to file."
+msgstr "ПопередженнÑ: не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати карту каналів до файла."
-#: ../src/utils/pacat.c:1005
-#, fuzzy, c-format
+#: ../src/utils/pacat.c:1004
+#, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
-msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ %s з чаÑтотною Ñпецифікацією «%s».\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ %s з чаÑтотною Ñпецифікацією «%s» Ñ– картою каналів «%s»."
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "запиÑ"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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:1031 ../src/utils/pactl.c:1267
+msgid "pa_mainloop_new() failed."
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ io_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
+#: ../src/utils/pacat.c:1050
+msgid "io_new() failed."
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ io_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../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:1057 ../src/utils/pactl.c:1279
+msgid "pa_context_new() failed."
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_connect() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ time_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
+#: ../src/utils/pacat.c:1071
+msgid "pa_context_rttime_new() failed."
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../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/pacat.c:1078 ../src/utils/pactl.c:1290
+msgid "pa_mainloop_run() failed."
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_run() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
#: ../src/utils/pasuspender.c:81
#, c-format
@@ -1732,7 +1620,12 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"ПОПЕРЕДЖЕÐÐЯ: звуковий Ñервер не Ñ” локальним, його не можна призупинити.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "Спроба вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð° невдачі: %s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Отримано Ñигнал SIGINT, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n"
@@ -1773,33 +1666,48 @@ msgstr ""
"Зібрано з libpulse %s\n"
"З’єднано з libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_new() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_run() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
+
+#: ../src/utils/pactl.c:135
#, c-format
-msgid "Failed to get statistics: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані: %s\n"
+msgid "Failed to get statistics: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані: %s"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Зараз викориÑтано: %u блоків, що міÑÑ‚ÑÑ‚ÑŒ загалом %s байтів.\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Виділено протÑгом Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼: %u блоків, що міÑÑ‚ÑÑ‚ÑŒ %s байтів.\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Розмір кешу фрагментів: %s\n"
-#: ../src/utils/pactl.c:149
+#: ../src/utils/pactl.c:156
#, c-format
-msgid "Failed to get server information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо Ñервера: %s\n"
+msgid "Failed to get server information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо Ñервера: %s"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1822,12 +1730,12 @@ msgstr ""
"Типове джерело: %s\n"
"Кука: %08x\n"
-#: ../src/utils/pactl.c:198
+#: ../src/utils/pactl.c:205
#, c-format
-msgid "Failed to get sink information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо приймача: %s\n"
+msgid "Failed to get sink information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо приймача: %s"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1866,22 +1774,22 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
+#, c-format
msgid "\tPorts:\n"
-msgstr "\tПрофілі:\n"
+msgstr "\tПорти:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
+#, c-format
msgid "\tActive Port: %s\n"
-msgstr "\tÐктивний профіль: %s\n"
+msgstr "\tÐктивний порт: %s\n"
-#: ../src/utils/pactl.c:290
+#: ../src/utils/pactl.c:297
#, c-format
-msgid "Failed to get source information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо джерела: %s\n"
+msgid "Failed to get source information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо джерела: %s"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1920,20 +1828,20 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "н/д"
-#: ../src/utils/pactl.c:368
+#: ../src/utils/pactl.c:375
#, c-format
-msgid "Failed to get module information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо модулÑ: %s\n"
+msgid "Failed to get module information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо модулÑ: %s"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1950,12 +1858,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
+#: ../src/utils/pactl.c:412
#, c-format
-msgid "Failed to get client information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо клієнта: %s\n"
+msgid "Failed to get client information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо клієнта: %s"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1970,12 +1878,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
+#: ../src/utils/pactl.c:447
#, c-format
-msgid "Failed to get card information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо карти: %s\n"
+msgid "Failed to get card information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо карти: %s"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1992,22 +1900,22 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tПрофілі:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tÐктивний профіль: %s\n"
-#: ../src/utils/pactl.c:489
+#: ../src/utils/pactl.c:496
#, c-format
-msgid "Failed to get sink input information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ відомоÑтей щодо приймача: %s\n"
+msgid "Failed to get sink input information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ відомоÑтей щодо приймача: %s"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2044,12 +1952,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
+#: ../src/utils/pactl.c:554
#, c-format
-msgid "Failed to get source output information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð°: %s\n"
+msgid "Failed to get source output information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð°: %s"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2078,12 +1986,12 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
+#: ../src/utils/pactl.c:605
#, c-format
-msgid "Failed to get sample information: %s\n"
-msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо фрагмента: %s\n"
+msgid "Failed to get sample information: %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо фрагмента: %s"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2114,22 +2022,26 @@ msgstr ""
"\tВлаÑтивоÑÑ‚Ñ–:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
#, c-format
-msgid "Failure: %s\n"
-msgstr "Помилка: %s\n"
+msgid "Failure: %s"
+msgstr "Помилка: %s"
-#: ../src/utils/pactl.c:680
+#: ../src/utils/pactl.c:687
#, c-format
-msgid "Failed to upload sample: %s\n"
-msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ зразок: %s\n"
+msgid "Failed to upload sample: %s"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ зразок: %s"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
-msgstr "ПередчаÑне Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°\n"
+#: ../src/utils/pactl.c:704
+msgid "Premature end of file"
+msgstr "ПередчаÑне Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°"
-#: ../src/utils/pactl.c:826
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:863
+msgid "Got SIGINT, exiting."
+msgstr "Отримано Ñигнал SIGINT, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸."
+
+#: ../src/utils/pactl.c:869
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2137,15 +2049,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2165,9 +2083,17 @@ msgstr ""
"%s [параметри] move-source-output ІДЕÐТИФІКÐТОР ДЖЕРЕЛО\n"
"%s [параметри] load-module ÐÐЗВР[ÐРГУМЕÐТИ ...]\n"
"%s [параметри] unload-module ІДЕÐТИФІКÐТОР\n"
-"%s [параметри] suspend-sink [ПРИЙМÐЧ] 1|0\n"
-"%s [параметри] suspend-source [ДЖЕРЕЛО] 1|0\n"
-"%s [параметри] set-card-profile [КÐРТÐ] [ПРОФІЛЬ] \n"
+"%s [параметри] suspend-sink ПРИЙМÐЧ 1|0\n"
+"%s [параметри] suspend-source ДЖЕРЕЛО 1|0\n"
+"%s [параметри] set-card-profile КÐРТРПРОФІЛЬ \n"
+"%s [параметри] set-sink-port ПРИЙМÐЧ ПОРТ \n"
+"%s [параметри] set-source-port ДЖЕРЕЛО ПОРТ\n"
+"%s [параметри] set-sink-volume ПРИЙМÐЧ ГУЧÐІСТЬ\n"
+"%s [параметри] set-source-volume ДЖЕРЕЛО ГУЧÐІСТЬ\n"
+"%s [параметри] set-sink-input-volume ВХІДПРИЙМÐЧРГУЧÐІСТЬ\n"
+"%s [параметри] set-sink-mute ПРИЙМÐЧ 1|0\n"
+"%s [параметри] set-source-mute ДЖЕРЕЛО 1|0\n"
+"%s [параметри] set-sink-input-mute ВХІДПРИЙМÐЧР1|0\n"
"\n"
" -h, --help Показати цю довідку\n"
" --version Показати дані щодо верÑÑ–Ñ—\n"
@@ -2176,7 +2102,7 @@ msgstr ""
"з’єднатиÑÑ\n"
" -n, --client-name=ÐÐЗВРСпоÑіб виклику клієнта на Ñервері\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2187,81 +2113,114 @@ msgstr ""
"Зібрано з libpulse %s\n"
"З’єднано з libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
-msgstr "Будь лаÑка, вкажіть зразковий файл Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ\n"
+#: ../src/utils/pactl.c:979
+msgid "Please specify a sample file to load"
+msgstr "Будь лаÑка, вкажіть зразковий файл Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
-msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ звуковий файл.\n"
+#: ../src/utils/pactl.c:992
+msgid "Failed to open sound file."
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ звуковий файл."
-#: ../src/utils/pactl.c:951
-#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ %s з чаÑтотною Ñпецифікацією «%s».\n"
+#: ../src/utils/pactl.c:1004
+msgid "Warning: Failed to determine sample specification from file."
+msgstr ""
+"ПопередженнÑ: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо чаÑтотної Ñпецифікації з файла."
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
-msgstr "Вам Ñлід вказати назву зразкового файла, Ñкий Ñлід відтворити\n"
+#: ../src/utils/pactl.c:1014
+msgid "You have to specify a sample name to play"
+msgstr "Вам Ñлід вказати назву зразкового файла, Ñкий Ñлід відтворити"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
-msgstr "Вам Ñлід вказати назву зразкового файла, Ñкий Ñлід вилучити\n"
+#: ../src/utils/pactl.c:1026
+msgid "You have to specify a sample name to remove"
+msgstr "Вам Ñлід вказати назву зразкового файла, Ñкий Ñлід вилучити"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
-msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° даних Ñ– приймач\n"
+#: ../src/utils/pactl.c:1035
+msgid "You have to specify a sink input index and a sink"
+msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° даних Ñ– приймач"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
-msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ– джерело\n"
+#: ../src/utils/pactl.c:1045
+msgid "You have to specify a source output index and a source"
+msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ– джерело"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
-msgstr "Вам Ñлід вказати назву Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ– аргументи.\n"
+#: ../src/utils/pactl.c:1060
+msgid "You have to specify a module name and arguments."
+msgstr "Вам Ñлід вказати назву Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ– аргументи."
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
-msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð´ÑƒÐ»Ñ\n"
+#: ../src/utils/pactl.c:1080
+msgid "You have to specify a module index"
+msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð´ÑƒÐ»Ñ"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr ""
"Ðе можна вказувати більше одного приймача. Вам Ñлід вказати булівÑьке "
-"значеннÑ.\n"
+"значеннÑ."
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
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:1115
+msgid "You have to specify a card name/index and a profile name"
+msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ ÐºÐ°Ñ€Ñ‚Ð¸ Ñ– назву профілю"
-#: ../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:1126
+msgid "You have to specify a sink name/index and a port name"
+msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° Ñ– назву порту"
-#: ../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:1137
+msgid "You have to specify a source name/index and a port name"
+msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ñ– назву порту"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "Ðе вказано коректної команди.\n"
+#: ../src/utils/pactl.c:1149
+msgid "You have to specify a sink name/index and a volume"
+msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° Ñ– гучніÑÑ‚ÑŒ"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "Спроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_connect() завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+msgid "Invalid volume specification"
+msgstr "Ðекоректна ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð³ÑƒÑ‡Ð½Ð¾ÑÑ‚Ñ–"
+
+#: ../src/utils/pactl.c:1166
+msgid "You have to specify a source name/index and a volume"
+msgstr "Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ñ– гучніÑÑ‚ÑŒ"
+
+#: ../src/utils/pactl.c:1183
+msgid "You have to specify a sink input index and a volume"
+msgstr "Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° даних Ñ– гучніÑÑ‚ÑŒ"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr "Ðекоректний Ñ–Ð½Ð´ÐµÐºÑ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… даних приймача"
+
+#: ../src/utils/pactl.c:1204
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr ""
+"Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° Ñ– булеве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ"
+
+#: ../src/utils/pactl.c:1221
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr ""
+"Вам Ñлід вказати назву/Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ñ– булеве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ"
+
+#: ../src/utils/pactl.c:1238
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr ""
+"Вам Ñлід вказати Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ñ‡Ð° даних Ñ– булеве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ"
+
+#: ../src/utils/pactl.c:1243
+msgid "Invalid sink input index specification"
+msgstr "Ðекоректна ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ–Ð½Ð´ÐµÐºÑу приймача даних"
+
+#: ../src/utils/pactl.c:1262
+msgid "No valid command specified."
+msgstr "Ðе вказано коректної команди."
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2344,49 +2303,51 @@ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ дані куки\n"
msgid "Not yet implemented.\n"
msgstr "Ще не реалізовано.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
+"Фонову Ñлужбу PulseAudio не запущено, або цю Ñлужбу не запущено Ñк фонову "
+"Ñлужбу ÑеанÑу."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
"Спроба Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ фонової Ñлужби PulseAudio завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Фонова Ñлужба не відповідає."
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+msgid "poll(): %s"
+msgstr "poll(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ñти Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ розгалуженнÑ."
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2396,8 +2357,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"
+"Ймовірно, це пов’Ñзано з вадою у драйвері 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
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2407,123 +2374,30 @@ msgid ""
"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
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
-msgstr ""
+msgstr "Вимкнено"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
-msgstr ""
+msgstr "ВиÑокоточне Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+msgid "High Fidelity Capture (A2DP)"
+msgstr "ВиÑокоточне Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
-msgstr ""
+msgstr "Телефонний Ð´ÑƒÐ¿Ð»ÐµÐºÑ (HSP/HFP)"
#: ../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"
+msgstr "Звуковий Ñервер PulseAudio"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 2da73fe8..0d0c98ed 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-06-17 23:42+0200\n"
+"POT-Creation-Date: 2009-09-11 01:26+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,7 +20,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../src/modules/alsa/alsa-util.c:1015
+#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1106
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -31,7 +36,7 @@ msgstr ""
"snd_pcm_avail() 返回的值éžå¸¸å¤§ï¼š%lu 字节(%lu ms)。\n"
"很å¯èƒ½æ˜¯ ALSA é©±åŠ¨ç¨‹åº '%s' 中的 bugã€‚è¯·å‘ ALSA å¼€å‘者举报这个问题。"
-#: ../src/modules/alsa/alsa-util.c:1056
+#: ../src/modules/alsa/alsa-util.c:1147
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -42,7 +47,7 @@ msgstr ""
"snd_pcm_delay() 返回的值éžå¸¸å¤§ï¼š%li 字节(%s%lu ms)。\n"
"很å¯èƒ½æ˜¯ ALSA é©±åŠ¨ç¨‹åº '%s' 中的 bugã€‚è¯·å‘ ALSA å¼€å‘者举报这个问题。"
-#: ../src/modules/alsa/alsa-util.c:1103
+#: ../src/modules/alsa/alsa-util.c:1194
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -53,6 +58,14 @@ msgstr ""
"snd_pcm_mmap_begin() 返回的值éžå¸¸å¤§ï¼š%lu 字节(%lu ms)。\n"
"很å¯èƒ½æ˜¯ ALSA é©±åŠ¨ç¨‹åº '%s' 中的 bugã€‚è¯·å‘ ALSA å¼€å‘者举报这个问题。"
+#: ../src/modules/module-always-sink.c:39
+msgid "Always keeps at least one sink loaded even if it's a null one"
+msgstr ""
+
+#: ../src/modules/module-always-sink.c:83
+msgid "Dummy Output"
+msgstr ""
+
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr ""
@@ -66,11 +79,20 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2394
+#: ../src/modules/module-null-sink.c:55
+msgid "Clocked NULL sink"
+msgstr ""
+
+#: ../src/modules/module-null-sink.c:291
+#, fuzzy
+msgid "Null Output"
+msgstr "输出 %s"
+
+#: ../src/pulsecore/sink.c:2613
msgid "Internal Audio"
msgstr "内部音频"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2618
msgid "Modem"
msgstr "调制解调器"
@@ -86,362 +108,246 @@ msgstr "分é…æ–°çš„ dl 加载器失败。"
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
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "获得信å·%s"
-#: ../src/daemon/main.c:169
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "退出"
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "找ä¸åˆ°ç”¨æˆ· `%s' "
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "找ä¸åˆ°ç”¨æˆ·ç»„ `%s'"
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:195
#, 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
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "用户'%s'与组'%s'çš„GIDä¸åŒ¹é…."
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:205
#, 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
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "创建'%s'失败: %s"
-#: ../src/daemon/main.c:221
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "更改组列表失败:%s"
-#: ../src/daemon/main.c:237
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "更改GID失败:%s"
-#: ../src/daemon/main.c:253
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "更改UID失败:%s"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:271
msgid "Successfully dropped root privileges."
msgstr "æˆåŠŸæ”¾å¼ƒrootæƒé™ã€‚"
-#: ../src/daemon/main.c:275
+#: ../src/daemon/main.c:279
msgid "System wide mode unsupported on this platform."
msgstr "此平å°ä¸æ”¯æŒsystem-wide模å¼ã€‚"
-#: ../src/daemon/main.c:293
+#: ../src/daemon/main.c:297
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) 失败:%s"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:469
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 rootã€å®žæ—¶å’Œ/或者高优先调度。但是我们缺少必è¦çš„特æƒï¼š\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
+#: ../src/daemon/main.c:536
msgid "Daemon not running"
msgstr "åŽå°ç¨‹åºæ²¡æœ‰è¿è¡Œ"
-#: ../src/daemon/main.c:694
+#: ../src/daemon/main.c:538
#, c-format
msgid "Daemon running as PID %u"
msgstr "åŽå°ç¨‹åºæ­£åœ¨è¿è¡Œï¼ŒPID %u"
-#: ../src/daemon/main.c:704
+#: ../src/daemon/main.c:548
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "æ€æ­»åŽå°ç¨‹åºå¤±è´¥ï¼š%s"
-#: ../src/daemon/main.c:722
+#: ../src/daemon/main.c:566
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "ä¸åº”以root身份è¿è¡Œæœ¬ç¨‹åºï¼ˆé™¤éžæŒ‡å®š --system)。"
-#: ../src/daemon/main.c:724
+#: ../src/daemon/main.c:568
msgid "Root privileges required."
msgstr "éœ€è¦ root æƒé™ã€‚"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:573
msgid "--start not supported for system instances."
msgstr "系统实例ä¸æ”¯æŒ --start。"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:578
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œä½†æ˜¯ --disallow-exit 未设定ï¼"
-#: ../src/daemon/main.c:737
+#: ../src/daemon/main.c:581
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œä½†æ˜¯ --disallow-module-loading 未设定ï¼"
-#: ../src/daemon/main.c:740
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œå¼ºåˆ¶ç¦ç”¨SHM模å¼ï¼"
-#: ../src/daemon/main.c:745
+#: ../src/daemon/main.c:589
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "正在以系统模å¼è¿è¡Œï¼Œå¼ºåˆ¶ç¦ç”¨é€€å‡ºç©ºé—²æ—¶é—´ï¼"
-#: ../src/daemon/main.c:772
+#: ../src/daemon/main.c:616
msgid "Failed to acquire stdio."
msgstr "获å–stdio失败。"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:622
#, c-format
msgid "pipe failed: %s"
msgstr "管é“失败:%s"
-#: ../src/daemon/main.c:783
+#: ../src/daemon/main.c:627
#, c-format
msgid "fork() failed: %s"
msgstr "fork()失败:%s"
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504
#, c-format
msgid "read() failed: %s"
msgstr "read()失败:%s"
-#: ../src/daemon/main.c:803
+#: ../src/daemon/main.c:647
msgid "Daemon startup failed."
msgstr "åŽå°ç¨‹åºå¯åŠ¨å¤±è´¥ã€‚"
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:649
msgid "Daemon startup successful."
msgstr "åŽå°ç¨‹åºå¯åŠ¨æˆåŠŸã€‚"
-#: ../src/daemon/main.c:875
+#: ../src/daemon/main.c:726
#, c-format
msgid "This is PulseAudio %s"
msgstr "这是 PulseAudio %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:727
#, c-format
msgid "Compilation host: %s"
msgstr "编译主机:%s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:728
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "编译CFLAGS:%s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:731
#, c-format
msgid "Running on host: %s"
msgstr "正在主机上è¿è¡Œï¼š%s"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:734
#, c-format
msgid "Found %u CPUs."
msgstr "找到 %u CPU。"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:736
#, c-format
msgid "Page size is %lu bytes"
msgstr "页é¢å¤§å°ä¸º%lu字节"
-#: ../src/daemon/main.c:888
+#: ../src/daemon/main.c:739
msgid "Compiled with Valgrind support: yes"
msgstr "编译å¯ç”¨Valgrind支æŒï¼šæ˜¯"
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:741
msgid "Compiled with Valgrind support: no"
msgstr "编译å¯ç”¨Valgrind支æŒï¼šå¦"
-#: ../src/daemon/main.c:893
+#: ../src/daemon/main.c:744
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "正在以valgrind模å¼è¿è¡Œï¼š%s"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:747
msgid "Optimized build: yes"
msgstr "优化生æˆï¼šæ˜¯"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:749
msgid "Optimized build: no"
msgstr "优化生æˆï¼šå¦"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:753
msgid "NDEBUG defined, all asserts disabled."
msgstr "æ‹’ç» NDEBUG,ç¦ç”¨æ‰€æœ‰ assert"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:755
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "æ‹’ç» FASTPATH,åªç¦ç”¨å¿«é€Ÿè·¯å¾„ assert。"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:757
msgid "All asserts enabled."
msgstr "å¯ç”¨æ‰€æœ‰ assert。"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:761
msgid "Failed to get machine ID"
msgstr "获å–machine ID失败"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:764
#, c-format
msgid "Machine ID is %s."
msgstr "machine ID是%s。"
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:768
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "machine ID是%s。"
-#: ../src/daemon/main.c:923
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using runtime directory %s."
msgstr "正在使用è¿è¡Œæ—¶æ–‡ä»¶å¤¹%s。"
-#: ../src/daemon/main.c:928
+#: ../src/daemon/main.c:779
#, c-format
msgid "Using state directory %s."
msgstr "正在使用状æ€æ–‡ä»¶å¤¹%s。"
-#: ../src/daemon/main.c:931
+#: ../src/daemon/main.c:782
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "正在使用è¿è¡Œæ—¶æ–‡ä»¶å¤¹%s。"
+
+#: ../src/daemon/main.c:784
#, c-format
msgid "Running in system mode: %s"
msgstr "正在以系统模å¼è¿è¡Œï¼š%s"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:787
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -451,41 +357,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:951
+#: ../src/daemon/main.c:804
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败。"
-#: ../src/daemon/main.c:961
+#: ../src/daemon/main.c:814
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "新鲜的高分辨率计时器开锅了ï¼åƒä¸ªé¥±ï¼"
-#: ../src/daemon/main.c:963
+#: ../src/daemon/main.c:816
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "è€å…„,你的内核真臭ï¼çŽ°åœ¨æµè¡Œçš„是å¯ç”¨äº†é«˜åˆ†è¾©çŽ‡è®¡åˆ†å™¨çš„Linuxï¼"
-#: ../src/daemon/main.c:988
+#: ../src/daemon/main.c:839
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败。"
-#: ../src/daemon/main.c:1050
+#: ../src/daemon/main.c:899
msgid "Failed to initialize daemon."
msgstr "åŽå°ç¨‹åºåˆå§‹åŒ–失败。"
-#: ../src/daemon/main.c:1055
+#: ../src/daemon/main.c:904
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "åŽå°ç¨‹åºå¯åŠ¨æœªåŠ è½½ä»»ä½•æ¨¡å—,拒ç»å·¥ä½œã€‚"
-#: ../src/daemon/main.c:1072
+#: ../src/daemon/main.c:921
msgid "Daemon startup complete."
msgstr "åŽå°ç¨‹åºå¯åŠ¨å®Œæˆã€‚"
-#: ../src/daemon/main.c:1078
+#: ../src/daemon/main.c:927
msgid "Daemon shutdown initiated."
msgstr "开始关闭åŽå°ç¨‹åºã€‚"
-#: ../src/daemon/main.c:1100
+#: ../src/daemon/main.c:949
msgid "Daemon terminated."
msgstr "åŽå°ç¨‹åºå·²ç»ˆæ­¢ã€‚"
@@ -726,90 +632,87 @@ msgstr ""
msgid "Path: %s\n"
msgstr "路径:%s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] 无效的日志目标'%s'。"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] 无效的日志级别'%s'。"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] 无效的é‡é‡‡æ ·æ–¹æ³•'%s'。"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] 无效的rlimit '%s'。"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] 此平å°ä¸æ”¯æŒrlimit。"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] 无效的样å“æ ¼å¼'%s'。"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] 无效的样å“率'%s'。"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] 无效的样å“通é“'%s'。"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] 无效频é“地图 '%s'。"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] 无效的分段数'%s'。"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] 无效的分段大å°'%s'。"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] 无效的nice level '%s'。"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "打开é…置文件失败:%s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:562
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
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### 从é…置文件读å–:%s ###\n"
-#: ../src/daemon/caps.c:63
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "正在å–消 root 特æƒã€‚"
-#: ../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 "PulseAudio 声音系统"
@@ -818,25 +721,7 @@ msgstr "PulseAudio 声音系统"
msgid "Start the PulseAudio Sound System"
msgstr "å¯åŠ¨ PulseAudio 声音系统"
-#: ../src/daemon/org.pulseaudio.policy.in.h:1
-msgid ""
-"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr "PulseAudio 守护进程的高优先调度(负的 Unix nic 等级)"
-
-#: ../src/daemon/org.pulseaudio.policy.in.h:2
-msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio 守护进程的实时调度。"
-
-#: ../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
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "å•å£°é“"
@@ -1040,33 +925,33 @@ msgstr "上左åŽ"
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
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
+#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321
+#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371
msgid "(invalid)"
msgstr "(无效)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "立体声"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "环绕 4.0 "
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "环绕 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "环绕 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "环绕 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "环绕 7.1"
@@ -1170,27 +1055,35 @@ msgstr "缺少部署"
msgid "Client forked"
msgstr "客户端分支"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/error.c:68
+msgid "Input/Output error"
+msgstr ""
+
+#: ../src/pulse/error.c:69
+msgid "Device or resource busy"
+msgstr ""
+
+#: ../src/pulse/sample.c:172
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:184
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:186
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:188
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:190
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1203,188 +1096,192 @@ msgstr "XOpenDisplay()失败"
msgid "Failed to parse cookie data"
msgstr "cookieæ•°æ®åˆ†æžå¤±è´¥"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "打开é…置文件'%s'失败:%s"
-#: ../src/pulse/context.c:546
+#: ../src/pulse/context.c:550
msgid "No cookie loaded. Attempting to connect without."
msgstr "没有加载cookie。å°è¯•ä¸åŠ è½½cookie进行连接。"
-#: ../src/pulse/context.c:676
+#: ../src/pulse/context.c:693
#, c-format
msgid "fork(): %s"
msgstr "fork():%s"
-#: ../src/pulse/context.c:729
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid():%s"
-#: ../src/pulse/context.c:1403
+#: ../src/pulse/context.c:1435
#, 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"
+#: ../src/utils/pacat.c:108
+#, fuzzy, c-format
+msgid "Failed to drain stream: %s"
msgstr "排出æµå¤±è´¥ï¼š%s\n"
-#: ../src/utils/pacat.c:112
-msgid "Playback stream drained.\n"
+#: ../src/utils/pacat.c:113
+#, fuzzy
+msgid "Playback stream drained."
msgstr "æµæ’­æ”¾å®Œæ¯•ã€‚\n"
-#: ../src/utils/pacat.c:122
-msgid "Draining connection to server.\n"
+#: ../src/utils/pacat.c:123
+#, fuzzy
+msgid "Draining connection to server."
msgstr "Draining 连接到æœåŠ¡å™¨ã€‚\n"
-#: ../src/utils/pacat.c:135
-#, c-format
-msgid "pa_stream_drain(): %s\n"
+#: ../src/utils/pacat.c:136
+#, fuzzy, c-format
+msgid "pa_stream_drain(): %s"
msgstr "pa_stream_drain():%s\n"
-#: ../src/utils/pacat.c:158
-#, c-format
-msgid "pa_stream_write() failed: %s\n"
+#: ../src/utils/pacat.c:159
+#, fuzzy, c-format
+msgid "pa_stream_write() failed: %s"
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"
+#: ../src/utils/pacat.c:197
+#, fuzzy, c-format
+msgid "pa_stream_begin_write() failed: %s"
+msgstr "pa_stream_write()失败:%s\n"
+
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, fuzzy, c-format
+msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek()失败:%s\n"
-#: ../src/utils/pacat.c:302
-msgid "Stream successfully created.\n"
+#: ../src/utils/pacat.c:307
+#, fuzzy
+msgid "Stream successfully created."
msgstr "æµåˆ›å»ºæˆåŠŸã€‚\n"
-#: ../src/utils/pacat.c:305
-#, c-format
-msgid "pa_stream_get_buffer_attr() failed: %s\n"
+#: ../src/utils/pacat.c:310
+#, fuzzy, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s"
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"
+#: ../src/utils/pacat.c:314
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
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"
+#: ../src/utils/pacat.c:317
+#, fuzzy, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u"
msgstr "缓冲计é‡ï¼šmaxlength=%u,fragsize=%u\n"
-#: ../src/utils/pacat.c:316
-#, c-format
-msgid "Using sample spec '%s', channel map '%s'.\n"
+#: ../src/utils/pacat.c:321
+#, fuzzy, c-format
+msgid "Using sample spec '%s', channel map '%s'."
msgstr "正在使用样å“规格'%s',通é“映射'%s'。\n"
-#: ../src/utils/pacat.c:320
-#, c-format
-msgid "Connected to device %s (%u, %ssuspended).\n"
+#: ../src/utils/pacat.c:325
+#, fuzzy, c-format
+msgid "Connected to device %s (%u, %ssuspended)."
msgstr "已连接至设备%s (%u,%s挂起)。\n"
-#: ../src/utils/pacat.c:330
-#, c-format
-msgid "Stream error: %s\n"
+#: ../src/utils/pacat.c:335
+#, fuzzy, c-format
+msgid "Stream error: %s"
msgstr "æµé”™è¯¯ï¼š%s\n"
-#: ../src/utils/pacat.c:340
-#, c-format
-msgid "Stream device suspended.%s \n"
+#: ../src/utils/pacat.c:345
+#, fuzzy, c-format
+msgid "Stream device suspended.%s"
msgstr "æµè®¾å¤‡æŒ‚起。%s\n"
-#: ../src/utils/pacat.c:342
-#, c-format
-msgid "Stream device resumed.%s \n"
+#: ../src/utils/pacat.c:347
+#, fuzzy, c-format
+msgid "Stream device resumed.%s"
msgstr "æµè®¾å¤‡æ¢å¤ã€‚%s\n"
-#: ../src/utils/pacat.c:350
-#, c-format
-msgid "Stream underrun.%s \n"
+#: ../src/utils/pacat.c:355
+#, fuzzy, c-format
+msgid "Stream underrun.%s"
msgstr "æµæ¬ è½½è¿è¡Œã€‚%s\n"
-#: ../src/utils/pacat.c:357
-#, c-format
-msgid "Stream overrun.%s \n"
+#: ../src/utils/pacat.c:362
+#, fuzzy, c-format
+msgid "Stream overrun.%s"
msgstr "æµè¶…é™è¿è¡Œã€‚%s\n"
-#: ../src/utils/pacat.c:364
-#, c-format
-msgid "Stream started.%s \n"
+#: ../src/utils/pacat.c:369
+#, fuzzy, c-format
+msgid "Stream started.%s"
msgstr "æµå·²å¯åŠ¨ã€‚%s\n"
-#: ../src/utils/pacat.c:371
-#, c-format
-msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+#: ../src/utils/pacat.c:376
+#, fuzzy, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s"
msgstr "æµç§»è‡³è®¾å¤‡%s (%u,%s挂起)。%s\n"
-#: ../src/utils/pacat.c:371
+#: ../src/utils/pacat.c:376
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:378
-#, c-format
-msgid "Stream buffer attributes changed.%s \n"
+#: ../src/utils/pacat.c:383
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s"
msgstr "更改æµæ¢å‡ºå±žæ€§ã€‚%s\n"
-#: ../src/utils/pacat.c:411
-#, c-format
-msgid "Connection established.%s \n"
+#: ../src/utils/pacat.c:415
+#, fuzzy, c-format
+msgid "Connection established.%s"
msgstr "连接已建立。%s \n"
-#: ../src/utils/pacat.c:414
-#, c-format
-msgid "pa_stream_new() failed: %s\n"
+#: ../src/utils/pacat.c:418
+#, fuzzy, c-format
+msgid "pa_stream_new() failed: %s"
msgstr "pa_stream_new()失败:%s\n"
-#: ../src/utils/pacat.c:442
-#, c-format
-msgid "pa_stream_connect_playback() failed: %s\n"
+#: ../src/utils/pacat.c:446
+#, fuzzy, c-format
+msgid "pa_stream_connect_playback() failed: %s"
msgstr "pa_stream_connect_playback()失败:%s\n"
-#: ../src/utils/pacat.c:448
-#, c-format
-msgid "pa_stream_connect_record() failed: %s\n"
+#: ../src/utils/pacat.c:452
+#, fuzzy, c-format
+msgid "pa_stream_connect_record() failed: %s"
msgstr "pa_stream_connect_playback()失败:%s\n"
-#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
-#, c-format
-msgid "Connection failure: %s\n"
+#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857
+#, fuzzy, c-format
+msgid "Connection failure: %s"
msgstr "连接失败:%s\n"
-#: ../src/utils/pacat.c:495
-msgid "Got EOF.\n"
+#: ../src/utils/pacat.c:499
+#, fuzzy
+msgid "Got EOF."
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"
+#: ../src/utils/pacat.c:536
+#, fuzzy, c-format
+msgid "write() failed: %s"
msgstr "write()失败:%s\n"
-#: ../src/utils/pacat.c:553
-msgid "Got signal, exiting.\n"
+#: ../src/utils/pacat.c:557
+#, fuzzy
+msgid "Got signal, exiting."
msgstr "收到信å·ï¼Œæ­£åœ¨é€€å‡ºã€‚\n"
-#: ../src/utils/pacat.c:567
-#, c-format
-msgid "Failed to get latency: %s\n"
+#: ../src/utils/pacat.c:571
+#, fuzzy, c-format
+msgid "Failed to get latency: %s"
msgstr "获å–传输延迟失败:%s\n"
-#: ../src/utils/pacat.c:572
-#, c-format
-msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+#: ../src/utils/pacat.c:576
+#, fuzzy, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec."
msgstr "时间:%0.3f秒;延迟:%0.0f 微秒。 \r"
-#: ../src/utils/pacat.c:592
-#, c-format
-msgid "pa_stream_update_timing_info() failed: %s\n"
+#: ../src/utils/pacat.c:595
+#, fuzzy, c-format
+msgid "pa_stream_update_timing_info() failed: %s"
msgstr "pa_stream_update_timing_info()失败:%s\n"
#: ../src/utils/pacat.c:605
@@ -1490,135 +1387,140 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953
#, fuzzy, c-format
-msgid "Invalid client name '%s'\n"
+msgid "Invalid client name '%s'"
msgstr "无效的通é“映射æè¿°'%s'\n"
-#: ../src/utils/pacat.c:776
+#: ../src/utils/pacat.c:775
#, fuzzy, c-format
-msgid "Invalid stream name '%s'\n"
+msgid "Invalid stream name '%s'"
msgstr "无效的é‡é‡‡æ ·æ–¹æ³•'%s'。"
-#: ../src/utils/pacat.c:813
-#, c-format
-msgid "Invalid channel map '%s'\n"
+#: ../src/utils/pacat.c:812
+#, fuzzy, c-format
+msgid "Invalid channel map '%s'"
msgstr "无效的通é“映射æè¿°'%s'\n"
-#: ../src/utils/pacat.c:842
-#, c-format
-msgid "Invalid latency specification '%s'\n"
+#: ../src/utils/pacat.c:841
+#, fuzzy, c-format
+msgid "Invalid latency specification '%s'"
msgstr "无效的延迟规格æè¿° %s'\n"
-#: ../src/utils/pacat.c:849
-#, c-format
-msgid "Invalid process time specification '%s'\n"
+#: ../src/utils/pacat.c:848
+#, fuzzy, c-format
+msgid "Invalid process time specification '%s'"
msgstr "无效的处ç†æ—¶é—´æè¿° '%s'\n"
-#: ../src/utils/pacat.c:861
+#: ../src/utils/pacat.c:860
#, fuzzy, c-format
-msgid "Invalid property '%s'\n"
+msgid "Invalid property '%s'"
msgstr "无效的é‡é‡‡æ ·æ–¹æ³•'%s'。"
-#: ../src/utils/pacat.c:878
+#: ../src/utils/pacat.c:877
#, c-format
msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:897
-msgid "Invalid sample specification\n"
+#: ../src/utils/pacat.c:896
+#, fuzzy
+msgid "Invalid sample specification"
msgstr "无效的采样æè¿°\n"
-#: ../src/utils/pacat.c:907
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:906
+#, fuzzy, c-format
+msgid "open(): %s"
msgstr "open():%s\n"
-#: ../src/utils/pacat.c:912
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:911
+#, fuzzy, c-format
+msgid "dup2(): %s"
msgstr "dup2():%s\n"
-#: ../src/utils/pacat.c:919
-msgid "Too many arguments.\n"
+#: ../src/utils/pacat.c:918
+#, fuzzy
+msgid "Too many arguments."
msgstr "å‚数过多。\n"
-#: ../src/utils/pacat.c:930
+#: ../src/utils/pacat.c:929
#, fuzzy
-msgid "Failed to generate sample specification for file.\n"
+msgid "Failed to generate sample specification for file."
msgstr "获å–采样信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pacat.c:950
+#: ../src/utils/pacat.c:949
#, fuzzy
-msgid "Failed to open audio file.\n"
+msgid "Failed to open audio file."
msgstr "打开声音文件失败。\n"
-#: ../src/utils/pacat.c:956
+#: ../src/utils/pacat.c:955
+#, fuzzy
msgid ""
"Warning: specified sample specification will be overwritten with "
-"specification from file.\n"
-msgstr ""
+"specification from file."
+msgstr "以采样规格'%s'打开%sæµã€‚\n"
-#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944
+#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997
#, fuzzy
-msgid "Failed to determine sample specification from file.\n"
+msgid "Failed to determine sample specification from file."
msgstr "获å–采样信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pacat.c:968
-msgid "Warning: Failed to determine channel map from file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:967
+#, fuzzy
+msgid "Warning: Failed to determine channel map from file."
+msgstr "以采样规格'%s'打开%sæµã€‚\n"
-#: ../src/utils/pacat.c:979
-msgid "Channel map doesn't match sample specification\n"
+#: ../src/utils/pacat.c:978
+#, fuzzy
+msgid "Channel map doesn't match sample specification"
msgstr "通é“映射与采样æè¿°ä¸åŒ¹é…\n"
-#: ../src/utils/pacat.c:990
-msgid "Warning: failed to write channel map to file.\n"
-msgstr ""
+#: ../src/utils/pacat.c:989
+#, fuzzy
+msgid "Warning: failed to write channel map to file."
+msgstr "以采样规格'%s'打开%sæµã€‚\n"
-#: ../src/utils/pacat.c:1005
+#: ../src/utils/pacat.c:1004
#, fuzzy, c-format
msgid ""
-"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr "以采样规格'%s'打开%sæµã€‚\n"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
msgid "recording"
msgstr "正在录制"
-#: ../src/utils/pacat.c:1006
+#: ../src/utils/pacat.c:1005
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"
+#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267
+#, fuzzy
+msgid "pa_mainloop_new() failed."
msgstr "pa_mainloop_new()失败。\n"
-#: ../src/utils/pacat.c:1051
-msgid "io_new() failed.\n"
+#: ../src/utils/pacat.c:1050
+#, fuzzy
+msgid "io_new() failed."
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"
+#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279
+#, fuzzy
+msgid "pa_context_new() failed."
msgstr "pa_context_new()失败。\n"
-#: ../src/utils/pacat.c:1066
-#, fuzzy, c-format
-msgid "pa_context_connect() failed: %s\n"
+#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285
+#, c-format
+msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect()失败:%s"
-#: ../src/utils/pacat.c:1077
-msgid "time_new() failed.\n"
-msgstr "time_new()失败。\n"
+#: ../src/utils/pacat.c:1071
+#, fuzzy
+msgid "pa_context_rttime_new() failed."
+msgstr "pa_context_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"
+#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290
+#, fuzzy
+msgid "pa_mainloop_run() failed."
msgstr "pa_mainloop_run()失败。\n"
#: ../src/utils/pasuspender.c:81
@@ -1646,7 +1548,12 @@ msgstr "æ¢å¤å¤±è´¥ï¼š%s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "警告:éžæœ¬åœ°å£°éŸ³æœåŠ¡å™¨ï¼Œä¸ä¼šæŒ‚起。\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:159
+#, c-format
+msgid "Connection failure: %s\n"
+msgstr "连接失败:%s\n"
+
+#: ../src/utils/pasuspender.c:176
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "收到SIGINT,正在退出。\n"
@@ -1685,32 +1592,47 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pasuspender.c:277
#, c-format
-msgid "Failed to get statistics: %s\n"
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new()失败。\n"
+
+#: ../src/utils/pasuspender.c:290
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new()失败。\n"
+
+#: ../src/utils/pasuspender.c:298
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run()失败。\n"
+
+#: ../src/utils/pactl.c:135
+#, fuzzy, c-format
+msgid "Failed to get statistics: %s"
msgstr "获å–统计数æ®å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:134
+#: ../src/utils/pactl.c:141
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "当å‰ä½¿ç”¨ï¼š%uå—,总共%s字节。\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:144
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "整个生命周期所得分é…:%uå—,总共%s字节。\n"
-#: ../src/utils/pactl.c:140
+#: ../src/utils/pactl.c:147
#, 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"
+#: ../src/utils/pactl.c:156
+#, fuzzy, c-format
+msgid "Failed to get server information: %s"
msgstr "获å–æœåŠ¡å™¨ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:157
+#: ../src/utils/pactl.c:164
#, c-format
msgid ""
"User name: %s\n"
@@ -1733,12 +1655,12 @@ msgstr ""
"默认æºï¼š %s\n"
"Cookie:%08x\n"
-#: ../src/utils/pactl.c:198
-#, c-format
-msgid "Failed to get sink information: %s\n"
+#: ../src/utils/pactl.c:205
+#, fuzzy, c-format
+msgid "Failed to get sink information: %s"
msgstr "获å–音频出å£ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:214
+#: ../src/utils/pactl.c:221
#, c-format
msgid ""
"Sink #%u\n"
@@ -1777,22 +1699,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360
#, fuzzy, c-format
msgid "\tPorts:\n"
msgstr "\tProfiles:\n"
-#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366
#, 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"
+#: ../src/utils/pactl.c:297
+#, fuzzy, c-format
+msgid "Failed to get source information: %s"
msgstr "获å–音频入å£ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:306
+#: ../src/utils/pactl.c:313
#, c-format
msgid ""
"Source #%u\n"
@@ -1831,20 +1753,20 @@ msgstr ""
"\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
+#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588
+#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638
+#: ../src/utils/pactl.c:645
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:368
-#, c-format
-msgid "Failed to get module information: %s\n"
+#: ../src/utils/pactl.c:375
+#, fuzzy, c-format
+msgid "Failed to get module information: %s"
msgstr "获å–模å—ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:386
+#: ../src/utils/pactl.c:393
#, c-format
msgid ""
"Module #%u\n"
@@ -1861,12 +1783,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:405
-#, c-format
-msgid "Failed to get client information: %s\n"
+#: ../src/utils/pactl.c:412
+#, fuzzy, c-format
+msgid "Failed to get client information: %s"
msgstr "获å–客户端信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:423
+#: ../src/utils/pactl.c:430
#, c-format
msgid ""
"Client #%u\n"
@@ -1881,12 +1803,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:440
-#, c-format
-msgid "Failed to get card information: %s\n"
+#: ../src/utils/pactl.c:447
+#, fuzzy, c-format
+msgid "Failed to get card information: %s"
msgstr "获å–声å¡ä¿¡æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:458
+#: ../src/utils/pactl.c:465
#, c-format
msgid ""
"Card #%u\n"
@@ -1903,22 +1825,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:472
+#: ../src/utils/pactl.c:479
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiles:\n"
-#: ../src/utils/pactl.c:478
+#: ../src/utils/pactl.c:485
#, 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"
+#: ../src/utils/pactl.c:496
+#, fuzzy, c-format
+msgid "Failed to get sink input information: %s"
msgstr "获å–音频出å£è¾“入信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:508
+#: ../src/utils/pactl.c:515
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1955,12 +1877,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:547
-#, c-format
-msgid "Failed to get source output information: %s\n"
+#: ../src/utils/pactl.c:554
+#, fuzzy, c-format
+msgid "Failed to get source output information: %s"
msgstr "获å–音频入å£è¾“出信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:567
+#: ../src/utils/pactl.c:574
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1989,12 +1911,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:598
-#, c-format
-msgid "Failed to get sample information: %s\n"
+#: ../src/utils/pactl.c:605
+#, fuzzy, c-format
+msgid "Failed to get sample information: %s"
msgstr "获å–采样信æ¯å¤±è´¥ï¼š%s\n"
-#: ../src/utils/pactl.c:616
+#: ../src/utils/pactl.c:623
#, c-format
msgid ""
"Sample #%u\n"
@@ -2025,21 +1947,27 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
-#, c-format
-msgid "Failure: %s\n"
+#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663
+#, fuzzy, c-format
+msgid "Failure: %s"
msgstr "失败:%s\n"
-#: ../src/utils/pactl.c:680
-#, c-format
-msgid "Failed to upload sample: %s\n"
+#: ../src/utils/pactl.c:687
+#, fuzzy, c-format
+msgid "Failed to upload sample: %s"
msgstr "上传采样失败:%s\n"
-#: ../src/utils/pactl.c:697
-msgid "Premature end of file\n"
+#: ../src/utils/pactl.c:704
+#, fuzzy
+msgid "Premature end of file"
msgstr "文件过早结æŸ\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:863
+#, fuzzy
+msgid "Got SIGINT, exiting."
+msgstr "收到SIGINT,正在退出。\n"
+
+#: ../src/utils/pactl.c:869
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2048,15 +1976,21 @@ msgid ""
"%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] move-sink-input SINKINPUT SINK\n"
+"%s [options] move-source-output SOURCEOUTPUT 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"
+"%s [options] unload-module MODULE\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"
+"%s [options] set-sink-volume SINK VOLUME\n"
+"%s [options] set-source-volume SOURCE VOLUME\n"
+"%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+"%s [options] set-sink-mute SINK 1|0\n"
+"%s [options] set-source-mute SOURCE 1|0\n"
+"%s [options] set-sink-input-mute SINKINPUT 1|0\n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
@@ -2088,7 +2022,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:880
+#: ../src/utils/pactl.c:933
#, c-format
msgid ""
"pactl %s\n"
@@ -2099,77 +2033,129 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:926
-msgid "Please specify a sample file to load\n"
+#: ../src/utils/pactl.c:979
+#, fuzzy
+msgid "Please specify a sample file to load"
msgstr "请指定è¦åŠ è½½çš„采样文件\n"
-#: ../src/utils/pactl.c:939
-msgid "Failed to open sound file.\n"
+#: ../src/utils/pactl.c:992
+#, fuzzy
+msgid "Failed to open sound file."
msgstr "打开声音文件失败。\n"
-#: ../src/utils/pactl.c:951
+#: ../src/utils/pactl.c:1004
#, fuzzy
-msgid "Warning: Failed to determine sample specification from file.\n"
+msgid "Warning: Failed to determine sample specification from file."
msgstr "以采样规格'%s'打开%sæµã€‚\n"
-#: ../src/utils/pactl.c:961
-msgid "You have to specify a sample name to play\n"
+#: ../src/utils/pactl.c:1014
+#, fuzzy
+msgid "You have to specify a sample name to play"
msgstr "你必须指定è¦æ’­æ”¾çš„采样å\n"
-#: ../src/utils/pactl.c:973
-msgid "You have to specify a sample name to remove\n"
+#: ../src/utils/pactl.c:1026
+#, fuzzy
+msgid "You have to specify a sample name to remove"
msgstr "你必须指定è¦åˆ é™¤çš„采样å\n"
-#: ../src/utils/pactl.c:982
-msgid "You have to specify a sink input index and a sink\n"
+#: ../src/utils/pactl.c:1035
+#, fuzzy
+msgid "You have to specify a sink input index and a sink"
msgstr "你必须指定音频出å£ç´¢å¼•å’ŒéŸ³é¢‘出å£\n"
-#: ../src/utils/pactl.c:992
-msgid "You have to specify a source output index and a source\n"
+#: ../src/utils/pactl.c:1045
+#, fuzzy
+msgid "You have to specify a source output index and a source"
msgstr "你必须指定音频入å£è¾“出索引和音频入å£\n"
-#: ../src/utils/pactl.c:1007
-msgid "You have to specify a module name and arguments.\n"
+#: ../src/utils/pactl.c:1060
+#, fuzzy
+msgid "You have to specify a module name and arguments."
msgstr "必须指定模å—åå’Œå‚数。\n"
-#: ../src/utils/pactl.c:1027
-msgid "You have to specify a module index\n"
+#: ../src/utils/pactl.c:1080
+#, fuzzy
+msgid "You have to specify a module index"
msgstr "必须指定模å—索引\n"
-#: ../src/utils/pactl.c:1037
+#: ../src/utils/pactl.c:1090
+#, fuzzy
msgid ""
-"You may not specify more than one sink. You have to specify a boolean "
-"value.\n"
+"You may not specify more than one sink. You have to specify a boolean value."
msgstr "ä¸å¯æŒ‡å®šå¤šä¸ªéŸ³é¢‘出å£ã€‚必须指定一个布尔值。\n"
-#: ../src/utils/pactl.c:1050
+#: ../src/utils/pactl.c:1103
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
-"value.\n"
+"value."
msgstr "ä¸å¯æŒ‡å®šå¤šä¸ªæºã€‚必须指定一个布尔值。\n"
-#: ../src/utils/pactl.c:1062
-msgid "You have to specify a card name/index and a profile name\n"
+#: ../src/utils/pactl.c:1115
+#, fuzzy
+msgid "You have to specify a card name/index and a profile name"
msgstr "你必须指定声å¡å称/索引和侧写å称\n"
-#: ../src/utils/pactl.c:1073
+#: ../src/utils/pactl.c:1126
#, fuzzy
-msgid "You have to specify a sink name/index and a port name\n"
+msgid "You have to specify a sink name/index and a port name"
msgstr "你必须指定声å¡å称/索引和侧写å称\n"
-#: ../src/utils/pactl.c:1084
+#: ../src/utils/pactl.c:1137
#, fuzzy
-msgid "You have to specify a source name/index and a port name\n"
+msgid "You have to specify a source name/index and a port name"
msgstr "你必须指定声å¡å称/索引和侧写å称\n"
-#: ../src/utils/pactl.c:1099
-msgid "No valid command specified.\n"
-msgstr "未指定有效的命令。\n"
+#: ../src/utils/pactl.c:1149
+#, fuzzy
+msgid "You have to specify a sink name/index and a volume"
+msgstr "你必须指定声å¡å称/索引和侧写å称\n"
-#: ../src/utils/pactl.c:1122
-#, c-format
-msgid "pa_context_connect() failed: %s"
-msgstr "pa_context_connect()失败:%s"
+#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171
+#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209
+#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248
+#, fuzzy
+msgid "Invalid volume specification"
+msgstr "无效的采样æè¿°\n"
+
+#: ../src/utils/pactl.c:1166
+#, fuzzy
+msgid "You have to specify a source name/index and a volume"
+msgstr "你必须指定声å¡å称/索引和侧写å称\n"
+
+#: ../src/utils/pactl.c:1183
+#, fuzzy
+msgid "You have to specify a sink input index and a volume"
+msgstr "你必须指定音频出å£ç´¢å¼•å’ŒéŸ³é¢‘出å£\n"
+
+#: ../src/utils/pactl.c:1188
+msgid "Invalid sink input index"
+msgstr ""
+
+#: ../src/utils/pactl.c:1204
+#, fuzzy
+msgid "You have to specify a sink name/index and a mute boolean"
+msgstr "你必须指定声å¡å称/索引和侧写å称\n"
+
+#: ../src/utils/pactl.c:1221
+#, fuzzy
+msgid "You have to specify a source name/index and a mute boolean"
+msgstr "你必须指定声å¡å称/索引和侧写å称\n"
+
+#: ../src/utils/pactl.c:1238
+#, fuzzy
+msgid "You have to specify a sink input index and a mute boolean"
+msgstr "你必须指定音频出å£ç´¢å¼•å’ŒéŸ³é¢‘出å£\n"
+
+#: ../src/utils/pactl.c:1243
+#, fuzzy
+msgid "Invalid sink input index specification"
+msgstr "无效的采样æè¿°\n"
+
+#: ../src/utils/pactl.c:1262
+#, fuzzy
+msgid "No valid command specified."
+msgstr "未指定有效的命令。\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -2249,48 +2235,48 @@ msgstr "加载cookieæ•°æ®å¤±è´¥\n"
msgid "Not yet implemented.\n"
msgstr "尚未实现。\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0):%s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect():%s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "æ€æ­»PulseAudioåŽå°ç¨‹åºå¤±è´¥ã€‚"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "åŽå°ç¨‹åºæœªå“应。"
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select():%s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork():%s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read():%s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write():%s"
-#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "ä¸èƒ½è®¿é—®autospawné”。"
-#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593
+#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2306,7 +2292,7 @@ msgstr ""
"æ醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者å¦ä¸€ä¸ªå°äºŽæœ€å°å¯"
"用值的数值。"
-#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563
+#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2323,15 +2309,20 @@ msgstr ""
"用值的数值。"
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2062
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2228
msgid "Off"
msgstr "关闭"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2032
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2184
msgid "High Fidelity Playback (A2DP)"
msgstr "高ä¿çœŸå›žæ”¾ï¼ˆA2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2047
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2198
+#, fuzzy
+msgid "High Fidelity Capture (A2DP)"
+msgstr "高ä¿çœŸå›žæ”¾ï¼ˆA2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2213
msgid "Telephony Duplex (HSP/HFP)"
msgstr "åŒå·¥ç”µè¯ï¼ˆHSP/HFP)"
@@ -2339,6 +2330,136 @@ msgstr "åŒå·¥ç”µè¯ï¼ˆHSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio 声音æœåŠ¡å™¨"
+#, fuzzy
+#~ msgid "Invalid client name '%s'\n"
+#~ msgstr "无效的通é“映射æè¿°'%s'\n"
+
+#, fuzzy
+#~ msgid "Failed to determine sample specification from file.\n"
+#~ msgstr "获å–采样信æ¯å¤±è´¥ï¼š%s\n"
+
+#~ msgid "select(): %s"
+#~ msgstr "select():%s"
+
+#~ msgid "Cannot connect to system bus: %s"
+#~ msgstr "无法连接到系统总线:%s"
+
+#~ msgid "Cannot get caller from PID: %s"
+#~ msgstr "无法从PID获å–调用者:%s"
+
+#~ msgid "Cannot set UID on caller object."
+#~ msgstr "无法为调用者设定UID。"
+
+#~ msgid "Failed to get CK session."
+#~ msgstr "获å–CK会è¯å¤±è´¥ã€‚"
+
+#~ msgid "Cannot set UID on session object."
+#~ msgstr "无法为会è¯å¯¹è±¡è®¾å®šUID。"
+
+#~ msgid "Cannot allocate PolKitAction."
+#~ msgstr "ä¸èƒ½åˆ†é…PolKitAction。"
+
+#~ msgid "Cannot set action_id"
+#~ msgstr "无法设定action_id"
+
+#~ msgid "Cannot allocate PolKitContext."
+#~ msgstr "无法分é…PolKitContext。"
+
+#~ msgid "Cannot initialize PolKitContext: %s"
+#~ msgstr "无法åˆä½¿åŒ–PolKitContext: %s"
+
+#~ msgid "Could not determine whether caller is authorized: %s"
+#~ msgstr "无法判断调用者是å¦å·²èŽ·å¾—授æƒ: %s"
+
+#~ msgid "Cannot obtain auth: %s"
+#~ msgstr "无法获å–授æƒ: %s"
+
+#~ msgid "PolicyKit responded with '%s'"
+#~ msgstr "PolicyKit回å¤'%s'"
+
+#~ msgid ""
+#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
+#~ "daemon"
+#~ msgstr "PulseAudio 守护进程的高优先调度(负的 Unix nic 等级)"
+
+#~ msgid "Real-time scheduling for the PulseAudio daemon"
+#~ msgstr "PulseAudio 守护进程的实时调度。"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
+#~ msgstr "系统策略防止 PulseAudio 获得高优先调度。"
+
+#~ msgid ""
+#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
+#~ msgstr "系统策略防止 PulseAudio 获得实时调度。"
+
+#~ msgid "read() failed: %s\n"
+#~ msgstr "read()失败:%s\n"
+
+#, fuzzy
+#~ msgid "pa_context_connect() failed: %s\n"
+#~ msgstr "pa_context_connect()失败:%s"
+
+#~ msgid "We're in the group '%s', allowing high-priority scheduling."
+#~ msgstr "我们在'%s'组中,å…许高优先级调度。"
+
+#~ msgid "We're in the group '%s', allowing real-time scheduling."
+#~ msgstr "我们在'%s'组中,å…许实时调度。"
+
+#~ msgid "PolicyKit grants us acquire-high-priority privilege."
+#~ msgstr "PolicyKit授予我们“获å–高优先级â€æƒé™ã€‚"
+
+#~ msgid "PolicyKit refuses acquire-high-priority privilege."
+#~ msgstr "PolicyKitæ‹’ç»â€œèŽ·å–高优先级â€æƒé™ã€‚"
+
+#~ msgid "PolicyKit grants us acquire-real-time privilege."
+#~ msgstr "PolicyKit授予我们“获å–实时â€æƒé™ã€‚"
+
+#~ msgid "PolicyKit refuses acquire-real-time privilege."
+#~ msgstr "PolicyKitæ‹’ç»æˆ‘们“获å–实时â€æƒé™ã€‚"
+
+#~ 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 rootã€å®žæ—¶å’Œ/或者高优先调度。但是我们缺少必è¦çš„特"
+#~ "æƒï¼š\n"
+#~ "我们ä¸å±žäºŽç»„群 '%s',PolicyKit æ‹’ç»èµ‹äºˆæˆ‘们è¦æ±‚的特æƒï¼Œè€Œæˆ‘们无法增加 "
+#~ "RLIMIT_NICE/RLIMIT_RTPRIO 资æºé™åˆ¶ã€‚\n"
+#~ "è¦å¯ç”¨å®žæ—¶/高优先调度,请获得适当的 PolicyKit 特æƒï¼Œæˆ–者æˆä¸º '%s' æˆå‘˜ï¼Œä¹Ÿ"
+#~ "å¯ä»¥ä¸ºè¿™ä¸ªç”¨æˆ·å¢žåŠ  RLIMIT_NICE/RLIMIT_RTPRIO 资æºé™åˆ¶ã€‚"
+
+#~ msgid ""
+#~ "High-priority scheduling enabled in configuration but not allowed by "
+#~ "policy."
+#~ msgstr "é…置中已å¯ç”¨é«˜ä¼˜å…ˆçº§è°ƒåº¦ï¼Œä½†ç­–略未å…许。"
+
+#~ msgid "Successfully increased RLIMIT_RTPRIO"
+#~ msgstr "æ高RLIMIT_RTPRIOæˆåŠŸã€‚"
+
+#~ msgid "RLIMIT_RTPRIO failed: %s"
+#~ msgstr "RLIMIT_RTPRIO失败:%s"
+
+#~ msgid "Giving up CAP_NICE"
+#~ msgstr "正在放弃CAP_NICE"
+
+#~ msgid ""
+#~ "Real-time scheduling enabled in configuration but not allowed by policy."
+#~ msgstr "é…置中已å¯ç”¨å®žæ—¶è°ƒåº¦ï¼Œä½†ç­–略未å…许。"
+
+#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
+#~ msgstr "性能æˆåŠŸé™åˆ¶åˆ°CAP_SYS_NICE。"
+
+#~ msgid "time_new() failed.\n"
+#~ msgstr "time_new()失败。\n"
+
#~ msgid "Analog Mono"
#~ msgstr "模拟å•å£°é“"
@@ -2375,9 +2496,6 @@ msgstr "PulseAudio 声音æœåŠ¡å™¨"
#~ msgid "Output %s + Input %s"
#~ msgstr "输出 %s + 输入 %s"
-#~ msgid "Output %s"
-#~ msgstr "输出 %s"
-
#~ msgid "Input %s"
#~ msgstr "输入 %s"
diff --git a/pulseaudio.vapi b/pulseaudio.vapi
new file mode 100644
index 00000000..cf0e82e0
--- /dev/null
+++ b/pulseaudio.vapi
@@ -0,0 +1,1463 @@
+/***
+ 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.
+***/
+
+using GLib;
+using Posix;
+
+[CCode (cheader_filename="pulse/pulseaudio.h")]
+namespace Pulse {
+
+ [CCode (cname="pa_get_library_version")]
+ public unowned string get_library_version();
+
+ [CCode (cname="PA_API_VERSION")]
+ public const int API_VERSION;
+
+ [CCode (cname="PA_PROTOCOL_VERSION")]
+ public const int PROTOCOL_VERSION;
+
+ [CCode (cname="PA_MAJOR")]
+ public const int MAJOR;
+
+ [CCode (cname="PA_MINOR")]
+ public const int MINOR;
+
+ [CCode (cname="PA_MICRO")]
+ public const int MICRO;
+
+ [CCode (cname="PA_CHECK_VERSION")]
+ public bool CHECK_VERSION(int major, int minor, int micro);
+
+ [CCode (cname="INVALID_INDEX")]
+ public const uint32 INVALID_INDEX;
+
+ [CCode (cname="pa_free_cb_t")]
+ public delegate void FreeCb(void *p);
+
+ [CCode (cname="pa_sample_format_t", cprefix="PA_SAMPLE_")]
+ public enum SampleFormat {
+ U8,
+ ALAW,
+ ULAW,
+ S16LE,
+ S16BE,
+ FLOAT32LE,
+ FLOAT32BE,
+ S32LE,
+ S32BE,
+ S24LE,
+ S24BE,
+ S24_32LE,
+ S24_32BE,
+ MAX,
+ S16NE,
+ S16RE,
+ FLOAT32NE,
+ FLOAT32RE,
+ S32NE,
+ S32RE,
+ S24NE,
+ S24RE,
+ S24_32NE,
+ S24_32RE;
+
+ [CCode (cname="pa_sample_size_of_format")]
+ public size_t size();
+
+ [CCode (cname="pa_sample_format_to_string")]
+ public unowned string? to_string();
+
+ [CCode (cname="pa_sample_format_is_le")]
+ public int is_le();
+
+ [CCode (cname="pa_sample_format_is_be")]
+ public int is_be();
+
+ [CCode (cname="pa_sample_format_is_ne")]
+ public int is_ne();
+
+ [CCode (cname="pa_sample_format_is_re")]
+ public int is_re();
+
+ [CCode (cname="pa_parse_sample_format")]
+ public static SampleFormat parse(string b);
+ }
+
+ [CCode (cname="pa_usec_t")]
+ public struct usec : uint64 {
+ }
+
+ [CCode (cname="pa_sample_spec")]
+ public struct SampleSpec {
+ public SampleFormat format;
+ public uint32 rate;
+ public uint8 channels;
+
+ [CCode (cname="PA_SAMPLE_SPEC_SNPRINT_MAX")]
+ public static const size_t SNPRINT_MAX;
+
+ [CCode (cname="pa_bytes_per_second")]
+ public size_t bytes_per_second();
+
+ [CCode (cname="pa_frame_size")]
+ public size_t frame_size();
+
+ [CCode (cname="pa_sample_size")]
+ public size_t sample_size();
+
+ [CCode (cname="pa_bytes_to_usec", instance_pos=1.1)]
+ public usec bytes_to_usec(size_t size);
+
+ [CCode (cname="pa_usec_to_bytes", instance_pos=1.1)]
+ public size_t usec_to_bytes(usec u);
+
+ [CCode (cname="pa_sample_spec_init")]
+ public unowned SampleSpec? init();
+
+ [CCode (cname="pa_sample_spec_valid")]
+ public bool valid();
+
+ [CCode (cname="pa_sample_spec_equal")]
+ public bool equal(SampleSpec other);
+
+ [CCode (cname="pa_sample_spec_snprint", instance_pos=3.1)]
+ public unowned string snprint(char[] buf);
+
+ public string sprint() {
+ var buffer = new char[SNPRINT_MAX];
+ this.snprint(buffer);
+ return (string) buffer;
+ }
+
+ public string to_string() {
+ return sprint();
+ }
+
+ [CCode (cname="pa_sample_spec_init")]
+ SampleSpec();
+ }
+
+ // [CCode (cname="PA_BYTES_SNPRINT_MAX")]
+ [CCode (cname="PA_SAMPLE_SPEC_SNPRINT_MAX")]
+ public const size_t BYTES_SNPRINT_MAX;
+
+ [CCode (cname="pa_bytes_snprint")]
+ public unowned string bytes_snprint(char[] buf, uint bytes);
+
+ public string bytes_sprint(uint bytes) {
+ var buffer = new char[BYTES_SNPRINT_MAX];
+ bytes_snprint(buffer, bytes);
+ return (string) buffer;
+ }
+
+ [CCode (cname="pa_volume_t")]
+ public struct Volume : uint32 {
+
+ [CCode (cname="PA_SW_VOLUME_SNPRINT_DB_MAX")]
+ public static const size_t SW_SNPRINT_DB_MAX;
+
+ [CCode (cname="PA_VOLUME_SNPRINT_MAX")]
+ public static const size_t SNPRINT_MAX;
+
+ [CCode (cname="PA_VOLUME_MAX")]
+ public static const Volume MAX;
+
+ [CCode (cname="PA_VOLUME_NORM")]
+ public static const Volume NORM;
+
+ [CCode (cname="PA_VOLUME_MUTED")]
+ public static const Volume MUTED;
+
+ // [CCode (cname="PA_VOLUME_INVALID")]
+ [CCode (cname="PA_VOLUME_MAX")]
+ public static const Volume INVALID;
+
+ [CCode (cname="pa_volume_snprint", instance_pos = 3.1)]
+ public unowned string snprint(char[] s);
+
+ public string sprint() {
+ var buffer = new char[SNPRINT_MAX];
+ this.snprint(buffer);
+ return (string) buffer;
+ }
+
+ public string to_string() {
+ return sprint();
+ }
+
+ [CCode (cname="pa_sw_volume_snprint_dB", instance_pos = 3.1)]
+ public unowned string sw_snprint_dB(char[] s);
+
+ public string sw_sprint_dB() {
+ var buffer = new char[SW_SNPRINT_DB_MAX];
+ this.sw_snprint_dB(buffer);
+ return (string) buffer;
+ }
+
+ [CCode (cname="pa_sw_volume_multiply")]
+ public Volume sw_multiply(Volume other);
+
+ [CCode (cname="pa_sw_volume_divide")]
+ public Volume sw_divide(Volume other);
+
+ [CCode (cname="pa_sw_volume_from_dB")]
+ public static Volume sw_from_dB(double f);
+
+ [CCode (cname="pa_sw_volume_to_dB")]
+ public double sw_to_dB();
+
+ [CCode (cname="pa_sw_volume_from_linear")]
+ public static Volume sw_from_linear(double f);
+
+ [CCode (cname="pa_sw_volume_to_linear")]
+ public double sw_to_linear();
+ }
+
+ [CCode (cname="PA_DECIBEL_MININFTY")]
+ public const double DECIBEL_MININFTY;
+
+ [CCode (cname="PA_CHANNELS_MAX")]
+ public const int CHANNELS_MAX;
+
+ [CCode (cname="PA_CHANNELS_MAX")]
+ public const int RATE_MAX;
+
+ [CCode (cname="pa_cvolume")]
+ public struct CVolume {
+ public uint8 channels;
+ public Volume values[];
+
+ [CCode (cname="PA_SW_CVOLUME_SNPRINT_DB_MAX")]
+ public static const size_t SW_SNPRINT_DB_MAX;
+
+ [CCode (cname="PA_CVOLUME_SNPRINT_MAX")]
+ public static const size_t SNPRINT_MAX;
+
+ [CCode (cname="pa_cvolume_equal")]
+ public bool equal(CVolume other);
+
+ [CCode (cname="pa_cvolume_init")]
+ public unowned CVolume? init();
+
+ [CCode (cname="pa_cvolume_reset")]
+ public unowned CVolume? reset(uint8 channels);
+
+ [CCode (cname="pa_cvolume_mute")]
+ public unowned CVolume? mute(uint8 channels);
+
+ [CCode (cname="pa_cvolume_snprint", instance_pos = 3.1)]
+ public unowned string snprint(char[] s);
+
+ public string sprint() {
+ var buffer = new char[SNPRINT_MAX];
+ this.snprint(buffer);
+ return (string) buffer;
+ }
+
+ public string to_string() {
+ return sprint();
+ }
+
+ [CCode (cname="pa_sw_cvolume_snprint_dB", instance_pos = 3.1)]
+ public unowned string sw_snprint_dB(char [] s);
+
+ public string sw_sprint_dB() {
+ var buffer = new char[SW_SNPRINT_DB_MAX];
+ this.sw_snprint_dB(buffer);
+ return (string) buffer;
+ }
+
+ [CCode (cname="pa_cvolume_init")]
+ public CVolume();
+
+ [CCode (cname="pa_cvolume_avg")]
+ public Volume avg();
+
+ [CCode (cname="pa_cvolume_max")]
+ public Volume max();
+
+ [CCode (cname="pa_cvolume_min")]
+ public Volume min();
+
+ [CCode (cname="pa_cvolume_avg_mask")]
+ public Volume avg_mask(ChannelMap map, ChannelPositionMask mask);
+
+ [CCode (cname="pa_cvolume_max_mask")]
+ public Volume max_mask(ChannelMap map, ChannelPositionMask mask);
+
+ [CCode (cname="pa_cvolume_min_mask")]
+ public Volume min_mask(ChannelMap map, ChannelPositionMask mask);
+
+ [CCode (cname="pa_cvolume_valid")]
+ public bool valid();
+
+ [CCode (cname="pa_cvolume_channels_equal_to")]
+ public bool channels_equal_to(Volume other);
+
+ [CCode (cname="pa_cvolume_is_muted")]
+ public bool is_muted();
+
+ [CCode (cname="pa_cvolume_is_norm")]
+ public bool is_norm();
+
+ [CCode (cname="pa_sw_cvolume_multiply")]
+ public unowned CVolume? multiply(CVolume other);
+
+ [CCode (cname="pa_sw_cvolume_divide")]
+ public unowned CVolume? divide(CVolume other);
+
+ [CCode (cname="pa_sw_cvolume_multiply_scalar")]
+ public unowned CVolume? multiply_scalar(Volume other);
+
+ [CCode (cname="pa_sw_cvolume_divide_scalar")]
+ public unowned CVolume? divide_scalar(Volume other);
+
+ [CCode (cname="pa_cvolume_remap")]
+ public unowned CVolume? remap(ChannelMap from, ChannelMap to);
+
+ [CCode (cname="pa_cvolume_compatible")]
+ public bool compatible(SampleSpec ss);
+
+ [CCode (cname="pa_cvolume_compatible_with_channel_map")]
+ public bool compatible_with_channel_map(ChannelMap cm);
+
+ [CCode (cname="pa_cvolume_get_balance")]
+ public float get_balance(ChannelMap map);
+
+ [CCode (cname="pa_cvolume_set_balance")]
+ public unowned CVolume? set_balance(ChannelMap map, float b);
+
+ [CCode (cname="pa_cvolume_get_fade")]
+ public float get_fade(ChannelMap map);
+
+ [CCode (cname="pa_cvolume_set_fade")]
+ public unowned CVolume? set_fade(ChannelMap map, float f);
+
+ [CCode (cname="pa_cvolume_scale")]
+ public unowned CVolume? scale(Volume max);
+
+ [CCode (cname="pa_cvolume_scale_mask")]
+ public unowned CVolume? scale_mask(Volume max, ChannelMap map, ChannelPositionMask mask);
+
+ [CCode (cname="pa_cvolume_set_position")]
+ public unowned CVolume? set_position(ChannelMap map, ChannelPosition p, Volume v);
+
+ [CCode (cname="pa_cvolume_get_position")]
+ public Volume get_position(ChannelMap map, ChannelPosition p);
+
+ [CCode (cname="pa_cvolume_merge")]
+ public unowned CVolume? merge(CVolume other);
+
+ [CCode (cname="pa_cvolume_inc")]
+ public unowned CVolume? inc(Volume plus = 1);
+
+ [CCode (cname="pa_cvolume_dec")]
+ public unowned CVolume? dec(Volume minus = 1);
+ }
+
+ [CCode (cname="pa_channel_map")]
+ public struct ChannelMap {
+ public uint8 channels;
+ public ChannelPosition map[];
+
+ [CCode (cname="PA_CHANNEL_MAP_SNPRINT_MAX")]
+ public static const size_t SNPRINT_MAX;
+
+ [CCode (cname="pa_channel_map_init")]
+ public ChannelMap();
+
+ [CCode (cname="pa_channel_map_init")]
+ public unowned ChannelMap? init();
+
+ [CCode (cname="pa_channel_map_init_mono")]
+ public unowned ChannelMap? init_mono();
+
+ [CCode (cname="pa_channel_map_init_stereo")]
+ public unowned ChannelMap? init_stereo();
+
+ [CCode (cname="pa_channel_map_init_auto")]
+ public unowned ChannelMap? init_auto(uint8 channels, ChannelMapDef def = ChannelMapDef.DEFAULT);
+
+ [CCode (cname="pa_channel_map_init_extend")]
+ public unowned ChannelMap? init_extend(uint8 channels, ChannelMapDef def = ChannelMapDef.DEFAULT);
+
+ [CCode (cname="pa_channel_map_snprint", instance_pos = 3.1)]
+ public unowned string snprint(char[] s);
+
+ public string sprint() {
+ var buffer = new char[SNPRINT_MAX];
+ this.snprint(buffer);
+ return (string) buffer;
+ }
+
+ public string to_string() {
+ return sprint();
+ }
+
+ [CCode (cname="pa_channel_map_parse")]
+ public unowned ChannelMap? parse(string s);
+
+ [CCode (cname="pa_channel_map_equal")]
+ public bool equal(ChannelMap other);
+
+ [CCode (cname="pa_channel_map_superset")]
+ public bool superset(ChannelMap other);
+
+ [CCode (cname="pa_channel_map_valid")]
+ public bool valid();
+
+ [CCode (cname="pa_channel_map_compatible")]
+ public bool compatible(SampleSpec ss);
+
+ [CCode (cname="pa_channel_map_can_balance")]
+ public bool can_balance();
+
+ [CCode (cname="pa_channel_map_can_fade")]
+ public bool can_fade();
+
+ [CCode (cname="pa_channel_map_to_name")]
+ public unowned string? to_name();
+
+ [CCode (cname="pa_channel_map_to_pretty_name")]
+ public unowned string? to_pretty_name();
+
+ [CCode (cname="pa_channel_map_has_position")]
+ public bool has_position(ChannelPosition p);
+
+ [CCode (cname="pa_channel_map_mask")]
+ public ChannelPositionMask mask();
+ }
+
+ [CCode (cname="pa_channel_position_mask_t")]
+ public struct ChannelPositionMask : uint64 {
+ }
+
+ [CCode (cname="pa_channel_position_t", cprefix="PA_CHANNEL_POSITION_")]
+ public enum ChannelPosition {
+ INVALID,
+ MONO,
+ FRONT_LEFT,
+ FRONT_RIGHT,
+ FRONT_CENTER,
+ REAR_CENTER,
+ REAR_LEFT,
+ REAR_RIGHT,
+ LFE,
+ FRONT_LEFT_OF_CENTER,
+ FRONT_RIGHT_OF_CENTER,
+ SIDE_LEFT,
+ SIDE_RIGHT,
+ TOP_CENTER,
+ AUX0,
+ AUX1,
+ AUX2,
+ AUX3,
+ AUX4,
+ AUX5,
+ AUX6,
+ AUX7,
+ AUX8,
+ AUX9,
+ AUX10,
+ AUX11,
+ AUX12,
+ AUX13,
+ AUX14,
+ AUX15,
+ AUX16,
+ AUX17,
+ AUX18,
+ AUX19,
+ AUX20,
+ AUX21,
+ AUX22,
+ AUX23,
+ AUX24,
+ AUX25,
+ AUX26,
+ AUX27,
+ AUX28,
+ AUX29,
+ AUX30,
+ AUX31,
+ MAX;
+
+ [CCode (cname="PA_CHANNEL_POSITION_MASK")]
+ public ChannelPositionMask mask();
+
+ [CCode (cname="pa_channel_position_to_string")]
+ public unowned string? to_string();
+
+ [CCode (cname="pa_channel_position_to_pretty_string")]
+ public unowned string? to_pretty_string();
+
+ [CCode (cname="pa_channel_position_from_string")]
+ public static ChannelPosition from_string(string s);
+ }
+
+ [CCode (cname="pa_channel_map_def_t", cprefix="PA_CHANNEL_MAP_")]
+ public enum ChannelMapDef {
+ AIFF,
+ WAVEEX,
+ AUX,
+ DEFAULT,
+
+ [CCode (cname="PA_CHANNEL_MAP_DEF_MAX")]
+ MAX
+ }
+
+ [Compact]
+ [CCode (cname="pa_proplist", cprefix="pa_proplist_", free_function="pa_proplist_free")]
+ public class Proplist {
+
+ [CCode (cname="PA_PROP_MEDIA_NAME")]
+ public static const string PROP_MEDIA_NAME;
+ [CCode (cname="PA_PROP_MEDIA_TITLE")]
+ public static const string PROP_MEDIA_TITLE;
+ [CCode (cname="PA_PROP_MEDIA_ARTIST")]
+ public static const string PROP_MEDIA_ARTIST;
+ [CCode (cname="PA_PROP_MEDIA_COPYRIGHT")]
+ public static const string PROP_MEDIA_COPYRIGHT;
+ [CCode (cname="PA_PROP_MEDIA_SOFTWARE")]
+ public static const string PROP_MEDIA_SOFTWARE;
+ [CCode (cname="PA_PROP_MEDIA_LANGUAGE")]
+ public static const string PROP_MEDIA_LANGUAGE;
+ [CCode (cname="PA_PROP_MEDIA_FILENAME")]
+ public static const string PROP_MEDIA_FILENAME;
+ [CCode (cname="PA_PROP_MEDIA_ICON_NAME")]
+ public static const string PROP_MEDIA_ICON_NAME;
+ [CCode (cname="PA_PROP_MEDIA_ROLE")]
+ public static const string PROP_MEDIA_ROLE;
+ [CCode (cname="PA_PROP_EVENT_ID")]
+ public static const string PROP_EVENT_ID;
+ [CCode (cname="PA_PROP_EVENT_DESCRIPTION")]
+ public static const string PROP_EVENT_DESCRIPTION;
+ [CCode (cname="PA_PROP_EVENT_MOUSE_X")]
+ public static const string PROP_EVENT_MOUSE_X;
+ [CCode (cname="PA_PROP_EVENT_MOUSE_Y")]
+ public static const string PROP_EVENT_MOUSE_Y;
+ [CCode (cname="PA_PROP_EVENT_MOUSE_HPOS")]
+ public static const string PROP_EVENT_MOUSE_HPOS;
+ [CCode (cname="PA_PROP_EVENT_MOUSE_VPOS")]
+ public static const string PROP_EVENT_MOUSE_VPOS;
+ [CCode (cname="PA_PROP_EVENT_MOUSE_BUTTON")]
+ public static const string PROP_EVENT_MOUSE_BUTTON;
+ [CCode (cname="PA_PROP_WINDOW_NAME")]
+ public static const string PROP_WINDOW_NAME;
+ [CCode (cname="PA_PROP_WINDOW_ID")]
+ public static const string PROP_WINDOW_ID;
+ [CCode (cname="PA_PROP_WINDOW_ICON_NAME")]
+ public static const string PROP_WINDOW_ICON_NAME;
+ [CCode (cname="PA_PROP_WINDOW_X11_DISPLAY")]
+ public static const string PROP_WINDOW_X11_DISPLAY;
+ [CCode (cname="PA_PROP_WINDOW_X11_SCREEN")]
+ public static const string PROP_WINDOW_X11_SCREEN;
+ [CCode (cname="PA_PROP_WINDOW_X11_MONITOR")]
+ public static const string PROP_WINDOW_X11_MONITOR;
+ [CCode (cname="PA_PROP_WINDOW_X11_XID")]
+ public static const string PROP_WINDOW_X11_XID;
+ [CCode (cname="PA_PROP_APPLICATION_NAME")]
+ public static const string PROP_APPLICATION_NAME;
+ [CCode (cname="PA_PROP_APPLICATION_ID")]
+ public static const string PROP_APPLICATION_ID;
+ [CCode (cname="PA_PROP_APPLICATION_VERSION")]
+ public static const string PROP_APPLICATION_VERSION;
+ [CCode (cname="PA_PROP_APPLICATION_ICON_NAME")]
+ public static const string PROP_APPLICATION_ICON_NAME;
+ [CCode (cname="PA_PROP_APPLICATION_LANGUAGE")]
+ public static const string PROP_APPLICATION_LANGUAGE;
+ [CCode (cname="PA_PROP_APPLICATION_PROCESS_ID")]
+ public static const string PROP_APPLICATION_PROCESS_ID;
+ [CCode (cname="PA_PROP_APPLICATION_PROCESS_BINARY")]
+ public static const string PROP_APPLICATION_PROCESS_BINARY;
+ [CCode (cname="PA_PROP_APPLICATION_PROCESS_USER")]
+ public static const string PROP_APPLICATION_PROCESS_USER;
+ [CCode (cname="PA_PROP_APPLICATION_PROCESS_HOST")]
+ public static const string PROP_APPLICATION_PROCESS_HOST;
+ [CCode (cname="PA_PROP_APPLICATION_PROCESS_MACHINE_ID")]
+ public static const string PROP_APPLICATION_PROCESS_MACHINE_ID;
+ [CCode (cname="PA_PROP_APPLICATION_PROCESS_SESSION_ID")]
+ public static const string PROP_APPLICATION_PROCESS_SESSION_ID;
+ [CCode (cname="PA_PROP_DEVICE_STRING")]
+ public static const string PROP_DEVICE_STRING;
+ [CCode (cname="PA_PROP_DEVICE_API")]
+ public static const string PROP_DEVICE_API;
+ [CCode (cname="PA_PROP_DEVICE_DESCRIPTION")]
+ public static const string PROP_DEVICE_DESCRIPTION;
+ [CCode (cname="PA_PROP_DEVICE_BUS_PATH")]
+ public static const string PROP_DEVICE_BUS_PATH;
+ [CCode (cname="PA_PROP_DEVICE_SERIAL")]
+ public static const string PROP_DEVICE_SERIAL;
+ [CCode (cname="PA_PROP_DEVICE_VENDOR_ID")]
+ public static const string PROP_DEVICE_VENDOR_ID;
+ [CCode (cname="PA_PROP_DEVICE_VENDOR_NAME")]
+ public static const string PROP_DEVICE_VENDOR_NAME;
+ [CCode (cname="PA_PROP_DEVICE_PRODUCT_ID")]
+ public static const string PROP_DEVICE_PRODUCT_ID;
+ [CCode (cname="PA_PROP_DEVICE_PRODUCT_NAME")]
+ public static const string PROP_DEVICE_PRODUCT_NAME;
+ [CCode (cname="PA_PROP_DEVICE_CLASS")]
+ public static const string PROP_DEVICE_CLASS;
+ [CCode (cname="PA_PROP_DEVICE_FORM_FACTOR")]
+ public static const string PROP_DEVICE_FORM_FACTOR;
+ [CCode (cname="PA_PROP_DEVICE_BUS")]
+ public static const string PROP_DEVICE_BUS;
+ [CCode (cname="PA_PROP_DEVICE_ICON_NAME")]
+ public static const string PROP_DEVICE_ICON_NAME;
+ [CCode (cname="PA_PROP_DEVICE_ACCESS_MODE")]
+ public static const string PROP_DEVICE_ACCESS_MODE;
+ [CCode (cname="PA_PROP_DEVICE_MASTER_DEVICE")]
+ public static const string PROP_DEVICE_MASTER_DEVICE;
+ [CCode (cname="PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE")]
+ public static const string PROP_DEVICE_BUFFERING_BUFFER_SIZE;
+ [CCode (cname="PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE")]
+ public static const string PROP_DEVICE_BUFFERING_FRAGMENT_SIZE;
+ [CCode (cname="PA_PROP_DEVICE_PROFILE_NAME")]
+ public static const string PROP_DEVICE_PROFILE_NAME;
+ [CCode (cname="PA_PROP_DEVICE_INTENDED_ROLES")]
+ public static const string PROP_DEVICE_INTENDED_ROLES;
+ [CCode (cname="PA_PROP_DEVICE_PROFILE_DESCRIPTION")]
+ public static const string PROP_DEVICE_PROFILE_DESCRIPTION;
+ [CCode (cname="PA_PROP_MODULE_AUTHOR")]
+ public static const string PROP_MODULE_AUTHOR;
+ [CCode (cname="PA_PROP_MODULE_DESCRIPTION")]
+ public static const string PROP_MODULE_DESCRIPTION;
+ [CCode (cname="PA_PROP_MODULE_USAGE")]
+ public static const string PROP_MODULE_USAGE;
+ [CCode (cname="PA_PROP_MODULE_VERSION")]
+ public static const string PROP_MODULE_VERSION;
+
+ [CCode (cname="pa_proplist_new")]
+ public Proplist();
+
+ public int sets(string key, string value);
+ public int setp(string pair);
+
+ [PrintfFormat]
+ public int setf(string key, string format, ...);
+
+ public int set(string key, void* data, size_t size);
+
+ public unowned string? gets(string key);
+
+ public int get(string key, out void* data, out size_t size);
+
+ public void update(UpdateMode mode, Proplist other);
+
+ public void unset(string key);
+
+ [CCode (array_length = false)]
+ public void unset_many(string[] key);
+
+ public unowned string? iterate(ref void* state);
+
+ public string to_string();
+
+ public string to_string_sep(string sep);
+
+ public static Proplist? from_string(string s);
+
+ public int contains(string key);
+
+ public void clear();
+
+ public Proplist copy();
+
+ public uint size();
+
+ public bool is_empty();
+ }
+
+ [CCode (cname="pa_update_mode_t", cprefix="PA_UPDATE_")]
+ public enum UpdateMode {
+ SET,
+ MERGE,
+ REPLACE
+ }
+
+ [CCode (cname="PA_OK")]
+ public const int OK;
+
+ [CCode (cname="int", cprefix="PA_ERR_")]
+ public enum Error {
+ ACCESS,
+ COMMAND,
+ INVALID,
+ EXIST,
+ NOENTITY,
+ CONNECTIONREFUSED,
+ PROTOCOL,
+ TIMEOUT,
+ AUTHKEY,
+ INTERNAL,
+ CONNECTIONTERMINATED,
+ KILLED,
+ INVALIDSERVER,
+ MODINITFAILED,
+ BADSTATE,
+ NODATA,
+ VERSION,
+ TOOLARGE,
+ NOTSUPPORTED,
+ UNKNOWN,
+ NOEXTENSION,
+ OBSOLETE,
+ NOTIMPLEMENTED,
+ FORKED,
+ IO,
+ MAX
+ }
+
+ [CCode (cname="pa_strerror")]
+ public unowned string? strerror(Error e);
+
+ public delegate void VoidFunc();
+
+ [CCode (cname="pa_spawn_api")]
+ public struct SpawnApi {
+ VoidFunc? prefork;
+ VoidFunc? postfork;
+ VoidFunc? atfork;
+ }
+
+ [CCode (cname="pa_io_event_flags_t", cprefix="PA_IO_EVENT_")]
+ public enum IoEventFlags {
+ NULL,
+ INPUT,
+ OUTPUT,
+ HANGUP,
+ ERROR
+ }
+
+ [CCode (cname="pa_io_event")]
+ public struct IoEvent {
+ }
+
+ [CCode (cname="pa_time_event")]
+ public struct TimeEvent {
+ }
+
+ [CCode (cname="pa_defer_event")]
+ public struct DeferEvent {
+ }
+
+ [CCode (cname="pa_signal_event", cprefix="pa_signal_", free_function="pa_signal_free")]
+ public struct SignalEvent {
+
+ [CCode (cname="pa_signal_new")]
+ public SignalEvent(int sig, MainLoopApi.SignalEventCb cb);
+
+ public void set_destroy(MainLoopApi.SignalEventDestroyCb cb);
+ }
+
+ [Compact]
+ [CCode (cname="pa_mainloop_api")]
+ public class MainLoopApi {
+ public void* userdata;
+
+ /* Callbacks for the consumer to implement*/
+ public delegate void IoEventCb(IoEvent e, int fd, IoEventFlags flags);
+ public delegate void IoEventDestroyCb(IoEvent e);
+
+ public delegate void TimeEventCb(TimeEvent e, ref timeval t);
+ public delegate void TimeEventDestroyCb(TimeEvent e);
+
+ public delegate void DeferEventCb(DeferEvent e);
+ public delegate void DeferEventDestroyCb(DeferEvent e);
+
+ public delegate void SignalEventCb(SignalEvent e);
+ public delegate void SignalEventDestroyCb(SignalEvent e);
+
+ /* Callbacks for the provider to implement */
+ public delegate IoEvent IoNewCb(int fd, IoEventFlags flags, IoEventCb cb);
+ public delegate void IoEnableCb(IoEvent e, IoEventFlags flags);
+ public delegate void IoFreeCb(IoEvent e);
+ public delegate void IoSetDestroyCb(IoEvent e, IoEventDestroyCb? cb);
+
+ public delegate TimeEvent TimeNewCb(ref timeval? t, TimeEventCb cb);
+ public delegate void TimeRestartCb(TimeEvent e, ref timeval? t);
+ public delegate void TimeFreeCb(TimeEvent e);
+ public delegate void TimeSetDestroyCb(TimeEvent e, TimeEventDestroyCb? cb);
+
+ public delegate DeferEvent DeferNewCb(DeferEventCb cb);
+ public delegate void DeferEnableCb(DeferEvent e, bool b);
+ public delegate void DeferFreeCb(DeferEvent e);
+ public delegate void DeferSetDestroyCb(DeferEvent e, DeferEventDestroyCb? cb);
+
+ public delegate void QuitCb(int retval);
+
+ public delegate void OnceCb();
+
+ public IoNewCb io_new;
+ public IoEnableCb io_enable;
+ public IoFreeCb io_free;
+ public IoSetDestroyCb io_set_destroy;
+
+ public TimeNewCb time_new;
+ public TimeRestartCb time_restart;
+ public TimeFreeCb time_free;
+ public TimeSetDestroyCb time_set_destroy;
+
+ public DeferNewCb defer_new;
+ public DeferEnableCb defer_enable;
+ public DeferFreeCb defer_free;
+ public DeferSetDestroyCb defer_set_destroy;
+
+ public QuitCb quit;
+
+ [CCode (cname="pa_mainloop_api_once")]
+ public void once(OnceCb cb);
+ }
+
+ [CCode (cname="pa_signal_init")]
+ public void signal_init(MainLoopApi api);
+
+ [CCode (cname="pa_signal_done")]
+ public void signal_done();
+
+ [CCode (cname="pa_poll_func")]
+ public delegate int PollFunc(pollfd[] ufds);
+
+ [Compact]
+ [CCode (cname="pa_mainloop", cprefix="pa_mainloop_", free_function="pa_mainloop_free")]
+ public class MainLoop {
+
+ [CCode (cname="pa_mainloop_new")]
+ public MainLoop();
+
+ public int prepare(int timeout = -1);
+ public int poll();
+ public int dispatch();
+ public int get_retval();
+ public int iterate(bool block = true, out int retval = null);
+ public int run(out int retval = null);
+ public unowned MainLoopApi get_api();
+ public void quit(int r);
+ public void wakeup();
+ public void set_poll_func(PollFunc poll_func);
+ }
+
+ [Compact]
+ [CCode (cname="pa_threaded_mainloop", cprefix="pa_threaded_mainloop_", free_function="pa_threaded_mainloop_free")]
+ public class ThreadedMainLoop {
+
+ [CCode (cname="pa_threaded_mainloop_new")]
+ public ThreadedMainLoop();
+
+ public int start();
+ public void stop();
+ public void lock();
+ public void unlock();
+ public void wait();
+ public void signal(bool WaitForAccept = false);
+ public void accept();
+ public int get_retval();
+ public unowned MainLoopApi get_api();
+ public bool in_thread();
+ }
+
+ [Compact]
+ [CCode (cname="pa_glib_mainloop", cprefix="pa_glib_mainloop_", free_function="pa_glib_mainloop_free")]
+ public class GLibMainLoop {
+
+ [CCode (cname="pa_glib_mainloop_new")]
+ public GLibMainLoop();
+
+ public unowned MainLoopApi get_api();
+ }
+
+ [Compact]
+ [CCode (cname="pa_operation", cprefix="pa_operation_", unref_function="pa_operation_unref", ref_function="pa_operation_ref")]
+ public class Operation {
+
+ [CCode (cname="pa_operation_state_t", cprefix="PA_OPERATION_")]
+ public enum State {
+ RUNNING,
+ DONE,
+ CANCELED
+ }
+
+ public void cancel();
+ public State get_state();
+ }
+
+ [Compact]
+ [CCode (cname="pa_context", cprefix="pa_context_", unref_function="pa_context_unref", ref_function="pa_context_ref")]
+ public class Context {
+
+ [CCode (cname="pa_context_flags_t", cprefix="PA_CONTEXT_")]
+ public enum Flags {
+ NOAUTOSPAWN,
+ NOFAIL
+ }
+
+ [CCode (cname="pa_context_state_t", cprefix="PA_CONTEXT_")]
+ public enum State {
+ UNCONNECTED,
+ CONNECTING,
+ AUTHORIZING,
+ SETTING_NAME,
+ READ,
+ FAILED,
+ TERMINATED;
+
+ bool IS_GOOD();
+ }
+
+ [CCode (cname="pa_subscription_mask_t", cprefix="PA_SUBSCRIPTION_MASK_")]
+ public enum SubscriptionMask {
+ NULL,
+ SINK,
+ SOURCE,
+ SINK_INPUT,
+ SOURCE_OUTPUT,
+ MODULE,
+ CLIENT,
+ SAMPLE_CACHE,
+ SERVER,
+ CARD,
+ ALL;
+
+ [CCode (cname="pa_subscription_match_flags")]
+ bool match_flags(SubscriptionEventType t);
+ }
+
+ [CCode (cname="pa_subscription_event_type_t", cprefix="PA_SUBSCRIPTION_EVENT_")]
+ public enum SubscriptionEventType {
+ SINK,
+ SOURCE,
+ SINK_INPUT,
+ SOURCE_OUTPUT,
+ MODULE,
+ CLIENT,
+ SAMPLE_CACHE,
+ SERVER,
+ CARD,
+ FACILITY_MASK,
+ NEW,
+ CHANGE,
+ REMOVE,
+ TYPE_MASK
+ }
+
+ public delegate void NotifyCb();
+ public delegate void SuccessCb(int success);
+ public delegate void EventCb(string name, Proplist? proplist);
+ public delegate void SubscribeCb(SubscriptionEventType t, uint32 idx);
+ public delegate void SinkInfoCb(SinkInfo? i, int eol);
+ public delegate void SourceInfoCb(SourceInfo? i, int eol);
+ public delegate void CardInfoCb(CardInfo? i, int eol);
+ public delegate void SinkInputInfoCb(SinkInputInfo? i, int eol);
+ public delegate void SourceOutputInfoCb(SourceOutputInfo? i, int eol);
+ public delegate void ServerInfoCb(ServerInfo? i);
+ public delegate void StatInfoCb(ServerInfo? i);
+ public delegate void ModuleInfoCb(ModuleInfo? i, int eol);
+ public delegate void ClientInfoCb(ClientInfo? i, int eol);
+ public delegate void SampleInfoCb(SampleInfo? i, int eol);
+ public delegate void IndexCb(uint32 idx);
+
+ [CCode (cname="pa_context_new_with_proplist")]
+ public Context(MainLoopApi api, string? name, Proplist? proplist = null);
+
+ public void set_state_callback(NotifyCb? cb = null);
+ public void set_event_callback(EventCb? cb = null);
+ public void set_subscribe_callback(SubscribeCb? cb = null);
+
+ public Error errno();
+
+ public int is_pending();
+ public State get_state();
+ public int is_local();
+ public unowned string? get_server();
+ public uint32 get_protocol_version();
+ public uint32 get_server_protocol_version();
+ public uint32 get_index();
+
+ public int connect(string? server = null, Flags flags = 0, SpawnApi? api = null);
+ public void disconnect();
+
+ public Operation? drain(NotifyCb? cb = null);
+ public Operation? exit_daemon(SuccessCb? cb = null);
+ public Operation? set_default_sink(string name, SuccessCb? cb = null);
+ public Operation? set_default_source(string name, SuccessCb? cb = null);
+ public Operation? set_name(string name, SuccessCb? cb = null);
+
+ [CCode (array_length = false)]
+ public Operation? proplist_remove(string[] keys, SuccessCb? cb = null);
+ public Operation? proplist_update(UpdateMode mode, Proplist pl, SuccessCb? cb = null);
+
+ public Operation? subscribe(SubscriptionMask mask, SuccessCb? cb = null);
+
+ public Operation? get_sink_info_by_name(string name, SinkInfoCb cb);
+ public Operation? get_sink_info_by_index(uint32 idx, SinkInfoCb cb);
+ public Operation? get_sink_info_list(SinkInfoCb cb);
+
+ public Operation? set_sink_volume_by_name(string name, CVolume volume, SuccessCb? cb = null);
+ public Operation? set_sink_volume_by_index(uint32 idx, CVolume volume, SuccessCb? cb = null);
+ public Operation? set_sink_mute_by_name(string name, bool mute, SuccessCb? cb = null);
+ public Operation? set_sink_mute_by_index(uint32 idx, bool mute, SuccessCb? cb = null);
+
+ public Operation? suspend_sink_by_name(string name, bool suspend, SuccessCb? cb = null);
+ public Operation? suspend_sink_by_index(uint32 idx, bool suspend, SuccessCb? cb = null);
+
+ public Operation? set_sink_port_by_name(string name, string port, SuccessCb? cb = null);
+ public Operation? set_sink_port_by_index(string idx, string port, SuccessCb? cb = null);
+
+ public Operation? get_source_info_by_name(string name, SourceInfoCb cb);
+ public Operation? get_source_info_by_index(uint32 idx, SourceInfoCb cb);
+ public Operation? get_source_info_list(SourceInfoCb cb);
+
+ public Operation? set_source_volume_by_name(string name, CVolume volume, SuccessCb? cb = null);
+ public Operation? set_source_volume_by_index(uint32 idx, CVolume volume, SuccessCb? cb = null);
+ public Operation? set_source_mute_by_name(string name, bool mute, SuccessCb? cb = null);
+ public Operation? set_source_mute_by_index(uint32 idx, bool mute, SuccessCb? cb = null);
+
+ public Operation? suspend_source_by_name(string name, bool suspend, SuccessCb? cb = null);
+ public Operation? suspend_source_by_index(uint32 idx, bool suspend, SuccessCb? cb = null);
+
+ public Operation? set_source_port_by_name(string name, string port, SuccessCb? cb = null);
+ public Operation? set_source_port_by_index(string idx, string port, SuccessCb? cb = null);
+
+ public Operation? get_server_info(ServerInfoCb cb);
+
+ public Operation? get_module_info(uint32 idx, ModuleInfoCb cb);
+ public Operation? get_module_info_list(ModuleInfoCb cb);
+
+ public Operation? load_module(string name, string? argument, IndexCb? cb = null);
+ public Operation? unload_module(uint32 idx, SuccessCb? cb = null);
+
+ public Operation? get_client_info(uint32 idx, ClientInfoCb cb);
+ public Operation? get_client_info_list(ClientInfoCb cb);
+
+ public Operation? kill_client(uint32 idx, SuccessCb? cb = null);
+
+ public Operation? get_card_info_by_name(string name, CardInfoCb cb);
+ public Operation? get_card_info_by_index(uint32 idx, CardInfoCb cb);
+ public Operation? get_card_info_list(CardInfoCb cb);
+
+ public Operation? set_card_profile_by_index(uint32 idx, string profile, SuccessCb? cb = null);
+ public Operation? set_card_profile_by_name(string name, string profile, SuccessCb? cb = null);
+
+ public Operation? get_sink_input_info(uint32 idx, SinkInputInfoCb cb);
+ public Operation? get_sink_input_info_list(SinkInputInfoCb cb);
+
+ public Operation? move_sink_input_by_index(uint32 idx, uint32 sink_idx, SuccessCb? cb = null);
+ public Operation? move_sink_input_by_name(uint32 idx, string sink_name, SuccessCb? cb = null);
+
+ public Operation? set_sink_input_volume(uint32 idx, CVolume volume, SuccessCb? cb = null);
+ public Operation? set_sink_input_mute(uint32 idx, bool mute, SuccessCb? cb = null);
+
+ public Operation? kill_sink_input(uint32 idx, SuccessCb? cb = null);
+
+ public Operation? get_source_output_info(uint32 idx, SourceOutputInfoCb cb);
+ public Operation? get_source_output_info_list(SourceOutputInfoCb cb);
+
+ public Operation? move_source_output_by_index(uint32 idx, uint32 source_idx, SuccessCb? cb = null);
+ public Operation? move_source_output_by_name(uint32 idx, string source_name, SuccessCb? cb = null);
+
+ public Operation? kill_source_output(uint32 idx, SuccessCb? cb = null);
+
+ public Operation? stat(StatInfoCb cb);
+
+ public Operation? get_sample_info_by_name(string name, SampleInfoCb cb);
+ public Operation? get_sample_info_by_index(uint32 idx, SampleInfoCb cb);
+ public Operation? get_sample_info_list(SampleInfoCb cb);
+
+ public Operation? remove_sample(string name, SuccessCb? cb = null);
+
+ public Operation? play_sample(string name, string? device = null, Volume volume = Volume.INVALID, SuccessCb? cb = null);
+ public Operation? play_sample_with_proplist(string name, string? device = null, Volume volume = Volume.INVALID, Proplist? p = null, IndexCb? cb = null);
+ }
+
+ [Compact]
+ [CCode (cname="pa_stream", cprefix="pa_stream_", unref_function="pa_stream_unref", ref_function="pa_stream_ref")]
+ public class Stream {
+
+ [CCode (cname="pa_stream_flags_t", cprefix="PA_STREAM_")]
+ public enum Flags {
+ START_CORKED,
+ INTERPOLATE_TIMING,
+ NOT_MONOTONIC,
+ AUTO_TIMING_UPDATE,
+ NO_REMAP_CHANNELS,
+ NO_REMIX_CHANNELS,
+ FIX_FORMAT,
+ FIX_RATE,
+ FIX_CHANNELS,
+ DONT_MOVE,
+ VARIABLE_RATE,
+ PEAK_DETECT,
+ START_MUTED,
+ ADJUST_LATENCY,
+ EARLY_REQUESTS,
+ DONT_INHIBIT_AUTO_SUSPEND,
+ START_UNMUTED,
+ FAIL_ON_SUSPEND
+ }
+
+ [CCode (cname="pa_stream_state_t", cprefix="PA_STREAM_")]
+ public enum State {
+ UNCONNECTED,
+ CREATING,
+ READY,
+ FAILED,
+ TERMINATED;
+
+ bool IS_GOOD();
+ }
+
+ [CCode (cname="pa_stream_direction_t", cprefix="PA_STREAM_")]
+ public enum Direction {
+ NODIRECTION,
+ PLAYBACK,
+ RECORD,
+ UPLOAD
+ }
+
+ [CCode (cname="pa_seek_mode_t", cprefix="PA_SEEK_")]
+ public enum SeekMode {
+ RELATIVE,
+ ABSOLUTE,
+ RELATIVE_ON_READ,
+ RELATIVE_END
+ }
+
+ [CCode (cname="pa_buffer_attr")]
+ public struct BufferAttr {
+ uint32 maxlength;
+ uint32 tlength;
+ uint32 prebuf;
+ uint32 minreq;
+ uint32 fragsize;
+ }
+
+ [CCode (cname="pa_timing_info")]
+ public struct TimingInfo {
+ timeval timestamp;
+ int synchronized_clocks;
+ usec sink_usec;
+ usec source_usec;
+ usec transport_usec;
+ int playing;
+ int write_index_corrupt;
+ int64 write_index;
+ int read_index_corrupt;
+ int64 read_index;
+ usec configured_sink_usec;
+ usec configured_source_usec;
+ int64 since_underrun;
+ }
+
+ [CCode (cname="PA_STREAM_EVENT_REQUEST_CORK")]
+ public const string EVENT_REQUEST_CORK;
+
+ [CCode (cname="PA_STREAM_EVENT_REQUEST_UNCORK")]
+ public const string EVENT_REQUEST_UNCORK;
+
+ public delegate void SuccessCb(int success);
+ public delegate void RequestCb(size_t nbytes);
+ public delegate void NotifyCb();
+ public delegate void EventCb(string name, Proplist proplist);
+
+ [CCode (cname="pa_stream_new_with_proplist")]
+ public Stream(Context c, string name, SampleSpec ss, ChannelMap map = null, Proplist proplist = null);
+
+ public State get_state();
+ public Context get_context();
+ public uint32 get_index();
+ public uint32 get_device_index();
+ public unowned string? get_device_name();
+ public int is_suspended();
+ public int is_corked();
+
+ public int connect_playback(string dev, BufferAttr a = null, Flags flags = 0, Volume volume = null, Stream sync_stream = null);
+ public int connect_record(string dev, BufferAttr a = null, Flags flags = 0);
+ public int connect_upload(size_t length);
+ public int disconnect();
+ public int finish_upload();
+
+ public int begin_write(out void* data, out size_t nbytes);
+ public int cancel_write();
+ public int write(void *data, size_t bytes, FreeCb free_cb = null, int64 offset = 0, SeekMode mode = SeekMode.RELATIVE);
+ public int peek(out void *data, out size_t nbytes);
+ public int drop();
+ public size_t writable_size();
+ public size_t readable_size();
+
+ public void set_state_callback(NotifyCb cb = null);
+ public void set_write_callback(RequestCb cb = null);
+ public void set_read_callback(RequestCb cb = null);
+ public void set_overflow_callback(NotifyCb cb = null);
+ public void set_underflow_callback(NotifyCb cb = null);
+ public void set_started_callback(NotifyCb cb = null);
+ public void set_latency_update_callback(NotifyCb cb = null);
+ public void set_moved_callback(NotifyCb cb = null);
+ public void set_suspended_callback(NotifyCb cb = null);
+ public void set_event_callback(EventCb cb = null);
+ public void set_buffer_attr_callback(NotifyCb cb = null);
+
+ public Operation? drain(SuccessCb cb = null);
+ public Operation? update_timing_info(SuccessCb cb = null);
+
+ public Operation? cork(bool b, SuccessCb cb = null);
+ public Operation? flush(SuccessCb cb = null);
+ public Operation? prebuf(SuccessCb cb = null);
+ public Operation? trigger(SuccessCb cb = null);
+
+ public Operation? set_name(string name, SuccessCb cb = null);
+ public Operation? set_buffer_attr(BufferAttr attr, SuccessCb cb = null);
+ public Operation? update_sample_rate(uint32 rate, SuccessCb cb = null);
+
+ [CCode (array_length = false)]
+ public Operation? proplist_remove(string[] keys, SuccessCb cb = null);
+ public Operation? proplist_update(UpdateMode mode, Proplist pl, SuccessCb cb = null);
+
+ public unowned TimingInfo? get_timing_info();
+ public int get_time(out usec u);
+ public int get_latency(out usec u, out bool negative = null);
+
+ public unowned SampleSpec? get_sample_spec();
+ public unowned ChannelMap? get_channel_map();
+ public unowned BufferAttr? get_buffer_attr();
+
+ public int set_monitor_stream(uint32 sink_input);
+ public uint32 get_monitor_stream();
+ }
+
+ [CCode (cname="pa_sink_port_info")]
+ public struct SinkPortInfo {
+ string name;
+ string description;
+ uint32 priority;
+ }
+
+ [CCode (cname="pa_sink_info")]
+ public struct SinkInfo {
+ string name;
+ uint32 index;
+ string description;
+ SampleSpec sample_spec;
+ ChannelMap channel_map;
+ uint32 owner_module;
+ CVolume volume;
+ int mute;
+ uint32 monitor_source;
+ string monitor_source_name;
+ usec latency;
+ string driver;
+ SinkFlags flags;
+ Proplist proplist;
+ usec configured_latency;
+ Volume base_volume;
+ SinkState state;
+ uint32 n_volume_steps;
+ uint32 card;
+ uint32 n_ports;
+ SinkPortInfo*[] ports;
+ SinkPortInfo* active_port;
+ }
+
+ [CCode (cname="pa_source_port_info")]
+ public struct SourcePortInfo {
+ string name;
+ string description;
+ uint32 priority;
+ }
+
+ [CCode (cname="pa_source_info")]
+ public struct SourceInfo {
+ string name;
+ uint32 index;
+ string description;
+ SampleSpec sample_spec;
+ ChannelMap channel_map;
+ uint32 owner_module;
+ CVolume volume;
+ int mute;
+ uint32 monitor_of_sink;
+ string monitor_of_sink_name;
+ usec latency;
+ string driver;
+ SourceFlags flags;
+ Proplist proplist;
+ usec configured_latency;
+ Volume base_volume;
+ SourceState state;
+ uint32 n_volume_steps;
+ uint32 card;
+ uint32 n_ports;
+ SourcePortInfo*[] ports;
+ SourcePortInfo* active_port;
+ }
+
+ [CCode (cname="pa_server_info")]
+ public struct ServerInfo {
+ string user_name;
+ string host_name;
+ string server_version;
+ string server_name;
+ SampleSpec sample_spec;
+ string default_sink_name;
+ string default_source_name;
+ ChannelMap channel_map;
+ }
+
+ [CCode (cname="pa_module_info")]
+ public struct ModuleInfo {
+ uint32 index;
+ string name;
+ string argument;
+ uint32 n_used;
+ Proplist proplist;
+ }
+
+ [CCode (cname="pa_client_info")]
+ public struct ClientInfo {
+ uint32 index;
+ string name;
+ uint32 owner_module;
+ string driver;
+ Proplist proplist;
+ }
+
+ [CCode (cname="pa_card_profile_info")]
+ public struct CardProfileInfo {
+ string name;
+ string description;
+ uint32 n_sinks;
+ uint32 n_sources;
+ uint32 priority;
+ }
+
+ [CCode (cname="pa_card_info")]
+ public struct CardInfo {
+ uint32 index;
+ string name;
+ uint32 owner_module;
+ string driver;
+ uint32 n_profiles;
+ CardProfileInfo profiles[];
+ CardProfileInfo *active_profile;
+ Proplist proplist;
+ }
+
+ [CCode (cname="pa_sink_input_info")]
+ public struct SinkInputInfo {
+ uint32 index;
+ string name;
+ uint32 owner_module;
+ uint32 client;
+ uint32 sink;
+ SampleSpec sample_spec;
+ ChannelMap channel_map;
+ CVolume volume;
+ uint32 buffer_usec;
+ uint32 sink_usec;
+ string resample_method;
+ string driver;
+ int mute;
+ Proplist proplist;
+ }
+
+ [CCode (cname="pa_source_output_info")]
+ public struct SourceOutputInfo {
+ uint32 index;
+ string name;
+ uint32 owner_module;
+ uint32 client;
+ uint32 source;
+ SampleSpec sample_spec;
+ ChannelMap channel_map;
+ uint32 buffer_usec;
+ uint32 sink_usec;
+ string resample_method;
+ string driver;
+ Proplist proplist;
+ }
+
+ [CCode (cname="pa_stat_info")]
+ public struct StatInfo {
+ uint32 memblock_total;
+ uint32 memblock_total_size;
+ uint32 memblock_allocated;
+ uint32 memblock_allocated_size;
+ uint32 scache_size;
+ }
+
+ [CCode (cname="pa_sample_info")]
+ public struct SampleInfo {
+ uint32 index;
+ string name;
+ CVolume volume;
+ SampleSpec sample_spec;
+ ChannelMap channel_map;
+ usec duration;
+ uint32 bytes;
+ bool lazy;
+ string filename;
+ Proplist proplist;
+ }
+
+ [CCode (cname="pa_sink_flags_t", cprefix="PA_SINK_")]
+ public enum SinkFlags {
+ HW_VOLUME_CTRL,
+ LATENCY,
+ HARDWARE,
+ NETWORK,
+ HW_MUTE_CTRL,
+ DECIBEL_VOLUME,
+ FLAT_VOLUME,
+ DYNAMIC_LATENCY
+ }
+
+ [CCode (cname="pa_source_flags_t", cprefix="PA_SOURCE_")]
+ public enum SourceFlags {
+ HW_VOLUME_CTRL,
+ LATENCY,
+ HARDWARE,
+ NETWORK,
+ HW_MUTE_CTRL,
+ DECIBEL_VOLUME,
+ DYNAMIC_LATENCY
+ }
+
+ [CCode (cname="pa_sink_state_t", cprefix="PA_SINK_")]
+ public enum SinkState {
+ INVALID_STATE,
+ RUNNING,
+ IDLE,
+ SUSPENDED;
+
+ [CCode (cname="PA_SINK_IS_OPENED")]
+ public bool IS_OPENED();
+ }
+
+ [CCode (cname="pa_source_state_t", cprefix="PA_SOURCE_")]
+ public enum SourceState {
+ INVALID_STATE,
+ RUNNING,
+ IDLE,
+ SUSPENDED;
+
+ [CCode (cname="PA_SOURCE_IS_OPENED")]
+ public bool IS_OPENED();
+ }
+}
diff --git a/src/.gitignore b/src/.gitignore
index 82331524..6cd173c0 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -1,3 +1,4 @@
+usergroup-test
sigbus-test
TAGS
alsa-time-test
diff --git a/src/Makefile.am b/src/Makefile.am
index c022fa7c..6544e2aa 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,6 +32,7 @@ xdgautostartdir=$(sysconfdir)/xdg/autostart
alsaprofilesetsdir=$(datadir)/pulseaudio/alsa-mixer/profile-sets
alsapathsdir=$(datadir)/pulseaudio/alsa-mixer/paths
udevrulesdir=/lib/udev/rules.d
+dbuspolicydir=$(sysconfdir)/dbus-1/system.d
###################################
# Defines #
@@ -73,6 +74,7 @@ AM_CFLAGS = \
$(LIBSAMPLERATE_CFLAGS) \
$(LIBSNDFILE_CFLAGS) \
$(LIBSPEEX_CFLAGS) \
+ -DPA_BUILDDIR=\"$(abs_builddir)\" \
-DPA_DLSEARCHPATH=\"$(modlibexecdir)\" \
-DPA_DEFAULT_CONFIG_DIR=\"$(PA_DEFAULT_CONFIG_DIR)\" \
-DPA_BINARY=\"$(PA_BINARY)\" \
@@ -82,8 +84,8 @@ AM_CFLAGS = \
-DAO_REQUIRE_CAS \
-DPULSE_LOCALEDIR=\"$(pulselocaledir)\" \
-DPA_MACHINE_ID=\"$(localstatedir)/lib/dbus/machine-id\" \
- -DPA_ALSA_PATHS_DIR=\"$(alsapathsdir)\" \
- -DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\"
+ -DPA_ALSA_PATHS_DIR=\"$(alsapathsdir)\" \
+ -DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\"
AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS)
AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
@@ -119,6 +121,7 @@ EXTRA_DIST = \
modules/module-defs.h.m4 \
daemon/pulseaudio.desktop.in \
map-file \
+ daemon/pulseaudio-system.conf \
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 \
@@ -145,6 +148,9 @@ pulseconf_DATA = \
daemon.conf \
client.conf
+dbuspolicy_DATA = \
+ daemon/pulseaudio-system.conf
+
if HAVE_X11
xdgautostart_in_files = \
daemon/pulseaudio.desktop.in
@@ -171,8 +177,8 @@ pulseaudio_SOURCES = \
daemon/ltdl-bind-now.c daemon/ltdl-bind-now.h \
daemon/main.c
-pulseaudio_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(LIBSNDFILE_CFLAGS) $(CAP_CFLAGS) $(LIBOIL_CFLAGS) $(DBUS_CFLAGS)
-pulseaudio_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(LIBSNDFILE_LIBS) $(CAP_LIBS) $(LIBOIL_LIBS) $(DBUS_LIBS)
+pulseaudio_CFLAGS = $(AM_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(LIBSNDFILE_CFLAGS) $(CAP_CFLAGS) $(DBUS_CFLAGS)
+pulseaudio_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(LIBSNDFILE_LIBS) $(CAP_LIBS) $(DBUS_LIBS)
# This is needed because automake doesn't properly expand the foreach below
pulseaudio_DEPENDENCIES = libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la $(PREOPEN_LIBS)
@@ -274,7 +280,8 @@ TESTS = \
proplist-test \
lock-autospawn-test \
prioq-test \
- sigbus-test
+ sigbus-test \
+ usergroup-test
TESTS_BINARIES = \
mainloop-test \
@@ -312,7 +319,8 @@ TESTS_BINARIES = \
stripnul \
lock-autospawn-test \
prioq-test \
- sigbus-test
+ sigbus-test \
+ usergroup-test
if HAVE_SIGXCPU
#TESTS += \
@@ -488,18 +496,18 @@ sig2str_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
resampler_test_SOURCES = tests/resampler-test.c
resampler_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-resampler_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-resampler_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+resampler_test_CFLAGS = $(AM_CFLAGS)
+resampler_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
mix_test_SOURCES = tests/mix-test.c
mix_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-mix_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-mix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+mix_test_CFLAGS = $(AM_CFLAGS)
+mix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
remix_test_SOURCES = tests/remix-test.c
remix_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-remix_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-remix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+remix_test_CFLAGS = $(AM_CFLAGS)
+remix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
smoother_test_SOURCES = tests/smoother-test.c
smoother_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
@@ -508,38 +516,38 @@ smoother_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
envelope_test_SOURCES = tests/envelope-test.c
envelope_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-envelope_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-envelope_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+envelope_test_CFLAGS = $(AM_CFLAGS)
+envelope_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
proplist_test_SOURCES = tests/proplist-test.c
proplist_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-proplist_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-proplist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+proplist_test_CFLAGS = $(AM_CFLAGS)
+proplist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
rtstutter_SOURCES = tests/rtstutter.c
rtstutter_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-rtstutter_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-rtstutter_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+rtstutter_CFLAGS = $(AM_CFLAGS)
+rtstutter_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
stripnul_SOURCES = tests/stripnul.c
stripnul_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-stripnul_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-stripnul_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+stripnul_CFLAGS = $(AM_CFLAGS)
+stripnul_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
lock_autospawn_test_SOURCES = tests/lock-autospawn-test.c
lock_autospawn_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-lock_autospawn_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-lock_autospawn_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+lock_autospawn_test_CFLAGS = $(AM_CFLAGS)
+lock_autospawn_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
prioq_test_SOURCES = tests/prioq-test.c
prioq_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-prioq_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-prioq_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+prioq_test_CFLAGS = $(AM_CFLAGS)
+prioq_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
sigbus_test_SOURCES = tests/sigbus-test.c
sigbus_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la
-sigbus_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
-sigbus_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS)
+sigbus_test_CFLAGS = $(AM_CFLAGS)
+sigbus_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
gtk_test_SOURCES = tests/gtk-test.c
gtk_test_LDADD = $(AM_LDADD) libpulse.la libpulse-mainloop-glib.la
@@ -551,6 +559,11 @@ alsa_time_test_LDADD = $(AM_LDADD)
alsa_time_test_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS)
alsa_time_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(ASOUNDLIB_LIBS)
+usergroup_test_SOURCES = tests/usergroup-test.c
+usergroup_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la
+usergroup_test_CFLAGS = $(AM_CFLAGS)
+usergroup_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
+
###################################
# Common library #
###################################
@@ -615,6 +628,7 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/tagstruct.c pulsecore/tagstruct.h \
pulsecore/time-smoother.c pulsecore/time-smoother.h \
pulsecore/tokenizer.c pulsecore/tokenizer.h \
+ pulsecore/usergroup.c pulsecore/usergroup.h \
pulsecore/sndfile-util.c pulsecore/sndfile-util.h \
pulsecore/winsock.h
@@ -776,7 +790,7 @@ libpulse_mainloop_glib_la_LDFLAGS = $(AM_LDFLAGS) $(VERSIONING_LDFLAGS) -version
# OSS emulation #
###################################
-if HAVE_OSS
+if HAVE_OSS_WRAPPER
lib_LTLIBRARIES += libpulsedsp.la
bin_SCRIPTS += utils/padsp
endif
@@ -817,11 +831,18 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/object.c pulsecore/object.h \
pulsecore/play-memblockq.c pulsecore/play-memblockq.h \
pulsecore/play-memchunk.c pulsecore/play-memchunk.h \
+ pulsecore/remap.c pulsecore/remap.h \
+ pulsecore/remap_mmx.c pulsecore/remap_sse.c \
pulsecore/resampler.c pulsecore/resampler.h \
pulsecore/rtpoll.c pulsecore/rtpoll.h \
pulsecore/sample-util.c pulsecore/sample-util.h \
+ pulsecore/cpu-arm.c pulsecore/cpu-arm.h \
+ pulsecore/cpu-x86.c pulsecore/cpu-x86.h \
+ pulsecore/svolume_c.c pulsecore/svolume_arm.c \
+ pulsecore/svolume_mmx.c pulsecore/svolume_sse.c \
pulsecore/sconv-s16be.c pulsecore/sconv-s16be.h \
pulsecore/sconv-s16le.c pulsecore/sconv-s16le.h \
+ pulsecore/sconv_sse.c \
pulsecore/sconv.c pulsecore/sconv.h \
pulsecore/shared.c pulsecore/shared.h \
pulsecore/shm.c pulsecore/shm.h \
@@ -837,9 +858,9 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/time-smoother.c pulsecore/time-smoother.h \
pulsecore/database.h
-libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(WINSOCK_CFLAGS) $(LIBOIL_CFLAGS)
+libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(WINSOCK_CFLAGS)
libpulsecore_@PA_MAJORMINORMICRO@_la_LDFLAGS = -avoid-version
-libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la
+libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la
if HAVE_X11
libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/x11wrap.c pulsecore/x11wrap.h
@@ -865,6 +886,9 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS += $(TDB_CFLAGS)
libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD += $(TDB_LIBS)
endif
+if HAVE_SIMPLEDB
+libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/database-simple.c
+endif
# We split the foreign code off to not be annoyed by warnings we don't care about
noinst_LTLIBRARIES = libpulsecore-foreign.la
@@ -987,8 +1011,8 @@ modlibexec_LTLIBRARIES += \
module-tunnel-source.la \
module-position-event-sounds.la \
module-augment-properties.la \
- module-cork-music-on-phone.la
-
+ module-cork-music-on-phone.la \
+ module-loopback.la
# See comment at librtp.la above
if !OS_IS_WIN32
@@ -1031,7 +1055,7 @@ modlibexec_LTLIBRARIES += \
module-x11-cork-request.la
endif
-if HAVE_OSS
+if HAVE_OSS_OUTPUT
modlibexec_LTLIBRARIES += \
liboss-util.la \
module-oss.la
@@ -1120,6 +1144,11 @@ modlibexec_LTLIBRARIES += \
module-hal-detect.la
endif
+if HAVE_HAL_COMPAT
+modlibexec_LTLIBRARIES += \
+ module-hal-detect.la
+endif
+
if HAVE_UDEV
modlibexec_LTLIBRARIES += \
module-udev-detect.la
@@ -1221,7 +1250,8 @@ SYMDEF_FILES = \
modules/module-position-event-sounds-symdef.h \
modules/module-augment-properties-symdef.h \
modules/module-cork-music-on-phone-symdef.h \
- modules/module-console-kit-symdef.h
+ modules/module-console-kit-symdef.h \
+ modules/module-loopback-symdef.h
EXTRA_DIST += $(SYMDEF_FILES)
BUILT_SOURCES += $(SYMDEF_FILES)
@@ -1363,6 +1393,10 @@ module_tunnel_source_la_SOURCES = modules/module-tunnel.c
module_tunnel_source_la_LDFLAGS = $(MODULE_LDFLAGS)
module_tunnel_source_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_loopback_la_SOURCES = modules/module-loopback.c
+module_loopback_la_LDFLAGS = $(MODULE_LDFLAGS)
+module_loopback_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+
# X11
module_x11_bell_la_SOURCES = modules/x11/module-x11-bell.c
@@ -1576,10 +1610,16 @@ module_jack_source_la_LDFLAGS = $(MODULE_LDFLAGS)
module_jack_source_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_jack_source_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS)
+if HAVE_HAL_COMPAT
+module_hal_detect_la_SOURCES = modules/module-hal-detect-compat.c
+module_hal_detect_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_hal_detect_la_CFLAGS = $(AM_CFLAGS)
+else
module_hal_detect_la_SOURCES = modules/module-hal-detect.c
-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)
+endif
+module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
module_udev_detect_la_SOURCES = modules/module-udev-detect.c
module_udev_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
@@ -1698,7 +1738,7 @@ daemon.conf: daemon/daemon.conf.in Makefile
-e 's,@PA_DEFAULT_CONFIG_FILE\@,$(DEFAULT_CONFIG_DIR),g' < $< > $@
install-exec-hook:
- chown root $(DESTDIR)$(bindir)/pulseaudio ; true
+ -chown root $(DESTDIR)$(pulselibexecdir)/proximity-helper
-chmod u+s $(DESTDIR)$(pulselibexecdir)/proximity-helper
ln -sf pacat $(DESTDIR)$(bindir)/parec
ln -sf pacat $(DESTDIR)$(bindir)/pamon
diff --git a/src/daemon/caps.c b/src/daemon/caps.c
index 294be494..76b62e03 100644
--- a/src/daemon/caps.c
+++ b/src/daemon/caps.c
@@ -57,24 +57,29 @@ void pa_drop_root(void) {
#ifdef HAVE_GETUID
uid_t uid;
+ gid_t gid;
+ pa_log_debug(_("Cleaning up privileges."));
uid = getuid();
- if (uid == 0 || geteuid() != 0)
- return;
-
- pa_log_info(_("Dropping root privileges."));
+ gid = getgid();
#if defined(HAVE_SETRESUID)
pa_assert_se(setresuid(uid, uid, uid) >= 0);
+ pa_assert_se(setresgid(gid, gid, gid) >= 0);
#elif defined(HAVE_SETREUID)
pa_assert_se(setreuid(uid, uid) >= 0);
+ pa_assert_se(setregid(gid, gid) >= 0);
#else
pa_assert_se(setuid(uid) >= 0);
pa_assert_se(seteuid(uid) >= 0);
+ pa_assert_se(setgid(gid) >= 0);
+ pa_assert_se(setegid(gid) >= 0);
#endif
pa_assert_se(getuid() == uid);
pa_assert_se(geteuid() == uid);
+ pa_assert_se(getgid() == gid);
+ pa_assert_se(getegid() == gid);
#endif
#ifdef HAVE_SYS_PRCTL_H
@@ -82,7 +87,7 @@ void pa_drop_root(void) {
#endif
#ifdef HAVE_SYS_CAPABILITY_H
- {
+ if (uid != 0) {
cap_t caps;
pa_assert_se(caps = cap_init());
pa_assert_se(cap_clear(caps) == 0);
diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c
index ecb38486..f6cdcdc8 100644
--- a/src/daemon/cmdline.c
+++ b/src/daemon/cmdline.c
@@ -385,11 +385,6 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
pa_xfree(conf->script_commands);
conf->script_commands = pa_strbuf_tostring_free(buf);
- if (!conf->script_commands) {
- pa_xfree(conf->script_commands);
- conf->script_commands = NULL;
- }
-
*d = optind;
return 0;
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index 9010f2f6..6e7926f8 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -83,7 +83,7 @@ static const pa_daemon_conf default_conf = {
.config_file = NULL,
.use_pid_file = TRUE,
.system_instance = FALSE,
- .no_cpu_limit = FALSE,
+ .no_cpu_limit = TRUE,
.disable_shm = FALSE,
.lock_memory = FALSE,
.default_n_fragments = 4,
@@ -133,9 +133,25 @@ static const pa_daemon_conf default_conf = {
};
pa_daemon_conf* pa_daemon_conf_new(void) {
- pa_daemon_conf *c = pa_xnewdup(pa_daemon_conf, &default_conf, 1);
+ pa_daemon_conf *c;
+
+ c = pa_xnewdup(pa_daemon_conf, &default_conf, 1);
+
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+
+ /* We abuse __OPTIMIZE__ as a check whether we are a debug build
+ * or not. If we are and are run from the build tree then we
+ * override the search path to point to our build tree */
+
+ if (pa_run_from_build_tree()) {
+ pa_log_notice("Detected that we are run from the build tree, fixing search path.");
+ c->dl_search_path = pa_xstrdup(PA_BUILDDIR "/.libs/");
+
+ } else
+
+#endif
+ c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
- c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
return c;
}
@@ -441,11 +457,15 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
{ "high-priority", pa_config_parse_bool, &c->high_priority, NULL },
{ "realtime-scheduling", pa_config_parse_bool, &c->realtime_scheduling, NULL },
{ "disallow-module-loading", pa_config_parse_bool, &c->disallow_module_loading, NULL },
+ { "allow-module-loading", pa_config_parse_not_bool, &c->disallow_module_loading, NULL },
{ "disallow-exit", pa_config_parse_bool, &c->disallow_exit, NULL },
+ { "allow-exit", pa_config_parse_not_bool, &c->disallow_exit, NULL },
{ "use-pid-file", pa_config_parse_bool, &c->use_pid_file, NULL },
{ "system-instance", pa_config_parse_bool, &c->system_instance, NULL },
{ "no-cpu-limit", pa_config_parse_bool, &c->no_cpu_limit, NULL },
+ { "cpu-limit", pa_config_parse_not_bool, &c->no_cpu_limit, NULL },
{ "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
+ { "enable-shm", pa_config_parse_not_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 },
@@ -465,7 +485,9 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
{ "default-fragment-size-msec", parse_fragment_size_msec, c, NULL },
{ "nice-level", parse_nice_level, c, NULL },
{ "disable-remixing", pa_config_parse_bool, &c->disable_remixing, NULL },
+ { "enable-remixing", pa_config_parse_not_bool, &c->disable_remixing, NULL },
{ "disable-lfe-remixing", pa_config_parse_bool, &c->disable_lfe_remixing, NULL },
+ { "enable-lfe-remixing", pa_config_parse_not_bool, &c->disable_lfe_remixing, NULL },
{ "load-default-script-file", pa_config_parse_bool, &c->load_default_script_file, NULL },
{ "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL },
{ "log-meta", pa_config_parse_bool, &c->log_meta, NULL },
@@ -623,12 +645,12 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf_printf(s, "nice-level = %i\n", c->nice_level);
pa_strbuf_printf(s, "realtime-scheduling = %s\n", pa_yes_no(c->realtime_scheduling));
pa_strbuf_printf(s, "realtime-priority = %i\n", c->realtime_priority);
- pa_strbuf_printf(s, "disallow-module-loading = %s\n", pa_yes_no(c->disallow_module_loading));
- pa_strbuf_printf(s, "disallow-exit = %s\n", pa_yes_no(c->disallow_exit));
+ pa_strbuf_printf(s, "allow-module-loading = %s\n", pa_yes_no(!c->disallow_module_loading));
+ pa_strbuf_printf(s, "allow-exit = %s\n", pa_yes_no(!c->disallow_exit));
pa_strbuf_printf(s, "use-pid-file = %s\n", pa_yes_no(c->use_pid_file));
pa_strbuf_printf(s, "system-instance = %s\n", pa_yes_no(c->system_instance));
- 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, "cpu-limit = %s\n", pa_yes_no(!c->no_cpu_limit));
+ pa_strbuf_printf(s, "enable-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);
@@ -639,8 +661,8 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf_printf(s, "log-target = %s\n", c->auto_log_target ? "auto" : (c->log_target == PA_LOG_SYSLOG ? "syslog" : "stderr"));
pa_strbuf_printf(s, "log-level = %s\n", log_level_to_string[c->log_level]);
pa_strbuf_printf(s, "resample-method = %s\n", pa_resample_method_to_string(c->resample_method));
- pa_strbuf_printf(s, "disable-remixing = %s\n", pa_yes_no(c->disable_remixing));
- pa_strbuf_printf(s, "disable-lfe-remixing = %s\n", pa_yes_no(c->disable_lfe_remixing));
+ pa_strbuf_printf(s, "enable-remixing = %s\n", pa_yes_no(!c->disable_remixing));
+ pa_strbuf_printf(s, "enable-lfe-remixing = %s\n", pa_yes_no(!c->disable_lfe_remixing));
pa_strbuf_printf(s, "default-sample-format = %s\n", pa_sample_format_to_string(c->default_sample_spec.format));
pa_strbuf_printf(s, "default-sample-rate = %u\n", c->default_sample_spec.rate);
pa_strbuf_printf(s, "default-sample-channels = %u\n", c->default_sample_spec.channels);
diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in
index 6931359c..db2059e1 100644
--- a/src/daemon/daemon.conf.in
+++ b/src/daemon/daemon.conf.in
@@ -21,14 +21,14 @@
; daemonize = no
; fail = yes
-; disallow-module-loading = no
-; disallow-exit = no
+; allow-module-loading = yes
+; allow-exit = yes
; use-pid-file = yes
; system-instance = no
-; disable-shm = no
+; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
-; no-cpu-limit = no
+; cpu-limit = no
; high-priority = yes
; nice-level = -11
@@ -51,8 +51,8 @@
; log-backtrace = 0
; resample-method = speex-float-3
-; disable-remixing = no
-; disable-lfe-remixing = yes
+; enable-remixing = yes
+; enable-lfe-remixing = no
; flat-volumes = yes
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 0f6fc907..af59adef 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -39,8 +39,6 @@
#include <sys/types.h>
#include <sys/stat.h>
-#include <liboil/liboil.h>
-
#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
#endif
@@ -95,6 +93,8 @@
#ifdef HAVE_DBUS
#include <pulsecore/dbus-shared.h>
#endif
+#include <pulsecore/cpu-arm.h>
+#include <pulsecore/cpu-x86.h>
#include "cmdline.h"
#include "cpulimit.h"
@@ -109,7 +109,7 @@ int allow_severity = LOG_INFO;
int deny_severity = LOG_WARNING;
#endif
-#ifdef HAVE_OSS
+#ifdef HAVE_OSS_WRAPPER
/* padsp looks for this symbol in the running process and disables
* itself if it finds it and it is set to 7 (which is actually a bit
* mask). For details see padsp. */
@@ -259,9 +259,14 @@ static int change_user(void) {
pa_set_env("HOME", PA_SYSTEM_RUNTIME_PATH);
/* Relevant for pa_runtime_path() */
- pa_set_env("PULSE_RUNTIME_PATH", PA_SYSTEM_RUNTIME_PATH);
- pa_set_env("PULSE_CONFIG_PATH", PA_SYSTEM_CONFIG_PATH);
- pa_set_env("PULSE_STATE_PATH", PA_SYSTEM_STATE_PATH);
+ if (!getenv("PULSE_RUNTIME_PATH"))
+ pa_set_env("PULSE_RUNTIME_PATH", PA_SYSTEM_RUNTIME_PATH);
+
+ if (!getenv("PULSE_CONFIG_PATH"))
+ pa_set_env("PULSE_CONFIG_PATH", PA_SYSTEM_CONFIG_PATH);
+
+ if (!getenv("PULSE_STATE_PATH"))
+ pa_set_env("PULSE_STATE_PATH", PA_SYSTEM_STATE_PATH);
pa_log_info(_("Successfully dropped root privileges."));
@@ -401,6 +406,36 @@ int main(int argc, char *argv[]) {
pa_log_set_level(PA_LOG_NOTICE);
pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET);
+#if defined(__linux__) && defined(__OPTIMIZE__)
+ /*
+ Disable lazy relocations to make usage of external libraries
+ more deterministic for our RT threads. We abuse __OPTIMIZE__ as
+ a check whether we are a debug build or not. This all is
+ admittedly a bit snake-oilish.
+ */
+
+ if (!getenv("LD_BIND_NOW")) {
+ char *rp;
+
+ /* We have to execute ourselves, because the libc caches the
+ * value of $LD_BIND_NOW on initialization. */
+
+ pa_set_env("LD_BIND_NOW", "1");
+
+ if ((rp = pa_readlink("/proc/self/exe"))) {
+
+ if (pa_streq(rp, PA_BINARY))
+ pa_assert_se(execv(rp, argv) == 0);
+ else
+ pa_log_warn("/proc/self/exe does not point to " PA_BINARY ", cannot self execute. Are you playing games?");
+
+ pa_xfree(rp);
+
+ } else
+ pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?");
+ }
+#endif
+
if ((e = getenv("PULSE_PASSED_FD"))) {
passed_fd = atoi(e);
@@ -411,10 +446,13 @@ int main(int argc, char *argv[]) {
/* 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_reset_personality();
pa_drop_root();
pa_close_all(passed_fd, -1);
pa_reset_sigs(-1);
pa_unblock_sigs(-1);
+ pa_reset_priority();
setlocale(LC_ALL, "");
pa_init_i18n();
@@ -668,7 +706,7 @@ int main(int argc, char *argv[]) {
#endif
}
- pa_set_env("PULSE_INTERNAL", "1");
+ pa_set_env_and_record("PULSE_INTERNAL", "1");
pa_assert_se(chdir("/") == 0);
umask(0022);
@@ -683,7 +721,7 @@ int main(int argc, char *argv[]) {
if (change_user() < 0)
goto finish;
- pa_set_env("PULSE_SYSTEM", conf->system_instance ? "1" : "0");
+ pa_set_env_and_record("PULSE_SYSTEM", conf->system_instance ? "1" : "0");
pa_log_info(_("This is PulseAudio %s"), PACKAGE_VERSION);
pa_log_debug(_("Compilation host: %s"), CANONICAL_HOST);
@@ -741,6 +779,8 @@ int main(int argc, char *argv[]) {
pa_log_info(_("Using state directory %s."), s);
pa_xfree(s);
+ pa_log_info(_("Using modules directory %s."), conf->dl_search_path);
+
pa_log_info(_("Running in system mode: %s"), pa_yes_no(pa_in_system_mode()));
if (pa_in_system_mode())
@@ -788,6 +828,11 @@ int main(int argc, char *argv[]) {
pa_memtrap_install();
+ if (!getenv("PULSE_NO_SIMD")) {
+ pa_cpu_init_x86();
+ pa_cpu_init_arm();
+ }
+
pa_assert_se(mainloop = pa_mainloop_new());
if (!(c = pa_core_new(pa_mainloop_get_api(mainloop), !conf->disable_shm, conf->shm_size))) {
@@ -827,8 +872,6 @@ int main(int argc, char *argv[]) {
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();
-
if (!conf->no_cpu_limit)
pa_assert_se(pa_cpu_limit_init(pa_mainloop_get_api(mainloop)) == 0);
@@ -927,6 +970,9 @@ finish:
if (valid_pid_file)
pa_pid_file_remove();
+ /* This has no real purpose except making things valgrind-clean */
+ pa_unset_env_recorded();
+
#ifdef OS_IS_WIN32
WSACleanup();
#endif
diff --git a/src/daemon/polkit.c b/src/daemon/polkit.c
deleted file mode 100644
index 9799e094..00000000
--- a/src/daemon/polkit.c
+++ /dev/null
@@ -1,172 +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
- 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 <unistd.h>
-#include <stdlib.h>
-#include <inttypes.h>
-
-#include <dbus/dbus.h>
-#include <polkit-dbus/polkit-dbus.h>
-
-#include <pulse/i18n.h>
-
-#include <pulsecore/log.h>
-#include <pulsecore/macro.h>
-
-#include "polkit.h"
-
-int pa_polkit_check(const char *action_id) {
- int ret = -1;
- DBusError dbus_error;
- DBusConnection *bus = NULL;
- PolKitCaller *caller = NULL;
- PolKitAction *action = NULL;
- PolKitContext *context = NULL;
- PolKitError *polkit_error = NULL;
- PolKitSession *session = NULL;
- PolKitResult polkit_result;
-
- dbus_error_init(&dbus_error);
-
- if (!(bus = dbus_bus_get(DBUS_BUS_SYSTEM, &dbus_error))) {
- pa_log_error(_("Cannot connect to system bus: %s"), dbus_error.message);
- goto finish;
- }
-
- /* There seems to be a bug in some versions of D-Bus that causes
- * dbus_shutdown() to call exit() when a connection without this
- * flag disabled was created during runtime.*/
- dbus_connection_set_exit_on_disconnect(bus, FALSE);
-
- if (!(caller = polkit_caller_new_from_pid(bus, getpid(), &dbus_error))) {
- pa_log_error(_("Cannot get caller from PID: %s"), dbus_error.message);
- goto finish;
- }
-
- /* This function is called when PulseAudio is called SUID root. We
- * want to authenticate the real user that called us and not the
- * effective user we gained through being SUID root. Hence we
- * overwrite the UID caller data here explicitly, just for
- * paranoia. In fact PolicyKit should fill in the UID here anyway
- * -- an not the EUID or any other user id. */
-
- if (!(polkit_caller_set_uid(caller, getuid()))) {
- pa_log_error(_("Cannot set UID on caller object."));
- goto finish;
- }
-
- if (!(polkit_caller_get_ck_session(caller, &session))) {
- pa_log_error(_("Failed to get CK session."));
- goto finish;
- }
-
- /* We need to overwrite the UID in both the caller and the session
- * object */
-
- if (!(polkit_session_set_uid(session, getuid()))) {
- pa_log_error(_("Cannot set UID on session object."));
- goto finish;
- }
-
- if (!(action = polkit_action_new())) {
- pa_log_error(_("Cannot allocate PolKitAction."));
- goto finish;
- }
-
- if (!polkit_action_set_action_id(action, action_id)) {
- pa_log_error(_("Cannot set action_id"));
- goto finish;
- }
-
- if (!(context = polkit_context_new())) {
- pa_log_error(_("Cannot allocate PolKitContext."));
- goto finish;
- }
-
- if (!polkit_context_init(context, &polkit_error)) {
- pa_log_error(_("Cannot initialize PolKitContext: %s"), polkit_error_get_error_message(polkit_error));
- goto finish;
- }
-
- for (;;) {
-
- polkit_result = polkit_context_is_caller_authorized(context, action, caller, TRUE, &polkit_error);
-
- if (polkit_error_is_set(polkit_error)) {
- pa_log_error(_("Could not determine whether caller is authorized: %s"), polkit_error_get_error_message(polkit_error));
- goto finish;
- }
-
- if (polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_SESSION ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_ALWAYS ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_ONE_SHOT ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_SESSION ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_ALWAYS ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_ONE_SHOT
- ) {
-
- if (polkit_auth_obtain(action_id, 0, getpid(), &dbus_error)) {
- polkit_result = POLKIT_RESULT_YES;
- break;
- }
-
- if (dbus_error_is_set(&dbus_error)) {
- pa_log_error(_("Cannot obtain auth: %s"), dbus_error.message);
- goto finish;
- }
- }
-
- break;
- }
-
- if (polkit_result != POLKIT_RESULT_YES && polkit_result != POLKIT_RESULT_NO)
- pa_log_warn(_("PolicyKit responded with '%s'"), polkit_result_to_string_representation(polkit_result));
-
- ret = polkit_result == POLKIT_RESULT_YES;
-
-finish:
-
- if (caller)
- polkit_caller_unref(caller);
-
- if (action)
- polkit_action_unref(action);
-
- if (context)
- polkit_context_unref(context);
-
- if (bus)
- dbus_connection_unref(bus);
-
- dbus_error_free(&dbus_error);
-
- if (polkit_error)
- polkit_error_free(polkit_error);
-
- return ret;
-}
diff --git a/src/daemon/pulseaudio-system.conf b/src/daemon/pulseaudio-system.conf
new file mode 100644
index 00000000..edddaf93
--- /dev/null
+++ b/src/daemon/pulseaudio-system.conf
@@ -0,0 +1,37 @@
+<?xml version="1.0"?><!--*-nxml-*-->
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<!--
+This file is part of PulseAudio.
+
+PulseAudio is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of the
+License, or (at your option) any later version.
+
+PulseAudio is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
+Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with PulseAudio; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+USA.
+-->
+
+<busconfig>
+
+ <!-- System-wide PulseAudio runs as 'pulse' user. This fragment is
+ not necessary for user PulseAudio instances. -->
+
+ <policy user="pulse">
+ <allow own="org.pulseaudio.Server"/>
+
+ <!-- Allow pulseaudio to talk to HAL for device detection -->
+ <allow send_destination="org.freedesktop.Hal" send_interface="org.freedesktop.Hal.Manager"/>
+ <allow send_destination="org.freedesktop.Hal" send_interface="org.freedesktop.Hal.Device"/>
+ </policy>
+
+</busconfig>
diff --git a/src/map-file b/src/map-file
index a1d0a061..95b2803a 100644
--- a/src/map-file
+++ b/src/map-file
@@ -123,13 +123,18 @@ pa_cvolume_avg_mask;
pa_cvolume_channels_equal_to;
pa_cvolume_compatible;
pa_cvolume_compatible_with_channel_map;
+pa_cvolume_dec;
pa_cvolume_equal;
pa_cvolume_get_balance;
pa_cvolume_get_fade;
pa_cvolume_get_position;
+pa_cvolume_inc;
pa_cvolume_init;
pa_cvolume_max;
pa_cvolume_max_mask;
+pa_cvolume_merge;
+pa_cvolume_min;
+pa_cvolume_min_mask;
pa_cvolume_remap;
pa_cvolume_scale;
pa_cvolume_scale_mask;
@@ -219,6 +224,8 @@ pa_simple_get_latency;
pa_simple_new;
pa_simple_read;
pa_simple_write;
+pa_stream_begin_write;
+pa_stream_cancel_write;
pa_stream_connect_playback;
pa_stream_connect_record;
pa_stream_connect_upload;
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index a5515e1b..685169b9 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -929,7 +929,7 @@ static int element_zero_volume(pa_alsa_element *e, snd_mixer_t *m) {
int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
pa_alsa_element *e;
- int r;
+ int r = 0;
pa_assert(m);
pa_assert(p);
@@ -940,7 +940,6 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
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;
@@ -949,6 +948,7 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
r = element_set_switch(e, m, TRUE);
break;
+ case PA_ALSA_SWITCH_MUTE:
case PA_ALSA_SWITCH_IGNORE:
case PA_ALSA_SWITCH_SELECT:
r = 0;
@@ -960,7 +960,6 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
switch (e->volume_use) {
case PA_ALSA_VOLUME_OFF:
- case PA_ALSA_VOLUME_MERGE:
r = element_mute_volume(e, m);
break;
@@ -968,6 +967,7 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
r = element_zero_volume(e, m);
break;
+ case PA_ALSA_VOLUME_MERGE:
case PA_ALSA_VOLUME_IGNORE:
r = 0;
break;
@@ -1849,7 +1849,12 @@ pa_alsa_path* pa_alsa_path_new(const char *fname, pa_alsa_direction_t direction)
items[1].data = &p->description;
items[2].data = &p->name;
- fn = pa_maybe_prefix_path(fname, PA_ALSA_PATHS_DIR);
+ fn = pa_maybe_prefix_path(fname,
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+ pa_run_from_build_tree() ? PA_BUILDDIR "/modules/alsa/mixer/paths/" :
+#endif
+ PA_ALSA_PATHS_DIR);
+
r = pa_config_parse(fn, NULL, items, p);
pa_xfree(fn);
@@ -2838,9 +2843,9 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) {
if (bonus) {
if (pa_channel_map_equal(&m->channel_map, bonus))
- m->priority += 5000;
+ m->priority += 50;
else if (m->channel_map.channels == bonus->channels)
- m->priority += 4000;
+ m->priority += 30;
}
return 0;
@@ -2884,7 +2889,7 @@ static void profile_set_add_auto_pair(
else
name = pa_sprintf_malloc("input:%s", n->name);
- if ((p = pa_hashmap_get(ps->profiles, name))) {
+ if (pa_hashmap_get(ps->profiles, name)) {
pa_xfree(name);
return;
}
@@ -3110,7 +3115,12 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel
if (!fname)
fname = "default.conf";
- fn = pa_maybe_prefix_path(fname, PA_ALSA_PROFILE_SETS_DIR);
+ fn = pa_maybe_prefix_path(fname,
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+ pa_run_from_build_tree() ? PA_BUILDDIR "/modules/alsa/mixer/profile-sets/" :
+#endif
+ PA_ALSA_PROFILE_SETS_DIR);
+
r = pa_config_parse(fn, NULL, items, ps);
pa_xfree(fn);
@@ -3135,7 +3145,13 @@ fail:
return NULL;
}
-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_probe(
+ pa_alsa_profile_set *ps,
+ const char *dev_id,
+ const pa_sample_spec *ss,
+ unsigned default_n_fragments,
+ unsigned default_fragment_size_msec) {
+
void *state;
pa_alsa_profile *p, *last = NULL;
pa_alsa_mapping *m;
@@ -3150,6 +3166,7 @@ void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, cons
PA_HASHMAP_FOREACH(p, ps->profiles, state) {
pa_sample_spec try_ss;
pa_channel_map try_map;
+ snd_pcm_uframes_t try_period_size, try_buffer_size;
uint32_t idx;
/* Is this already marked that it is supported? (i.e. from the config file) */
@@ -3203,13 +3220,18 @@ void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, cons
try_ss = *ss;
try_ss.channels = try_map.channels;
+ try_period_size =
+ pa_usec_to_bytes(default_fragment_size_msec * PA_USEC_PER_MSEC, &try_ss) /
+ pa_frame_size(&try_ss);
+ try_buffer_size = default_n_fragments * try_period_size;
+
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,
+ &try_period_size, &try_buffer_size, 0, NULL, NULL,
TRUE))) {
p->supported = FALSE;
break;
@@ -3227,13 +3249,18 @@ void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, cons
try_ss = *ss;
try_ss.channels = try_map.channels;
+ try_period_size =
+ pa_usec_to_bytes(default_fragment_size_msec*PA_USEC_PER_MSEC, &try_ss) /
+ pa_frame_size(&try_ss);
+ try_buffer_size = default_n_fragments * try_period_size;
+
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,
+ &try_period_size, &try_buffer_size, 0, NULL, NULL,
TRUE))) {
p->supported = FALSE;
break;
diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h
index 76788183..a0d4fcbe 100644
--- a/src/modules/alsa/alsa-mixer.h
+++ b/src/modules/alsa/alsa-mixer.h
@@ -269,7 +269,7 @@ 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_probe(pa_alsa_profile_set *ps, const char *dev_id, const pa_sample_spec *ss, unsigned default_n_fragments, unsigned default_fragment_size_msec);
void pa_alsa_profile_set_free(pa_alsa_profile_set *s);
void pa_alsa_profile_set_dump(pa_alsa_profile_set *s);
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 0cde694c..22e88b4a 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -62,11 +62,26 @@
/* #define DEBUG_TIMING */
#define DEFAULT_DEVICE "default"
-#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s -- Overall buffer size */
-#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms -- Fill up when only this much is left in the buffer */
-#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- On underrun, increase watermark by this */
-#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- Sleep at least 10ms on each iteration */
-#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms -- Wakeup at least this long before the buffer runs empty*/
+
+#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s -- Overall buffer size */
+#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms -- Fill up when only this much is left in the buffer */
+
+#define TSCHED_WATERMARK_INC_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- On underrun, increase watermark by this */
+#define TSCHED_WATERMARK_DEC_STEP_USEC (5*PA_USEC_PER_MSEC) /* 5ms -- When everything's great, decrease watermark by this */
+#define TSCHED_WATERMARK_VERIFY_AFTER_USEC (20*PA_USEC_PER_SEC) /* 20s -- How long after a drop out recheck if things are good now */
+#define TSCHED_WATERMARK_INC_THRESHOLD_USEC (0*PA_USEC_PER_MSEC) /* 0ms -- If the buffer level ever below this theshold, increase the watermark */
+#define TSCHED_WATERMARK_DEC_THRESHOLD_USEC (100*PA_USEC_PER_MSEC) /* 100ms -- If the buffer level didn't drop below this theshold in the verification time, decrease the watermark */
+
+/* Note that TSCHED_WATERMARK_INC_THRESHOLD_USEC == 0 means tht we
+ * will increase the watermark only if we hit a real underrun. */
+
+#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- Sleep at least 10ms on each iteration */
+#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms -- Wakeup at least this long before the buffer runs empty*/
+
+#define SMOOTHER_MIN_INTERVAL (2*PA_USEC_PER_MSEC) /* 2ms -- min smoother update interval */
+#define SMOOTHER_MAX_INTERVAL (200*PA_USEC_PER_MSEC) /* 200ms -- max smoother update inteval */
+
+#define VOLUME_ACCURACY (PA_VOLUME_NORM/100) /* don't require volume adjustments to be perfectly correct. don't necessarily extend granularity in software unless the differences get greater than this level */
struct userdata {
pa_core *core;
@@ -94,9 +109,13 @@ struct userdata {
hwbuf_unused,
min_sleep,
min_wakeup,
- watermark_step;
+ watermark_inc_step,
+ watermark_dec_step,
+ watermark_inc_threshold,
+ watermark_dec_threshold;
+
+ pa_usec_t watermark_dec_not_before;
- unsigned nfragments;
pa_memchunk memchunk;
char *device_name; /* name of the PCM device */
@@ -113,6 +132,8 @@ struct userdata {
pa_smoother *smoother;
uint64_t write_count;
uint64_t since_start;
+ pa_usec_t smoother_interval;
+ pa_usec_t last_smoother_update;
pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot;
@@ -241,6 +262,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
pa_assert(u);
+ pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused;
max_use_2 = pa_frame_align(max_use/2, &u->sink->sample_spec);
@@ -255,6 +277,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) {
static void fix_tsched_watermark(struct userdata *u) {
size_t max_use;
pa_assert(u);
+ pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused;
@@ -265,7 +288,7 @@ static void fix_tsched_watermark(struct userdata *u) {
u->tsched_watermark = u->min_wakeup;
}
-static void adjust_after_underrun(struct userdata *u) {
+static void increase_watermark(struct userdata *u) {
size_t old_watermark;
pa_usec_t old_min_latency, new_min_latency;
@@ -274,31 +297,64 @@ static void adjust_after_underrun(struct userdata *u) {
/* First, just try to increase the watermark */
old_watermark = u->tsched_watermark;
- u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step);
+ u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_inc_step);
fix_tsched_watermark(u);
if (old_watermark != u->tsched_watermark) {
- pa_log_notice("Increasing wakeup watermark to %0.2f ms",
- (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
+ pa_log_info("Increasing wakeup watermark to %0.2f ms",
+ (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
return;
}
/* Hmm, we cannot increase the watermark any further, hence let's raise the latency */
old_min_latency = u->sink->thread_info.min_latency;
- new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC);
+ new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_INC_STEP_USEC);
new_min_latency = PA_MIN(new_min_latency, u->sink->thread_info.max_latency);
if (old_min_latency != new_min_latency) {
- pa_log_notice("Increasing minimal latency to %0.2f ms",
- (double) new_min_latency / PA_USEC_PER_MSEC);
+ pa_log_info("Increasing minimal latency to %0.2f ms",
+ (double) new_min_latency / PA_USEC_PER_MSEC);
pa_sink_set_latency_range_within_thread(u->sink, new_min_latency, u->sink->thread_info.max_latency);
- return;
}
/* When we reach this we're officialy fucked! */
}
+static void decrease_watermark(struct userdata *u) {
+ size_t old_watermark;
+ pa_usec_t now;
+
+ pa_assert(u);
+ pa_assert(u->use_tsched);
+
+ now = pa_rtclock_now();
+
+ if (u->watermark_dec_not_before <= 0)
+ goto restart;
+
+ if (u->watermark_dec_not_before > now)
+ return;
+
+ old_watermark = u->tsched_watermark;
+
+ if (u->tsched_watermark < u->watermark_dec_step)
+ u->tsched_watermark = u->tsched_watermark / 2;
+ else
+ u->tsched_watermark = PA_MAX(u->tsched_watermark / 2, u->tsched_watermark - u->watermark_dec_step);
+
+ fix_tsched_watermark(u);
+
+ if (old_watermark != u->tsched_watermark)
+ pa_log_info("Decreasing wakeup watermark to %0.2f ms",
+ (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
+
+ /* We don't change the latency range*/
+
+restart:
+ u->watermark_dec_not_before = now + TSCHED_WATERMARK_VERIFY_AFTER_USEC;
+}
+
static void hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*process_usec) {
pa_usec_t usec, wm;
@@ -306,6 +362,7 @@ static void hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*p
pa_assert(process_usec);
pa_assert(u);
+ pa_assert(u->use_tsched);
usec = pa_sink_get_requested_latency_within_thread(u->sink);
@@ -340,6 +397,9 @@ static int try_recover(struct userdata *u, const char *call, int err) {
if (err == -EPIPE)
pa_log_debug("%s: Buffer underrun!", call);
+ if (err == -ESTRPIPE)
+ pa_log_debug("%s: System suspended!", call);
+
if ((err = snd_pcm_recover(u->pcm_handle, err, 1)) < 0) {
pa_log("%s: %s", call, pa_alsa_strerror(err));
return -1;
@@ -350,42 +410,65 @@ static int try_recover(struct userdata *u, const char *call, int err) {
return 0;
}
-static size_t check_left_to_play(struct userdata *u, size_t n_bytes) {
+static size_t check_left_to_play(struct userdata *u, size_t n_bytes, pa_bool_t on_timeout) {
size_t left_to_play;
+ pa_bool_t underrun = FALSE;
/* We use <= instead of < for this check here because an underrun
* only happens after the last sample was processed, not already when
* it is removed from the buffer. This is particularly important
* when block transfer is used. */
- if (n_bytes <= u->hwbuf_size) {
+ if (n_bytes <= u->hwbuf_size)
left_to_play = u->hwbuf_size - n_bytes;
+ else {
+
+ /* We got a dropout. What a mess! */
+ left_to_play = 0;
+ underrun = TRUE;
#ifdef DEBUG_TIMING
- pa_log_debug("%0.2f ms left to play", (double) pa_bytes_to_usec(left_to_play, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
+ PA_DEBUG_TRAP;
#endif
- } else {
- left_to_play = 0;
+ if (!u->first && !u->after_rewind)
+ if (pa_log_ratelimit())
+ pa_log_info("Underrun!");
+ }
#ifdef DEBUG_TIMING
- PA_DEBUG_TRAP;
+ pa_log_debug("%0.2f ms left to play; inc threshold = %0.2f ms; dec threshold = %0.2f ms",
+ (double) pa_bytes_to_usec(left_to_play, &u->sink->sample_spec) / PA_USEC_PER_MSEC,
+ (double) pa_bytes_to_usec(u->watermark_inc_threshold, &u->sink->sample_spec) / PA_USEC_PER_MSEC,
+ (double) pa_bytes_to_usec(u->watermark_dec_threshold, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
#endif
+ if (u->use_tsched) {
+ pa_bool_t reset_not_before = TRUE;
+
if (!u->first && !u->after_rewind) {
+ if (underrun || left_to_play < u->watermark_inc_threshold)
+ increase_watermark(u);
+ else if (left_to_play > u->watermark_dec_threshold) {
+ reset_not_before = FALSE;
- if (pa_log_ratelimit())
- pa_log_info("Underrun!");
+ /* We decrease the watermark only if have actually
+ * been woken up by a timeout. If something else woke
+ * us up it's too easy to fulfill the deadlines... */
- if (u->use_tsched)
- adjust_after_underrun(u);
+ if (on_timeout)
+ decrease_watermark(u);
+ }
}
+
+ if (reset_not_before)
+ u->watermark_dec_not_before = 0;
}
return left_to_play;
}
-static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) {
+static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) {
pa_bool_t work_done = TRUE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_play;
@@ -401,6 +484,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
snd_pcm_sframes_t n;
size_t n_bytes;
int r;
+ pa_bool_t after_avail = TRUE;
/* First we determine how many samples are missing to fill the
* buffer up to 100% */
@@ -419,7 +503,8 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
pa_log_debug("avail: %lu", (unsigned long) n_bytes);
#endif
- left_to_play = check_left_to_play(u, n_bytes);
+ left_to_play = check_left_to_play(u, n_bytes, on_timeout);
+ on_timeout = FALSE;
if (u->use_tsched)
@@ -484,6 +569,9 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (PA_UNLIKELY((err = pa_alsa_safe_mmap_begin(u->pcm_handle, &areas, &offset, &frames, u->hwbuf_size, &u->sink->sample_spec)) < 0)) {
+ if (!after_avail && err == -EAGAIN)
+ break;
+
if ((r = try_recover(u, "snd_pcm_mmap_begin", err)) == 0)
continue;
@@ -494,6 +582,12 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (frames > pa_mempool_block_size_max(u->sink->core->mempool)/u->frame_size)
frames = pa_mempool_block_size_max(u->sink->core->mempool)/u->frame_size;
+ if (!after_avail && frames == 0)
+ break;
+
+ pa_assert(frames > 0);
+ after_avail = FALSE;
+
/* Check these are multiples of 8 bit */
pa_assert((areas[0].first & 7) == 0);
pa_assert((areas[0].step & 7)== 0);
@@ -545,7 +639,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
return work_done ? 1 : 0;
}
-static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) {
+static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) {
pa_bool_t work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_play;
@@ -561,6 +655,7 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
snd_pcm_sframes_t n;
size_t n_bytes;
int r;
+ pa_bool_t after_avail = TRUE;
if (PA_UNLIKELY((n = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->sink->sample_spec)) < 0)) {
@@ -571,7 +666,8 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
}
n_bytes = (size_t) n * u->frame_size;
- left_to_play = check_left_to_play(u, n_bytes);
+ left_to_play = check_left_to_play(u, n_bytes, on_timeout);
+ on_timeout = FALSE;
if (u->use_tsched)
@@ -631,16 +727,23 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
frames = snd_pcm_writei(u->pcm_handle, (const uint8_t*) p + u->memchunk.index, (snd_pcm_uframes_t) frames);
pa_memblock_release(u->memchunk.memblock);
- pa_assert(frames != 0);
-
if (PA_UNLIKELY(frames < 0)) {
+ if (!after_avail && (int) frames == -EAGAIN)
+ break;
+
if ((r = try_recover(u, "snd_pcm_writei", (int) frames)) == 0)
continue;
return r;
}
+ if (!after_avail && frames == 0)
+ break;
+
+ pa_assert(frames > 0);
+ after_avail = FALSE;
+
u->memchunk.index += (size_t) frames * u->frame_size;
u->memchunk.length -= (size_t) frames * u->frame_size;
@@ -700,18 +803,27 @@ static void update_smoother(struct userdata *u) {
now1 = pa_timespec_load(&htstamp);
}
+ /* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */
+ if (now1 <= 0)
+ now1 = pa_rtclock_now();
+
+ /* check if the time since the last update is bigger than the interval */
+ if (u->last_smoother_update > 0)
+ if (u->last_smoother_update + u->smoother_interval > now1)
+ return;
+
position = (int64_t) u->write_count - ((int64_t) delay * (int64_t) u->frame_size);
if (PA_UNLIKELY(position < 0))
position = 0;
- /* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */
- if (now1 <= 0)
- now1 = pa_rtclock_now();
-
now2 = pa_bytes_to_usec((uint64_t) position, &u->sink->sample_spec);
pa_smoother_put(u->smoother, now1, now2);
+
+ u->last_smoother_update = now1;
+ /* exponentially increase the update interval up to the MAX limit */
+ u->smoother_interval = PA_MIN (u->smoother_interval * 2, SMOOTHER_MAX_INTERVAL);
}
static pa_usec_t sink_get_latency(struct userdata *u) {
@@ -830,8 +942,7 @@ static int unsuspend(struct userdata *u) {
pa_sample_spec ss;
int err;
pa_bool_t b, d;
- unsigned nfrags;
- snd_pcm_uframes_t period_size;
+ snd_pcm_uframes_t period_size, buffer_size;
pa_assert(u);
pa_assert(!u->pcm_handle);
@@ -839,7 +950,7 @@ static int unsuspend(struct userdata *u) {
pa_log_info("Trying resume...");
if ((err = snd_pcm_open(&u->pcm_handle, u->device_name, SND_PCM_STREAM_PLAYBACK,
- /*SND_PCM_NONBLOCK|*/
+ SND_PCM_NONBLOCK|
SND_PCM_NO_AUTO_RESAMPLE|
SND_PCM_NO_AUTO_CHANNELS|
SND_PCM_NO_AUTO_FORMAT)) < 0) {
@@ -848,12 +959,12 @@ static int unsuspend(struct userdata *u) {
}
ss = u->sink->sample_spec;
- nfrags = u->nfragments;
period_size = u->fragment_size / u->frame_size;
+ buffer_size = u->hwbuf_size / u->frame_size;
b = u->use_mmap;
d = u->use_tsched;
- if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &nfrags, &period_size, u->hwbuf_size / u->frame_size, &b, &d, TRUE)) < 0) {
+ if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &period_size, &buffer_size, 0, &b, &d, TRUE)) < 0) {
pa_log("Failed to set hardware parameters: %s", pa_alsa_strerror(err));
goto fail;
}
@@ -868,10 +979,11 @@ static int unsuspend(struct userdata *u) {
goto fail;
}
- if (nfrags != u->nfragments || period_size*u->frame_size != u->fragment_size) {
- pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu*%lu, New %lu*%lu)",
- (unsigned long) u->nfragments, (unsigned long) u->fragment_size,
- (unsigned long) nfrags, period_size * u->frame_size);
+ if (period_size*u->frame_size != u->fragment_size ||
+ buffer_size*u->frame_size != u->hwbuf_size) {
+ pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu/%lu, New %lu/%lu)",
+ (unsigned long) u->hwbuf_size, (unsigned long) u->fragment_size,
+ (unsigned long) (buffer_size*u->fragment_size), (unsigned long) (period_size*u->frame_size));
goto fail;
}
@@ -881,6 +993,11 @@ static int unsuspend(struct userdata *u) {
if (build_pollfd(u) < 0)
goto fail;
+ u->write_count = 0;
+ pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
+ u->smoother_interval = SMOOTHER_MIN_INTERVAL;
+ u->last_smoother_update = 0;
+
u->first = TRUE;
u->since_start = 0;
@@ -894,7 +1011,7 @@ fail:
u->pcm_handle = NULL;
}
- return -1;
+ return -PA_ERR_IO;
}
/* Called from IO context */
@@ -918,28 +1035,33 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
switch ((pa_sink_state_t) PA_PTR_TO_UINT(data)) {
- case PA_SINK_SUSPENDED:
+ case PA_SINK_SUSPENDED: {
+ int r;
+
pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
- if (suspend(u) < 0)
- return -1;
+ if ((r = suspend(u)) < 0)
+ return r;
break;
+ }
case PA_SINK_IDLE:
- case PA_SINK_RUNNING:
+ case PA_SINK_RUNNING: {
+ int r;
if (u->sink->thread_info.state == PA_SINK_INIT) {
if (build_pollfd(u) < 0)
- return -1;
+ return -PA_ERR_IO;
}
if (u->sink->thread_info.state == PA_SINK_SUSPENDED) {
- if (unsuspend(u) < 0)
- return -1;
+ if ((r = unsuspend(u)) < 0)
+ return r;
}
break;
+ }
case PA_SINK_UNLINKED:
case PA_SINK_INIT:
@@ -967,7 +1089,7 @@ static int sink_set_state_cb(pa_sink *s, pa_sink_state_t new_state) {
reserve_done(u);
else if (old_state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(new_state))
if (reserve_init(u, u->device_name) < 0)
- return -1;
+ return -PA_ERR_BUSY;
return 0;
}
@@ -982,7 +1104,7 @@ static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) {
return 0;
if (mask & SND_CTL_EVENT_MASK_VALUE) {
- pa_sink_get_volume(u->sink, TRUE, FALSE);
+ pa_sink_get_volume(u->sink, TRUE);
pa_sink_get_mute(u->sink, TRUE);
}
@@ -1009,15 +1131,11 @@ static void sink_get_volume_cb(pa_sink *s) {
if (pa_cvolume_equal(&u->hardware_volume, &r))
return;
- s->virtual_volume = u->hardware_volume = r;
+ s->real_volume = u->hardware_volume = r;
- 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 */
+ if (u->mixer_path->has_dB)
+ pa_sink_set_soft_volume(s, NULL);
}
static void sink_set_volume_cb(pa_sink *s) {
@@ -1030,7 +1148,7 @@ static void sink_set_volume_cb(pa_sink *s) {
pa_assert(u->mixer_handle);
/* Shift up by the base volume */
- pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume);
+ pa_sw_cvolume_divide_scalar(&r, &s->real_volume, s->base_volume);
if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
return;
@@ -1041,13 +1159,26 @@ static void sink_set_volume_cb(pa_sink *s) {
u->hardware_volume = r;
if (u->mixer_path->has_dB) {
+ pa_cvolume new_soft_volume;
+ pa_bool_t accurate_enough;
/* Match exactly what the user requested by software */
- pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume);
+ pa_sw_cvolume_divide(&new_soft_volume, &s->real_volume, &u->hardware_volume);
- pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume));
+ /* If the adjustment to do in software is only minimal we
+ * can skip it. That saves us CPU at the expense of a bit of
+ * accuracy */
+ accurate_enough =
+ (pa_cvolume_min(&new_soft_volume) >= (PA_VOLUME_NORM - VOLUME_ACCURACY)) &&
+ (pa_cvolume_max(&new_soft_volume) <= (PA_VOLUME_NORM + VOLUME_ACCURACY));
+
+ pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->real_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));
+ pa_log_debug("Calculated software volume: %s (accurate-enough=%s)", pa_cvolume_snprint(t, sizeof(t), &new_soft_volume),
+ pa_yes_no(accurate_enough));
+
+ if (!accurate_enough)
+ s->soft_volume = new_soft_volume;
} else {
pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
@@ -1055,7 +1186,7 @@ static void sink_set_volume_cb(pa_sink *s) {
/* We can't match exactly what the user requested, hence let's
* at least tell the user about it */
- s->virtual_volume = r;
+ s->real_volume = r;
}
}
@@ -1177,8 +1308,11 @@ static int process_rewind(struct userdata *u) {
pa_log_debug("before: %lu", (unsigned long) in_frames);
if ((out_frames = snd_pcm_rewind(u->pcm_handle, (snd_pcm_uframes_t) in_frames)) < 0) {
pa_log("snd_pcm_rewind() failed: %s", pa_alsa_strerror((int) out_frames));
- return -1;
+ if (try_recover(u, "process_rewind", out_frames) < 0)
+ return -1;
+ out_frames = 0;
}
+
pa_log_debug("after: %lu", (unsigned long) out_frames);
rewind_nbytes = (size_t) out_frames * u->frame_size;
@@ -1186,7 +1320,7 @@ static int process_rewind(struct userdata *u) {
if (rewind_nbytes <= 0)
pa_log_info("Tried rewind, but was apparently not possible.");
else {
- u->write_count -= out_frames * u->frame_size;
+ u->write_count -= rewind_nbytes;
pa_log_debug("Rewound %lu bytes.", (unsigned long) rewind_nbytes);
pa_sink_process_rewind(u->sink, rewind_nbytes);
@@ -1224,15 +1358,16 @@ static void thread_func(void *userdata) {
if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
int work_done;
pa_usec_t sleep_usec = 0;
+ pa_bool_t on_timeout = pa_rtpoll_timer_elapsed(u->rtpoll);
if (PA_UNLIKELY(u->sink->thread_info.rewind_requested))
if (process_rewind(u) < 0)
goto fail;
if (u->use_mmap)
- work_done = mmap_write(u, &sleep_usec, revents & POLLOUT);
+ work_done = mmap_write(u, &sleep_usec, revents & POLLOUT, on_timeout);
else
- work_done = unix_write(u, &sleep_usec, revents & POLLOUT);
+ work_done = unix_write(u, &sleep_usec, revents & POLLOUT, on_timeout);
if (work_done < 0)
goto fail;
@@ -1264,7 +1399,8 @@ static void thread_func(void *userdata) {
* we have filled the buffer at least once
* completely.*/
- pa_log_debug("Cutting sleep time for the initial iterations by half.");
+ if (pa_log_ratelimit())
+ pa_log_debug("Cutting sleep time for the initial iterations by half.");
sleep_usec /= 2;
}
@@ -1506,8 +1642,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
const char *dev_id = NULL;
pa_sample_spec ss, requested_ss;
pa_channel_map map;
- uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark;
- snd_pcm_uframes_t period_frames, tsched_frames;
+ uint32_t nfrags, frag_size, buffer_size, tsched_size, tsched_watermark;
+ snd_pcm_uframes_t period_frames, buffer_frames, tsched_frames;
size_t frame_size;
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
pa_sink_new_data data;
@@ -1541,8 +1677,10 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
goto fail;
}
- hwbuf_size = frag_size * nfrags;
+ buffer_size = nfrags * frag_size;
+
period_frames = frag_size/frame_size;
+ buffer_frames = buffer_size/frame_size;
tsched_frames = tsched_size/frame_size;
if (pa_modargs_get_value_boolean(ma, "mmap", &use_mmap) < 0) {
@@ -1582,6 +1720,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
5,
pa_rtclock_now(),
TRUE);
+ u->smoother_interval = SMOOTHER_MIN_INTERVAL;
dev_id = pa_modargs_get_value(
ma, "device_id",
@@ -1608,7 +1747,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
&u->device_name,
&ss, &map,
SND_PCM_STREAM_PLAYBACK,
- &nfrags, &period_frames, tsched_frames,
+ &period_frames, &buffer_frames, tsched_frames,
&b, &d, mapping)))
goto fail;
@@ -1623,7 +1762,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
&u->device_name,
&ss, &map,
SND_PCM_STREAM_PLAYBACK,
- &nfrags, &period_frames, tsched_frames,
+ &period_frames, &buffer_frames, tsched_frames,
&b, &d, profile_set, &mapping)))
goto fail;
@@ -1635,7 +1774,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
&u->device_name,
&ss, &map,
SND_PCM_STREAM_PLAYBACK,
- &nfrags, &period_frames, tsched_frames,
+ &period_frames, &buffer_frames, tsched_frames,
&b, &d, FALSE)))
goto fail;
}
@@ -1661,11 +1800,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->use_tsched = use_tsched = FALSE;
}
- if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) {
- pa_log_info("Device is not a hardware device, disabling timer-based scheduling.");
- u->use_tsched = use_tsched = FALSE;
- }
-
if (u->use_mmap)
pa_log_info("Successfully enabled mmap() mode.");
@@ -1687,7 +1821,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
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_BUFFER_SIZE, "%lu", (unsigned long) (buffer_frames * frame_size));
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"));
@@ -1728,21 +1862,28 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_sink_set_rtpoll(u->sink, u->rtpoll);
u->frame_size = frame_size;
- u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size);
- u->nfragments = nfrags;
- u->hwbuf_size = u->fragment_size * nfrags;
- u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->sink->sample_spec);
+ u->fragment_size = frag_size = (size_t) (period_frames * frame_size);
+ u->hwbuf_size = buffer_size = (size_t) (buffer_frames * frame_size);
pa_cvolume_mute(&u->hardware_volume, u->sink->sample_spec.channels);
- pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
- nfrags, (long unsigned) u->fragment_size,
+ pa_log_info("Using %0.1f fragments of size %lu bytes (%0.2fms), buffer size is %lu bytes (%0.2fms)",
+ (double) u->hwbuf_size / (double) u->fragment_size,
+ (long unsigned) u->fragment_size,
+ (double) pa_bytes_to_usec(u->fragment_size, &ss) / PA_USEC_PER_MSEC,
+ (long unsigned) u->hwbuf_size,
(double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC);
pa_sink_set_max_request(u->sink, u->hwbuf_size);
pa_sink_set_max_rewind(u->sink, u->hwbuf_size);
if (u->use_tsched) {
- u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->sink->sample_spec);
+ u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->sink->sample_spec);
+
+ u->watermark_inc_step = pa_usec_to_bytes(TSCHED_WATERMARK_INC_STEP_USEC, &u->sink->sample_spec);
+ u->watermark_dec_step = pa_usec_to_bytes(TSCHED_WATERMARK_DEC_STEP_USEC, &u->sink->sample_spec);
+
+ u->watermark_inc_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_INC_THRESHOLD_USEC, &u->sink->sample_spec);
+ u->watermark_dec_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_DEC_THRESHOLD_USEC, &u->sink->sample_spec);
fix_min_sleep_wakeup(u);
fix_tsched_watermark(u);
@@ -1756,6 +1897,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
} else
pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
+
reserve_update(u);
if (update_sw_params(u) < 0)
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index a6760e1e..fa3ac0aa 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -59,11 +59,24 @@
/* #define DEBUG_TIMING */
#define DEFAULT_DEVICE "default"
-#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */
-#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */
-#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
-#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
-#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */
+
+#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */
+#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */
+
+#define TSCHED_WATERMARK_INC_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
+#define TSCHED_WATERMARK_DEC_STEP_USEC (5*PA_USEC_PER_MSEC) /* 5ms */
+#define TSCHED_WATERMARK_VERIFY_AFTER_USEC (20*PA_USEC_PER_SEC) /* 20s */
+#define TSCHED_WATERMARK_INC_THRESHOLD_USEC (0*PA_USEC_PER_MSEC) /* 0ms */
+#define TSCHED_WATERMARK_DEC_THRESHOLD_USEC (100*PA_USEC_PER_MSEC) /* 100ms */
+#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
+
+#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
+#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */
+
+#define SMOOTHER_MIN_INTERVAL (2*PA_USEC_PER_MSEC) /* 2ms */
+#define SMOOTHER_MAX_INTERVAL (200*PA_USEC_PER_MSEC) /* 200ms */
+
+#define VOLUME_ACCURACY (PA_VOLUME_NORM/100)
struct userdata {
pa_core *core;
@@ -91,9 +104,12 @@ struct userdata {
hwbuf_unused,
min_sleep,
min_wakeup,
- watermark_step;
+ watermark_inc_step,
+ watermark_dec_step,
+ watermark_inc_threshold,
+ watermark_dec_threshold;
- unsigned nfragments;
+ pa_usec_t watermark_dec_not_before;
char *device_name;
char *control_device;
@@ -106,6 +122,8 @@ struct userdata {
pa_smoother *smoother;
uint64_t read_count;
+ pa_usec_t smoother_interval;
+ pa_usec_t last_smoother_update;
pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot;
@@ -234,6 +252,7 @@ static int reserve_monitor_init(struct userdata *u, const char *dname) {
static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
pa_assert(u);
+ pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused;
max_use_2 = pa_frame_align(max_use/2, &u->source->sample_spec);
@@ -248,6 +267,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) {
static void fix_tsched_watermark(struct userdata *u) {
size_t max_use;
pa_assert(u);
+ pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused;
@@ -258,7 +278,7 @@ static void fix_tsched_watermark(struct userdata *u) {
u->tsched_watermark = u->min_wakeup;
}
-static void adjust_after_overrun(struct userdata *u) {
+static void increase_watermark(struct userdata *u) {
size_t old_watermark;
pa_usec_t old_min_latency, new_min_latency;
@@ -267,36 +287,72 @@ static void adjust_after_overrun(struct userdata *u) {
/* First, just try to increase the watermark */
old_watermark = u->tsched_watermark;
- u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step);
-
+ u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_inc_step);
fix_tsched_watermark(u);
if (old_watermark != u->tsched_watermark) {
- pa_log_notice("Increasing wakeup watermark to %0.2f ms",
- (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC);
+ pa_log_info("Increasing wakeup watermark to %0.2f ms",
+ (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC);
return;
}
/* Hmm, we cannot increase the watermark any further, hence let's raise the latency */
old_min_latency = u->source->thread_info.min_latency;
- new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC);
+ new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_INC_STEP_USEC);
new_min_latency = PA_MIN(new_min_latency, u->source->thread_info.max_latency);
if (old_min_latency != new_min_latency) {
- pa_log_notice("Increasing minimal latency to %0.2f ms",
- (double) new_min_latency / PA_USEC_PER_MSEC);
+ pa_log_info("Increasing minimal latency to %0.2f ms",
+ (double) new_min_latency / PA_USEC_PER_MSEC);
pa_source_set_latency_range_within_thread(u->source, new_min_latency, u->source->thread_info.max_latency);
- return;
}
/* When we reach this we're officialy fucked! */
}
+static void decrease_watermark(struct userdata *u) {
+ size_t old_watermark;
+ pa_usec_t now;
+
+ pa_assert(u);
+ pa_assert(u->use_tsched);
+
+ now = pa_rtclock_now();
+
+ if (u->watermark_dec_not_before <= 0)
+ goto restart;
+
+ if (u->watermark_dec_not_before > now)
+ return;
+
+ old_watermark = u->tsched_watermark;
+
+ if (u->tsched_watermark < u->watermark_dec_step)
+ u->tsched_watermark = u->tsched_watermark / 2;
+ else
+ u->tsched_watermark = PA_MAX(u->tsched_watermark / 2, u->tsched_watermark - u->watermark_dec_step);
+
+ fix_tsched_watermark(u);
+
+ if (old_watermark != u->tsched_watermark)
+ pa_log_info("Decreasing wakeup watermark to %0.2f ms",
+ (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC);
+
+ /* We don't change the latency range*/
+
+restart:
+ u->watermark_dec_not_before = now + TSCHED_WATERMARK_VERIFY_AFTER_USEC;
+}
+
static pa_usec_t hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*process_usec) {
pa_usec_t wm, usec;
+ pa_assert(sleep_usec);
+ pa_assert(process_usec);
+
pa_assert(u);
+ pa_assert(u->use_tsched);
usec = pa_source_get_requested_latency_within_thread(u->source);
@@ -333,6 +389,9 @@ static int try_recover(struct userdata *u, const char *call, int err) {
if (err == -EPIPE)
pa_log_debug("%s: Buffer overrun!", call);
+ if (err == -ESTRPIPE)
+ pa_log_debug("%s: System suspended!", call);
+
if ((err = snd_pcm_recover(u->pcm_handle, err, 1)) < 0) {
pa_log("%s: %s", call, pa_alsa_strerror(err));
return -1;
@@ -342,24 +401,23 @@ static int try_recover(struct userdata *u, const char *call, int err) {
return 0;
}
-static size_t check_left_to_record(struct userdata *u, size_t n_bytes) {
+static size_t check_left_to_record(struct userdata *u, size_t n_bytes, pa_bool_t on_timeout) {
size_t left_to_record;
size_t rec_space = u->hwbuf_size - u->hwbuf_unused;
+ pa_bool_t overrun = FALSE;
/* We use <= instead of < for this check here because an overrun
* only happens after the last sample was processed, not already when
* it is removed from the buffer. This is particularly important
* when block transfer is used. */
- if (n_bytes <= rec_space) {
+ if (n_bytes <= rec_space)
left_to_record = rec_space - n_bytes;
+ else {
-#ifdef DEBUG_TIMING
- pa_log_debug("%0.2f ms left to record", (double) pa_bytes_to_usec(left_to_record, &u->source->sample_spec) / PA_USEC_PER_MSEC);
-#endif
-
- } else {
+ /* We got a dropout. What a mess! */
left_to_record = 0;
+ overrun = TRUE;
#ifdef DEBUG_TIMING
PA_DEBUG_TRAP;
@@ -367,15 +425,36 @@ static size_t check_left_to_record(struct userdata *u, size_t n_bytes) {
if (pa_log_ratelimit())
pa_log_info("Overrun!");
+ }
- if (u->use_tsched)
- adjust_after_overrun(u);
+#ifdef DEBUG_TIMING
+ pa_log_debug("%0.2f ms left to record", (double) pa_bytes_to_usec(left_to_record, &u->source->sample_spec) / PA_USEC_PER_MSEC);
+#endif
+
+ if (u->use_tsched) {
+ pa_bool_t reset_not_before = TRUE;
+
+ if (overrun || left_to_record < u->watermark_inc_threshold)
+ increase_watermark(u);
+ else if (left_to_record > u->watermark_dec_threshold) {
+ reset_not_before = FALSE;
+
+ /* We decrease the watermark only if have actually been
+ * woken up by a timeout. If something else woke us up
+ * it's too easy to fulfill the deadlines... */
+
+ if (on_timeout)
+ decrease_watermark(u);
+ }
+
+ if (reset_not_before)
+ u->watermark_dec_not_before = 0;
}
return left_to_record;
}
-static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) {
+static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) {
pa_bool_t work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_record;
@@ -391,6 +470,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
snd_pcm_sframes_t n;
size_t n_bytes;
int r;
+ pa_bool_t after_avail = TRUE;
if (PA_UNLIKELY((n = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->source->sample_spec)) < 0)) {
@@ -406,7 +486,8 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
pa_log_debug("avail: %lu", (unsigned long) n_bytes);
#endif
- left_to_record = check_left_to_record(u, n_bytes);
+ left_to_record = check_left_to_record(u, n_bytes, on_timeout);
+ on_timeout = FALSE;
if (u->use_tsched)
if (!polled &&
@@ -463,6 +544,9 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (PA_UNLIKELY((err = pa_alsa_safe_mmap_begin(u->pcm_handle, &areas, &offset, &frames, u->hwbuf_size, &u->source->sample_spec)) < 0)) {
+ if (!after_avail && err == -EAGAIN)
+ break;
+
if ((r = try_recover(u, "snd_pcm_mmap_begin", err)) == 0)
continue;
@@ -473,6 +557,12 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (frames > pa_mempool_block_size_max(u->source->core->mempool)/u->frame_size)
frames = pa_mempool_block_size_max(u->source->core->mempool)/u->frame_size;
+ if (!after_avail && frames == 0)
+ break;
+
+ pa_assert(frames > 0);
+ after_avail = FALSE;
+
/* Check these are multiples of 8 bit */
pa_assert((areas[0].first & 7) == 0);
pa_assert((areas[0].step & 7)== 0);
@@ -523,7 +613,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
return work_done ? 1 : 0;
}
-static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) {
+static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) {
int work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_record;
@@ -539,6 +629,7 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
snd_pcm_sframes_t n;
size_t n_bytes;
int r;
+ pa_bool_t after_avail = TRUE;
if (PA_UNLIKELY((n = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->source->sample_spec)) < 0)) {
@@ -549,7 +640,8 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
}
n_bytes = (size_t) n * u->frame_size;
- left_to_record = check_left_to_record(u, n_bytes);
+ left_to_record = check_left_to_record(u, n_bytes, on_timeout);
+ on_timeout = FALSE;
if (u->use_tsched)
if (!polled &&
@@ -599,17 +691,26 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
frames = snd_pcm_readi(u->pcm_handle, (uint8_t*) p, (snd_pcm_uframes_t) frames);
pa_memblock_release(chunk.memblock);
- pa_assert(frames != 0);
-
if (PA_UNLIKELY(frames < 0)) {
pa_memblock_unref(chunk.memblock);
- if ((r = try_recover(u, "snd_pcm_readi", (int) (frames))) == 0)
+ if (!after_avail && (int) frames == -EAGAIN)
+ break;
+
+ if ((r = try_recover(u, "snd_pcm_readi", (int) frames)) == 0)
continue;
return r;
}
+ if (!after_avail && frames == 0) {
+ pa_memblock_unref(chunk.memblock);
+ break;
+ }
+
+ pa_assert(frames > 0);
+ after_avail = FALSE;
+
chunk.index = 0;
chunk.length = (size_t) frames * u->frame_size;
@@ -666,15 +767,23 @@ static void update_smoother(struct userdata *u) {
now1 = pa_timespec_load(&htstamp);
}
- position = u->read_count + ((uint64_t) delay * (uint64_t) u->frame_size);
-
/* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */
if (now1 <= 0)
now1 = pa_rtclock_now();
+ /* check if the time since the last update is bigger than the interval */
+ if (u->last_smoother_update > 0)
+ if (u->last_smoother_update + u->smoother_interval > now1)
+ return;
+
+ position = u->read_count + ((uint64_t) delay * (uint64_t) u->frame_size);
now2 = pa_bytes_to_usec(position, &u->source->sample_spec);
pa_smoother_put(u->smoother, now1, now2);
+
+ u->last_smoother_update = now1;
+ /* exponentially increase the update interval up to the MAX limit */
+ u->smoother_interval = PA_MIN (u->smoother_interval * 2, SMOOTHER_MAX_INTERVAL);
}
static pa_usec_t source_get_latency(struct userdata *u) {
@@ -780,8 +889,7 @@ static int unsuspend(struct userdata *u) {
pa_sample_spec ss;
int err;
pa_bool_t b, d;
- unsigned nfrags;
- snd_pcm_uframes_t period_size;
+ snd_pcm_uframes_t period_size, buffer_size;
pa_assert(u);
pa_assert(!u->pcm_handle);
@@ -789,7 +897,7 @@ static int unsuspend(struct userdata *u) {
pa_log_info("Trying resume...");
if ((err = snd_pcm_open(&u->pcm_handle, u->device_name, SND_PCM_STREAM_CAPTURE,
- /*SND_PCM_NONBLOCK|*/
+ SND_PCM_NONBLOCK|
SND_PCM_NO_AUTO_RESAMPLE|
SND_PCM_NO_AUTO_CHANNELS|
SND_PCM_NO_AUTO_FORMAT)) < 0) {
@@ -798,12 +906,12 @@ static int unsuspend(struct userdata *u) {
}
ss = u->source->sample_spec;
- nfrags = u->nfragments;
period_size = u->fragment_size / u->frame_size;
+ buffer_size = u->hwbuf_size / u->frame_size;
b = u->use_mmap;
d = u->use_tsched;
- if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &nfrags, &period_size, u->hwbuf_size / u->frame_size, &b, &d, TRUE)) < 0) {
+ if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &period_size, &buffer_size, 0, &b, &d, TRUE)) < 0) {
pa_log("Failed to set hardware parameters: %s", pa_alsa_strerror(err));
goto fail;
}
@@ -818,10 +926,11 @@ static int unsuspend(struct userdata *u) {
goto fail;
}
- if (nfrags != u->nfragments || period_size*u->frame_size != u->fragment_size) {
- pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu*%lu, New %lu*%lu)",
- (unsigned long) u->nfragments, (unsigned long) u->fragment_size,
- (unsigned long) nfrags, period_size * u->frame_size);
+ if (period_size*u->frame_size != u->fragment_size ||
+ buffer_size*u->frame_size != u->hwbuf_size) {
+ pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu/%lu, New %lu/%lu)",
+ (unsigned long) u->hwbuf_size, (unsigned long) u->fragment_size,
+ (unsigned long) (buffer_size*u->fragment_size), (unsigned long) (period_size*u->frame_size));
goto fail;
}
@@ -834,7 +943,11 @@ 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_now(), TRUE);
+
+ u->read_count = 0;
+ pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
+ u->smoother_interval = SMOOTHER_MIN_INTERVAL;
+ u->last_smoother_update = 0;
pa_log_info("Resumed successfully...");
@@ -846,7 +959,7 @@ fail:
u->pcm_handle = NULL;
}
- return -1;
+ return -PA_ERR_IO;
}
static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
@@ -869,30 +982,34 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
switch ((pa_source_state_t) PA_PTR_TO_UINT(data)) {
- case PA_SOURCE_SUSPENDED:
+ case PA_SOURCE_SUSPENDED: {
+ int r;
pa_assert(PA_SOURCE_IS_OPENED(u->source->thread_info.state));
- if (suspend(u) < 0)
- return -1;
+ if ((r = suspend(u)) < 0)
+ return r;
break;
+ }
case PA_SOURCE_IDLE:
- case PA_SOURCE_RUNNING:
+ case PA_SOURCE_RUNNING: {
+ int r;
if (u->source->thread_info.state == PA_SOURCE_INIT) {
if (build_pollfd(u) < 0)
- return -1;
+ return -PA_ERR_IO;
snd_pcm_start(u->pcm_handle);
}
if (u->source->thread_info.state == PA_SOURCE_SUSPENDED) {
- if (unsuspend(u) < 0)
- return -1;
+ if ((r = unsuspend(u)) < 0)
+ return r;
}
break;
+ }
case PA_SOURCE_UNLINKED:
case PA_SOURCE_INIT:
@@ -920,7 +1037,7 @@ static int source_set_state_cb(pa_source *s, pa_source_state_t new_state) {
reserve_done(u);
else if (old_state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(new_state))
if (reserve_init(u, u->device_name) < 0)
- return -1;
+ return -PA_ERR_BUSY;
return 0;
}
@@ -962,15 +1079,11 @@ static void source_get_volume_cb(pa_source *s) {
if (pa_cvolume_equal(&u->hardware_volume, &r))
return;
- s->virtual_volume = u->hardware_volume = r;
-
- if (u->mixer_path->has_dB) {
- pa_cvolume reset;
+ s->volume = u->hardware_volume = r;
- /* 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 */
+ if (u->mixer_path->has_dB)
+ pa_source_set_soft_volume(s, NULL);
}
static void source_set_volume_cb(pa_source *s) {
@@ -983,7 +1096,7 @@ static void source_set_volume_cb(pa_source *s) {
pa_assert(u->mixer_handle);
/* Shift up by the base volume */
- pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume);
+ pa_sw_cvolume_divide_scalar(&r, &s->volume, s->base_volume);
if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
return;
@@ -994,13 +1107,26 @@ static void source_set_volume_cb(pa_source *s) {
u->hardware_volume = r;
if (u->mixer_path->has_dB) {
+ pa_cvolume new_soft_volume;
+ pa_bool_t accurate_enough;
/* Match exactly what the user requested by software */
- pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume);
+ pa_sw_cvolume_divide(&new_soft_volume, &s->volume, &u->hardware_volume);
+
+ /* If the adjustment to do in software is only minimal we
+ * can skip it. That saves us CPU at the expense of a bit of
+ * accuracy */
+ accurate_enough =
+ (pa_cvolume_min(&new_soft_volume) >= (PA_VOLUME_NORM - VOLUME_ACCURACY)) &&
+ (pa_cvolume_max(&new_soft_volume) <= (PA_VOLUME_NORM + VOLUME_ACCURACY));
- pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume));
+ pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->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));
+ pa_log_debug("Calculated software volume: %s (accurate-enough=%s)", pa_cvolume_snprint(t, sizeof(t), &new_soft_volume),
+ pa_yes_no(accurate_enough));
+
+ if (!accurate_enough)
+ s->soft_volume = new_soft_volume;
} else {
pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
@@ -1008,7 +1134,7 @@ static void source_set_volume_cb(pa_source *s) {
/* We can't match exactly what the user requested, hence let's
* at least tell the user about it */
- s->virtual_volume = r;
+ s->volume = r;
}
}
@@ -1107,11 +1233,12 @@ static void thread_func(void *userdata) {
if (PA_SOURCE_IS_OPENED(u->source->thread_info.state)) {
int work_done;
pa_usec_t sleep_usec = 0;
+ pa_bool_t on_timeout = pa_rtpoll_timer_elapsed(u->rtpoll);
if (u->use_mmap)
- work_done = mmap_read(u, &sleep_usec, revents & POLLIN);
+ work_done = mmap_read(u, &sleep_usec, revents & POLLIN, on_timeout);
else
- work_done = unix_read(u, &sleep_usec, revents & POLLIN);
+ work_done = unix_read(u, &sleep_usec, revents & POLLIN, on_timeout);
if (work_done < 0)
goto fail;
@@ -1358,8 +1485,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
const char *dev_id = NULL;
pa_sample_spec ss, requested_ss;
pa_channel_map map;
- uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark;
- snd_pcm_uframes_t period_frames, tsched_frames;
+ uint32_t nfrags, frag_size, buffer_size, tsched_size, tsched_watermark;
+ snd_pcm_uframes_t period_frames, buffer_frames, tsched_frames;
size_t frame_size;
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
pa_source_new_data data;
@@ -1393,8 +1520,10 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
goto fail;
}
- hwbuf_size = frag_size * nfrags;
+ buffer_size = nfrags * frag_size;
+
period_frames = frag_size/frame_size;
+ buffer_frames = buffer_size/frame_size;
tsched_frames = tsched_size/frame_size;
if (pa_modargs_get_value_boolean(ma, "mmap", &use_mmap) < 0) {
@@ -1433,6 +1562,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
5,
pa_rtclock_now(),
FALSE);
+ u->smoother_interval = SMOOTHER_MIN_INTERVAL;
dev_id = pa_modargs_get_value(
ma, "device_id",
@@ -1459,7 +1589,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
&u->device_name,
&ss, &map,
SND_PCM_STREAM_CAPTURE,
- &nfrags, &period_frames, tsched_frames,
+ &period_frames, &buffer_frames, tsched_frames,
&b, &d, mapping)))
goto fail;
@@ -1473,7 +1603,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
&u->device_name,
&ss, &map,
SND_PCM_STREAM_CAPTURE,
- &nfrags, &period_frames, tsched_frames,
+ &period_frames, &buffer_frames, tsched_frames,
&b, &d, profile_set, &mapping)))
goto fail;
@@ -1484,7 +1614,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
&u->device_name,
&ss, &map,
SND_PCM_STREAM_CAPTURE,
- &nfrags, &period_frames, tsched_frames,
+ &period_frames, &buffer_frames, tsched_frames,
&b, &d, FALSE)))
goto fail;
}
@@ -1510,11 +1640,6 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->use_tsched = use_tsched = FALSE;
}
- if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) {
- pa_log_info("Device is not a hardware device, disabling timer-based scheduling.");
- u->use_tsched = use_tsched = FALSE;
- }
-
if (u->use_mmap)
pa_log_info("Successfully enabled mmap() mode.");
@@ -1536,7 +1661,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
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_BUFFER_SIZE, "%lu", (unsigned long) (buffer_frames * frame_size));
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"));
@@ -1577,18 +1702,25 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_source_set_rtpoll(u->source, u->rtpoll);
u->frame_size = frame_size;
- u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size);
- u->nfragments = nfrags;
- u->hwbuf_size = u->fragment_size * nfrags;
- u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->source->sample_spec);
+ u->fragment_size = frag_size = (size_t) (period_frames * frame_size);
+ u->hwbuf_size = buffer_size = (size_t) (buffer_frames * frame_size);
pa_cvolume_mute(&u->hardware_volume, u->source->sample_spec.channels);
- pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
- nfrags, (long unsigned) u->fragment_size,
+ pa_log_info("Using %0.1f fragments of size %lu bytes (%0.2fms), buffer size is %lu bytes (%0.2fms)",
+ (double) u->hwbuf_size / (double) u->fragment_size,
+ (long unsigned) u->fragment_size,
+ (double) pa_bytes_to_usec(u->fragment_size, &ss) / PA_USEC_PER_MSEC,
+ (long unsigned) u->hwbuf_size,
(double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC);
if (u->use_tsched) {
- u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->source->sample_spec);
+ u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->source->sample_spec);
+
+ u->watermark_inc_step = pa_usec_to_bytes(TSCHED_WATERMARK_INC_STEP_USEC, &u->source->sample_spec);
+ u->watermark_dec_step = pa_usec_to_bytes(TSCHED_WATERMARK_DEC_STEP_USEC, &u->source->sample_spec);
+
+ u->watermark_inc_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_INC_THRESHOLD_USEC, &u->source->sample_spec);
+ u->watermark_dec_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_DEC_THRESHOLD_USEC, &u->source->sample_spec);
fix_min_sleep_wakeup(u);
fix_tsched_watermark(u);
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 1f3e5dcd..56d60dfb 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -93,6 +93,7 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
int ret;
pa_assert(pcm_handle);
+ pa_assert(hwparams);
pa_assert(f);
if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
@@ -148,33 +149,71 @@ try_auto:
return -1;
}
+static int set_period_size(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, snd_pcm_uframes_t size) {
+ snd_pcm_uframes_t s;
+ int d, ret;
+
+ pa_assert(pcm_handle);
+ pa_assert(hwparams);
+
+ s = size;
+ d = 0;
+ if (snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d) < 0) {
+ s = size;
+ d = -1;
+ if (snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d) < 0) {
+ s = size;
+ d = 1;
+ if ((ret = snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d)) < 0) {
+ pa_log_info("snd_pcm_hw_params_set_period_size_near() failed: %s", pa_alsa_strerror(ret));
+ return ret;
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int set_buffer_size(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, snd_pcm_uframes_t size) {
+ int ret;
+
+ pa_assert(pcm_handle);
+ pa_assert(hwparams);
+
+ if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &size)) < 0) {
+ pa_log_info("snd_pcm_hw_params_set_buffer_size_near() failed: %s", pa_alsa_strerror(ret));
+ return ret;
+ }
+
+ return 0;
+}
+
/* Set the hardware parameters of the given ALSA device. Returns the
- * selected fragment settings in *period and *period_size */
+ * selected fragment settings in *buffer_size and *period_size. If tsched mode can be enabled */
int pa_alsa_set_hw_params(
snd_pcm_t *pcm_handle,
pa_sample_spec *ss,
- uint32_t *periods,
snd_pcm_uframes_t *period_size,
+ snd_pcm_uframes_t *buffer_size,
snd_pcm_uframes_t tsched_size,
pa_bool_t *use_mmap,
pa_bool_t *use_tsched,
pa_bool_t require_exact_channel_number) {
int ret = -1;
+ snd_pcm_hw_params_t *hwparams, *hwparams_copy;
+ int dir;
snd_pcm_uframes_t _period_size = period_size ? *period_size : 0;
- unsigned int _periods = periods ? *periods : 0;
- unsigned int r = ss->rate;
- unsigned int c = ss->channels;
- pa_sample_format_t f = ss->format;
- snd_pcm_hw_params_t *hwparams;
+ snd_pcm_uframes_t _buffer_size = buffer_size ? *buffer_size : 0;
pa_bool_t _use_mmap = use_mmap && *use_mmap;
pa_bool_t _use_tsched = use_tsched && *use_tsched;
- int dir;
+ pa_sample_spec _ss = *ss;
pa_assert(pcm_handle);
pa_assert(ss);
snd_pcm_hw_params_alloca(&hwparams);
+ snd_pcm_hw_params_alloca(&hwparams_copy);
if ((ret = snd_pcm_hw_params_any(pcm_handle, hwparams)) < 0) {
pa_log_debug("snd_pcm_hw_params_any() failed: %s", pa_alsa_strerror(ret));
@@ -208,111 +247,143 @@ int pa_alsa_set_hw_params(
if (!_use_mmap)
_use_tsched = FALSE;
- if ((ret = set_format(pcm_handle, hwparams, &f)) < 0)
+ if (!pa_alsa_pcm_is_hw(pcm_handle))
+ _use_tsched = FALSE;
+
+ if ((ret = set_format(pcm_handle, hwparams, &_ss.format)) < 0)
goto finish;
- if ((ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &r, NULL)) < 0) {
+ if ((ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &_ss.rate, NULL)) < 0) {
pa_log_debug("snd_pcm_hw_params_set_rate_near() failed: %s", pa_alsa_strerror(ret));
goto finish;
}
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(%u) failed: %s", c, pa_alsa_strerror(ret));
+ if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, _ss.channels)) < 0) {
+ pa_log_debug("snd_pcm_hw_params_set_channels(%u) failed: %s", _ss.channels, pa_alsa_strerror(ret));
goto finish;
}
} else {
+ unsigned int c = _ss.channels;
+
if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0) {
- pa_log_debug("snd_pcm_hw_params_set_channels_near(%u) failed: %s", c, pa_alsa_strerror(ret));
+ pa_log_debug("snd_pcm_hw_params_set_channels_near(%u) failed: %s", _ss.channels, pa_alsa_strerror(ret));
goto finish;
}
- }
- if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, hwparams)) < 0) {
- pa_log_debug("snd_pcm_hw_params_set_periods_integer() failed: %s", pa_alsa_strerror(ret));
- goto finish;
+ _ss.channels = c;
}
- if (_period_size && tsched_size && _periods) {
-
- /* Adjust the buffer sizes, if we didn't get the rate we were asking for */
- _period_size = (snd_pcm_uframes_t) (((uint64_t) _period_size * r) / ss->rate);
- tsched_size = (snd_pcm_uframes_t) (((uint64_t) tsched_size * r) / ss->rate);
+ if (_use_tsched && tsched_size > 0) {
+ _buffer_size = (snd_pcm_uframes_t) (((uint64_t) tsched_size * _ss.rate) / ss->rate);
+ _period_size = _buffer_size;
+ } else {
+ _period_size = (snd_pcm_uframes_t) (((uint64_t) _period_size * _ss.rate) / ss->rate);
+ _buffer_size = (snd_pcm_uframes_t) (((uint64_t) _buffer_size * _ss.rate) / ss->rate);
+ }
- if (_use_tsched) {
- snd_pcm_uframes_t buffer_size = 0;
+ if (_buffer_size > 0 || _period_size > 0) {
+ snd_pcm_uframes_t max_frames = 0;
- 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);
+ if ((ret = snd_pcm_hw_params_get_buffer_size_max(hwparams, &max_frames)) < 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 %lu ms", (long unsigned) max_frames * PA_MSEC_PER_SEC / _ss.rate);
+
+ /* Some ALSA drivers really don't like if we set the buffer
+ * size first and the number of periods second. (which would
+ * make a lot more sense to me) So, try a few combinations
+ * before we give up. */
+
+ if (_buffer_size > 0 && _period_size > 0) {
+ snd_pcm_hw_params_copy(hwparams_copy, hwparams);
+
+ /* First try: set buffer size first, followed by period size */
+ if (set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 &&
+ set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 &&
+ snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
+ pa_log_debug("Set buffer size first, period size second.");
+ goto success;
+ }
- _period_size = tsched_size;
- _periods = 1;
+ /* Second try: set period size first, followed by buffer size */
+ if (set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 &&
+ set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 &&
+ snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
+ pa_log_debug("Set period size first, buffer size second.");
+ goto success;
+ }
}
- if (_period_size > 0 && _periods > 0) {
- snd_pcm_uframes_t buffer_size;
+ if (_buffer_size > 0) {
+ snd_pcm_hw_params_copy(hwparams_copy, hwparams);
- buffer_size = _periods * _period_size;
-
- if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &buffer_size)) < 0)
- pa_log_info("snd_pcm_hw_params_set_buffer_size_near() failed: %s", pa_alsa_strerror(ret));
+ /* Third try: set only buffer size */
+ if (set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 &&
+ snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
+ pa_log_debug("Set only buffer size second.");
+ goto success;
+ }
}
- if (_periods > 0) {
-
- /* First we pass 0 as direction to get exactly what we
- * asked for. That this is necessary is presumably a bug
- * in ALSA. All in all this is mostly a hint to ALSA, so
- * we don't care if this fails. */
-
- dir = 0;
- if (snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir) < 0) {
- dir = 1;
- if (snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir) < 0) {
- dir = -1;
- if ((ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir)) < 0)
- pa_log_info("snd_pcm_hw_params_set_periods_near() failed: %s", pa_alsa_strerror(ret));
- }
+ if (_period_size > 0) {
+ snd_pcm_hw_params_copy(hwparams_copy, hwparams);
+
+ /* Fourth try: set only period size */
+ if (set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 &&
+ snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) {
+ pa_log_debug("Set only period size second.");
+ goto success;
}
}
}
- if ((ret = snd_pcm_hw_params(pcm_handle, hwparams)) < 0)
+ pa_log_debug("Set neither period nor buffer size.");
+
+ /* Last chance, set nothing */
+ if ((ret = snd_pcm_hw_params(pcm_handle, hwparams)) < 0) {
+ pa_log_info("snd_pcm_hw_params failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
+
+success:
- if (ss->rate != r)
- pa_log_info("Device %s doesn't support %u Hz, changed to %u Hz.", snd_pcm_name(pcm_handle), ss->rate, r);
+ if (ss->rate != _ss.rate)
+ pa_log_info("Device %s doesn't support %u Hz, changed to %u Hz.", snd_pcm_name(pcm_handle), ss->rate, _ss.rate);
- if (ss->channels != c)
- pa_log_info("Device %s doesn't support %u channels, changed to %u.", snd_pcm_name(pcm_handle), ss->channels, c);
+ if (ss->channels != _ss.channels)
+ pa_log_info("Device %s doesn't support %u channels, changed to %u.", snd_pcm_name(pcm_handle), ss->channels, _ss.channels);
- 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 (ss->format != _ss.format)
+ 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(_ss.format));
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_current(pcm_handle, hwparams)) < 0) {
+ pa_log_info("snd_pcm_hw_params_current() 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) {
- pa_log_info("snd_pcm_hw_params_get_period{s|_size}() failed: %s", pa_alsa_strerror(ret));
+ (ret = snd_pcm_hw_params_get_buffer_size(hwparams, &_buffer_size)) < 0) {
+ pa_log_info("snd_pcm_hw_params_get_{period|buffer}_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)
- ss->rate = r;
- ss->channels = (uint8_t) c;
- ss->format = f;
+ if (_ss.rate < ss->rate*.95 || _ss.rate > ss->rate*1.05)
+ ss->rate = _ss.rate;
+ ss->channels = _ss.channels;
+ ss->format = _ss.format;
- pa_assert(_periods > 0);
pa_assert(_period_size > 0);
+ pa_assert(_buffer_size > 0);
- if (periods)
- *periods = _periods;
+ if (buffer_size)
+ *buffer_size = _buffer_size;
if (period_size)
*period_size = _period_size;
@@ -390,8 +461,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
pa_sample_spec *ss,
pa_channel_map* map,
int mode,
- uint32_t *nfrags,
snd_pcm_uframes_t *period_size,
+ snd_pcm_uframes_t *buffer_size,
snd_pcm_uframes_t tsched_size,
pa_bool_t *use_mmap,
pa_bool_t *use_tsched,
@@ -407,8 +478,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
pa_assert(dev);
pa_assert(ss);
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
@@ -430,8 +499,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
ss,
map,
mode,
- nfrags,
period_size,
+ buffer_size,
tsched_size,
use_mmap,
use_tsched,
@@ -457,8 +526,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
ss,
map,
mode,
- nfrags,
period_size,
+ buffer_size,
tsched_size,
use_mmap,
use_tsched,
@@ -475,7 +544,18 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
/* 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);
+ pcm_handle = pa_alsa_open_by_device_string(
+ d,
+ dev,
+ ss,
+ map,
+ mode,
+ period_size,
+ buffer_size,
+ tsched_size,
+ use_mmap,
+ use_tsched,
+ FALSE);
pa_xfree(d);
if (pcm_handle && mapping)
@@ -490,8 +570,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping(
pa_sample_spec *ss,
pa_channel_map* map,
int mode,
- uint32_t *nfrags,
snd_pcm_uframes_t *period_size,
+ snd_pcm_uframes_t *buffer_size,
snd_pcm_uframes_t tsched_size,
pa_bool_t *use_mmap,
pa_bool_t *use_tsched,
@@ -505,8 +585,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping(
pa_assert(dev);
pa_assert(ss);
pa_assert(map);
- pa_assert(nfrags);
- pa_assert(period_size);
pa_assert(m);
try_ss.channels = m->channel_map.channels;
@@ -521,8 +599,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping(
&try_ss,
&try_map,
mode,
- nfrags,
period_size,
+ buffer_size,
tsched_size,
use_mmap,
use_tsched,
@@ -544,8 +622,8 @@ snd_pcm_t *pa_alsa_open_by_device_string(
pa_sample_spec *ss,
pa_channel_map* map,
int mode,
- uint32_t *nfrags,
snd_pcm_uframes_t *period_size,
+ snd_pcm_uframes_t *buffer_size,
snd_pcm_uframes_t tsched_size,
pa_bool_t *use_mmap,
pa_bool_t *use_tsched,
@@ -576,7 +654,15 @@ snd_pcm_t *pa_alsa_open_by_device_string(
pa_log_debug("Managed to open %s", d);
- if ((err = pa_alsa_set_hw_params(pcm_handle, ss, nfrags, period_size, tsched_size, use_mmap, use_tsched, require_exact_channel_number)) < 0) {
+ if ((err = pa_alsa_set_hw_params(
+ pcm_handle,
+ ss,
+ period_size,
+ buffer_size,
+ tsched_size,
+ use_mmap,
+ use_tsched,
+ require_exact_channel_number)) < 0) {
if (!reformat) {
reformat = TRUE;
@@ -629,8 +715,8 @@ snd_pcm_t *pa_alsa_open_by_template(
pa_sample_spec *ss,
pa_channel_map* map,
int mode,
- uint32_t *nfrags,
snd_pcm_uframes_t *period_size,
+ snd_pcm_uframes_t *buffer_size,
snd_pcm_uframes_t tsched_size,
pa_bool_t *use_mmap,
pa_bool_t *use_tsched,
@@ -650,8 +736,8 @@ snd_pcm_t *pa_alsa_open_by_template(
ss,
map,
mode,
- nfrags,
period_size,
+ buffer_size,
tsched_size,
use_mmap,
use_tsched,
@@ -897,7 +983,7 @@ void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name) {
snd_ctl_card_info_alloca(&info);
if ((err = snd_ctl_open(&ctl, name, 0)) < 0) {
- pa_log_warn("Error opening low-level control device '%s'", name);
+ pa_log_warn("Error opening low-level control device '%s': %s", name, snd_strerror(err));
return;
}
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 830a922e..265cd28c 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -42,8 +42,8 @@
int pa_alsa_set_hw_params(
snd_pcm_t *pcm_handle,
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 *buffer_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 */
@@ -60,8 +60,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
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 *buffer_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 */
@@ -75,8 +75,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping(
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 *buffer_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 */
@@ -89,8 +89,8 @@ snd_pcm_t *pa_alsa_open_by_device_string(
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 *buffer_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 */
@@ -104,8 +104,8 @@ snd_pcm_t *pa_alsa_open_by_template(
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 *buffer_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 */
diff --git a/src/modules/alsa/mixer/Makefile b/src/modules/alsa/mixer/Makefile
new file mode 120000
index 00000000..b4955194
--- /dev/null
+++ b/src/modules/alsa/mixer/Makefile
@@ -0,0 +1 @@
+../../../pulse/Makefile \ No newline at end of file
diff --git a/src/modules/alsa/mixer/paths/Makefile b/src/modules/alsa/mixer/paths/Makefile
new file mode 120000
index 00000000..dc23aaa2
--- /dev/null
+++ b/src/modules/alsa/mixer/paths/Makefile
@@ -0,0 +1 @@
+../../../../pulse/Makefile \ No newline at end of file
diff --git a/src/modules/alsa/mixer/paths/analog-input.conf.common b/src/modules/alsa/mixer/paths/analog-input.conf.common
index 6728a6ae..87af38b3 100644
--- a/src/modules/alsa/mixer/paths/analog-input.conf.common
+++ b/src/modules/alsa/mixer/paths/analog-input.conf.common
@@ -78,6 +78,10 @@ priority = 19
name = input-microphone
priority = 19
+[Option Input Source:Internal Mic]
+name = input-microphone
+priority = 19
+
[Option Input Source:Line]
name = input-linein
priority = 18
@@ -90,6 +94,10 @@ priority = 18
name = input-linein
priority = 18
+[Option Input Source:Docking-Station]
+name = input-docking
+priority = 17
+
;;; ' Capture Source'
[Element Capture Source]
diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf
index c018e0eb..691cb3f2 100644
--- a/src/modules/alsa/mixer/paths/analog-output-headphones.conf
+++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf
@@ -44,6 +44,10 @@ volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
+[Element Speaker]
+switch = off
+volume = off
+
[Element Front]
switch = off
volume = off
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
index 7a267890..3457d4a2 100644
--- a/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf
+++ b/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf
@@ -41,9 +41,18 @@ volume = merge
override-map.1 = lfe
override-map.2 = lfe,lfe
+; This profile path is intended to control the speaker, not the
+; headphones. But it should not hurt if we leave the headphone jack
+; enabled nonetheless.
[Element Headphone]
-switch = off
-volume = off
+switch = mute
+volume = zero
+
+[Element Speaker]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
[Element Front]
switch = off
diff --git a/src/modules/alsa/mixer/paths/analog-output-mono.conf b/src/modules/alsa/mixer/paths/analog-output-mono.conf
index f6cb9f8a..dc270cfe 100644
--- a/src/modules/alsa/mixer/paths/analog-output-mono.conf
+++ b/src/modules/alsa/mixer/paths/analog-output-mono.conf
@@ -38,9 +38,18 @@ volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
+; This profile path is intended to control the speaker, not the
+; headphones. But it should not hurt if we leave the headphone jack
+; enabled nonetheless.
[Element Headphone]
-switch = off
-volume = off
+switch = mute
+volume = zero
+
+[Element Speaker]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
[Element Front]
switch = off
diff --git a/src/modules/alsa/mixer/paths/analog-output.conf b/src/modules/alsa/mixer/paths/analog-output.conf
index ea108aaf..f71a05a1 100644
--- a/src/modules/alsa/mixer/paths/analog-output.conf
+++ b/src/modules/alsa/mixer/paths/analog-output.conf
@@ -37,9 +37,18 @@ override-map.2 = all-left,all-right
switch = off
volume = off
+; This profile path is intended to control the speaker, not the
+; headphones. But it should not hurt if we leave the headphone jack
+; enabled nonetheless.
[Element Headphone]
-switch = off
-volume = off
+switch = mute
+volume = zero
+
+[Element Speaker]
+switch = mute
+volume = merge
+override-map.1 = all
+override-map.2 = all-left,all-right
[Element Front]
switch = mute
diff --git a/src/modules/alsa/mixer/paths/analog-output.conf.common b/src/modules/alsa/mixer/paths/analog-output.conf.common
index cc1185f4..3c6ce803 100644
--- a/src/modules/alsa/mixer/paths/analog-output.conf.common
+++ b/src/modules/alsa/mixer/paths/analog-output.conf.common
@@ -104,8 +104,8 @@ switch = select
[Option External Amplifier:on]
name = output-amplifier-on
-priority = 0
+priority = 10
[Option External Amplifier:off]
name = output-amplifier-off
-priority = 10
+priority = 0
diff --git a/src/modules/alsa/mixer/profile-sets/Makefile b/src/modules/alsa/mixer/profile-sets/Makefile
new file mode 120000
index 00000000..dc23aaa2
--- /dev/null
+++ b/src/modules/alsa/mixer/profile-sets/Makefile
@@ -0,0 +1 @@
+../../../../pulse/Makefile \ No newline at end of file
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 55f6a6e2..6bea33d7 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -329,7 +329,7 @@ int pa__init(pa_module *m) {
if (!u->profile_set)
goto fail;
- pa_alsa_profile_set_probe(u->profile_set, u->device_id, &m->core->default_sample_spec);
+ pa_alsa_profile_set_probe(u->profile_set, u->device_id, &m->core->default_sample_spec, m->core->default_n_fragments, m->core->default_fragment_size_msec);
pa_card_new_data_init(&data);
data.driver = __FILE__;
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 66e1c31e..f8c5b778 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -1,7 +1,7 @@
/***
This file is part of PulseAudio.
- Copyright 2008 Joao Paulo Rechi Vita
+ Copyright 2008-2009 Joao Paulo Rechi Vita
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -95,6 +95,7 @@ static pa_bluetooth_device* device_new(const char *path) {
d->audio_state = PA_BT_AUDIO_STATE_INVALID;
d->audio_sink_state = PA_BT_AUDIO_STATE_INVALID;
+ d->audio_source_state = PA_BT_AUDIO_STATE_INVALID;
d->headset_state = PA_BT_AUDIO_STATE_INVALID;
return d;
@@ -122,9 +123,10 @@ static pa_bool_t device_is_audio(pa_bluetooth_device *d) {
return
d->device_info_valid &&
- (d->audio_state != PA_BT_AUDIO_STATE_INVALID ||
- d->audio_sink_state != PA_BT_AUDIO_STATE_INVALID ||
- d->headset_state != PA_BT_AUDIO_STATE_INVALID);
+ (d->audio_state != PA_BT_AUDIO_STATE_INVALID &&
+ (d->audio_sink_state != PA_BT_AUDIO_STATE_INVALID ||
+ d->audio_source_state != PA_BT_AUDIO_STATE_INVALID ||
+ d->headset_state != PA_BT_AUDIO_STATE_INVALID));
}
static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device *d, DBusMessageIter *i) {
@@ -226,10 +228,6 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device
node = uuid_new(value);
PA_LLIST_PREPEND(pa_bluetooth_uuid, d->uuids, node);
- /* this might eventually be racy if .Audio is not there yet, but the State change will come anyway later, so this call is for cold-detection mostly */
- pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Audio", "GetProperties"));
- send_and_add_to_pending(y, d, m, get_properties_reply);
-
/* Vudentz said the interfaces are here when the UUIDs are announced */
if (strcasecmp(HSP_HS_UUID, value) == 0 || strcasecmp(HFP_HS_UUID, value) == 0) {
pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Headset", "GetProperties"));
@@ -237,8 +235,15 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device
} else if (strcasecmp(A2DP_SINK_UUID, value) == 0) {
pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.AudioSink", "GetProperties"));
send_and_add_to_pending(y, d, m, get_properties_reply);
+ } else if (strcasecmp(A2DP_SOURCE_UUID, value) == 0) {
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.AudioSource", "GetProperties"));
+ send_and_add_to_pending(y, d, m, get_properties_reply);
}
+ /* this might eventually be racy if .Audio is not there yet, but the State change will come anyway later, so this call is for cold-detection mostly */
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Audio", "GetProperties"));
+ send_and_add_to_pending(y, d, m, get_properties_reply);
+
if (!dbus_message_iter_next(&ai))
break;
}
@@ -278,7 +283,7 @@ static int parse_audio_property(pa_bluetooth_discovery *u, int *state, DBusMessa
dbus_message_iter_recurse(i, &variant_i);
-/* pa_log_debug("Parsing property org.bluez.{Audio|AudioSink|Headset}.%s", key); */
+/* pa_log_debug("Parsing property org.bluez.{Audio|AudioSink|AudioSource|Headset}.%s", key); */
switch (dbus_message_iter_get_arg_type(&variant_i)) {
@@ -390,6 +395,9 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
} else if (dbus_message_has_interface(p->message, "org.bluez.AudioSink")) {
if (parse_audio_property(y, &d->audio_sink_state, &dict_i) < 0)
goto finish;
+ } else if (dbus_message_has_interface(p->message, "org.bluez.AudioSource")) {
+ if (parse_audio_property(y, &d->audio_source_state, &dict_i) < 0)
+ goto finish;
}
}
@@ -440,8 +448,8 @@ static void found_device(pa_bluetooth_discovery *y, const char* path) {
pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.Device", "GetProperties"));
send_and_add_to_pending(y, d, m, get_properties_reply);
- /* Before we read the other properties (Audio, AudioSink, Headset) we wait
- * that the UUID is read */
+ /* Before we read the other properties (Audio, AudioSink, AudioSource,
+ * Headset) we wait that the UUID is read */
}
static void list_devices_reply(DBusPendingCall *pending, void *userdata) {
@@ -616,6 +624,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
} else if (dbus_message_is_signal(m, "org.bluez.Audio", "PropertyChanged") ||
dbus_message_is_signal(m, "org.bluez.Headset", "PropertyChanged") ||
dbus_message_is_signal(m, "org.bluez.AudioSink", "PropertyChanged") ||
+ dbus_message_is_signal(m, "org.bluez.AudioSource", "PropertyChanged") ||
dbus_message_is_signal(m, "org.bluez.Device", "PropertyChanged")) {
pa_bluetooth_device *d;
@@ -643,6 +652,9 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
} else if (dbus_message_has_interface(m, "org.bluez.AudioSink")) {
if (parse_audio_property(y, &d->audio_sink_state, &arg_i) < 0)
goto fail;
+ } else if (dbus_message_has_interface(m, "org.bluez.AudioSource")) {
+ if (parse_audio_property(y, &d->audio_source_state, &arg_i) < 0)
+ goto fail;
}
run_callback(y, d, FALSE);
@@ -650,6 +662,21 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ } else if (dbus_message_is_signal(m, "org.bluez.Device", "DisconnectRequested")) {
+ pa_bluetooth_device *d;
+
+ if ((d = pa_hashmap_get(y->devices, dbus_message_get_path(m)))) {
+ /* Device will disconnect in 2 sec */
+ d->audio_state = PA_BT_AUDIO_STATE_DISCONNECTED;
+ d->audio_sink_state = PA_BT_AUDIO_STATE_DISCONNECTED;
+ d->audio_source_state = PA_BT_AUDIO_STATE_DISCONNECTED;
+ d->headset_state = PA_BT_AUDIO_STATE_DISCONNECTED;
+
+ run_callback(y, d, FALSE);
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
} else if (dbus_message_is_signal(m, "org.freedesktop.DBus", "NameOwnerChanged")) {
const char *name, *old_owner, *new_owner;
@@ -758,14 +785,16 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) {
if (pa_dbus_add_matches(
pa_dbus_connection_get(y->connection), &err,
- "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged'",
+ "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.bluez'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'",
"type='signal',sender='org.bluez',interface='org.bluez.Device',member='PropertyChanged'",
+ "type='signal',sender='org.bluez',interface='org.bluez.Device',member='DisconnectRequested'",
"type='signal',sender='org.bluez',interface='org.bluez.Audio',member='PropertyChanged'",
"type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged'",
- "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", NULL) < 0) {
+ "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'",
+ "type='signal',sender='org.bluez',interface='org.bluez.AudioSource',member='PropertyChanged'", NULL) < 0) {
pa_log("Failed to add D-Bus matches: %s", err.message);
goto fail;
}
@@ -809,15 +838,17 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) {
if (y->connection) {
pa_dbus_remove_matches(pa_dbus_connection_get(y->connection),
- "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged'",
+ "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.bluez'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'",
"type='signal',sender='org.bluez',interface='org.bluez.Device',member='PropertyChanged'",
+ "type='signal',sender='org.bluez',interface='org.bluez.Device',member='DisconnectRequested'",
"type='signal',sender='org.bluez',interface='org.bluez.Audio',member='PropertyChanged'",
"type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged'",
- "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", NULL);
+ "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'",
+ "type='signal',sender='org.bluez',interface='org.bluez.AudioSource',member='PropertyChanged'", NULL);
dbus_connection_remove_filter(pa_dbus_connection_get(y->connection), filter_cb, y);
diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h
index 265caf40..e2a0c3d5 100644
--- a/src/modules/bluetooth/bluetooth-util.h
+++ b/src/modules/bluetooth/bluetooth-util.h
@@ -4,7 +4,7 @@
/***
This file is part of PulseAudio.
- Copyright 2008 Joao Paulo Rechi Vita
+ Copyright 2008-2009 Joao Paulo Rechi Vita
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -53,14 +53,13 @@ struct pa_bluetooth_uuid {
PA_LLIST_FIELDS(pa_bluetooth_uuid);
};
-/* This enum is shared among Audio, Headset, and AudioSink, although not all values are acceptable in all profiles */
+/* This enum is shared among Audio, Headset, AudioSink, and AudioSource, although not all values are acceptable in all profiles */
typedef enum pa_bt_audio_state {
PA_BT_AUDIO_STATE_INVALID = -1,
PA_BT_AUDIO_STATE_DISCONNECTED,
PA_BT_AUDIO_STATE_CONNECTING,
PA_BT_AUDIO_STATE_CONNECTED,
- PA_BT_AUDIO_STATE_PLAYING,
- PA_BT_AUDIO_STATE_LAST
+ PA_BT_AUDIO_STATE_PLAYING
} pa_bt_audio_state_t;
struct pa_bluetooth_device {
@@ -85,6 +84,9 @@ struct pa_bluetooth_device {
/* AudioSink state */
pa_bt_audio_state_t audio_sink_state;
+ /* AudioSource state */
+ pa_bt_audio_state_t audio_source_state;
+
/* Headset state */
pa_bt_audio_state_t headset_state;
};
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 0560ef32..4592fca1 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1,7 +1,7 @@
/***
This file is part of PulseAudio.
- Copyright 2008 Joao Paulo Rechi Vita
+ Copyright 2008-2009 Joao Paulo Rechi Vita
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -129,6 +129,7 @@ struct hsp_info {
enum profile {
PROFILE_A2DP,
+ PROFILE_A2DP_SOURCE,
PROFILE_HSP,
PROFILE_OFF
};
@@ -178,6 +179,7 @@ struct userdata {
};
#define FIXED_LATENCY_PLAYBACK_A2DP (25*PA_USEC_PER_MSEC)
+#define FIXED_LATENCY_RECORD_A2DP (25*PA_USEC_PER_MSEC)
#define FIXED_LATENCY_PLAYBACK_HSP (125*PA_USEC_PER_MSEC)
#define FIXED_LATENCY_RECORD_HSP (25*PA_USEC_PER_MSEC)
@@ -219,9 +221,7 @@ static int service_recv(struct userdata *u, bt_audio_msg_header_t *msg, size_t r
pa_assert(u);
pa_assert(u->service_fd >= 0);
pa_assert(msg);
-
- if (room <= 0)
- room = BT_SUGGESTED_BUFFER_SIZE;
+ pa_assert(room >= sizeof(*msg));
pa_log_debug("Trying to receive message from audio service...");
@@ -234,6 +234,11 @@ static int service_recv(struct userdata *u, bt_audio_msg_header_t *msg, size_t r
return -1;
}
+ if (msg->length > room) {
+ pa_log_error("Not enough room.");
+ return -1;
+ }
+
/* Secondly, read the payload */
if (msg->length > sizeof(*msg)) {
@@ -307,7 +312,7 @@ static int parse_caps(struct userdata *u, uint8_t seid, const struct bt_get_capa
pa_log_debug("Payload size is %lu %lu", (unsigned long) bytes_left, (unsigned long) sizeof(*codec));
- if ((u->profile == PROFILE_A2DP && codec->transport != BT_CAPABILITIES_TRANSPORT_A2DP) ||
+ if (((u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) && codec->transport != BT_CAPABILITIES_TRANSPORT_A2DP) ||
(u->profile == PROFILE_HSP && codec->transport != BT_CAPABILITIES_TRANSPORT_SCO)) {
pa_log_error("Got capabilities for wrong codec.");
return -1;
@@ -344,6 +349,26 @@ static int parse_caps(struct userdata *u, uint8_t seid, const struct bt_get_capa
return codec->seid;
memcpy(&u->a2dp.sbc_capabilities, codec, sizeof(u->a2dp.sbc_capabilities));
+
+ } else if (u->profile == PROFILE_A2DP_SOURCE) {
+
+ while (bytes_left > 0) {
+ if ((codec->type == BT_A2DP_SBC_SOURCE) && !codec->lock)
+ break;
+
+ bytes_left -= codec->length;
+ codec = (const codec_capabilities_t*) ((const uint8_t*) codec + codec->length);
+ }
+
+ if (bytes_left <= 0 || codec->length != sizeof(u->a2dp.sbc_capabilities))
+ return -1;
+
+ pa_assert(codec->type == BT_A2DP_SBC_SOURCE);
+
+ if (codec->configured && seid == 0)
+ return codec->seid;
+
+ memcpy(&u->a2dp.sbc_capabilities, codec, sizeof(u->a2dp.sbc_capabilities));
}
return 0;
@@ -368,7 +393,7 @@ static int get_caps(struct userdata *u, uint8_t seid) {
msg.getcaps_req.seid = seid;
pa_strlcpy(msg.getcaps_req.object, u->path, sizeof(msg.getcaps_req.object));
- if (u->profile == PROFILE_A2DP)
+ if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE)
msg.getcaps_req.transport = BT_CAPABILITIES_TRANSPORT_A2DP;
else {
pa_assert(u->profile == PROFILE_HSP);
@@ -451,7 +476,7 @@ static int setup_a2dp(struct userdata *u) {
};
pa_assert(u);
- pa_assert(u->profile == PROFILE_A2DP);
+ pa_assert(u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE);
cap = &u->a2dp.sbc_capabilities;
@@ -652,8 +677,8 @@ static int set_conf(struct userdata *u) {
msg.open_req.h.length = sizeof(msg.open_req);
pa_strlcpy(msg.open_req.object, u->path, sizeof(msg.open_req.object));
- msg.open_req.seid = u->profile == PROFILE_A2DP ? u->a2dp.sbc_capabilities.capability.seid : BT_A2DP_SEID_RANGE + 1;
- msg.open_req.lock = u->profile == PROFILE_A2DP ? BT_WRITE_LOCK : BT_READ_LOCK | BT_WRITE_LOCK;
+ msg.open_req.seid = (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) ? u->a2dp.sbc_capabilities.capability.seid : BT_A2DP_SEID_RANGE + 1;
+ msg.open_req.lock = (u->profile == PROFILE_A2DP) ? BT_WRITE_LOCK : BT_READ_LOCK | BT_WRITE_LOCK;
if (service_send(u, &msg.open_req.h) < 0)
return -1;
@@ -661,7 +686,7 @@ static int set_conf(struct userdata *u) {
if (service_expect(u, &msg.open_rsp.h, sizeof(msg), BT_OPEN, sizeof(msg.open_rsp)) < 0)
return -1;
- if (u->profile == PROFILE_A2DP ) {
+ if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) {
u->sample_spec.format = PA_SAMPLE_S16LE;
if (setup_a2dp(u) < 0)
@@ -679,7 +704,7 @@ static int set_conf(struct userdata *u) {
msg.setconf_req.h.name = BT_SET_CONFIGURATION;
msg.setconf_req.h.length = sizeof(msg.setconf_req);
- if (u->profile == PROFILE_A2DP) {
+ if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) {
memcpy(&msg.setconf_req.codec, &u->a2dp.sbc_capabilities, sizeof(u->a2dp.sbc_capabilities));
} else {
msg.setconf_req.codec.transport = BT_CAPABILITIES_TRANSPORT_SCO;
@@ -697,7 +722,7 @@ static int set_conf(struct userdata *u) {
u->link_mtu = msg.setconf_rsp.link_mtu;
/* setup SBC encoder now we agree on parameters */
- if (u->profile == PROFILE_A2DP) {
+ if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) {
setup_sbc(&u->a2dp);
u->block_size =
@@ -881,7 +906,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
*((pa_usec_t*) data) = wi > ri ? wi - ri : 0;
}
- *((pa_usec_t*) data) += u->sink->fixed_latency;
+ *((pa_usec_t*) data) += u->sink->thread_info.fixed_latency;
return 0;
}
}
@@ -943,7 +968,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
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;
+ *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->thread_info.fixed_latency;
return 0;
}
@@ -1250,6 +1275,119 @@ static int a2dp_process_render(struct userdata *u) {
return ret;
}
+static int a2dp_process_push(struct userdata *u) {
+ int ret = 0;
+ pa_memchunk memchunk;
+
+ pa_assert(u);
+ pa_assert(u->profile == PROFILE_A2DP_SOURCE);
+ pa_assert(u->source);
+ pa_assert(u->read_smoother);
+
+ memchunk.memblock = pa_memblock_new(u->core->mempool, u->block_size);
+ memchunk.index = memchunk.length = 0;
+
+ for (;;) {
+ pa_bool_t found_tstamp = FALSE;
+ pa_usec_t tstamp;
+ struct a2dp_info *a2dp;
+ struct rtp_header *header;
+ struct rtp_payload *payload;
+ const void *p;
+ void *d;
+ ssize_t l;
+ size_t to_write, to_decode;
+ unsigned frame_count;
+
+ a2dp_prepare_buffer(u);
+
+ a2dp = &u->a2dp;
+ header = a2dp->buffer;
+ payload = (struct rtp_payload*) ((uint8_t*) a2dp->buffer + sizeof(*header));
+
+ l = pa_read(u->stream_fd, a2dp->buffer, a2dp->buffer_size, &u->stream_write_type);
+
+ if (l <= 0) {
+
+ if (l < 0 && errno == EINTR)
+ /* Retry right away if we got interrupted */
+ continue;
+
+ else if (l < 0 && errno == EAGAIN)
+ /* Hmm, apparently the socket was not readable, give up for now. */
+ break;
+
+ pa_log_error("Failed to read data from socket: %s", l < 0 ? pa_cstrerror(errno) : "EOF");
+ ret = -1;
+ break;
+ }
+
+ pa_assert((size_t) l <= a2dp->buffer_size);
+
+ u->read_index += (uint64_t) l;
+
+ /* TODO: get timestamp from rtp */
+ if (!found_tstamp) {
+ /* pa_log_warn("Couldn't find SO_TIMESTAMP data in auxiliary recvmsg() data!"); */
+ tstamp = pa_rtclock_now();
+ }
+
+ pa_smoother_put(u->read_smoother, tstamp, pa_bytes_to_usec(u->read_index, &u->sample_spec));
+ pa_smoother_resume(u->read_smoother, tstamp, TRUE);
+
+ p = (uint8_t*) a2dp->buffer + sizeof(*header) + sizeof(*payload);
+ to_decode = l - sizeof(*header) - sizeof(*payload);
+
+ d = pa_memblock_acquire(memchunk.memblock);
+ to_write = memchunk.length = pa_memblock_get_length(memchunk.memblock);
+
+ while (PA_LIKELY(to_decode > 0 && to_write > 0)) {
+ size_t written;
+ ssize_t decoded;
+
+ decoded = sbc_decode(&a2dp->sbc,
+ p, to_decode,
+ d, to_write,
+ &written);
+
+ if (PA_UNLIKELY(decoded <= 0)) {
+ pa_log_error("SBC decoding error (%li)", (long) decoded);
+ pa_memblock_release(memchunk.memblock);
+ pa_memblock_unref(memchunk.memblock);
+ return -1;
+ }
+
+/* pa_log_debug("SBC: decoded: %lu; written: %lu", (unsigned long) decoded, (unsigned long) written); */
+/* pa_log_debug("SBC: frame_length: %lu; codesize: %lu", (unsigned long) a2dp->frame_length, (unsigned long) a2dp->codesize); */
+
+ pa_assert_fp((size_t) decoded <= to_decode);
+ pa_assert_fp((size_t) decoded == a2dp->frame_length);
+
+ pa_assert_fp((size_t) written <= to_write);
+ pa_assert_fp((size_t) written == a2dp->codesize);
+
+ p = (const uint8_t*) p + decoded;
+ to_decode -= decoded;
+
+ d = (uint8_t*) d + written;
+ to_write -= written;
+
+ frame_count++;
+ }
+
+ pa_memblock_release(memchunk.memblock);
+
+ pa_source_post(u->source, &memchunk);
+
+ ret = 1;
+ break;
+ }
+
+ pa_memblock_unref(memchunk.memblock);
+
+ return ret;
+}
+
static void thread_func(void *userdata) {
struct userdata *u = userdata;
unsigned do_write = 0;
@@ -1262,11 +1400,11 @@ static void thread_func(void *userdata) {
if (u->core->realtime_scheduling)
pa_make_realtime(u->core->realtime_priority);
+ pa_thread_mq_install(&u->thread_mq);
+
if (start_stream_fd(u) < 0)
goto fail;
- pa_thread_mq_install(&u->thread_mq);
-
for (;;) {
struct pollfd *pollfd;
int ret;
@@ -1285,7 +1423,12 @@ static void thread_func(void *userdata) {
if (pollfd && (pollfd->revents & POLLIN)) {
int n_read;
- if ((n_read = hsp_process_push(u)) < 0)
+ if (u->profile == PROFILE_HSP)
+ n_read = hsp_process_push(u);
+ else
+ n_read = a2dp_process_push(u);
+
+ if (n_read < 0)
goto fail;
/* We just read something, so we are supposed to write something, too */
@@ -1319,18 +1462,21 @@ static void thread_func(void *userdata) {
if (u->write_index > 0 && audio_to_send > MAX_PLAYBACK_CATCH_UP_USEC) {
pa_usec_t skip_usec;
uint64_t skip_bytes;
- pa_memchunk tmp;
skip_usec = audio_to_send - MAX_PLAYBACK_CATCH_UP_USEC;
skip_bytes = pa_usec_to_bytes(skip_usec, &u->sample_spec);
- pa_log_warn("Skipping %llu us (= %llu bytes) in audio stream",
- (unsigned long long) skip_usec,
- (unsigned long long) skip_bytes);
+ if (skip_bytes > 0) {
+ pa_memchunk tmp;
- pa_sink_render_full(u->sink, skip_bytes, &tmp);
- pa_memblock_unref(tmp.memblock);
- u->write_index += skip_bytes;
+ pa_log_warn("Skipping %llu us (= %llu bytes) in audio stream",
+ (unsigned long long) skip_usec,
+ (unsigned long long) skip_bytes);
+
+ pa_sink_render_full(u->sink, skip_bytes, &tmp);
+ pa_memblock_unref(tmp.memblock);
+ u->write_index += skip_bytes;
+ }
}
do_write = 1;
@@ -1446,12 +1592,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, TRUE);
+ pa_sink_volume_changed(u->sink, &v);
} 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, TRUE);
+ pa_source_volume_changed(u->source, &v);
}
}
}
@@ -1473,12 +1619,12 @@ static void sink_set_volume_cb(pa_sink *s) {
if (u->profile != PROFILE_HSP)
return;
- gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM;
+ gain = (pa_cvolume_max(&s->real_volume) * 15) / PA_VOLUME_NORM;
if (gain > 15)
gain = 15;
- pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
+ pa_cvolume_set(&s->real_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetSpeakerGain"));
pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID));
@@ -1497,12 +1643,12 @@ static void source_set_volume_cb(pa_source *s) {
if (u->profile != PROFILE_HSP)
return;
- gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM;
+ gain = (pa_cvolume_max(&s->volume) * 15) / PA_VOLUME_NORM;
if (gain > 15)
gain = 15;
- pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
+ pa_cvolume_set(&s->volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetMicrophoneGain"));
pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID));
@@ -1684,7 +1830,7 @@ static int add_source(struct userdata *u) {
data.driver = __FILE__;
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");
+ pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP_SOURCE ? "a2dp_source" : "hsp");
if (u->profile == PROFILE_HSP)
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_INTENDED_ROLES, "phone");
data.card = u->card;
@@ -1709,7 +1855,7 @@ static int add_source(struct userdata *u) {
u->source->parent.process_msg = source_process_msg;
pa_source_set_fixed_latency(u->source,
- (/* u->profile == PROFILE_A2DP ? FIXED_LATENCY_RECORD_A2DP : */ FIXED_LATENCY_RECORD_HSP) +
+ (u->profile == PROFILE_A2DP_SOURCE ? FIXED_LATENCY_RECORD_A2DP : FIXED_LATENCY_RECORD_HSP) +
pa_bytes_to_usec(u->block_size, &u->sample_spec));
}
@@ -1736,7 +1882,8 @@ static void shutdown_bt(struct userdata *u) {
if (u->service_fd >= 0) {
pa_close(u->service_fd);
u->service_fd = -1;
- u->service_write_type = u->service_write_type = 0;
+ u->service_write_type = 0;
+ u->service_read_type = 0;
}
if (u->write_memchunk.memblock) {
@@ -1752,7 +1899,8 @@ static int init_bt(struct userdata *u) {
shutdown_bt(u);
u->stream_write_type = 0;
- u->service_write_type = u->service_write_type = 0;
+ u->service_write_type = 0;
+ u->service_read_type = 0;
if ((u->service_fd = bt_audio_service_open()) < 0) {
pa_log_error("Couldn't connect to bluetooth audio service");
@@ -1804,7 +1952,8 @@ static int init_profile(struct userdata *u) {
if (add_sink(u) < 0)
r = -1;
- if (u->profile == PROFILE_HSP)
+ if (u->profile == PROFILE_HSP ||
+ u->profile == PROFILE_A2DP_SOURCE)
if (add_source(u) < 0)
r = -1;
@@ -2045,6 +2194,20 @@ static int add_card(struct userdata *u, const pa_bluetooth_device *device) {
pa_hashmap_put(data.profiles, p->name, p);
}
+ if (pa_bluetooth_uuid_has(device->uuids, A2DP_SOURCE_UUID)) {
+ p = pa_card_profile_new("a2dp_source", _("High Fidelity Capture (A2DP)"), sizeof(enum profile));
+ p->priority = 10;
+ p->n_sinks = 0;
+ p->n_sources = 1;
+ p->max_sink_channels = 0;
+ p->max_source_channels = 2;
+
+ d = PA_CARD_PROFILE_DATA(p);
+ *d = PROFILE_A2DP_SOURCE;
+
+ pa_hashmap_put(data.profiles, p->name, p);
+ }
+
if (pa_bluetooth_uuid_has(device->uuids, HSP_HS_UUID) ||
pa_bluetooth_uuid_has(device->uuids, HFP_HS_UUID)) {
p = pa_card_profile_new("hsp", _("Telephony Duplex (HSP/HFP)"), sizeof(enum profile));
diff --git a/src/modules/bluetooth/module-bluetooth-discover.c b/src/modules/bluetooth/module-bluetooth-discover.c
index 788fee00..02fd4240 100644
--- a/src/modules/bluetooth/module-bluetooth-discover.c
+++ b/src/modules/bluetooth/module-bluetooth-discover.c
@@ -1,7 +1,7 @@
/***
This file is part of PulseAudio.
- Copyright 2008 Joao Paulo Rechi Vita
+ Copyright 2008-2009 Joao Paulo Rechi Vita
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -84,7 +84,7 @@ static pa_hook_result_t load_module_for_device(pa_bluetooth_discovery *y, const
mi = pa_hashmap_get(u->hashmap, d->path);
if (!d->dead &&
- d->device_connected > 0 && d->audio_state >= PA_BT_AUDIO_STATE_CONNECTED) {
+ d->device_connected > 0 && (d->audio_state >= PA_BT_AUDIO_STATE_CONNECTED || d->audio_source_state >= PA_BT_AUDIO_STATE_CONNECTED)) {
if (!mi) {
pa_module *m = NULL;
@@ -116,6 +116,9 @@ static pa_hook_result_t load_module_for_device(pa_bluetooth_discovery *y, const
}
#endif
+ if (d->audio_source_state >= PA_BT_AUDIO_STATE_CONNECTED)
+ args = pa_sprintf_malloc("%s profile=\"a2dp_source\"", args);
+
pa_log_debug("Loading module-bluetooth-device %s", args);
m = pa_module_load(u->module->core, "module-bluetooth-device", args);
pa_xfree(args);
diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c
index c01ebbf6..85523b39 100644
--- a/src/modules/gconf/module-gconf.c
+++ b/src/modules/gconf/module-gconf.c
@@ -52,9 +52,6 @@ PA_MODULE_LOAD_ONCE(TRUE);
#define MAX_MODULES 10
#define BUF_MAX 2048
-/* #undef PA_GCONF_HELPER */
-/* #define PA_GCONF_HELPER "/home/lennart/projects/pulseaudio/src/gconf-helper" */
-
struct module_item {
char *name;
char *args;
@@ -343,7 +340,11 @@ int pa__init(pa_module*m) {
u->io_event = NULL;
u->buf_fill = 0;
- if ((u->fd = pa_start_child_for_read(PA_GCONF_HELPER, NULL, &u->pid)) < 0)
+ if ((u->fd = pa_start_child_for_read(
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+ pa_run_from_build_tree() ? PA_BUILDDIR "/.libs/gconf-helper" :
+#endif
+ PA_GCONF_HELPER, NULL, &u->pid)) < 0)
goto fail;
u->io_event = m->core->mainloop->io_new(
diff --git a/src/modules/hal-util.c b/src/modules/hal-util.c
index e2a2d8d7..2d59f51d 100644
--- a/src/modules/hal-util.c
+++ b/src/modules/hal-util.c
@@ -65,7 +65,7 @@ int pa_hal_get_info(pa_core *core, pa_proplist *p, int card) {
goto finish;
}
- if (!(udis = libhal_find_device_by_capability(hal, "sound", &n, &error)) < 0) {
+ if (!(udis = libhal_find_device_by_capability(hal, "sound", &n, &error))) {
pa_log_error("Couldn't find devices: %s: %s", error.name, error.message);
goto finish;
}
diff --git a/src/modules/module-always-sink.c b/src/modules/module-always-sink.c
index aee1c650..3d7de9c6 100644
--- a/src/modules/module-always-sink.c
+++ b/src/modules/module-always-sink.c
@@ -24,6 +24,7 @@
#endif
#include <pulse/xmalloc.h>
+#include <pulse/i18n.h>
#include <pulsecore/core.h>
#include <pulsecore/sink-input.h>
@@ -35,7 +36,7 @@
#include "module-always-sink-symdef.h"
PA_MODULE_AUTHOR("Colin Guthrie");
-PA_MODULE_DESCRIPTION("Always keeps at least one sink loaded even if it's a null one");
+PA_MODULE_DESCRIPTION(_("Always keeps at least one sink loaded even if it's a null one"));
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_USAGE(
@@ -78,7 +79,8 @@ static void load_null_sink_if_needed(pa_core *c, pa_sink *sink, struct userdata*
u->ignore = TRUE;
- t = pa_sprintf_malloc("sink_name=%s", u->sink_name);
+ t = pa_sprintf_malloc("sink_name=%s sink_properties='device.description=\"%s\"'", u->sink_name,
+ _("Dummy Output"));
m = pa_module_load(c, "module-null-sink", t);
u->null_module = m ? m->index : PA_INVALID_INDEX;
pa_xfree(t);
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 16de6890..a186c899 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -58,7 +58,7 @@ PA_MODULE_USAGE(
"sink_name=<name for the sink> "
"sink_properties=<properties for the sink> "
"slaves=<slave sinks> "
- "adjust_time=<seconds> "
+ "adjust_time=<how often to readjust rates in s> "
"resample_method=<method> "
"format=<sample format> "
"rate=<sample rate> "
@@ -69,7 +69,7 @@ PA_MODULE_USAGE(
#define MEMBLOCKQ_MAXLENGTH (1024*1024*16)
-#define DEFAULT_ADJUST_TIME 10
+#define DEFAULT_ADJUST_TIME_USEC (10*PA_USEC_PER_SEC)
#define BLOCK_USEC (PA_USEC_PER_MSEC * 200)
@@ -91,6 +91,7 @@ struct output {
pa_sink *sink;
pa_sink_input *sink_input;
+ pa_bool_t ignore_state_change;
pa_asyncmsgq *inq, /* Message queue from the sink thread to this sink input */
*outq; /* Message queue from this sink input to the sink thread */
@@ -99,9 +100,12 @@ struct output {
pa_memblockq *memblockq;
+ /* For communication of the stream latencies to the main thread */
pa_usec_t total_latency;
+ /* For coomunication of the stream parameters to the sink thread */
pa_atomic_t max_request;
+ pa_atomic_t requested_latency;
PA_LLIST_FIELDS(struct output);
};
@@ -116,7 +120,7 @@ struct userdata {
pa_rtpoll *rtpoll;
pa_time_event *time_event;
- uint32_t adjust_time;
+ pa_usec_t adjust_time;
pa_bool_t automatic;
pa_bool_t auto_desc;
@@ -125,8 +129,6 @@ struct userdata {
pa_resample_method_t resample_method;
- struct timeval adjust_timestamp;
-
pa_usec_t block_usec;
pa_idxset* outputs; /* managed in main context */
@@ -146,13 +148,16 @@ enum {
SINK_MESSAGE_REMOVE_OUTPUT,
SINK_MESSAGE_NEED,
SINK_MESSAGE_UPDATE_LATENCY,
- SINK_MESSAGE_UPDATE_MAX_REQUEST
+ SINK_MESSAGE_UPDATE_MAX_REQUEST,
+ SINK_MESSAGE_UPDATE_REQUESTED_LATENCY
};
enum {
SINK_INPUT_MESSAGE_POST = PA_SINK_INPUT_MESSAGE_MAX,
};
+static void output_disable(struct output *o);
+static void output_enable(struct output *o);
static void output_free(struct output *o);
static int output_create_sink_input(struct output *o);
@@ -172,7 +177,7 @@ static void adjust_rates(struct userdata *u) {
if (!PA_SINK_IS_OPENED(pa_sink_get_state(u->sink)))
return;
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
+ PA_IDXSET_FOREACH(o, u->outputs, idx) {
pa_usec_t sink_latency;
if (!o->sink_input || !PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
@@ -189,6 +194,11 @@ static void adjust_rates(struct userdata *u) {
avg_total_latency += o->total_latency;
n++;
+
+ pa_log_debug("[%s] total=%0.2fms sink=%0.2fms ", o->sink->name, (double) o->total_latency / PA_USEC_PER_MSEC, (double) sink_latency / PA_USEC_PER_MSEC);
+
+ if (o->total_latency > 10*PA_USEC_PER_SEC)
+ pa_log_warn("[%s] Total latency of output is very high (%0.2fms), most likely the audio timing in one of your drivers is broken.", o->sink->name, (double) o->total_latency / PA_USEC_PER_MSEC);
}
if (min_total_latency == (pa_usec_t) -1)
@@ -203,22 +213,22 @@ static void adjust_rates(struct userdata *u) {
base_rate = u->sink->sample_spec.rate;
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
+ PA_IDXSET_FOREACH(o, u->outputs, idx) {
uint32_t r = base_rate;
if (!o->sink_input || !PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
continue;
if (o->total_latency < target_latency)
- r -= (uint32_t) ((((double) (target_latency - o->total_latency))/(double)u->adjust_time)*(double)r/PA_USEC_PER_SEC);
+ r -= (uint32_t) ((((double) (target_latency - o->total_latency))/(double)u->adjust_time)*(double)r);
else if (o->total_latency > target_latency)
- r += (uint32_t) ((((double) (o->total_latency - target_latency))/(double)u->adjust_time)*(double)r/PA_USEC_PER_SEC);
+ r += (uint32_t) ((((double) (o->total_latency - target_latency))/(double)u->adjust_time)*(double)r);
if (r < (uint32_t) (base_rate*0.9) || r > (uint32_t) (base_rate*1.1)) {
- pa_log_warn("[%s] sample rates too different, not adjusting (%u vs. %u).", pa_proplist_gets(o->sink_input->proplist, PA_PROP_MEDIA_NAME), base_rate, r);
+ pa_log_warn("[%s] sample rates too different, not adjusting (%u vs. %u).", o->sink_input->sink->name, base_rate, r);
pa_sink_input_set_rate(o->sink_input, base_rate);
} else {
- pa_log_info("[%s] new rate is %u Hz; ratio is %0.3f; latency is %0.0f usec.", pa_proplist_gets(o->sink_input->proplist, PA_PROP_MEDIA_NAME), r, (double) r / base_rate, (float) o->total_latency);
+ pa_log_info("[%s] new rate is %u Hz; ratio is %0.3f; latency is %0.0f usec.", o->sink_input->sink->name, r, (double) r / base_rate, (float) o->total_latency);
pa_sink_input_set_rate(o->sink_input, r);
}
}
@@ -235,7 +245,7 @@ static void time_callback(pa_mainloop_api *a, pa_time_event *e, const struct tim
adjust_rates(u);
- pa_core_rttime_restart(u->core, e, pa_rtclock_now() + u->adjust_time * PA_USEC_PER_SEC);
+ pa_core_rttime_restart(u->core, e, pa_rtclock_now() + u->adjust_time);
}
static void process_render_null(struct userdata *u, pa_usec_t now) {
@@ -355,18 +365,15 @@ static void render_memblock(struct userdata *u, struct output *o, size_t length)
u->thread_info.counter += chunk.length;
/* OK, let's send this data to the other threads */
- for (j = u->thread_info.active_outputs; j; j = j->next)
-
- /* Send to other outputs, which are not the requesting
- * one */
+ PA_LLIST_FOREACH(j, u->thread_info.active_outputs) {
+ if (j == o)
+ continue;
- if (j != o)
- pa_asyncmsgq_post(j->inq, PA_MSGOBJECT(j->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, &chunk, NULL);
+ pa_asyncmsgq_post(j->inq, PA_MSGOBJECT(j->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, &chunk, NULL);
+ }
/* And place it directly into the requesting output's queue */
- if (o)
- pa_memblockq_push_align(o->memblockq, &chunk);
-
+ pa_memblockq_push_align(o->memblockq, &chunk);
pa_memblock_unref(chunk.memblock);
}
}
@@ -402,10 +409,18 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
/* If necessary, get some new data */
request_memblock(o, nbytes);
+ /* pa_log("%s q size is %u + %u (%u/%u)", */
+ /* i->sink->name, */
+ /* pa_memblockq_get_nblocks(o->memblockq), */
+ /* pa_memblockq_get_nblocks(i->thread_info.render_memblockq), */
+ /* pa_memblockq_get_maxrewind(o->memblockq), */
+ /* pa_memblockq_get_maxrewind(i->thread_info.render_memblockq)); */
+
if (pa_memblockq_peek(o->memblockq, chunk) < 0)
return -1;
pa_memblockq_drop(o->memblockq, chunk->length);
+
return 0;
}
@@ -440,13 +455,35 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
return;
pa_atomic_store(&o->max_request, (int) nbytes);
-
pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_MAX_REQUEST, NULL, 0, NULL, NULL);
}
+/* Called from thread context */
+static void sink_input_update_sink_requested_latency_cb(pa_sink_input *i) {
+ struct output *o;
+ pa_usec_t c;
+
+ pa_assert(i);
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(o = i->userdata);
+
+ c = pa_sink_get_requested_latency_within_thread(i->sink);
+
+ if (c == (pa_usec_t) -1)
+ c = i->sink->thread_info.max_latency;
+
+ if (pa_atomic_load(&o->requested_latency) == (int) c)
+ return;
+
+ pa_atomic_store(&o->requested_latency, (int) c);
+ pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_REQUESTED_LATENCY, NULL, 0, NULL, NULL);
+}
+
/* Called from I/O thread context */
static void sink_input_attach_cb(pa_sink_input *i) {
struct output *o;
+ pa_usec_t c;
pa_sink_input_assert_ref(i);
pa_assert_se(o = i->userdata);
@@ -455,14 +492,24 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_assert(!o->inq_rtpoll_item_read && !o->outq_rtpoll_item_write);
o->inq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
- i->sink->rtpoll,
+ i->sink->thread_info.rtpoll,
PA_RTPOLL_LATE, /* This one is not that important, since we check for data in _peek() anyway. */
o->inq);
o->outq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
- i->sink->rtpoll,
+ i->sink->thread_info.rtpoll,
PA_RTPOLL_EARLY,
o->outq);
+
+ pa_sink_input_request_rewind(i, 0, FALSE, TRUE, TRUE);
+
+ pa_atomic_store(&o->max_request, (int) pa_sink_input_get_max_request(i));
+
+ c = pa_sink_get_requested_latency_within_thread(i->sink);
+ pa_atomic_store(&o->requested_latency, (int) (c == (pa_usec_t) -1 ? 0 : c));
+
+ pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_MAX_REQUEST, NULL, 0, NULL, NULL);
+ pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_REQUESTED_LATENCY, NULL, 0, NULL, NULL);
}
/* Called from I/O thread context */
@@ -472,14 +519,15 @@ static void sink_input_detach_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(o = i->userdata);
- /* Shut down the queue from the sink thread to us */
- pa_assert(o->inq_rtpoll_item_read && o->outq_rtpoll_item_write);
-
- pa_rtpoll_item_free(o->inq_rtpoll_item_read);
- o->inq_rtpoll_item_read = NULL;
+ if (o->inq_rtpoll_item_read) {
+ pa_rtpoll_item_free(o->inq_rtpoll_item_read);
+ o->inq_rtpoll_item_read = NULL;
+ }
- pa_rtpoll_item_free(o->outq_rtpoll_item_write);
- o->outq_rtpoll_item_write = NULL;
+ if (o->outq_rtpoll_item_write) {
+ pa_rtpoll_item_free(o->outq_rtpoll_item_write);
+ o->outq_rtpoll_item_write = NULL;
+ }
}
/* Called from main context */
@@ -493,20 +541,6 @@ static void sink_input_kill_cb(pa_sink_input *i) {
output_free(o);
}
-/* Called from IO thread context */
-static void sink_input_state_change_cb(pa_sink_input *i, pa_sink_input_state_t state) {
- struct userdata *u;
-
- pa_sink_input_assert_ref(i);
- pa_assert_se(u = i->userdata);
-
- /* If we are added for the first time, ask for a rewinding so that
- * we are heard right-away. */
- if (PA_SINK_INPUT_IS_LINKED(state) &&
- i->thread_info.state == PA_SINK_INPUT_INIT)
- pa_sink_input_request_rewind(i, 0, FALSE, TRUE, TRUE);
-}
-
/* Called from thread context */
static int sink_input_process_msg(pa_msgobject *obj, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct output *o = PA_SINK_INPUT(obj)->userdata;
@@ -537,37 +571,6 @@ static int sink_input_process_msg(pa_msgobject *obj, int code, void *data, int64
}
/* Called from main context */
-static void disable_output(struct output *o) {
- pa_assert(o);
-
- if (!o->sink_input)
- return;
-
- pa_sink_input_unlink(o->sink_input);
- pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_REMOVE_OUTPUT, o, 0, NULL);
- pa_sink_input_unref(o->sink_input);
- o->sink_input = NULL;
-}
-
-/* Called from main context */
-static void enable_output(struct output *o) {
- pa_assert(o);
-
- if (o->sink_input)
- return;
-
- if (output_create_sink_input(o) >= 0) {
-
- pa_memblockq_flush_write(o->memblockq);
-
- pa_sink_input_put(o->sink_input);
-
- if (o->userdata->sink && PA_SINK_IS_LINKED(pa_sink_get_state(o->userdata->sink)))
- pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL);
- }
-}
-
-/* Called from main context */
static void suspend(struct userdata *u) {
struct output *o;
uint32_t idx;
@@ -575,8 +578,8 @@ static void suspend(struct userdata *u) {
pa_assert(u);
/* Let's suspend by unlinking all streams */
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx))
- disable_output(o);
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
+ output_disable(o);
pa_log_info("Device suspended...");
}
@@ -589,13 +592,8 @@ static void unsuspend(struct userdata *u) {
pa_assert(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_SUSPEND_IDLE);
-
- if (PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
- enable_output(o);
- }
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
+ output_enable(o);
pa_log_info("Resumed successfully...");
}
@@ -639,7 +637,13 @@ static void update_max_request(struct userdata *u) {
size_t max_request = 0;
struct output *o;
- for (o = u->thread_info.active_outputs; o; o = o->next) {
+ pa_assert(u);
+ pa_sink_assert_io_context(u->sink);
+
+ /* Collects the max_request values of all streams and sets the
+ * largest one locally */
+
+ PA_LLIST_FOREACH(o, u->thread_info.active_outputs) {
size_t mr = (size_t) pa_atomic_load(&o->max_request);
if (mr > max_request)
@@ -652,6 +656,67 @@ static void update_max_request(struct userdata *u) {
pa_sink_set_max_request_within_thread(u->sink, max_request);
}
+/* Called from IO context */
+static void update_fixed_latency(struct userdata *u) {
+ pa_usec_t fixed_latency = 0;
+ struct output *o;
+
+ pa_assert(u);
+ pa_sink_assert_io_context(u->sink);
+
+ /* Collects the requested_latency values of all streams and sets
+ * the largest one as fixed_latency locally */
+
+ PA_LLIST_FOREACH(o, u->thread_info.active_outputs) {
+ pa_usec_t rl = (size_t) pa_atomic_load(&o->requested_latency);
+
+ if (rl > fixed_latency)
+ fixed_latency = rl;
+ }
+
+ if (fixed_latency <= 0)
+ fixed_latency = u->block_usec;
+
+ pa_sink_set_fixed_latency_within_thread(u->sink, fixed_latency);
+}
+
+/* Called from thread context of the io thread */
+static void output_add_within_thread(struct output *o) {
+ pa_assert(o);
+ pa_sink_assert_io_context(o->sink);
+
+ PA_LLIST_PREPEND(struct output, o->userdata->thread_info.active_outputs, o);
+
+ pa_assert(!o->outq_rtpoll_item_read && !o->inq_rtpoll_item_write);
+
+ o->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
+ o->userdata->rtpoll,
+ PA_RTPOLL_EARLY-1, /* This item is very important */
+ o->outq);
+ o->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
+ o->userdata->rtpoll,
+ PA_RTPOLL_EARLY,
+ o->inq);
+}
+
+/* Called from thread context of the io thread */
+static void output_remove_within_thread(struct output *o) {
+ pa_assert(o);
+ pa_sink_assert_io_context(o->sink);
+
+ PA_LLIST_REMOVE(struct output, o->userdata->thread_info.active_outputs, o);
+
+ if (o->outq_rtpoll_item_read) {
+ pa_rtpoll_item_free(o->outq_rtpoll_item_read);
+ o->outq_rtpoll_item_read = NULL;
+ }
+
+ if (o->inq_rtpoll_item_write) {
+ pa_rtpoll_item_free(o->inq_rtpoll_item_write);
+ o->inq_rtpoll_item_write = NULL;
+ }
+}
+
/* Called from thread context of the io thread */
static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SINK(o)->userdata;
@@ -684,42 +749,17 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
return 0;
}
- case SINK_MESSAGE_ADD_OUTPUT: {
- struct output *op = data;
-
- PA_LLIST_PREPEND(struct output, u->thread_info.active_outputs, op);
-
- pa_assert(!op->outq_rtpoll_item_read && !op->inq_rtpoll_item_write);
-
- op->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
- u->rtpoll,
- PA_RTPOLL_EARLY-1, /* This item is very important */
- op->outq);
- op->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
- u->rtpoll,
- PA_RTPOLL_EARLY,
- op->inq);
-
+ case SINK_MESSAGE_ADD_OUTPUT:
+ output_add_within_thread(data);
update_max_request(u);
+ update_fixed_latency(u);
return 0;
- }
-
- case SINK_MESSAGE_REMOVE_OUTPUT: {
- struct output *op = data;
-
- PA_LLIST_REMOVE(struct output, u->thread_info.active_outputs, op);
-
- pa_assert(op->outq_rtpoll_item_read && op->inq_rtpoll_item_write);
-
- pa_rtpoll_item_free(op->outq_rtpoll_item_read);
- op->outq_rtpoll_item_read = NULL;
-
- pa_rtpoll_item_free(op->inq_rtpoll_item_write);
- op->inq_rtpoll_item_write = NULL;
+ case SINK_MESSAGE_REMOVE_OUTPUT:
+ output_remove_within_thread(data);
update_max_request(u);
+ update_fixed_latency(u);
return 0;
- }
case SINK_MESSAGE_NEED:
render_memblock(u, (struct output*) data, (size_t) offset);
@@ -741,10 +781,13 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
}
case SINK_MESSAGE_UPDATE_MAX_REQUEST:
-
update_max_request(u);
break;
- }
+
+ case SINK_MESSAGE_UPDATE_REQUESTED_LATENCY:
+ update_fixed_latency(u);
+ break;
+}
return pa_sink_process_msg(o, code, data, offset, chunk);
}
@@ -767,7 +810,7 @@ static void update_description(struct userdata *u) {
t = pa_xstrdup("Simultaneous output to");
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
+ PA_IDXSET_FOREACH(o, u->outputs, idx) {
char *e;
if (first) {
@@ -801,8 +844,9 @@ static int output_create_sink_input(struct output *o) {
pa_sink_input_new_data_set_channel_map(&data, &o->userdata->sink->channel_map);
data.module = o->userdata->module;
data.resample_method = o->userdata->resample_method;
+ data.flags = PA_SINK_INPUT_VARIABLE_RATE|PA_SINK_INPUT_DONT_MOVE|PA_SINK_INPUT_NO_CREATE_ON_SUSPEND;
- pa_sink_input_new(&o->sink_input, o->userdata->core, &data, PA_SINK_INPUT_VARIABLE_RATE|PA_SINK_INPUT_DONT_MOVE);
+ pa_sink_input_new(&o->sink_input, o->userdata->core, &data);
pa_sink_input_new_data_done(&data);
@@ -812,9 +856,9 @@ static int output_create_sink_input(struct output *o) {
o->sink_input->parent.process_msg = sink_input_process_msg;
o->sink_input->pop = sink_input_pop_cb;
o->sink_input->process_rewind = sink_input_process_rewind_cb;
- o->sink_input->state_change = sink_input_state_change_cb;
o->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
o->sink_input->update_max_request = sink_input_update_max_request_cb;
+ o->sink_input->update_sink_requested_latency = sink_input_update_sink_requested_latency_cb;
o->sink_input->attach = sink_input_attach_cb;
o->sink_input->detach = sink_input_detach_cb;
o->sink_input->kill = sink_input_kill_cb;
@@ -825,22 +869,19 @@ static int output_create_sink_input(struct output *o) {
return 0;
}
+/* Called from main context */
static struct output *output_new(struct userdata *u, pa_sink *sink) {
struct output *o;
- pa_sink_state_t state;
pa_assert(u);
pa_assert(sink);
pa_assert(u->sink);
- o = pa_xnew(struct output, 1);
+ o = pa_xnew0(struct output, 1);
o->userdata = u;
o->inq = pa_asyncmsgq_new(0);
o->outq = pa_asyncmsgq_new(0);
- o->inq_rtpoll_item_write = o->inq_rtpoll_item_read = NULL;
- o->outq_rtpoll_item_write = o->outq_rtpoll_item_read = NULL;
o->sink = sink;
- o->sink_input = NULL;
o->memblockq = pa_memblockq_new(
0,
MEMBLOCKQ_MAXLENGTH,
@@ -850,84 +891,135 @@ static struct output *output_new(struct userdata *u, pa_sink *sink) {
0,
0,
NULL);
- pa_atomic_store(&o->max_request, 0);
- PA_LLIST_INIT(struct output, o);
pa_assert_se(pa_idxset_put(u->outputs, o, NULL) == 0);
+ update_description(u);
- state = pa_sink_get_state(u->sink);
-
- if (state != PA_SINK_INIT)
- pa_asyncmsgq_send(u->sink->asyncmsgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL);
- else {
- /* If the sink is not yet started, we need to do the activation ourselves */
- PA_LLIST_PREPEND(struct output, u->thread_info.active_outputs, o);
-
- o->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
- u->rtpoll,
- PA_RTPOLL_EARLY-1, /* This item is very important */
- o->outq);
- o->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
- u->rtpoll,
- PA_RTPOLL_EARLY,
- o->inq);
- }
+ return o;
+}
- if (PA_SINK_IS_OPENED(state) || state == PA_SINK_INIT) {
- pa_sink_suspend(sink, FALSE, PA_SUSPEND_IDLE);
+/* Called from main context */
+static void output_free(struct output *o) {
+ pa_assert(o);
- if (PA_SINK_IS_OPENED(pa_sink_get_state(sink)))
- if (output_create_sink_input(o) < 0)
- goto fail;
- }
+ output_disable(o);
- update_description(u);
+ pa_assert_se(pa_idxset_remove_by_data(o->userdata->outputs, o, NULL));
+ update_description(o->userdata);
- return o;
+ if (o->inq_rtpoll_item_read)
+ pa_rtpoll_item_free(o->inq_rtpoll_item_read);
+ if (o->inq_rtpoll_item_write)
+ pa_rtpoll_item_free(o->inq_rtpoll_item_write);
-fail:
+ if (o->outq_rtpoll_item_read)
+ pa_rtpoll_item_free(o->outq_rtpoll_item_read);
+ if (o->outq_rtpoll_item_write)
+ pa_rtpoll_item_free(o->outq_rtpoll_item_write);
- if (o) {
- pa_idxset_remove_by_data(u->outputs, o, NULL);
+ if (o->inq)
+ pa_asyncmsgq_unref(o->inq);
- if (o->sink_input) {
- pa_sink_input_unlink(o->sink_input);
- pa_sink_input_unref(o->sink_input);
- }
+ if (o->outq)
+ pa_asyncmsgq_unref(o->outq);
+
+ if (o->memblockq)
+ pa_memblockq_free(o->memblockq);
+
+ pa_xfree(o);
+}
+
+/* Called from main context */
+static void output_enable(struct output *o) {
+ pa_assert(o);
+
+ if (o->sink_input)
+ return;
+
+ /* This might cause the sink to be resumed. The state change hook
+ * of the sink might hence be called from here, which might then
+ * cause us to be called in a loop. Make sure that state changes
+ * for this output don't cause this loop by setting a flag here */
+ o->ignore_state_change = TRUE;
+
+ if (output_create_sink_input(o) >= 0) {
- if (o->memblockq)
- pa_memblockq_free(o->memblockq);
+ if (pa_sink_get_state(o->sink) != PA_SINK_INIT) {
- if (o->inq)
- pa_asyncmsgq_unref(o->inq);
+ /* First we register the output. That means that the sink
+ * will start to pass data to this output. */
+ pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL);
- if (o->outq)
- pa_asyncmsgq_unref(o->outq);
+ /* Then we enable the sink input. That means that the sink
+ * is now asked for new data. */
+ pa_sink_input_put(o->sink_input);
- pa_xfree(o);
+ } else
+ /* Hmm the sink is not yet started, do things right here */
+ output_add_within_thread(o);
}
- return NULL;
+ o->ignore_state_change = FALSE;
}
+/* Called from main context */
+static void output_disable(struct output *o) {
+ pa_assert(o);
+
+ if (!o->sink_input)
+ return;
+
+ /* First we disable the sink input. That means that the sink is
+ * not asked for new data anymore */
+ pa_sink_input_unlink(o->sink_input);
+
+ /* Then we unregister the output. That means that the sink doesn't
+ * pass any further data to this output */
+ pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_REMOVE_OUTPUT, o, 0, NULL);
+
+ /* Now dellocate the stream */
+ pa_sink_input_unref(o->sink_input);
+ o->sink_input = NULL;
+
+ /* Finally, drop all queued data */
+ pa_memblockq_flush_write(o->memblockq);
+ pa_asyncmsgq_flush(o->inq, FALSE);
+ pa_asyncmsgq_flush(o->outq, FALSE);
+}
+
+/* Called from main context */
+static void output_verify(struct output *o) {
+ pa_assert(o);
+
+ if (PA_SINK_IS_OPENED(pa_sink_get_state(o->userdata->sink)))
+ output_enable(o);
+ else
+ output_disable(o);
+}
+
+/* Called from main context */
static pa_bool_t is_suitable_sink(struct userdata *u, pa_sink *s) {
const char *t;
pa_sink_assert_ref(s);
+ if (s == u->sink)
+ return FALSE;
+
if (!(s->flags & PA_SINK_HARDWARE))
return FALSE;
- if (s == u->sink)
+ if (!(s->flags & PA_SINK_LATENCY))
return FALSE;
if ((t = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_CLASS)))
- if (strcmp(t, "sound"))
+ if (!pa_streq(t, "sound"))
return FALSE;
return TRUE;
}
+/* Called from main context */
static pa_hook_result_t sink_put_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) {
struct output *o;
@@ -940,18 +1032,17 @@ static pa_hook_result_t sink_put_hook_cb(pa_core *c, pa_sink *s, struct userdata
return PA_HOOK_OK;
pa_log_info("Configuring new sink: %s", s->name);
-
if (!(o = output_new(u, s))) {
pa_log("Failed to create sink input on sink '%s'.", s->name);
return PA_HOOK_OK;
}
- if (o->sink_input)
- pa_sink_input_put(o->sink_input);
+ output_verify(o);
return PA_HOOK_OK;
}
+/* Called from main context */
static struct output* find_output(struct userdata *u, pa_sink *s) {
struct output *o;
uint32_t idx;
@@ -962,13 +1053,14 @@ static struct output* find_output(struct userdata *u, pa_sink *s) {
if (u->sink == s)
return NULL;
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx))
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
if (o->sink == s)
return o;
return NULL;
}
+/* Called from main context */
static pa_hook_result_t sink_unlink_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) {
struct output *o;
@@ -980,26 +1072,25 @@ static pa_hook_result_t sink_unlink_hook_cb(pa_core *c, pa_sink *s, struct userd
return PA_HOOK_OK;
pa_log_info("Unconfiguring sink: %s", s->name);
-
output_free(o);
return PA_HOOK_OK;
}
+/* Called from main context */
static pa_hook_result_t sink_state_changed_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) {
struct output *o;
- pa_sink_state_t state;
if (!(o = find_output(u, s)))
return PA_HOOK_OK;
- state = pa_sink_get_state(s);
-
- if (PA_SINK_IS_OPENED(state) && PA_SINK_IS_OPENED(pa_sink_get_state(u->sink)) && !o->sink_input)
- enable_output(o);
+ /* This state change might be triggered because we are creating a
+ * stream here, in that case we don't want to create it a second
+ * time here and enter a loop */
+ if (o->ignore_state_change)
+ return PA_HOOK_OK;
- if (state == PA_SINK_SUSPENDED && o->sink_input)
- disable_output(o);
+ output_verify(o);
return PA_HOOK_OK;
}
@@ -1014,6 +1105,7 @@ int pa__init(pa_module*m) {
struct output *o;
uint32_t idx;
pa_sink_new_data data;
+ uint32_t adjust_time_sec;
pa_assert(m);
@@ -1029,23 +1121,13 @@ int pa__init(pa_module*m) {
}
}
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
- u->sink = NULL;
- u->time_event = NULL;
- u->adjust_time = DEFAULT_ADJUST_TIME;
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
- u->thread = NULL;
u->resample_method = resample_method;
u->outputs = pa_idxset_new(NULL, NULL);
- memset(&u->adjust_timestamp, 0, sizeof(u->adjust_timestamp));
- u->sink_put_slot = u->sink_unlink_slot = u->sink_state_changed_slot = NULL;
- PA_LLIST_HEAD_INIT(struct output, u->thread_info.active_outputs);
- pa_atomic_store(&u->thread_info.running, FALSE);
- u->thread_info.in_null_mode = FALSE;
- u->thread_info.counter = 0;
u->thread_info.smoother = pa_smoother_new(
PA_USEC_PER_SEC,
PA_USEC_PER_SEC*2,
@@ -1055,16 +1137,73 @@ int pa__init(pa_module*m) {
0,
FALSE);
- if (pa_modargs_get_value_u32(ma, "adjust_time", &u->adjust_time) < 0) {
+ adjust_time_sec = DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC;
+ if (pa_modargs_get_value_u32(ma, "adjust_time", &adjust_time_sec) < 0) {
pa_log("Failed to parse adjust_time value");
goto fail;
}
+ if (adjust_time_sec != DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC)
+ u->adjust_time = adjust_time_sec * PA_USEC_PER_SEC;
+ else
+ u->adjust_time = DEFAULT_ADJUST_TIME_USEC;
+
slaves = pa_modargs_get_value(ma, "slaves", NULL);
u->automatic = !slaves;
ss = m->core->default_sample_spec;
map = m->core->default_channel_map;
+
+ /* Check the specified slave sinks for sample_spec and channel_map to use for the combined sink */
+ if (!u->automatic) {
+ const char*split_state = NULL;
+ char *n = NULL;
+ pa_sample_spec slaves_spec;
+ pa_channel_map slaves_map;
+ pa_bool_t is_first_slave = TRUE;
+
+ pa_sample_spec_init(&slaves_spec);
+
+ while ((n = pa_split(slaves, ",", &split_state))) {
+ pa_sink *slave_sink;
+
+ if (!(slave_sink = pa_namereg_get(m->core, n, PA_NAMEREG_SINK))) {
+ pa_log("Invalid slave sink '%s'", n);
+ pa_xfree(n);
+ goto fail;
+ }
+
+ pa_xfree(n);
+
+ if (is_first_slave) {
+ slaves_spec = slave_sink->sample_spec;
+ slaves_map = slave_sink->channel_map;
+ is_first_slave = FALSE;
+ } else {
+ if (slaves_spec.format != slave_sink->sample_spec.format)
+ slaves_spec.format = PA_SAMPLE_INVALID;
+
+ if (slaves_spec.rate < slave_sink->sample_spec.rate)
+ slaves_spec.rate = slave_sink->sample_spec.rate;
+
+ if (!pa_channel_map_equal(&slaves_map, &slave_sink->channel_map))
+ slaves_spec.channels = 0;
+ }
+ }
+
+ if (!is_first_slave) {
+ if (slaves_spec.format != PA_SAMPLE_INVALID)
+ ss.format = slaves_spec.format;
+
+ ss.rate = slaves_spec.rate;
+
+ if (slaves_spec.channels > 0) {
+ map = slaves_map;
+ ss.channels = slaves_map.channels;
+ }
+ }
+ }
+
if ((pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0)) {
pa_log("Invalid sample specification.");
goto fail;
@@ -1095,7 +1234,6 @@ int pa__init(pa_module*m) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Simultaneous Output");
}
-
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
pa_sink_new_data_done(&data);
@@ -1149,7 +1287,7 @@ int pa__init(pa_module*m) {
/* We're in automatic mode, we add every sink that matches our needs */
- for (s = pa_idxset_first(m->core->sinks, &idx); s; s = pa_idxset_next(m->core->sinks, &idx)) {
+ PA_IDXSET_FOREACH(s, m->core->sinks, idx) {
if (!is_suitable_sink(u, s))
continue;
@@ -1174,12 +1312,11 @@ int pa__init(pa_module*m) {
/* Activate the sink and the sink inputs */
pa_sink_put(u->sink);
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx))
- if (o->sink_input)
- pa_sink_input_put(o->sink_input);
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
+ output_verify(o);
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);
+ u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time, time_callback, u);
pa_modargs_free(ma);
@@ -1195,37 +1332,6 @@ fail:
return -1;
}
-static void output_free(struct output *o) {
- pa_assert(o);
-
- disable_output(o);
-
- pa_assert_se(pa_idxset_remove_by_data(o->userdata->outputs, o, NULL));
-
- update_description(o->userdata);
-
- if (o->inq_rtpoll_item_read)
- pa_rtpoll_item_free(o->inq_rtpoll_item_read);
- if (o->inq_rtpoll_item_write)
- pa_rtpoll_item_free(o->inq_rtpoll_item_write);
-
- if (o->outq_rtpoll_item_read)
- pa_rtpoll_item_free(o->outq_rtpoll_item_read);
- if (o->outq_rtpoll_item_write)
- pa_rtpoll_item_free(o->outq_rtpoll_item_write);
-
- if (o->inq)
- pa_asyncmsgq_unref(o->inq);
-
- if (o->outq)
- pa_asyncmsgq_unref(o->outq);
-
- if (o->memblockq)
- pa_memblockq_free(o->memblockq);
-
- pa_xfree(o);
-}
-
void pa__done(pa_module*m) {
struct userdata *u;
struct output *o;
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index a666073c..103f5c48 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -187,7 +187,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
}
add_session(u, path);
- return DBUS_HANDLER_RESULT_HANDLED;
} else if (dbus_message_is_signal(message, "org.freedesktop.ConsoleKit.Seat", "SessionRemoved")) {
@@ -202,7 +201,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
}
remove_session(u, path);
- return DBUS_HANDLER_RESULT_HANDLED;
}
finish:
diff --git a/src/modules/module-detect.c b/src/modules/module-detect.c
index 18479df3..b1f24e15 100644
--- a/src/modules/module-detect.c
+++ b/src/modules/module-detect.c
@@ -50,7 +50,7 @@ PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_USAGE("just-one=<boolean>");
-PA_MODULE_DEPRECATED("Please use module-hal-detect instead of module-detect!");
+PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-detect!");
static const char* const valid_modargs[] = {
"just-one",
@@ -119,7 +119,7 @@ static int detect_alsa(pa_core *c, int just_one) {
}
#endif
-#ifdef HAVE_OSS
+#ifdef HAVE_OSS_OUTPUT
static int detect_oss(pa_core *c, int just_one) {
FILE *f;
int n = 0, b = 0;
@@ -240,7 +240,7 @@ int pa__init(pa_module*m) {
#ifdef HAVE_ALSA
if ((n = detect_alsa(m->core, just_one)) <= 0)
#endif
-#ifdef HAVE_OSS
+#ifdef HAVE_OSS_OUTPUT
if ((n = detect_oss(m->core, just_one)) <= 0)
#endif
#ifdef HAVE_SOLARIS
diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c
index 120b762c..da6c9666 100644
--- a/src/modules/module-device-restore.c
+++ b/src/modules/module-device-restore.c
@@ -218,7 +218,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (sink->save_volume) {
entry.channel_map = sink->channel_map;
- entry.volume = *pa_sink_get_volume(sink, FALSE, TRUE);
+ entry.volume = *pa_sink_get_volume(sink, FALSE);
entry.volume_valid = TRUE;
}
diff --git a/src/modules/module-hal-detect-compat.c b/src/modules/module-hal-detect-compat.c
new file mode 100644
index 00000000..14cf8143
--- /dev/null
+++ b/src/modules/module-hal-detect-compat.c
@@ -0,0 +1,84 @@
+/***
+ 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 <pulsecore/module.h>
+#include <pulsecore/modargs.h>
+#include <pulsecore/log.h>
+#include <pulsecore/core-util.h>
+
+#include "module-hal-detect-symdef.h"
+
+PA_MODULE_AUTHOR("Lennart Poettering");
+PA_MODULE_DESCRIPTION("Compatibility module");
+PA_MODULE_VERSION(PACKAGE_VERSION);
+PA_MODULE_LOAD_ONCE(TRUE);
+PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!");
+
+static const char* const valid_modargs[] = {
+ "api",
+ "tsched",
+ "subdevices",
+ NULL,
+};
+
+int pa__init(pa_module*m) {
+ pa_modargs *ma = NULL;
+ pa_bool_t tsched = TRUE;
+ pa_module *n;
+ char *t;
+
+ 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, "tsched", &tsched) < 0) {
+ pa_log("tsched= expects boolean arguments");
+ goto fail;
+ }
+
+ pa_log_warn("We will now load module-udev-detect. Please make sure to remove module-hal-detect from your configuration.");
+
+ t = pa_sprintf_malloc("tsched=%s", pa_yes_no(tsched));
+ n = pa_module_load(m->core, "module-udev-detect", t);
+ pa_xfree(t);
+
+ if (n)
+ pa_module_unload_request(m, TRUE);
+
+ pa_modargs_free(ma);
+
+ return n ? 0 : -1;
+
+fail:
+ if (ma)
+ pa_modargs_free(ma);
+
+ return -1;
+}
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index 658b3e55..18519131 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -55,14 +55,16 @@ PA_MODULE_AUTHOR("Shahms King");
PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
-#if defined(HAVE_ALSA) && defined(HAVE_OSS)
+#if defined(HAVE_ALSA) && defined(HAVE_OSS_OUTPUT)
PA_MODULE_USAGE("api=<alsa or oss> "
- "tsched=<enable system timer based scheduling mode?>");
+ "tsched=<enable system timer based scheduling mode?>"
+ "subdevices=<init all subdevices>");
#elif defined(HAVE_ALSA)
PA_MODULE_USAGE("api=<alsa> "
"tsched=<enable system timer based scheduling mode?>");
-#elif defined(HAVE_OSS)
-PA_MODULE_USAGE("api=<oss>");
+#elif defined(HAVE_OSS_OUTPUT)
+PA_MODULE_USAGE("api=<oss>"
+ "subdevices=<init all subdevices>");
#endif
PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!");
@@ -82,6 +84,9 @@ struct userdata {
#ifdef HAVE_ALSA
pa_bool_t use_tsched;
#endif
+#ifdef HAVE_OSS_OUTPUT
+ pa_bool_t init_subdevs;
+#endif
};
#define CAPABILITY_ALSA "alsa"
@@ -92,6 +97,9 @@ static const char* const valid_modargs[] = {
#ifdef HAVE_ALSA
"tsched",
#endif
+#ifdef HAVE_OSS_OUTPUT
+ "subdevices",
+#endif
NULL
};
@@ -262,9 +270,9 @@ fail:
#endif
-#ifdef HAVE_OSS
+#ifdef HAVE_OSS_OUTPUT
-static pa_bool_t hal_oss_device_is_pcm(LibHalContext *context, const char *udi) {
+static pa_bool_t hal_oss_device_is_pcm(LibHalContext *context, const char *udi, pa_bool_t init_subdevices) {
char *class = NULL, *dev = NULL, *e;
int device;
pa_bool_t r = FALSE;
@@ -294,7 +302,7 @@ static pa_bool_t hal_oss_device_is_pcm(LibHalContext *context, const char *udi)
/* We only care for the main device */
device = libhal_device_get_property_int(context, udi, "oss.device", &error);
- if (dbus_error_is_set(&error) || device != 0)
+ if (dbus_error_is_set(&error) || (device != 0 && init_subdevices == FALSE))
goto finish;
r = TRUE;
@@ -324,7 +332,7 @@ static int hal_device_load_oss(struct userdata *u, const char *udi, struct devic
pa_assert(d);
/* We only care for OSS PCM devices */
- if (!hal_oss_device_is_pcm(u->context, udi))
+ if (!hal_oss_device_is_pcm(u->context, udi, u->init_subdevs))
goto fail;
/* We store only one entry per card, hence we look for the originating device */
@@ -394,7 +402,7 @@ static struct device* hal_device_add(struct userdata *u, const char *udi) {
if (pa_streq(u->capability, CAPABILITY_ALSA))
r = hal_device_load_alsa(u, udi, d);
#endif
-#ifdef HAVE_OSS
+#ifdef HAVE_OSS_OUTPUT
if (pa_streq(u->capability, CAPABILITY_OSS))
r = hal_device_load_oss(u, udi, d);
#endif
@@ -427,9 +435,7 @@ static int hal_device_add_all(struct userdata *u) {
int i;
for (i = 0; i < n; i++) {
- struct device *d;
-
- if ((d = hal_device_add(u, udis[i]))) {
+ if (hal_device_add(u, udis[i])) {
count++;
pa_log_debug("Loaded device %s", udis[i]);
} else
@@ -615,8 +621,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
}
- return DBUS_HANDLER_RESULT_HANDLED;
-
} else if (dbus_message_is_signal(message, "org.pulseaudio.Server", "DirtyGiveUpMessage")) {
/* We use this message to avoid a dirty race condition when we
get an ACLAdded message before the previously owning PA
@@ -660,7 +664,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
/* Yes, we don't check the UDI for validity, but hopefully HAL will */
device_added_cb(u->context, udi);
- return DBUS_HANDLER_RESULT_HANDLED;
}
finish:
@@ -753,7 +756,7 @@ int pa__init(pa_module*m) {
api = pa_modargs_get_value(ma, "api", "oss");
#endif
-#ifdef HAVE_OSS
+#ifdef HAVE_OSS_OUTPUT
if (pa_streq(api, "oss"))
u->capability = CAPABILITY_OSS;
#endif
@@ -763,6 +766,13 @@ int pa__init(pa_module*m) {
goto fail;
}
+#ifdef HAVE_OSS_OUTPUT
+ if (pa_modargs_get_value_boolean(ma, "subdevices", &u->init_subdevs) < 0) {
+ pa_log("Failed to parse subdevices= argument.");
+ goto fail;
+ }
+#endif
+
if (!(u->connection = pa_dbus_bus_get(m->core, DBUS_BUS_SYSTEM, &error)) || dbus_error_is_set(&error)) {
pa_log_error("Unable to contact DBUS system bus: %s: %s", error.name, error.message);
goto fail;
diff --git a/src/modules/module-intended-roles.c b/src/modules/module-intended-roles.c
index c697209a..b9924dfd 100644
--- a/src/modules/module-intended-roles.c
+++ b/src/modules/module-intended-roles.c
@@ -127,6 +127,9 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
if (s == def)
continue;
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)))
+ continue;
+
if (role_match(s->proplist, role)) {
new_data->sink = s;
new_data->save_sink = FALSE;
@@ -173,6 +176,9 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
if (s == def)
continue;
+ if (!PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
+ continue;
+
if (role_match(s->proplist, role)) {
new_data->source = s;
new_data->save_source = FALSE;
@@ -201,6 +207,17 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct
if (si->save_sink)
continue;
+ /* Skip this if it is already in the process of being moved
+ * anyway */
+ if (!si->sink)
+ continue;
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(si)))
+ continue;
+
if (!(role = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_ROLE)))
continue;
@@ -237,6 +254,17 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
if (so->direct_on_input)
continue;
+ /* Skip this if it is already in the process of being moved
+ * anyway */
+ if (!so->source)
+ continue;
+
+ /* It might happen that a stream and a source are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SOURCE_OUTPUT_IS_LINKED(pa_source_output_get_state(so)))
+ continue;
+
if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE)))
continue;
@@ -275,24 +303,28 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str
uint32_t jdx;
pa_sink *d;
+ if (!si->sink)
+ continue;
+
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;
- }
+ if (def != sink && role_match(def->proplist, role))
+ if (pa_sink_input_move_to(si, def, FALSE) >= 0)
+ 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;
- }
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(d)))
+ continue;
+
+ if (role_match(d->proplist, role))
+ if (pa_sink_input_move_to(si, d, FALSE) >= 0)
+ break;
}
}
@@ -325,6 +357,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
if (so->direct_on_input)
continue;
+ if (!so->source)
+ continue;
+
if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE)))
continue;
@@ -339,6 +374,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
if (d == def || d == source)
continue;
+ if (!PA_SOURCE_IS_LINKED(pa_source_get_state(d)))
+ continue;
+
if (role_match(d->proplist, role) && !source->monitor_of == !d->monitor_of) {
pa_source_output_move_to(so, d, FALSE);
break;
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 21f4a8f1..994c778f 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -64,10 +64,9 @@ PA_MODULE_USAGE(
#define MEMBLOCKQ_MAXLENGTH (16*1024*1024)
struct userdata {
- pa_core *core;
pa_module *module;
- pa_sink *sink, *master;
+ pa_sink *sink;
pa_sink_input *sink_input;
const LADSPA_Descriptor *descriptor;
@@ -83,6 +82,8 @@ struct userdata {
LADSPA_Data control_out;
pa_memblockq *memblockq;
+
+ pa_bool_t auto_desc;
};
static const char* const valid_modargs[] = {
@@ -100,69 +101,111 @@ static const char* const valid_modargs[] = {
};
/* Called from I/O thread context */
-static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
+static int sink_process_msg_cb(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SINK(o)->userdata;
switch (code) {
- case PA_SINK_MESSAGE_GET_LATENCY: {
- pa_usec_t usec = 0;
+ case PA_SINK_MESSAGE_GET_LATENCY:
+
+ /* The sink is _put() before the sink input is, so let's
+ * make sure we don't access it in that time. Also, the
+ * sink input is first shut down, the sink second. */
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) {
+ *((pa_usec_t*) data) = 0;
+ return 0;
+ }
+
+ *((pa_usec_t*) data) =
- /* Get the latency of the master sink */
- if (PA_MSGOBJECT(u->master)->process_msg(PA_MSGOBJECT(u->master), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
+ /* Get the latency of the master sink */
+ pa_sink_get_latency_within_thread(u->sink_input->sink) +
- /* Add the latency internal to our sink input on top */
- usec += pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->master->sample_spec);
+ /* Add the latency internal to our sink input on top */
+ pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec);
- *((pa_usec_t*) data) = usec;
return 0;
- }
}
return pa_sink_process_msg(o, code, data, offset, chunk);
}
/* Called from main context */
-static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
+static int sink_set_state_cb(pa_sink *s, pa_sink_state_t state) {
struct userdata *u;
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
- if (PA_SINK_IS_LINKED(state) &&
- u->sink_input &&
- PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
-
- pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
+ if (!PA_SINK_IS_LINKED(state) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return 0;
+ pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
return 0;
}
/* Called from I/O thread context */
-static void sink_request_rewind(pa_sink *s) {
+static void sink_request_rewind_cb(pa_sink *s) {
struct userdata *u;
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
/* Just hand this one over to the master sink */
pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes + pa_memblockq_get_length(u->memblockq), TRUE, FALSE, FALSE);
}
/* Called from I/O thread context */
-static void sink_update_requested_latency(pa_sink *s) {
+static void sink_update_requested_latency_cb(pa_sink *s) {
struct userdata *u;
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
/* Just hand this one over to the master sink */
pa_sink_input_set_requested_latency_within_thread(
u->sink_input,
pa_sink_get_requested_latency_within_thread(s));
}
+/* Called from main context */
+static void sink_set_volume_cb(pa_sink *s) {
+ struct userdata *u;
+
+ pa_sink_assert_ref(s);
+ pa_assert_se(u = s->userdata);
+
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return;
+
+ pa_sink_input_set_volume(u->sink_input, &s->real_volume, s->save_volume, TRUE);
+}
+
+/* Called from main context */
+static void sink_set_mute_cb(pa_sink *s) {
+ struct userdata *u;
+
+ pa_sink_assert_ref(s);
+ pa_assert_se(u = s->userdata);
+
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return;
+
+ pa_sink_input_set_mute(u->sink_input, s->muted, s->save_muted);
+}
+
/* Called from I/O thread context */
static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk) {
struct userdata *u;
@@ -175,8 +218,8 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
pa_assert(chunk);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return -1;
+ /* Hmm, process any rewind request that might be queued up */
+ pa_sink_process_rewind(u->sink, 0);
while (pa_memblockq_peek(u->memblockq, &tchunk) < 0) {
pa_memchunk nchunk;
@@ -225,9 +268,6 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return;
-
if (u->sink->thread_info.rewind_nbytes > 0) {
size_t max_rewrite;
@@ -263,9 +303,6 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_memblockq_set_maxrewind(u->memblockq, nbytes);
pa_sink_set_max_rewind_within_thread(u->sink, nbytes);
}
@@ -277,9 +314,6 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_max_request_within_thread(u->sink, nbytes);
}
@@ -290,24 +324,28 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
}
/* Called from I/O thread context */
-static void sink_input_detach_cb(pa_sink_input *i) {
+static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) {
struct userdata *u;
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+}
+
+/* Called from I/O thread context */
+static void sink_input_detach_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
pa_sink_detach_within_thread(u->sink);
- pa_sink_set_asyncmsgq(u->sink, NULL);
+
pa_sink_set_rtpoll(u->sink, NULL);
}
@@ -318,14 +356,13 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll);
+ pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+ pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i));
+ pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i));
- pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, i->sink->rtpoll);
pa_sink_attach_within_thread(u->sink);
-
- pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
}
/* Called from main context */
@@ -335,14 +372,18 @@ static void sink_input_kill_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- pa_sink_unlink(u->sink);
+ /* The order here matters! We first kill the sink input, followed
+ * by the sink. That means the sink callbacks must be protected
+ * against an unconnected sink input! */
pa_sink_input_unlink(u->sink_input);
+ pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- u->sink = NULL;
pa_sink_input_unref(u->sink_input);
u->sink_input = NULL;
+ pa_sink_unref(u->sink);
+ u->sink = NULL;
+
pa_module_unload_request(u->module, TRUE);
}
@@ -372,13 +413,59 @@ static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) {
return u->sink != dest;
}
+/* Called from main context */
+static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ if (dest) {
+ pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+ pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
+ } else
+ pa_sink_set_asyncmsgq(u->sink, NULL);
+
+ if (u->auto_desc && dest) {
+ const char *z;
+ pa_proplist *pl;
+
+ pl = pa_proplist_new();
+ z = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION);
+ pa_proplist_setf(pl, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s",
+ pa_proplist_gets(u->sink->proplist, "device.ladspa.name"), z ? z : dest->name);
+
+ pa_sink_update_proplist(u->sink, PA_UPDATE_REPLACE, pl);
+ pa_proplist_free(pl);
+ }
+}
+
+/* Called from main context */
+static void sink_input_volume_changed_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_sink_volume_changed(u->sink, &i->volume);
+}
+
+/* Called from main context */
+static void sink_input_mute_changed_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_sink_mute_changed(u->sink, i->muted);
+}
+
int pa__init(pa_module*m) {
struct userdata *u;
pa_sample_spec ss;
pa_channel_map map;
pa_modargs *ma;
char *t;
- const char *z;
pa_sink *master;
pa_sink_input_new_data sink_input_data;
pa_sink_new_data sink_data;
@@ -392,7 +479,7 @@ int pa__init(pa_module*m) {
pa_assert(m);
- pa_assert(sizeof(LADSPA_Data) == sizeof(float));
+ pa_assert_cc(sizeof(LADSPA_Data) == sizeof(float));
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
pa_log("Failed to parse module arguments.");
@@ -425,12 +512,8 @@ int pa__init(pa_module*m) {
cdata = pa_modargs_get_value(ma, "control", NULL);
u = pa_xnew0(struct userdata, 1);
- u->core = m->core;
u->module = m;
m->userdata = u;
- u->master = master;
- u->sink = NULL;
- u->sink_input = NULL;
u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, NULL);
if (!(e = getenv("LADSPA_PATH")))
@@ -694,11 +777,8 @@ int pa__init(pa_module*m) {
sink_data.module = m;
if (!(sink_data.name = pa_xstrdup(pa_modargs_get_value(ma, "sink_name", NULL))))
sink_data.name = pa_sprintf_malloc("%s.ladspa", master->name);
- sink_data.namereg_fail = FALSE;
pa_sink_new_data_set_sample_spec(&sink_data, &ss);
pa_sink_new_data_set_channel_map(&sink_data, &map);
- z = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
- pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", label, z ? z : master->name);
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
pa_proplist_sets(sink_data.proplist, "device.ladspa.module", plugin);
@@ -714,7 +794,16 @@ int pa__init(pa_module*m) {
goto fail;
}
- u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
+ if ((u->auto_desc = !pa_proplist_contains(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION))) {
+ const char *z;
+
+ z = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
+ pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", d->Name, z ? z : master->name);
+ }
+
+ u->sink = pa_sink_new(m->core, &sink_data,
+ PA_SINK_HW_MUTE_CTRL|PA_SINK_HW_VOLUME_CTRL|PA_SINK_DECIBEL_VOLUME|
+ (master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY)));
pa_sink_new_data_done(&sink_data);
if (!u->sink) {
@@ -722,26 +811,27 @@ int pa__init(pa_module*m) {
goto fail;
}
- u->sink->parent.process_msg = sink_process_msg;
- u->sink->set_state = sink_set_state;
- u->sink->update_requested_latency = sink_update_requested_latency;
- u->sink->request_rewind = sink_request_rewind;
+ u->sink->parent.process_msg = sink_process_msg_cb;
+ u->sink->set_state = sink_set_state_cb;
+ u->sink->update_requested_latency = sink_update_requested_latency_cb;
+ u->sink->request_rewind = sink_request_rewind_cb;
+ u->sink->set_volume = sink_set_volume_cb;
+ u->sink->set_mute = sink_set_mute_cb;
u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, master->rtpoll);
/* Create sink input */
pa_sink_input_new_data_init(&sink_input_data);
sink_input_data.driver = __FILE__;
sink_input_data.module = m;
- sink_input_data.sink = u->master;
+ sink_input_data.sink = master;
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "LADSPA Stream");
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
pa_sink_input_new_data_set_channel_map(&sink_input_data, &map);
- pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, PA_SINK_INPUT_DONT_MOVE);
+ pa_sink_input_new(&u->sink_input, m->core, &sink_input_data);
pa_sink_input_new_data_done(&sink_input_data);
if (!u->sink_input)
@@ -752,11 +842,15 @@ int pa__init(pa_module*m) {
u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
u->sink_input->update_max_request = sink_input_update_max_request_cb;
u->sink_input->update_sink_latency_range = sink_input_update_sink_latency_range_cb;
+ u->sink_input->update_sink_fixed_latency = sink_input_update_sink_fixed_latency_cb;
u->sink_input->kill = sink_input_kill_cb;
u->sink_input->attach = sink_input_attach_cb;
u->sink_input->detach = sink_input_detach_cb;
u->sink_input->state_change = sink_input_state_change_cb;
u->sink_input->may_move_to = sink_input_may_move_to_cb;
+ u->sink_input->moving = sink_input_moving_cb;
+ u->sink_input->volume_changed = sink_input_volume_changed_cb;
+ u->sink_input->mute_changed = sink_input_mute_changed_cb;
u->sink_input->userdata = u;
pa_sink_put(u->sink);
@@ -797,15 +891,20 @@ void pa__done(pa_module*m) {
if (!(u = m->userdata))
return;
- if (u->sink) {
- pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- }
+ /* See comments in sink_input_kill_cb() above regarding
+ * destruction order! */
- if (u->sink_input) {
+ if (u->sink_input)
pa_sink_input_unlink(u->sink_input);
+
+ if (u->sink)
+ pa_sink_unlink(u->sink);
+
+ if (u->sink_input)
pa_sink_input_unref(u->sink_input);
- }
+
+ if (u->sink)
+ pa_sink_unref(u->sink);
for (c = 0; c < u->channels; c++)
if (u->handle[c]) {
diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c
index 06efeb8f..d0e902f6 100644
--- a/src/modules/module-lirc.c
+++ b/src/modules/module-lirc.c
@@ -63,6 +63,8 @@ struct userdata {
float mute_toggle_save;
};
+#define DELTA (PA_VOLUME_NORM/20)
+
static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) {
struct userdata *u = userdata;
char *name = NULL, *code = NULL;
@@ -119,32 +121,17 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK)))
pa_log("Failed to get sink '%s'", u->sink_name);
else {
- int i;
- pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE);
-
-#define DELTA (PA_VOLUME_NORM/20)
+ pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
switch (volchange) {
case UP:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] < PA_VOLUME_MAX - DELTA)
- cv.values[i] += DELTA;
- else
- cv.values[i] = PA_VOLUME_MAX;
- }
-
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_cvolume_inc(&cv, DELTA);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case DOWN:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] > DELTA)
- cv.values[i] -= DELTA;
- else
- cv.values[i] = PA_VOLUME_MUTED;
- }
-
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_cvolume_dec(&cv, DELTA);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case MUTE:
@@ -156,7 +143,6 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
break;
case MUTE_TOGGLE:
-
pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE);
break;
diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c
new file mode 100644
index 00000000..29c3ddab
--- /dev/null
+++ b/src/modules/module-loopback.c
@@ -0,0 +1,784 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Intel Corporation
+ Contributor: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
+
+ 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 <stdio.h>
+#include <math.h>
+
+#include <pulse/xmalloc.h>
+
+#include <pulsecore/sink-input.h>
+#include <pulsecore/module.h>
+#include <pulsecore/modargs.h>
+#include <pulsecore/namereg.h>
+#include <pulsecore/log.h>
+#include <pulsecore/core-util.h>
+
+#include <pulse/rtclock.h>
+#include <pulse/timeval.h>
+
+#include "module-loopback-symdef.h"
+
+PA_MODULE_AUTHOR("Pierre-Louis Bossart");
+PA_MODULE_DESCRIPTION("Loopback from source to sink");
+PA_MODULE_VERSION(PACKAGE_VERSION);
+PA_MODULE_LOAD_ONCE(FALSE);
+PA_MODULE_USAGE(
+ "source=<source to connect to> "
+ "sink=<sink to connect to> "
+ "adjust_time=<how often to readjust rates in s> "
+ "latency_msec=<latency in ms> "
+ "format=<sample format> "
+ "rate=<sample rate> "
+ "channels=<number of channels> "
+ "channel_map=<channel map>");
+
+#define DEFAULT_LATENCY_MSEC 200
+
+#define MEMBLOCKQ_MAXLENGTH (1024*1024*16)
+
+#define DEFAULT_ADJUST_TIME_USEC (10*PA_USEC_PER_SEC)
+
+struct userdata {
+ pa_core *core;
+ pa_module *module;
+
+ pa_sink_input *sink_input;
+ pa_source_output *source_output;
+
+ pa_asyncmsgq *asyncmsgq;
+ pa_memblockq *memblockq;
+
+ pa_rtpoll_item *rtpoll_item_read, *rtpoll_item_write;
+
+ pa_time_event *time_event;
+ pa_usec_t adjust_time;
+
+ int64_t recv_counter;
+ int64_t send_counter;
+
+ size_t skip;
+ pa_usec_t latency;
+
+ pa_bool_t in_pop;
+ size_t min_memblockq_length;
+
+ struct {
+ int64_t send_counter;
+ size_t source_output_buffer;
+ pa_usec_t source_latency;
+
+ int64_t recv_counter;
+ size_t sink_input_buffer;
+ pa_usec_t sink_latency;
+
+ size_t min_memblockq_length;
+ size_t max_request;
+ } latency_snapshot;
+};
+
+static const char* const valid_modargs[] = {
+ "source",
+ "sink",
+ "latency",
+ "format",
+ "rate",
+ "channels",
+ "channel_map",
+ NULL,
+};
+
+enum {
+ SINK_INPUT_MESSAGE_POST = PA_SINK_INPUT_MESSAGE_MAX,
+ SINK_INPUT_MESSAGE_REWIND,
+ SINK_INPUT_MESSAGE_LATENCY_SNAPSHOT,
+ SINK_INPUT_MESSAGE_MAX_REQUEST_CHANGED
+};
+
+enum {
+ SOURCE_OUTPUT_MESSAGE_LATENCY_SNAPSHOT
+};
+
+/* Called from main context */
+static void teardown(struct userdata *u) {
+ pa_assert(u);
+ pa_assert_ctl_context();
+
+ if (u->sink_input)
+ pa_sink_input_unlink(u->sink_input);
+
+ if (u->source_output)
+ pa_source_output_unlink(u->source_output);
+
+ if (u->sink_input) {
+ pa_sink_input_unref(u->sink_input);
+ u->sink_input = NULL;
+ }
+
+ if (u->source_output) {
+ pa_source_output_unref(u->source_output);
+ u->source_output = NULL;
+ }
+}
+
+/* Called from main context */
+static void adjust_rates(struct userdata *u) {
+ size_t buffer, fs;
+ uint32_t old_rate, base_rate, new_rate;
+ pa_usec_t buffer_latency;
+
+ pa_assert(u);
+ pa_assert_ctl_context();
+
+ pa_asyncmsgq_send(u->source_output->source->asyncmsgq, PA_MSGOBJECT(u->source_output), SOURCE_OUTPUT_MESSAGE_LATENCY_SNAPSHOT, NULL, 0, NULL);
+ pa_asyncmsgq_send(u->sink_input->sink->asyncmsgq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_LATENCY_SNAPSHOT, NULL, 0, NULL);
+
+ buffer =
+ u->latency_snapshot.sink_input_buffer +
+ u->latency_snapshot.source_output_buffer;
+
+ if (u->latency_snapshot.recv_counter <= u->latency_snapshot.send_counter)
+ buffer += (size_t) (u->latency_snapshot.send_counter - u->latency_snapshot.recv_counter);
+ else
+ buffer += PA_CLIP_SUB(buffer, (size_t) (u->latency_snapshot.recv_counter - u->latency_snapshot.send_counter));
+
+ buffer_latency = pa_bytes_to_usec(buffer, &u->sink_input->sample_spec);
+
+ pa_log_info("Loopback overall latency is %0.2f ms + %0.2f ms + %0.2f ms = %0.2f ms",
+ (double) u->latency_snapshot.sink_latency / PA_USEC_PER_MSEC,
+ (double) buffer_latency / PA_USEC_PER_MSEC,
+ (double) u->latency_snapshot.source_latency / PA_USEC_PER_MSEC,
+ ((double) u->latency_snapshot.sink_latency + buffer_latency + u->latency_snapshot.source_latency) / PA_USEC_PER_MSEC);
+
+ pa_log_info("Should buffer %zu bytes, buffered at minimum %zu bytes",
+ u->latency_snapshot.max_request*2,
+ u->latency_snapshot.min_memblockq_length);
+
+ fs = pa_frame_size(&u->sink_input->sample_spec);
+ old_rate = u->sink_input->sample_spec.rate;
+ base_rate = u->source_output->sample_spec.rate;
+
+ if (u->latency_snapshot.min_memblockq_length < u->latency_snapshot.max_request*2)
+ new_rate = base_rate - (((u->latency_snapshot.max_request*2 - u->latency_snapshot.min_memblockq_length) / fs) *PA_USEC_PER_SEC)/u->adjust_time;
+ else
+ new_rate = base_rate + (((u->latency_snapshot.min_memblockq_length - u->latency_snapshot.max_request*2) / fs) *PA_USEC_PER_SEC)/u->adjust_time;
+
+ pa_log_info("Old rate %lu Hz, new rate %lu Hz", (unsigned long) old_rate, (unsigned long) new_rate);
+
+ pa_sink_input_set_rate(u->sink_input, new_rate);
+
+ pa_core_rttime_restart(u->core, u->time_event, pa_rtclock_now() + u->adjust_time);
+}
+
+/* Called from main context */
+static void time_callback(pa_mainloop_api *a, pa_time_event *e, const struct timeval *t, void *userdata) {
+ struct userdata *u = userdata;
+
+ pa_assert(u);
+ pa_assert(a);
+ pa_assert(u->time_event == e);
+
+ adjust_rates(u);
+}
+
+/* Called from input thread context */
+static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk) {
+ struct userdata *u;
+ pa_memchunk copy;
+
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
+ pa_assert_se(u = o->userdata);
+
+ if (u->skip > chunk->length) {
+ u->skip -= chunk->length;
+ return;
+ }
+
+ if (u->skip > 0) {
+ copy = *chunk;
+ copy.index += u->skip;
+ copy.length -= u->skip;
+ u->skip = 0;
+
+ chunk = &copy;
+ }
+
+ pa_asyncmsgq_post(u->asyncmsgq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, chunk, NULL);
+ u->send_counter += (int64_t) chunk->length;
+}
+
+/* Called from input thread context */
+static void source_output_process_rewind_cb(pa_source_output *o, size_t nbytes) {
+ struct userdata *u;
+
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
+ pa_assert_se(u = o->userdata);
+
+ pa_asyncmsgq_post(u->asyncmsgq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_REWIND, NULL, (int64_t) nbytes, NULL, NULL);
+ u->send_counter -= (int64_t) nbytes;
+}
+
+/* Called from output thread context */
+static int source_output_process_msg_cb(pa_msgobject *obj, int code, void *data, int64_t offset, pa_memchunk *chunk) {
+ struct userdata *u = PA_SOURCE_OUTPUT(obj)->userdata;
+
+ switch (code) {
+
+ case SOURCE_OUTPUT_MESSAGE_LATENCY_SNAPSHOT: {
+ size_t length;
+
+ length = pa_memblockq_get_length(u->source_output->thread_info.delay_memblockq);
+
+ u->latency_snapshot.send_counter = u->send_counter;
+ u->latency_snapshot.source_output_buffer = u->source_output->thread_info.resampler ? pa_resampler_result(u->source_output->thread_info.resampler, length) : length;
+ u->latency_snapshot.source_latency = pa_source_get_latency_within_thread(u->source_output->source);
+
+ return 0;
+ }
+ }
+
+ return pa_source_output_process_msg(obj, code, data, offset, chunk);
+}
+
+/* Called from output thread context */
+static void source_output_attach_cb(pa_source_output *o) {
+ struct userdata *u;
+
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
+ pa_assert_se(u = o->userdata);
+
+ u->rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
+ o->source->thread_info.rtpoll,
+ PA_RTPOLL_LATE,
+ u->asyncmsgq);
+}
+
+/* Called from output thread context */
+static void source_output_detach_cb(pa_source_output *o) {
+ struct userdata *u;
+
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
+ pa_assert_se(u = o->userdata);
+
+ if (u->rtpoll_item_write) {
+ pa_rtpoll_item_free(u->rtpoll_item_write);
+ u->rtpoll_item_write = NULL;
+ }
+}
+
+/* Called from output thread context */
+static void source_output_state_change_cb(pa_source_output *o, pa_source_output_state_t state) {
+ struct userdata *u;
+
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
+ pa_assert_se(u = o->userdata);
+
+ if (PA_SOURCE_OUTPUT_IS_LINKED(state) && o->thread_info.state == PA_SOURCE_OUTPUT_INIT) {
+
+ u->skip = pa_usec_to_bytes(PA_CLIP_SUB(pa_source_get_latency_within_thread(o->source),
+ u->latency),
+ &o->sample_spec);
+
+ pa_log_info("Skipping %lu bytes", (unsigned long) u->skip);
+ }
+}
+
+/* Called from main thread */
+static void source_output_kill_cb(pa_source_output *o) {
+ struct userdata *u;
+
+ pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
+ pa_assert_se(u = o->userdata);
+
+ teardown(u);
+ pa_module_unload_request(u->module, TRUE);
+}
+
+/* Called from main thread */
+static pa_bool_t source_output_may_move_to_cb(pa_source_output *o, pa_source *dest) {
+ struct userdata *u;
+
+ pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
+ pa_assert_se(u = o->userdata);
+
+ return dest != u->sink_input->sink->monitor_source;
+}
+
+/* Called from main thread */
+static void source_output_moving_cb(pa_source_output *o, pa_source *dest) {
+ pa_proplist *p;
+ const char *n;
+ struct userdata *u;
+
+ pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
+ pa_assert_se(u = o->userdata);
+
+ p = pa_proplist_new();
+ pa_proplist_setf(p, PA_PROP_MEDIA_NAME, "Loopback of %s", pa_strnull(pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+
+ if ((n = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_ICON_NAME)))
+ pa_proplist_sets(p, PA_PROP_MEDIA_ICON_NAME, n);
+
+ pa_sink_input_update_proplist(u->sink_input, PA_UPDATE_REPLACE, p);
+ pa_proplist_free(p);
+}
+
+/* Called from output thread context */
+static void update_min_memblockq_length(struct userdata *u) {
+ size_t length;
+
+ pa_assert(u);
+ pa_sink_input_assert_io_context(u->sink_input);
+
+ length = pa_memblockq_get_length(u->memblockq);
+
+ if (u->min_memblockq_length == (size_t) -1 ||
+ length < u->min_memblockq_length)
+ u->min_memblockq_length = length;
+}
+
+/* Called from output thread context */
+static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+ pa_assert_se(u = i->userdata);
+ pa_assert(chunk);
+
+ u->in_pop = TRUE;
+ while (pa_asyncmsgq_process_one(u->asyncmsgq) > 0)
+ ;
+ u->in_pop = FALSE;
+
+ if (pa_memblockq_peek(u->memblockq, chunk) < 0) {
+ pa_log_info("Coud not peek into queue");
+ return -1;
+ }
+
+ chunk->length = PA_MIN(chunk->length, nbytes);
+ pa_memblockq_drop(u->memblockq, chunk->length);
+
+ update_min_memblockq_length(u);
+
+ return 0;
+}
+
+/* Called from output thread context */
+static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_memblockq_rewind(u->memblockq, nbytes);
+}
+
+/* Called from output thread context */
+static int sink_input_process_msg_cb(pa_msgobject *obj, int code, void *data, int64_t offset, pa_memchunk *chunk) {
+ struct userdata *u = PA_SINK_INPUT(obj)->userdata;
+
+ switch (code) {
+
+ case PA_SINK_INPUT_MESSAGE_GET_LATENCY: {
+ pa_usec_t *r = data;
+
+ pa_sink_input_assert_io_context(u->sink_input);
+
+ *r = pa_bytes_to_usec(pa_memblockq_get_length(u->memblockq), &u->sink_input->sample_spec);
+
+ /* Fall through, the default handler will add in the extra
+ * latency added by the resampler */
+ break;
+ }
+
+ case SINK_INPUT_MESSAGE_POST:
+
+ pa_sink_input_assert_io_context(u->sink_input);
+
+ if (PA_SINK_IS_OPENED(u->sink_input->sink->thread_info.state))
+ pa_memblockq_push_align(u->memblockq, chunk);
+ else
+ pa_memblockq_flush_write(u->memblockq);
+
+ update_min_memblockq_length(u);
+
+ /* Is this the end of an underrun? Then let's start things
+ * right-away */
+ if (!u->in_pop &&
+ u->sink_input->thread_info.underrun_for > 0 &&
+ pa_memblockq_is_readable(u->memblockq)) {
+
+ pa_log_debug("Requesting rewind due to end of underrun.");
+ pa_sink_input_request_rewind(u->sink_input,
+ (size_t) (u->sink_input->thread_info.underrun_for == (size_t) -1 ? 0 : u->sink_input->thread_info.underrun_for),
+ FALSE, TRUE, FALSE);
+ }
+
+ u->recv_counter += (int64_t) chunk->length;
+
+ return 0;
+
+ case SINK_INPUT_MESSAGE_REWIND:
+
+ pa_sink_input_assert_io_context(u->sink_input);
+
+ if (PA_SINK_IS_OPENED(u->sink_input->sink->thread_info.state))
+ pa_memblockq_seek(u->memblockq, -offset, PA_SEEK_RELATIVE, TRUE);
+ else
+ pa_memblockq_flush_write(u->memblockq);
+
+ u->recv_counter -= offset;
+
+ update_min_memblockq_length(u);
+
+ return 0;
+
+ case SINK_INPUT_MESSAGE_LATENCY_SNAPSHOT: {
+ size_t length;
+
+ update_min_memblockq_length(u);
+
+ length = pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq);
+
+ u->latency_snapshot.recv_counter = u->recv_counter;
+ u->latency_snapshot.sink_input_buffer =
+ pa_memblockq_get_length(u->memblockq) +
+ (u->sink_input->thread_info.resampler ? pa_resampler_request(u->sink_input->thread_info.resampler, length) : length);
+ u->latency_snapshot.sink_latency = pa_sink_get_latency_within_thread(u->sink_input->sink);
+
+ u->latency_snapshot.max_request = pa_sink_input_get_max_request(u->sink_input);
+
+ u->latency_snapshot.min_memblockq_length = u->min_memblockq_length;
+ u->min_memblockq_length = (size_t) -1;
+
+ return 0;
+ }
+
+ case SINK_INPUT_MESSAGE_MAX_REQUEST_CHANGED: {
+ /* This message is sent from the IO thread to the main
+ * thread! So don't be confused. All the user cases above
+ * are executed in thread context, but this one is not! */
+
+ pa_assert_ctl_context();
+
+ adjust_rates(u);
+ return 0;
+ }
+ }
+
+ return pa_sink_input_process_msg(obj, code, data, offset, chunk);
+}
+
+/* Called from output thread context */
+static void sink_input_attach_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+ pa_assert_se(u = i->userdata);
+
+ u->rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
+ i->sink->thread_info.rtpoll,
+ PA_RTPOLL_LATE,
+ u->asyncmsgq);
+
+ pa_memblockq_set_prebuf(u->memblockq, pa_sink_input_get_max_request(i)*2);
+ pa_memblockq_set_maxrewind(u->memblockq, pa_sink_input_get_max_rewind(i));
+
+ u->min_memblockq_length = (size_t) -1;
+}
+
+/* Called from output thread context */
+static void sink_input_detach_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+ pa_assert_se(u = i->userdata);
+
+ if (u->rtpoll_item_read) {
+ pa_rtpoll_item_free(u->rtpoll_item_read);
+ u->rtpoll_item_read = NULL;
+ }
+}
+
+/* Called from output thread context */
+static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_memblockq_set_maxrewind(u->memblockq, nbytes);
+}
+
+/* Called from output thread context */
+static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_memblockq_set_prebuf(u->memblockq, nbytes*2);
+ pa_log_info("Max request changed");
+ pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_MAX_REQUEST_CHANGED, NULL, 0, NULL, NULL);
+}
+
+/* Called from main thread */
+static void sink_input_kill_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert_se(u = i->userdata);
+
+ teardown(u);
+ pa_module_unload_request(u->module, TRUE);
+}
+
+/* Called from main thread */
+static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
+ struct userdata *u;
+ pa_proplist *p;
+ const char *n;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert_se(u = i->userdata);
+
+ p = pa_proplist_new();
+ pa_proplist_setf(p, PA_PROP_MEDIA_NAME, "Loopback to %s", pa_strnull(pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+
+ if ((n = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_ICON_NAME)))
+ pa_proplist_sets(p, PA_PROP_MEDIA_ICON_NAME, n);
+
+ pa_source_output_update_proplist(u->source_output, PA_UPDATE_REPLACE, p);
+ pa_proplist_free(p);
+}
+
+/* Called from main thread */
+static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert_se(u = i->userdata);
+
+ if (!u->source_output->source->monitor_of)
+ return TRUE;
+
+ return dest != u->source_output->source->monitor_of;
+}
+
+int pa__init(pa_module *m) {
+ pa_modargs *ma = NULL;
+ struct userdata *u;
+ pa_sink *sink;
+ pa_sink_input_new_data sink_input_data;
+ pa_source *source;
+ pa_source_output_new_data source_output_data;
+ uint32_t latency_msec;
+ pa_sample_spec ss;
+ pa_channel_map map;
+ pa_memchunk silence;
+ uint32_t adjust_time_sec;
+ const char *n;
+
+ pa_assert(m);
+
+ if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
+ pa_log("Failed to parse module arguments");
+ goto fail;
+ }
+
+ if (!(source = pa_namereg_get(m->core, pa_modargs_get_value(ma, "source", NULL), PA_NAMEREG_SOURCE))) {
+ pa_log("No such source.");
+ goto fail;
+ }
+
+ if (!(sink = pa_namereg_get(m->core, pa_modargs_get_value(ma, "sink", NULL), PA_NAMEREG_SINK))) {
+ pa_log("No such sink.");
+ goto fail;
+ }
+
+ ss = sink->sample_spec;
+ map = sink->channel_map;
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
+ pa_log("Invalid sample format specification or channel map");
+ goto fail;
+ }
+
+ latency_msec = DEFAULT_LATENCY_MSEC;
+ if (pa_modargs_get_value_u32(ma, "latency_msec", &latency_msec) < 0 || latency_msec < 1 || latency_msec > 2000) {
+ pa_log("Invalid latency specification");
+ goto fail;
+ }
+
+ m->userdata = u = pa_xnew0(struct userdata, 1);
+ u->core = m->core;
+ u->module = m;
+ u->latency = (pa_usec_t) latency_msec * PA_USEC_PER_MSEC;
+
+ adjust_time_sec = DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC;
+ if (pa_modargs_get_value_u32(ma, "adjust_time", &adjust_time_sec) < 0) {
+ pa_log("Failed to parse adjust_time value");
+ goto fail;
+ }
+
+ if (adjust_time_sec != DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC)
+ u->adjust_time = adjust_time_sec * PA_USEC_PER_SEC;
+ else
+ u->adjust_time = DEFAULT_ADJUST_TIME_USEC;
+
+ pa_sink_input_new_data_init(&sink_input_data);
+ sink_input_data.driver = __FILE__;
+ sink_input_data.module = m;
+ sink_input_data.sink = sink;
+
+ pa_proplist_setf(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Loopback of %s",
+ pa_strnull(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ if ((n = pa_proplist_gets(source->proplist, PA_PROP_DEVICE_ICON_NAME)))
+ pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ICON_NAME, n);
+ pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "abstract");
+ pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
+ pa_sink_input_new_data_set_channel_map(&sink_input_data, &map);
+ sink_input_data.flags = PA_SINK_INPUT_VARIABLE_RATE;
+
+ pa_sink_input_new(&u->sink_input, m->core, &sink_input_data);
+ pa_sink_input_new_data_done(&sink_input_data);
+
+ if (!u->sink_input)
+ goto fail;
+
+ u->sink_input->parent.process_msg = sink_input_process_msg_cb;
+ u->sink_input->pop = sink_input_pop_cb;
+ u->sink_input->process_rewind = sink_input_process_rewind_cb;
+ u->sink_input->kill = sink_input_kill_cb;
+ u->sink_input->attach = sink_input_attach_cb;
+ u->sink_input->detach = sink_input_detach_cb;
+ u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
+ u->sink_input->update_max_request = sink_input_update_max_request_cb;
+ u->sink_input->may_move_to = sink_input_may_move_to_cb;
+ u->sink_input->moving = sink_input_moving_cb;
+ u->sink_input->userdata = u;
+
+ pa_sink_input_set_requested_latency(u->sink_input, u->latency/3);
+
+ pa_source_output_new_data_init(&source_output_data);
+ source_output_data.driver = __FILE__;
+ source_output_data.module = m;
+ source_output_data.source = source;
+ pa_proplist_setf(source_output_data.proplist, PA_PROP_MEDIA_NAME, "Loopback to %s",
+ pa_strnull(pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ if ((n = pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_ICON_NAME)))
+ pa_proplist_sets(source_output_data.proplist, PA_PROP_MEDIA_ICON_NAME, n);
+ pa_proplist_sets(source_output_data.proplist, PA_PROP_MEDIA_ROLE, "abstract");
+ pa_source_output_new_data_set_sample_spec(&source_output_data, &ss);
+ pa_sink_input_new_data_set_channel_map(&sink_input_data, &map);
+
+ pa_source_output_new(&u->source_output, m->core, &source_output_data);
+ pa_source_output_new_data_done(&source_output_data);
+
+ if (!u->source_output)
+ goto fail;
+
+ u->source_output->parent.process_msg = source_output_process_msg_cb;
+ u->source_output->push = source_output_push_cb;
+ u->source_output->process_rewind = source_output_process_rewind_cb;
+ u->source_output->kill = source_output_kill_cb;
+ u->source_output->attach = source_output_attach_cb;
+ u->source_output->detach = source_output_detach_cb;
+ u->source_output->state_change = source_output_state_change_cb;
+ u->source_output->may_move_to = source_output_may_move_to_cb;
+ u->source_output->moving = source_output_moving_cb;
+ u->source_output->userdata = u;
+
+ pa_source_output_set_requested_latency(u->source_output, u->latency/3);
+
+ pa_sink_input_get_silence(u->sink_input, &silence);
+ u->memblockq = pa_memblockq_new(
+ 0, /* idx */
+ MEMBLOCKQ_MAXLENGTH, /* maxlength */
+ MEMBLOCKQ_MAXLENGTH, /* tlength */
+ pa_frame_size(&ss), /* base */
+ 0, /* prebuf */
+ 0, /* minreq */
+ 0, /* maxrewind */
+ &silence); /* silence frame */
+ pa_memblock_unref(silence.memblock);
+
+ u->asyncmsgq = pa_asyncmsgq_new(0);
+
+ pa_sink_input_put(u->sink_input);
+ pa_source_output_put(u->source_output);
+
+ if (u->adjust_time > 0)
+ u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time, time_callback, u);
+
+ pa_modargs_free(ma);
+ return 0;
+
+fail:
+ 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;
+
+ teardown(u);
+
+ if (u->memblockq)
+ pa_memblockq_free(u->memblockq);
+
+ if (u->asyncmsgq)
+ pa_asyncmsgq_unref(u->asyncmsgq);
+
+ if (u->time_event)
+ u->core->mainloop->time_free(u->time_event);
+
+ pa_xfree(u);
+}
diff --git a/src/modules/module-match.c b/src/modules/module-match.c
index 625f2a8b..0bd781d2 100644
--- a/src/modules/module-match.c
+++ b/src/modules/module-match.c
@@ -216,7 +216,7 @@ static void callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, v
pa_cvolume cv;
pa_log_debug("changing volume of sink input '%s' to 0x%03x", n, r->volume);
pa_cvolume_set(&cv, si->sample_spec.channels, r->volume);
- pa_sink_input_set_volume(si, &cv, TRUE, TRUE);
+ pa_sink_input_set_volume(si, &cv, TRUE, FALSE);
}
}
}
@@ -243,6 +243,9 @@ int pa__init(pa_module*m) {
if (load_rules(u, pa_modargs_get_value(ma, "table", NULL)) < 0)
goto fail;
+ /* FIXME: Doing this asynchronously is just broken. This needs to
+ * use a hook! */
+
u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_SINK_INPUT, callback, u);
pa_modargs_free(ma);
diff --git a/src/modules/module-mmkbd-evdev.c b/src/modules/module-mmkbd-evdev.c
index b30fae51..516bf413 100644
--- a/src/modules/module-mmkbd-evdev.c
+++ b/src/modules/module-mmkbd-evdev.c
@@ -65,6 +65,8 @@ struct userdata {
pa_module *module;
};
+#define DELTA (PA_VOLUME_NORM/20)
+
static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) {
struct userdata *u = userdata;
@@ -85,14 +87,27 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
}
if (ev.type == EV_KEY && (ev.value == 1 || ev.value == 2)) {
- enum { INVALID, UP, DOWN, MUTE_TOGGLE } volchange = INVALID;
+ enum {
+ INVALID,
+ UP,
+ DOWN,
+ MUTE_TOGGLE
+ } volchange = INVALID;
pa_log_debug("Key code=%u, value=%u", ev.code, ev.value);
switch (ev.code) {
- case KEY_VOLUMEDOWN: volchange = DOWN; break;
- case KEY_VOLUMEUP: volchange = UP; break;
- case KEY_MUTE: volchange = MUTE_TOGGLE; break;
+ case KEY_VOLUMEDOWN:
+ volchange = DOWN;
+ break;
+
+ case KEY_VOLUMEUP:
+ volchange = UP;
+ break;
+
+ case KEY_MUTE:
+ volchange = MUTE_TOGGLE;
+ break;
}
if (volchange != INVALID) {
@@ -101,36 +116,20 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK)))
pa_log("Failed to get sink '%s'", u->sink_name);
else {
- int i;
- pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE);
-
-#define DELTA (PA_VOLUME_NORM/20)
+ pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
switch (volchange) {
case UP:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] < PA_VOLUME_MAX - DELTA)
- cv.values[i] += DELTA;
- else
- cv.values[i] = PA_VOLUME_MAX;
- }
-
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_cvolume_inc(&cv, DELTA);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case DOWN:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] > DELTA)
- cv.values[i] -= DELTA;
- else
- cv.values[i] = PA_VOLUME_MUTED;
- }
-
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_cvolume_dec(&cv, DELTA);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case MUTE_TOGGLE:
-
pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE);
break;
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index 36c50b05..74a2ebb1 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -35,6 +35,7 @@
#include <pulse/rtclock.h>
#include <pulse/timeval.h>
#include <pulse/xmalloc.h>
+#include <pulse/i18n.h>
#include <pulsecore/macro.h>
#include <pulsecore/sink.h>
@@ -51,7 +52,7 @@
#include "module-null-sink-symdef.h"
PA_MODULE_AUTHOR("Lennart Poettering");
-PA_MODULE_DESCRIPTION("Clocked NULL sink");
+PA_MODULE_DESCRIPTION(_("Clocked NULL sink"));
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
@@ -287,7 +288,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_sink_new_data_set_channel_map(&data, &map);
- pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, pa_modargs_get_value(ma, "description", "Null Output"));
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, pa_modargs_get_value(ma, "description", _("Null Output")));
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, "abstract");
if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index 8a7dc846..9c169327 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -122,7 +122,7 @@ static int process_render(struct userdata *u) {
pa_assert(u);
if (u->memchunk.length <= 0)
- pa_sink_render(u->sink, PIPE_BUF, &u->memchunk);
+ pa_sink_render(u->sink, pa_pipe_buf(u->fd), &u->memchunk);
pa_assert(u->memchunk.length > 0);
@@ -299,8 +299,8 @@ int pa__init(pa_module*m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
- pa_sink_set_max_request(u->sink, PIPE_BUF);
- pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(PIPE_BUF, &u->sink->sample_spec));
+ pa_sink_set_max_request(u->sink, pa_pipe_buf(u->fd));
+ pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(pa_pipe_buf(u->fd), &u->sink->sample_spec));
u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
index e5609fb5..49104f8d 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -142,7 +142,7 @@ static void thread_func(void *userdata) {
void *p;
if (!u->memchunk.memblock) {
- u->memchunk.memblock = pa_memblock_new(u->core->mempool, PIPE_BUF);
+ u->memchunk.memblock = pa_memblock_new(u->core->mempool, pa_pipe_buf(u->fd));
u->memchunk.index = u->memchunk.length = 0;
}
diff --git a/src/modules/module-position-event-sounds.c b/src/modules/module-position-event-sounds.c
index e191ec33..fa8f73d8 100644
--- a/src/modules/module-position-event-sounds.c
+++ b/src/modules/module-position-event-sounds.c
@@ -57,35 +57,68 @@ struct userdata {
pa_hook_slot *sink_input_fixate_hook_slot;
};
+static int parse_pos(const char *pos, double *f) {
+
+ if (pa_atod(pos, f) < 0) {
+ pa_log_warn("Failed to parse hpos/vpos property '%s'.", pos);
+ return -1;
+ }
+
+ if (*f < 0.0 || *f > 1.0) {
+ pa_log_warn("Property hpos/vpos out of range %0.2f", *f);
+ return -1;
+ }
+
+ return 0;
+}
+
static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *core, pa_sink_input_new_data *data, struct userdata *u) {
- const char *hpos;
+ const char *hpos, *vpos, *role;
double f;
char t[PA_CVOLUME_SNPRINT_MAX];
pa_cvolume v;
pa_assert(data);
- if (!(hpos = pa_proplist_gets(data->proplist, PA_PROP_EVENT_MOUSE_HPOS)))
+ if (!(role = pa_proplist_gets(data->proplist, PA_PROP_MEDIA_ROLE)))
return PA_HOOK_OK;
- if (pa_atod(hpos, &f) < 0) {
- pa_log_warn("Failed to parse "PA_PROP_EVENT_MOUSE_HPOS" property '%s'.", hpos);
+ if (!pa_streq(role, "event"))
return PA_HOOK_OK;
- }
- if (f < 0.0 || f > 1.0) {
- pa_log_warn("Property "PA_PROP_EVENT_MOUSE_HPOS" out of range %0.2f", f);
+ if (!(hpos = pa_proplist_gets(data->proplist, PA_PROP_EVENT_MOUSE_HPOS)))
+ hpos = pa_proplist_gets(data->proplist, PA_PROP_WINDOW_HPOS);
+
+ if (!(vpos = pa_proplist_gets(data->proplist, PA_PROP_EVENT_MOUSE_VPOS)))
+ vpos = pa_proplist_gets(data->proplist, PA_PROP_WINDOW_VPOS);
+
+ if (!hpos && !vpos)
return PA_HOOK_OK;
+
+ pa_cvolume_reset(&v, data->sink->sample_spec.channels);
+
+ if (hpos) {
+ if (parse_pos(hpos, &f) < 0)
+ return PA_HOOK_OK;
+
+ if (pa_channel_map_can_balance(&data->sink->channel_map)) {
+ pa_log_debug("Positioning event sound '%s' horizontally at %0.2f.", pa_strnull(pa_proplist_gets(data->proplist, PA_PROP_EVENT_ID)), f);
+ pa_cvolume_set_balance(&v, &data->sink->channel_map, f*2.0-1.0);
+ }
}
- pa_log_debug("Positioning event sound '%s' at %0.2f.", pa_strnull(pa_proplist_gets(data->proplist, PA_PROP_EVENT_ID)), f);
+ if (vpos) {
+ if (parse_pos(vpos, &f) < 0)
+ return PA_HOOK_OK;
- pa_cvolume_reset(&v, data->sample_spec.channels);
- pa_cvolume_set_balance(&v, &data->channel_map, f*2.0-1.0);
+ if (pa_channel_map_can_fade(&data->sink->channel_map)) {
+ pa_log_debug("Positioning event sound '%s' vertically at %0.2f.", pa_strnull(pa_proplist_gets(data->proplist, PA_PROP_EVENT_ID)), f);
+ pa_cvolume_set_fade(&v, &data->sink->channel_map, f*2.0-1.0);
+ }
+ }
pa_log_debug("Final volume factor %s.", pa_cvolume_snprint(t, sizeof(t), &v));
-
- pa_sink_input_new_data_apply_volume_factor(data, &v);
+ pa_sink_input_new_data_apply_volume_factor_sink(data, &v);
return PA_HOOK_OK;
}
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 119f5b9f..43748bd0 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -1,7 +1,7 @@
/***
This file is part of PulseAudio.
- Copyright 2004-2008 Lennart Poettering
+ 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
@@ -48,17 +48,18 @@ PA_MODULE_USAGE(
"master=<name of sink to remap> "
"master_channel_map=<channel map> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
+ "channels=<number of channels> "
"channel_map=<channel map> "
"remix=<remix channels?>");
struct userdata {
- pa_core *core;
pa_module *module;
- pa_sink *sink, *master;
+ pa_sink *sink;
pa_sink_input *sink_input;
+
+ pa_bool_t auto_desc;
};
static const char* const valid_modargs[] = {
@@ -80,19 +81,24 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
switch (code) {
- case PA_SINK_MESSAGE_GET_LATENCY: {
- pa_usec_t usec = 0;
+ case PA_SINK_MESSAGE_GET_LATENCY:
+
+ /* The sink is _put() before the sink input is, so let's
+ * make sure we don't access it yet */
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) {
+ *((pa_usec_t*) data) = 0;
+ return 0;
+ }
- /* Get the latency of the master sink */
- if (PA_MSGOBJECT(u->master)->process_msg(PA_MSGOBJECT(u->master), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
+ *((pa_usec_t*) data) =
+ /* Get the latency of the master sink */
+ pa_sink_get_latency_within_thread(u->sink_input->sink) +
- /* Add the latency internal to our sink input on top */
- usec += pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->master->sample_spec);
+ /* Add the latency internal to our sink input on top */
+ pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec);
- *((pa_usec_t*) data) = usec;
return 0;
- }
}
return pa_sink_process_msg(o, code, data, offset, chunk);
@@ -105,12 +111,11 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
- if (PA_SINK_IS_LINKED(state) &&
- u->sink_input &&
- PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
-
- pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
+ if (!PA_SINK_IS_LINKED(state) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return 0;
+ pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
return 0;
}
@@ -121,6 +126,10 @@ static void sink_request_rewind(pa_sink *s) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes, TRUE, FALSE, FALSE);
}
@@ -131,6 +140,10 @@ static void sink_update_requested_latency(pa_sink *s) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
/* Just hand this one over to the master sink */
pa_sink_input_set_requested_latency_within_thread(
u->sink_input,
@@ -145,8 +158,8 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
pa_assert(chunk);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return -1;
+ /* Hmm, process any rewind request that might be queued up */
+ pa_sink_process_rewind(u->sink, 0);
pa_sink_render(u->sink, nbytes, chunk);
return 0;
@@ -160,9 +173,6 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return;
-
if (u->sink->thread_info.rewind_nbytes > 0) {
amount = PA_MIN(u->sink->thread_info.rewind_nbytes, nbytes);
u->sink->thread_info.rewind_nbytes = 0;
@@ -178,9 +188,6 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_max_rewind_within_thread(u->sink, nbytes);
}
@@ -191,9 +198,6 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_max_request_within_thread(u->sink, nbytes);
}
@@ -204,24 +208,28 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
}
/* Called from I/O thread context */
-static void sink_input_detach_cb(pa_sink_input *i) {
+static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) {
struct userdata *u;
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+}
+
+/* Called from I/O thread context */
+static void sink_input_detach_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
pa_sink_detach_within_thread(u->sink);
- pa_sink_set_asyncmsgq(u->sink, NULL);
+
pa_sink_set_rtpoll(u->sink, NULL);
}
@@ -232,14 +240,13 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll);
+ pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+ pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i));
+ pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i));
- pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, i->sink->rtpoll);
pa_sink_attach_within_thread(u->sink);
-
- pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
}
/* Called from main context */
@@ -249,14 +256,18 @@ static void sink_input_kill_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- pa_sink_unlink(u->sink);
+ /* The order here matters! We first kill the sink input, followed
+ * by the sink. That means the sink callbacks must be protected
+ * against an unconnected sink input! */
pa_sink_input_unlink(u->sink_input);
+ pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- u->sink = NULL;
pa_sink_input_unref(u->sink_input);
u->sink_input = NULL;
+ pa_sink_unref(u->sink);
+ u->sink = NULL;
+
pa_module_unload_request(u->module, TRUE);
}
@@ -286,12 +297,37 @@ static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) {
return u->sink != dest;
}
+/* Called from main context */
+static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ if (dest) {
+ pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+ pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
+ } else
+ pa_sink_set_asyncmsgq(u->sink, NULL);
+
+ if (u->auto_desc && dest) {
+ const char *k;
+ pa_proplist *pl;
+
+ pl = pa_proplist_new();
+ k = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION);
+ pa_proplist_setf(pl, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : dest->name);
+
+ pa_sink_update_proplist(u->sink, PA_UPDATE_REPLACE, pl);
+ pa_proplist_free(pl);
+ }
+}
+
int pa__init(pa_module*m) {
struct userdata *u;
pa_sample_spec ss;
pa_channel_map sink_map, stream_map;
pa_modargs *ma;
- const char *k;
pa_sink *master;
pa_sink_input_new_data sink_input_data;
pa_sink_new_data sink_data;
@@ -336,12 +372,8 @@ int pa__init(pa_module*m) {
}
u = pa_xnew0(struct userdata, 1);
- u->core = m->core;
u->module = m;
m->userdata = u;
- u->master = master;
- u->sink = NULL;
- u->sink_input = NULL;
/* Create sink */
pa_sink_new_data_init(&sink_data);
@@ -351,8 +383,6 @@ int pa__init(pa_module*m) {
sink_data.name = pa_sprintf_malloc("%s.remapped", master->name);
pa_sink_new_data_set_sample_spec(&sink_data, &ss);
pa_sink_new_data_set_channel_map(&sink_data, &sink_map);
- k = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
- pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : master->name);
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
@@ -362,7 +392,14 @@ int pa__init(pa_module*m) {
goto fail;
}
- u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
+ if ((u->auto_desc = !pa_proplist_contains(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION))) {
+ const char *k;
+
+ k = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
+ pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : master->name);
+ }
+
+ u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY));
pa_sink_new_data_done(&sink_data);
if (!u->sink) {
@@ -377,19 +414,19 @@ int pa__init(pa_module*m) {
u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, master->rtpoll);
/* Create sink input */
pa_sink_input_new_data_init(&sink_input_data);
sink_input_data.driver = __FILE__;
sink_input_data.module = m;
- sink_input_data.sink = u->master;
+ sink_input_data.sink = master;
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Remapped Stream");
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
pa_sink_input_new_data_set_channel_map(&sink_input_data, &stream_map);
+ sink_input_data.flags = (remix ? 0 : PA_SINK_INPUT_NO_REMIX);
- pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, PA_SINK_INPUT_DONT_MOVE | (remix ? 0 : PA_SINK_INPUT_NO_REMIX));
+ pa_sink_input_new(&u->sink_input, m->core, &sink_input_data);
pa_sink_input_new_data_done(&sink_input_data);
if (!u->sink_input)
@@ -400,11 +437,13 @@ int pa__init(pa_module*m) {
u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
u->sink_input->update_max_request = sink_input_update_max_request_cb;
u->sink_input->update_sink_latency_range = sink_input_update_sink_latency_range_cb;
+ u->sink_input->update_sink_fixed_latency = sink_input_update_sink_fixed_latency_cb;
u->sink_input->attach = sink_input_attach_cb;
u->sink_input->detach = sink_input_detach_cb;
u->sink_input->kill = sink_input_kill_cb;
u->sink_input->state_change = sink_input_state_change_cb;
u->sink_input->may_move_to = sink_input_may_move_to_cb;
+ u->sink_input->moving = sink_input_moving_cb;
u->sink_input->userdata = u;
pa_sink_put(u->sink);
@@ -440,15 +479,20 @@ void pa__done(pa_module*m) {
if (!(u = m->userdata))
return;
- if (u->sink) {
- pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- }
+ /* See comments in sink_input_kill_cb() above regarding
+ * destruction order! */
- if (u->sink_input) {
+ if (u->sink_input)
pa_sink_input_unlink(u->sink_input);
+
+ if (u->sink)
+ pa_sink_unlink(u->sink);
+
+ if (u->sink_input)
pa_sink_input_unref(u->sink_input);
- }
+
+ if (u->sink)
+ pa_sink_unref(u->sink);
pa_xfree(u);
}
diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
index c23feceb..722d84b2 100644
--- a/src/modules/module-rescue-streams.c
+++ b/src/modules/module-rescue-streams.c
@@ -45,13 +45,46 @@ static const char* const valid_modargs[] = {
};
struct userdata {
- pa_hook_slot *sink_slot, *source_slot;
+ pa_hook_slot
+ *sink_unlink_slot,
+ *source_unlink_slot,
+ *sink_input_move_fail_slot,
+ *source_output_move_fail_slot;
};
-static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) {
+static pa_sink* find_evacuation_sink(pa_core *c, pa_sink_input *i, pa_sink *skip) {
+ pa_sink *target, *def;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(i);
+
+ def = pa_namereg_get_default_sink(c);
+
+ if (def && def != skip && pa_sink_input_may_move_to(i, def))
+ return def;
+
+ PA_IDXSET_FOREACH(target, c->sinks, idx) {
+ if (target == def)
+ continue;
+
+ if (target == skip)
+ continue;
+
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(target)))
+ continue;
+
+ if (pa_sink_input_may_move_to(i, target))
+ return target;
+ }
+
+ pa_log_debug("No evacuation sink found.");
+ return NULL;
+}
+
+static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) {
pa_sink_input *i;
uint32_t idx;
- pa_sink *target;
pa_assert(c);
pa_assert(sink);
@@ -65,21 +98,12 @@ 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_default_sink(c)) || target == sink) {
-
- PA_IDXSET_FOREACH(target, c->sinks, idx)
- if (target != sink)
- break;
-
- if (!target) {
- pa_log_debug("No evacuation sink found.");
- return PA_HOOK_OK;
- }
- }
+ PA_IDXSET_FOREACH(i, sink->inputs, idx) {
+ pa_sink *target;
- pa_assert(target != sink);
+ if (!(target = find_evacuation_sink(c, i, sink)))
+ continue;
- PA_IDXSET_FOREACH(i, sink->inputs, idx) {
if (pa_sink_input_move_to(i, target, FALSE) < 0)
pa_log_info("Failed to move sink input %u \"%s\" to %s.", i->index,
pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
@@ -91,9 +115,66 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
return PA_HOOK_OK;
}
-static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void* userdata) {
+static pa_hook_result_t sink_input_move_fail_hook_callback(pa_core *c, pa_sink_input *i, void *userdata) {
+ pa_sink *target;
+
+ pa_assert(c);
+ pa_assert(i);
+
+ /* 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 (!(target = find_evacuation_sink(c, i, NULL)))
+ return PA_HOOK_OK;
+
+ if (pa_sink_input_finish_move(i, target, FALSE) < 0) {
+ pa_log_info("Failed to move sink input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_OK;
+
+ } else {
+ pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_STOP;
+ }
+}
+
+static pa_source* find_evacuation_source(pa_core *c, pa_source_output *o, pa_source *skip) {
+ pa_source *target, *def;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(o);
+
+ def = pa_namereg_get_default_source(c);
+
+ if (def && def != skip && pa_source_output_may_move_to(o, def))
+ return def;
+
+ PA_IDXSET_FOREACH(target, c->sources, idx) {
+ if (target == def)
+ continue;
+
+ if (target == skip)
+ continue;
+
+ if (!target->monitor_of != !skip->monitor_of)
+ continue;
+
+ if (!PA_SOURCE_IS_LINKED(pa_source_get_state(target)))
+ continue;
+
+ if (pa_source_output_may_move_to(o, target))
+ return target;
+ }
+
+ pa_log_debug("No evacuation source found.");
+ return NULL;
+}
+
+static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *source, void* userdata) {
pa_source_output *o;
- pa_source *target;
uint32_t idx;
pa_assert(c);
@@ -108,21 +189,12 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
return PA_HOOK_OK;
}
- 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)
- break;
-
- if (!target) {
- pa_log_info("No evacuation source found.");
- return PA_HOOK_OK;
- }
- }
+ PA_IDXSET_FOREACH(o, source->outputs, idx) {
+ pa_source *target;
- pa_assert(target != source);
+ if (!(target = find_evacuation_source(c, o, source)))
+ continue;
- PA_IDXSET_FOREACH(o, source->outputs, idx) {
if (pa_source_output_move_to(o, target, FALSE) < 0)
pa_log_info("Failed to move source output %u \"%s\" to %s.", o->index,
pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME)), target->name);
@@ -134,6 +206,31 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
return PA_HOOK_OK;
}
+static pa_hook_result_t source_output_move_fail_hook_callback(pa_core *c, pa_source_output *i, void *userdata) {
+ pa_source *target;
+
+ pa_assert(c);
+ pa_assert(i);
+
+ /* 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 (!(target = find_evacuation_source(c, i, NULL)))
+ return PA_HOOK_OK;
+
+ if (pa_source_output_finish_move(i, target, FALSE) < 0) {
+ pa_log_info("Failed to move source input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_OK;
+
+ } else {
+ pa_log_info("Sucessfully moved source input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_STOP;
+ }
+}
+
int pa__init(pa_module*m) {
pa_modargs *ma;
struct userdata *u;
@@ -148,8 +245,11 @@ int pa__init(pa_module*m) {
m->userdata = u = pa_xnew(struct userdata, 1);
/* 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);
+ u->sink_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_unlink_hook_callback, u);
+ u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) source_unlink_hook_callback, u);
+
+ u->sink_input_move_fail_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_input_move_fail_hook_callback, u);
+ u->source_output_move_fail_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], PA_HOOK_LATE+20, (pa_hook_cb_t) source_output_move_fail_hook_callback, u);
pa_modargs_free(ma);
return 0;
@@ -163,10 +263,15 @@ void pa__done(pa_module*m) {
if (!(u = m->userdata))
return;
- if (u->sink_slot)
- pa_hook_slot_free(u->sink_slot);
- if (u->source_slot)
- pa_hook_slot_free(u->source_slot);
+ if (u->sink_unlink_slot)
+ pa_hook_slot_free(u->sink_unlink_slot);
+ if (u->source_unlink_slot)
+ pa_hook_slot_free(u->source_unlink_slot);
+
+ if (u->sink_input_move_fail_slot)
+ pa_hook_slot_free(u->sink_input_move_fail_slot);
+ if (u->source_output_move_fail_slot)
+ pa_hook_slot_free(u->source_output_move_fail_slot);
pa_xfree(u);
}
diff --git a/src/modules/module-sine.c b/src/modules/module-sine.c
index 0be1d722..69b20028 100644
--- a/src/modules/module-sine.c
+++ b/src/modules/module-sine.c
@@ -163,7 +163,7 @@ int pa__init(pa_module*m) {
pa_proplist_setf(data.proplist, "sine.hz", "%u", frequency);
pa_sink_input_new_data_set_sample_spec(&data, &ss);
- pa_sink_input_new(&u->sink_input, m->core, &data, 0);
+ pa_sink_input_new(&u->sink_input, m->core, &data);
pa_sink_input_new_data_done(&data);
if (!u->sink_input)
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 0920d25e..b0d4db43 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -60,6 +60,7 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
#include <pulsecore/thread.h>
+#include <pulsecore/time-smoother.h>
#include "module-solaris-symdef.h"
@@ -110,6 +111,8 @@ struct userdata {
uint32_t prev_playback_samples, prev_record_samples;
int32_t minimum_request;
+
+ pa_smoother *smoother;
};
static const char* const valid_modargs[] = {
@@ -133,6 +136,9 @@ static const char* const valid_modargs[] = {
#define MAX_RENDER_HZ (300)
/* This render rate limit imposes a minimum latency, but without it we waste too much CPU time. */
+#define MAX_BUFFER_SIZE (128 * 1024)
+/* An attempt to buffer more than 128 KB causes write() to fail with errno == EAGAIN. */
+
static uint64_t get_playback_buffered_bytes(struct userdata *u) {
audio_info_t info;
uint64_t played_bytes;
@@ -145,7 +151,12 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) {
/* Handle wrap-around of the device's sample counter, which is a uint_32. */
if (u->prev_playback_samples > info.play.samples) {
- /* Unfortunately info.play.samples can sometimes go backwards, even before it wraps! */
+ /*
+ * Unfortunately info.play.samples can sometimes go backwards, even before it wraps!
+ * The bug seems to be absent on Solaris x86 nv117 with audio810 driver, at least on this (UP) machine.
+ * The bug is present on a different (SMP) machine running Solaris x86 nv103 with audioens driver.
+ * An earlier revision of this file mentions the same bug independently (unknown configuration).
+ */
if (u->prev_playback_samples + info.play.samples < 240000) {
++u->play_samples_msw;
} else {
@@ -155,6 +166,8 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) {
u->prev_playback_samples = info.play.samples;
played_bytes = (((uint64_t)u->play_samples_msw << 32) + info.play.samples) * u->frame_size;
+ pa_smoother_put(u->smoother, pa_rtclock_now(), pa_bytes_to_usec(played_bytes, &u->sink->sample_spec));
+
return u->written_bytes - played_bytes;
}
@@ -387,6 +400,8 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
+ pa_smoother_pause(u->smoother, pa_rtclock_now());
+
if (!u->source || u->source_suspended) {
if (suspend(u) < 0)
return -1;
@@ -398,6 +413,8 @@ 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_now(), TRUE);
+
if (!u->source || u->source_suspended) {
if (unsuspend(u) < 0)
return -1;
@@ -479,7 +496,7 @@ static void sink_set_volume(pa_sink *s) {
if (u->fd >= 0) {
AUDIO_INITINFO(&info);
- info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ info.play.gain = pa_cvolume_max(&s->real_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
@@ -501,8 +518,7 @@ static void sink_get_volume(pa_sink *s) {
if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
else
- pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels,
- info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ pa_cvolume_set(&s->real_volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
}
}
@@ -515,7 +531,7 @@ static void source_set_volume(pa_source *s) {
if (u->fd >= 0) {
AUDIO_INITINFO(&info);
- info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ info.play.gain = pa_cvolume_max(&s->volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
@@ -537,8 +553,7 @@ static void source_get_volume(pa_source *s) {
if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
else
- pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels,
- info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ pa_cvolume_set(&s->volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
}
}
@@ -585,6 +600,10 @@ static void process_rewind(struct userdata *u) {
pa_log_debug("Requested to rewind %lu bytes.", (unsigned long) rewind_nbytes);
rewind_nbytes = PA_MIN(u->memchunk.length, rewind_nbytes);
u->memchunk.length -= rewind_nbytes;
+ if (u->memchunk.length <= 0 && u->memchunk.memblock) {
+ pa_memblock_unref(u->memchunk.memblock);
+ pa_memchunk_reset(&u->memchunk);
+ }
pa_log_debug("Rewound %lu bytes.", (unsigned long) rewind_nbytes);
}
@@ -606,11 +625,13 @@ static void thread_func(void *userdata) {
pa_thread_mq_install(&u->thread_mq);
+ pa_smoother_set_time_offset(u->smoother, pa_rtclock_now());
+
for (;;) {
/* Render some data and write it to the dsp */
if (u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
- pa_usec_t xtime0;
+ pa_usec_t xtime0, ysleep_interval, xsleep_interval;
uint64_t buffered_bytes;
if (u->sink->thread_info.rewind_requested)
@@ -629,12 +650,15 @@ static void thread_func(void *userdata) {
info.play.error = 0;
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+
+ pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
}
for (;;) {
void *p;
ssize_t w;
size_t len;
+ int write_type = 1;
/*
* Since we cannot modify the size of the output buffer we fake it
@@ -651,39 +675,32 @@ static void thread_func(void *userdata) {
if (len < (size_t) u->minimum_request)
break;
- if (u->memchunk.length < len)
+ if (!u->memchunk.length)
pa_sink_render(u->sink, u->sink->thread_info.max_request, &u->memchunk);
+ len = PA_MIN(u->memchunk.length, len);
+
p = pa_memblock_acquire(u->memchunk.memblock);
- w = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, u->memchunk.length, NULL);
+ w = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, len, &write_type);
pa_memblock_release(u->memchunk.memblock);
if (w <= 0) {
- switch (errno) {
- case EINTR:
- continue;
- case EAGAIN:
- /* If the buffer_size is too big, we get EAGAIN. Avoiding that limit by trial and error
- * is not ideal, but I don't know how to get the system to tell me what the limit is.
- */
- u->buffer_size = u->buffer_size * 18 / 25;
- u->buffer_size -= u->buffer_size % u->frame_size;
- u->buffer_size = PA_MAX(u->buffer_size, 2 * u->minimum_request);
- pa_sink_set_max_request_within_thread(u->sink, u->buffer_size);
- pa_sink_set_max_rewind_within_thread(u->sink, u->buffer_size);
- pa_log("EAGAIN. Buffer size is now %u bytes (%llu buffered)", u->buffer_size, buffered_bytes);
- break;
- default:
- pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno));
- goto fail;
+ if (errno == EINTR) {
+ continue;
+ } else if (errno == EAGAIN) {
+ /* We may have realtime priority so yield the CPU to ensure that fd can become writable again. */
+ pa_log_debug("EAGAIN with %llu bytes buffered.", buffered_bytes);
+ break;
+ } else {
+ pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno));
+ goto fail;
}
} else {
pa_assert(w % u->frame_size == 0);
u->written_bytes += w;
- u->memchunk.length -= w;
-
u->memchunk.index += w;
+ u->memchunk.length -= w;
if (u->memchunk.length <= 0) {
pa_memblock_unref(u->memchunk.memblock);
pa_memchunk_reset(&u->memchunk);
@@ -691,7 +708,9 @@ static void thread_func(void *userdata) {
}
}
- pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec));
+ ysleep_interval = pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec);
+ xsleep_interval = pa_smoother_translate(u->smoother, xtime0, ysleep_interval);
+ pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + PA_MIN(xsleep_interval, ysleep_interval));
} else
pa_rtpoll_set_timer_disabled(u->rtpoll);
@@ -797,7 +816,7 @@ static void sig_callback(pa_mainloop_api *api, pa_signal_event*e, int sig, void
pa_log_debug("caught signal");
if (u->sink) {
- pa_sink_get_volume(u->sink, TRUE, FALSE);
+ pa_sink_get_volume(u->sink, TRUE);
pa_sink_get_mute(u->sink, TRUE);
}
@@ -812,7 +831,7 @@ int pa__init(pa_module *m) {
pa_channel_map map;
pa_modargs *ma = NULL;
uint32_t buffer_length_msec;
- int fd;
+ int fd = -1;
pa_sink_new_data sink_new_data;
pa_source_new_data source_new_data;
char const *name;
@@ -838,6 +857,9 @@ int pa__init(pa_module *m) {
u = pa_xnew0(struct userdata, 1);
+ if (!(u->smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC * 2, TRUE, TRUE, 10, pa_rtclock_now(), TRUE)))
+ goto fail;
+
/*
* For a process (or several processes) to use the same audio device for both
* record and playback at the same time, the device's mixer must be enabled.
@@ -861,7 +883,13 @@ int pa__init(pa_module *m) {
}
u->buffer_size = pa_usec_to_bytes(1000 * buffer_length_msec, &ss);
if (u->buffer_size < 2 * u->minimum_request) {
- pa_log("supplied buffer size argument is too small");
+ pa_log("buffer_length argument cannot be smaller than %u",
+ (unsigned)(pa_bytes_to_usec(2 * u->minimum_request, &ss) / 1000));
+ goto fail;
+ }
+ if (u->buffer_size > MAX_BUFFER_SIZE) {
+ pa_log("buffer_length argument cannot be greater than %u",
+ (unsigned)(pa_bytes_to_usec(MAX_BUFFER_SIZE, &ss) / 1000));
goto fail;
}
@@ -924,6 +952,7 @@ int pa__init(pa_module *m) {
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll);
+ pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(u->buffer_size, &u->source->sample_spec));
u->source->get_volume = source_get_volume;
u->source->set_volume = source_set_volume;
@@ -966,15 +995,15 @@ int pa__init(pa_module *m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
+ pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->buffer_size, &u->sink->sample_spec));
+ pa_sink_set_max_request(u->sink, u->buffer_size);
+ pa_sink_set_max_rewind(u->sink, u->buffer_size);
u->sink->get_volume = sink_get_volume;
u->sink->set_volume = sink_set_volume;
u->sink->get_mute = sink_get_mute;
u->sink->set_mute = sink_set_mute;
u->sink->refresh_volume = u->sink->refresh_muted = TRUE;
-
- pa_sink_set_max_request(u->sink, u->buffer_size);
- pa_sink_set_max_rewind(u->sink, u->buffer_size);
} else
u->sink = NULL;
@@ -1075,6 +1104,9 @@ void pa__done(pa_module *m) {
if (u->fd >= 0)
close(u->fd);
+ if (u->smoother)
+ pa_smoother_free(u->smoother);
+
pa_xfree(u->device_name);
pa_xfree(u);
diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c
index 8c0bb6b0..d6e3c153 100644
--- a/src/modules/module-stream-restore.c
+++ b/src/modules/module-stream-restore.c
@@ -102,15 +102,16 @@ struct userdata {
pa_idxset *subscribed;
};
-#define ENTRY_VERSION 2
+#define ENTRY_VERSION 3
struct entry {
uint8_t version;
- pa_bool_t muted_valid:1, volume_valid:1, device_valid:1;
+ pa_bool_t muted_valid:1, volume_valid:1, device_valid:1, card_valid:1;
pa_bool_t muted:1;
pa_channel_map channel_map;
pa_cvolume volume;
char device[PA_NAME_MAX];
+ char card[PA_NAME_MAX];
} PA_GCC_PACKED;
enum {
@@ -196,11 +197,21 @@ static struct entry* read_entry(struct userdata *u, const char *name) {
goto fail;
}
+ if (!memchr(e->card, 0, sizeof(e->card))) {
+ pa_log_warn("Database contains entry for stream %s with missing NUL byte in card name", name);
+ goto fail;
+ }
+
if (e->device_valid && !pa_namereg_is_valid_name(e->device)) {
pa_log_warn("Invalid device name stored in database for stream %s", name);
goto fail;
}
+ if (e->card_valid && !pa_namereg_is_valid_name(e->card)) {
+ pa_log_warn("Invalid card name stored in database for stream %s", name);
+ goto fail;
+ }
+
if (e->volume_valid && !pa_channel_map_valid(&e->channel_map)) {
pa_log_warn("Invalid channel map stored in database for stream %s", name);
goto fail;
@@ -252,6 +263,10 @@ static pa_bool_t entries_equal(const struct entry *a, const struct entry *b) {
(a->device_valid && strncmp(a->device, b->device, sizeof(a->device))))
return FALSE;
+ if (a->card_valid != b->card_valid ||
+ (a->card_valid && strncmp(a->card, b->card, sizeof(a->card))))
+ return FALSE;
+
if (a->muted_valid != b->muted_valid ||
(a->muted_valid && (a->muted != b->muted)))
return FALSE;
@@ -308,6 +323,11 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (sink_input->save_sink) {
pa_strlcpy(entry.device, sink_input->sink->name, sizeof(entry.device));
entry.device_valid = TRUE;
+
+ if (sink_input->sink->card) {
+ pa_strlcpy(entry.card, sink_input->sink->card->name, sizeof(entry.card));
+ entry.card_valid = TRUE;
+ }
}
} else {
@@ -327,6 +347,11 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (source_output->save_source) {
pa_strlcpy(entry.device, source_output->source->name, sizeof(entry.device));
entry.device_valid = source_output->save_source;
+
+ if (source_output->source->card) {
+ pa_strlcpy(entry.card, source_output->source->card->name, sizeof(entry.card));
+ entry.card_valid = TRUE;
+ }
}
}
@@ -368,19 +393,28 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
if (!(name = get_name(new_data->proplist, "sink-input")))
return PA_HOOK_OK;
- if ((e = read_entry(u, name))) {
+ if (new_data->sink)
+ pa_log_debug("Not restoring device for stream %s, because already set.", name);
+ else if ((e = read_entry(u, name))) {
+ pa_sink *s = NULL;
- if (e->device_valid) {
- pa_sink *s;
+ if (e->device_valid)
+ s = pa_namereg_get(c, e->device, PA_NAMEREG_SINK);
- if ((s = pa_namereg_get(c, e->device, PA_NAMEREG_SINK))) {
- if (!new_data->sink) {
- pa_log_info("Restoring device for stream %s.", name);
- new_data->sink = s;
- new_data->save_sink = TRUE;
- } else
- pa_log_debug("Not restoring device for stream %s, because already set.", name);
- }
+ if (!s && e->card_valid) {
+ pa_card *card;
+
+ if ((card = pa_namereg_get(c, e->card, PA_NAMEREG_CARD)))
+ s = pa_idxset_first(card->sinks, NULL);
+ }
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (s && PA_SINK_IS_LINKED(pa_sink_get_state(s))) {
+ pa_log_info("Restoring device for stream %s.", name);
+ new_data->sink = s;
+ new_data->save_sink = TRUE;
}
pa_xfree(e);
@@ -455,18 +489,28 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
if (!(name = get_name(new_data->proplist, "source-output")))
return PA_HOOK_OK;
- if ((e = read_entry(u, name))) {
- pa_source *s;
+ if (new_data->source)
+ pa_log_debug("Not restoring device for stream %s, because already set", name);
+ else if ((e = read_entry(u, name))) {
+ pa_source *s = NULL;
- if (e->device_valid) {
- if ((s = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE))) {
- if (!new_data->source) {
- pa_log_info("Restoring device for stream %s.", name);
- new_data->source = s;
- new_data->save_source = TRUE;
- } else
- pa_log_debug("Not restoring device for stream %s, because already set", name);
- }
+ if (e->device_valid)
+ s = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE);
+
+ if (!s && e->card_valid) {
+ pa_card *card;
+
+ if ((card = pa_namereg_get(c, e->card, PA_NAMEREG_CARD)))
+ s = pa_idxset_first(card->sources, NULL);
+ }
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (s && PA_SOURCE_IS_LINKED(pa_source_get_state(s))) {
+ pa_log_info("Restoring device for stream %s.", name);
+ new_data->source = s;
+ new_data->save_source = TRUE;
}
pa_xfree(e);
@@ -496,6 +540,17 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct
if (si->save_sink)
continue;
+ /* Skip this if it is already in the process of being moved
+ * anyway */
+ if (!si->sink)
+ continue;
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(si)))
+ continue;
+
if (!(name = get_name(si->proplist, "sink-input")))
continue;
@@ -534,6 +589,16 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
if (so->direct_on_input)
continue;
+ /* Skip this if it is already in the process of being moved anyway */
+ if (!so->source)
+ continue;
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SOURCE_OUTPUT_IS_LINKED(pa_source_output_get_state(so)))
+ continue;
+
if (!(name = get_name(so->proplist, "source-input")))
continue;
@@ -567,6 +632,9 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str
char *name;
struct entry *e;
+ if (!si->sink)
+ continue;
+
if (!(name = get_name(si->proplist, "sink-input")))
continue;
@@ -575,7 +643,9 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str
if (e->device_valid) {
pa_sink *d;
- if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SINK)) && d != sink)
+ if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SINK)) &&
+ d != sink &&
+ PA_SINK_IS_LINKED(pa_sink_get_state(d)))
pa_sink_input_move_to(si, d, TRUE);
}
@@ -605,6 +675,12 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
char *name;
struct entry *e;
+ if (so->direct_on_input)
+ continue;
+
+ if (!so->source)
+ continue;
+
if (!(name = get_name(so->proplist, "source-output")))
continue;
@@ -613,7 +689,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
if (e->device_valid) {
pa_source *d;
- if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE)) && d != source)
+ if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE)) &&
+ d != source &&
+ PA_SOURCE_IS_LINKED(pa_source_get_state(d)))
pa_source_output_move_to(so, d, TRUE);
}
@@ -856,6 +934,10 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
data.data = &entry;
data.size = sizeof(entry);
+ pa_log_debug("Client %s changes entry %s.",
+ pa_strnull(pa_proplist_gets(pa_native_connection_get_client(c)->proplist, PA_PROP_APPLICATION_PROCESS_BINARY)),
+ name);
+
if (pa_database_set(u->database, &key, &data, mode == PA_UPDATE_REPLACE) == 0)
if (apply_immediately)
apply_entry(u, name, &entry);
diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
index 70a7b049..7adaa0b1 100644
--- a/src/modules/module-suspend-on-idle.c
+++ b/src/modules/module-suspend-on-idle.c
@@ -145,6 +145,9 @@ static pa_hook_result_t sink_input_fixate_hook_cb(pa_core *c, pa_sink_input_new_
pa_assert(data);
pa_assert(u);
+ if (data->flags & PA_SINK_INPUT_START_CORKED)
+ return PA_HOOK_OK;
+
if ((d = pa_hashmap_get(u->device_infos, data->sink)))
resume(d);
@@ -158,6 +161,9 @@ static pa_hook_result_t source_output_fixate_hook_cb(pa_core *c, pa_source_outpu
pa_assert(data);
pa_assert(u);
+ if (data->flags & PA_SOURCE_OUTPUT_START_CORKED)
+ return PA_HOOK_OK;
+
if (data->source->monitor_of)
d = pa_hashmap_get(u->device_infos, data->source->monitor_of);
else
@@ -226,11 +232,16 @@ static pa_hook_result_t sink_input_move_start_hook_cb(pa_core *c, pa_sink_input
static pa_hook_result_t sink_input_move_finish_hook_cb(pa_core *c, pa_sink_input *s, struct userdata *u) {
struct device_info *d;
+ pa_sink_input_state_t state;
pa_assert(c);
pa_sink_input_assert_ref(s);
pa_assert(u);
+ state = pa_sink_input_get_state(s);
+ if (state != PA_SINK_INPUT_RUNNING && state != PA_SINK_INPUT_DRAINED)
+ return PA_HOOK_OK;
+
if ((d = pa_hashmap_get(u->device_infos, s->sink)))
resume(d);
@@ -265,6 +276,9 @@ static pa_hook_result_t source_output_move_finish_hook_cb(pa_core *c, pa_source_
pa_source_output_assert_ref(s);
pa_assert(u);
+ if (pa_source_output_get_state(s) != PA_SOURCE_OUTPUT_RUNNING)
+ return PA_HOOK_OK;
+
if (s->source->monitor_of)
d = pa_hashmap_get(u->device_infos, s->source->monitor_of);
else
@@ -279,6 +293,7 @@ static pa_hook_result_t source_output_move_finish_hook_cb(pa_core *c, pa_source_
static pa_hook_result_t sink_input_state_changed_hook_cb(pa_core *c, pa_sink_input *s, struct userdata *u) {
struct device_info *d;
pa_sink_input_state_t state;
+
pa_assert(c);
pa_sink_input_assert_ref(s);
pa_assert(u);
@@ -292,15 +307,11 @@ static pa_hook_result_t sink_input_state_changed_hook_cb(pa_core *c, pa_sink_inp
}
static pa_hook_result_t source_output_state_changed_hook_cb(pa_core *c, pa_source_output *s, struct userdata *u) {
- pa_source_output_state_t state;
-
pa_assert(c);
pa_source_output_assert_ref(s);
pa_assert(u);
- state = pa_source_output_get_state(s);
-
- if (state == PA_SOURCE_OUTPUT_RUNNING) {
+ if (pa_source_output_get_state(s) == PA_SOURCE_OUTPUT_RUNNING) {
struct device_info *d;
if (s->source->monitor_of)
@@ -387,22 +398,17 @@ static pa_hook_result_t device_state_changed_hook_cb(pa_core *c, pa_object *o, s
pa_sink *s = PA_SINK(o);
pa_sink_state_t state = pa_sink_get_state(s);
- if (pa_sink_check_suspend(s) <= 0) {
-
+ if (pa_sink_check_suspend(s) <= 0)
if (PA_SINK_IS_OPENED(state))
restart(d);
- }
-
} else if (pa_source_isinstance(o)) {
pa_source *s = PA_SOURCE(o);
pa_source_state_t state = pa_source_get_state(s);
- if (pa_source_check_suspend(s) <= 0) {
-
+ if (pa_source_check_suspend(s) <= 0)
if (PA_SOURCE_IS_OPENED(state))
restart(d);
- }
}
return PA_HOOK_OK;
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index d1153829..af4b8b2a 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -55,6 +55,7 @@
#include <pulsecore/core-error.h>
#include <pulsecore/proplist-util.h>
#include <pulsecore/auth-cookie.h>
+#include <pulsecore/mcalign.h>
#ifdef TUNNEL_SINK
#include "module-tunnel-sink-symdef.h"
@@ -194,6 +195,7 @@ struct userdata {
#else
char *source_name;
pa_source *source;
+ pa_mcalign *mcalign;
#endif
pa_auth_cookie *auth_cookie;
@@ -330,7 +332,7 @@ static void command_moved(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
static void command_stream_buffer_attr_changed(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
struct userdata *u = userdata;
- uint32_t channel, maxlength, tlength, fragsize, prebuf, minreq;
+ uint32_t channel, maxlength, tlength = 0, fragsize, prebuf, minreq;
pa_usec_t usec;
pa_assert(pd);
@@ -614,14 +616,23 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
return 0;
}
- case SOURCE_MESSAGE_POST:
+ case SOURCE_MESSAGE_POST: {
+ pa_memchunk c;
- if (PA_SOURCE_IS_OPENED(u->source->thread_info.state))
- pa_source_post(u->source, chunk);
+ pa_mcalign_push(u->mcalign, chunk);
- u->counter += (int64_t) chunk->length;
+ while (pa_mcalign_pop(u->mcalign, &c) >= 0) {
+
+ if (PA_SOURCE_IS_OPENED(u->source->thread_info.state))
+ pa_source_post(u->source, &c);
+
+ pa_memblock_unref(c.memblock);
+
+ u->counter += (int64_t) c.length;
+ }
return 0;
+ }
case SOURCE_MESSAGE_REMOTE_SUSPEND:
@@ -1086,7 +1097,7 @@ static void sink_input_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag
uint32_t idx, owner_module, client, sink;
pa_usec_t buffer_usec, sink_usec;
const char *name, *driver, *resample_method;
- pa_bool_t mute;
+ pa_bool_t mute = FALSE;
pa_sample_spec sample_spec;
pa_channel_map channel_map;
pa_cvolume volume;
@@ -1151,13 +1162,13 @@ static void sink_input_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag
pa_assert(u->sink);
if ((u->version < 11 || !!mute == !!u->sink->muted) &&
- pa_cvolume_equal(&volume, &u->sink->virtual_volume))
+ pa_cvolume_equal(&volume, &u->sink->real_volume))
return;
- pa_sink_volume_changed(u->sink, &volume, FALSE);
+ pa_sink_volume_changed(u->sink, &volume);
if (u->version >= 11)
- pa_sink_mute_changed(u->sink, mute, FALSE);
+ pa_sink_mute_changed(u->sink, mute);
return;
@@ -1334,12 +1345,11 @@ static void command_subscribe_event(pa_pdispatch *pd, uint32_t command, uint32
/* Called from main context */
static void start_subscribe(struct userdata *u) {
pa_tagstruct *t;
- uint32_t tag;
pa_assert(u);
t = pa_tagstruct_new(NULL, 0);
pa_tagstruct_putu32(t, PA_COMMAND_SUBSCRIBE);
- pa_tagstruct_putu32(t, tag = u->ctag++);
+ pa_tagstruct_putu32(t, u->ctag++);
pa_tagstruct_putu32(t, PA_SUBSCRIPTION_MASK_SERVER|
#ifdef TUNNEL_SINK
PA_SUBSCRIPTION_MASK_SINK_INPUT|PA_SUBSCRIPTION_MASK_SINK
@@ -1515,7 +1525,7 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t
reply = pa_tagstruct_new(NULL, 0);
pa_tagstruct_putu32(reply, PA_COMMAND_SET_CLIENT_NAME);
- pa_tagstruct_putu32(reply, tag = u->ctag++);
+ pa_tagstruct_putu32(reply, u->ctag++);
if (u->version >= 13) {
pa_proplist *pl;
@@ -1742,7 +1752,6 @@ static void on_connection(pa_socket_client *sc, pa_iochannel *io, void *userdata
static void sink_set_volume(pa_sink *sink) {
struct userdata *u;
pa_tagstruct *t;
- uint32_t tag;
pa_assert(sink);
u = sink->userdata;
@@ -1750,9 +1759,9 @@ static void sink_set_volume(pa_sink *sink) {
t = pa_tagstruct_new(NULL, 0);
pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_VOLUME);
- pa_tagstruct_putu32(t, tag = u->ctag++);
+ pa_tagstruct_putu32(t, u->ctag++);
pa_tagstruct_putu32(t, u->device_index);
- pa_tagstruct_put_cvolume(t, &sink->virtual_volume);
+ pa_tagstruct_put_cvolume(t, &sink->real_volume);
pa_pstream_send_tagstruct(u->pstream, t);
}
@@ -1760,7 +1769,6 @@ static void sink_set_volume(pa_sink *sink) {
static void sink_set_mute(pa_sink *sink) {
struct userdata *u;
pa_tagstruct *t;
- uint32_t tag;
pa_assert(sink);
u = sink->userdata;
@@ -1771,7 +1779,7 @@ static void sink_set_mute(pa_sink *sink) {
t = pa_tagstruct_new(NULL, 0);
pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_MUTE);
- pa_tagstruct_putu32(t, tag = u->ctag++);
+ pa_tagstruct_putu32(t, u->ctag++);
pa_tagstruct_putu32(t, u->device_index);
pa_tagstruct_put_boolean(t, !!sink->muted);
pa_pstream_send_tagstruct(u->pstream, t);
@@ -1937,6 +1945,8 @@ int pa__init(pa_module*m) {
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll);
+
+ u->mcalign = pa_mcalign_new(pa_frame_size(&u->source->sample_spec));
#endif
pa_xfree(dn);
@@ -2030,6 +2040,11 @@ void pa__done(pa_module*m) {
if (u->time_event)
u->core->mainloop->time_free(u->time_event);
+#ifndef TUNNEL_SINK
+ if (u->mcalign)
+ pa_mcalign_free(u->mcalign);
+#endif
+
#ifdef TUNNEL_SINK
pa_xfree(u->sink_name);
#else
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
index 1ad6fa2d..1b1e9c1a 100644
--- a/src/modules/module-udev-detect.c
+++ b/src/modules/module-udev-detect.c
@@ -25,13 +25,17 @@
#include <errno.h>
#include <limits.h>
+#include <dirent.h>
#include <sys/inotify.h>
#include <libudev.h>
+#include <pulse/timeval.h>
+
#include <pulsecore/modargs.h>
#include <pulsecore/core-error.h>
#include <pulsecore/core-util.h>
#include <pulsecore/namereg.h>
+#include <pulsecore/ratelimit.h>
#include "module-udev-detect-symdef.h"
@@ -39,18 +43,25 @@ 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);
+PA_MODULE_USAGE(
+ "tsched=<enable system timer based scheduling mode?> "
+ "ignore_dB=<ignore dB information from the device?>");
struct device {
char *path;
- pa_bool_t accessible;
+ pa_bool_t need_verify;
char *card_name;
+ char *args;
uint32_t module;
+ pa_ratelimit ratelimit;
};
struct userdata {
pa_core *core;
pa_hashmap *devices;
- pa_bool_t use_tsched;
+
+ pa_bool_t use_tsched:1;
+ pa_bool_t ignore_dB:1;
struct udev* udev;
struct udev_monitor *monitor;
@@ -62,14 +73,18 @@ struct userdata {
static const char* const valid_modargs[] = {
"tsched",
+ "ignore_dB",
NULL
};
+static int setup_inotify(struct userdata *u);
+
static void device_free(struct device *d) {
pa_assert(d);
pa_xfree(d->path);
pa_xfree(d->card_name);
+ pa_xfree(d->args);
pa_xfree(d);
}
@@ -88,35 +103,204 @@ static const char *path_get_card_id(const char *path) {
return e + 5;
}
+static pa_bool_t is_card_busy(const char *id) {
+ char *card_path = NULL, *pcm_path = NULL, *sub_status = NULL;
+ DIR *card_dir = NULL, *pcm_dir = NULL;
+ FILE *status_file = NULL;
+ size_t len;
+ struct dirent *space = NULL, *de;
+ pa_bool_t busy = FALSE;
+ int r;
+
+ pa_assert(id);
+
+ /* This simply uses /proc/asound/card.../pcm.../sub.../status to
+ * check whether there is still a process using this audio device. */
+
+ card_path = pa_sprintf_malloc("/proc/asound/card%s", id);
+
+ if (!(card_dir = opendir(card_path))) {
+ pa_log_warn("Failed to open %s: %s", card_path, pa_cstrerror(errno));
+ goto fail;
+ }
+
+ len = offsetof(struct dirent, d_name) + fpathconf(dirfd(card_dir), _PC_NAME_MAX) + 1;
+ space = pa_xmalloc(len);
+
+ for (;;) {
+ de = NULL;
+
+ if ((r = readdir_r(card_dir, space, &de)) != 0) {
+ pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r));
+ goto fail;
+ }
+
+ if (!de)
+ break;
+
+ if (!pa_startswith(de->d_name, "pcm"))
+ continue;
+
+ pa_xfree(pcm_path);
+ pcm_path = pa_sprintf_malloc("%s/%s", card_path, de->d_name);
+
+ if (pcm_dir)
+ closedir(pcm_dir);
+
+ if (!(pcm_dir = opendir(pcm_path))) {
+ pa_log_warn("Failed to open %s: %s", pcm_path, pa_cstrerror(errno));
+ continue;
+ }
+
+ for (;;) {
+ char line[32];
+
+ if ((r = readdir_r(pcm_dir, space, &de)) != 0) {
+ pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r));
+ goto fail;
+ }
+
+ if (!de)
+ break;
+
+ if (!pa_startswith(de->d_name, "sub"))
+ continue;
+
+ pa_xfree(sub_status);
+ sub_status = pa_sprintf_malloc("%s/%s/status", pcm_path, de->d_name);
+
+ if (status_file)
+ fclose(status_file);
+
+ if (!(status_file = fopen(sub_status, "r"))) {
+ pa_log_warn("Failed to open %s: %s", sub_status, pa_cstrerror(errno));
+ continue;
+ }
+
+ if (!(fgets(line, sizeof(line)-1, status_file))) {
+ pa_log_warn("Failed to read from %s: %s", sub_status, pa_cstrerror(errno));
+ continue;
+ }
+
+ if (!pa_streq(line, "closed\n")) {
+ busy = TRUE;
+ break;
+ }
+ }
+ }
+
+fail:
+
+ pa_xfree(card_path);
+ pa_xfree(pcm_path);
+ pa_xfree(sub_status);
+ pa_xfree(space);
+
+ if (card_dir)
+ closedir(card_dir);
+
+ if (pcm_dir)
+ closedir(pcm_dir);
+
+ if (status_file)
+ fclose(status_file);
+
+ return busy;
+}
+
static void verify_access(struct userdata *u, struct device *d) {
char *cd;
pa_card *card;
+ pa_bool_t accessible;
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));
+ accessible = access(cd, R_OK|W_OK) >= 0;
+ pa_log_debug("%s is accessible: %s", cd, pa_yes_no(accessible));
+
pa_xfree(cd);
- pa_card_suspend(card, !d->accessible, PA_SUSPEND_SESSION);
+ if (d->module == PA_INVALID_INDEX) {
+
+ /* If we are not loaded, try to load */
+
+ if (accessible) {
+ pa_module *m;
+ pa_bool_t busy;
+
+ /* Check if any of the PCM devices that belong to this
+ * card are currently busy. If they are, don't try to load
+ * right now, to make sure the probing phase can
+ * successfully complete. When the current user of the
+ * device closes it we will get another notification via
+ * inotify and can then recheck. */
+
+ busy = is_card_busy(path_get_card_id(d->path));
+ pa_log_debug("%s is busy: %s", d->path, pa_yes_no(busy));
+
+ if (!busy) {
+
+ /* So, why do we rate limit here? It's certainly ugly,
+ * but there seems to be no other way. Problem is
+ * this: if we are unable to configure/probe an audio
+ * device after opening it we will close it again and
+ * the module initialization will fail. This will then
+ * cause an inotify event on the device node which
+ * will be forwarded to us. We then try to reopen the
+ * audio device again, practically entering a busy
+ * loop.
+ *
+ * A clean fix would be if we would be able to ignore
+ * our own inotify close events. However, inotify
+ * lacks such functionality. Also, during probing of
+ * the device we cannot really distuingish between
+ * other processes causing EBUSY or ourselves, which
+ * means we have no way to figure out if the probing
+ * during opening was canceled by a "try again"
+ * failure or a "fatal" failure. */
+
+ if (pa_ratelimit_test(&d->ratelimit)) {
+ pa_log_debug("Loading module-alsa-card with arguments '%s'", d->args);
+ m = pa_module_load(u->core, "module-alsa-card", d->args);
+
+ if (m) {
+ d->module = m->index;
+ pa_log_info("Card %s (%s) module loaded.", d->path, d->card_name);
+ } else
+ pa_log_info("Card %s (%s) failed to load module.", d->path, d->card_name);
+ } else
+ pa_log_warn("Tried to configure %s (%s) more often than %u times in %llus",
+ d->path,
+ d->card_name,
+ d->ratelimit.burst,
+ (long long unsigned) (d->ratelimit.interval / PA_USEC_PER_SEC));
+ }
+ }
+
+ } else {
+
+ /* If we are already loaded update suspend status with
+ * accessible boolean */
+
+ if ((card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD)))
+ pa_card_suspend(card, !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);
+ /* Maybe /dev/snd is now available? */
+ setup_inotify(u);
+
path = udev_device_get_devpath(dev);
if ((d = pa_hashmap_get(u->devices, path))) {
@@ -124,42 +308,34 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
return;
}
+ d = pa_xnew0(struct device, 1);
+ d->path = pa_xstrdup(path);
+ d->module = PA_INVALID_INDEX;
+ PA_INIT_RATELIMIT(d->ratelimit, 10*PA_USEC_PER_SEC, 5);
+
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);
+ d->card_name = pa_sprintf_malloc("alsa_card.%s", n);
+ d->args = pa_sprintf_malloc("device_id=\"%s\" "
+ "name=\"%s\" "
+ "card_name=\"%s\" "
+ "tsched=%s "
+ "ignore_dB=%s "
+ "card_properties=\"module-udev-detect.discovered=1\"",
+ path_get_card_id(path),
+ n,
+ d->card_name,
+ pa_yes_no(u->use_tsched),
+ pa_yes_no(u->ignore_dB));
+ pa_xfree(n);
- 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_hashmap_put(u->devices, d->path, d);
- pa_xfree(n);
+ verify_access(u, d);
}
static void remove_card(struct userdata *u, struct udev_device *dev) {
@@ -172,7 +348,10 @@ static void remove_card(struct userdata *u, struct udev_device *dev) {
return;
pa_log_info("Card %s removed.", d->path);
- pa_module_unload_request_by_index(u->core, d->module, TRUE);
+
+ if (d->module != PA_INVALID_INDEX)
+ pa_module_unload_request_by_index(u->core, d->module, TRUE);
+
device_free(d);
}
@@ -249,6 +428,34 @@ fail:
u->udev_io = NULL;
}
+static pa_bool_t pcm_node_belongs_to_device(
+ struct device *d,
+ const char *node) {
+
+ char *cd;
+ pa_bool_t b;
+
+ cd = pa_sprintf_malloc("pcmC%sD", path_get_card_id(d->path));
+ b = pa_startswith(node, cd);
+ pa_xfree(cd);
+
+ return b;
+}
+
+static pa_bool_t control_node_belongs_to_device(
+ struct device *d,
+ const char *node) {
+
+ char *cd;
+ pa_bool_t b;
+
+ cd = pa_sprintf_malloc("controlC%s", path_get_card_id(d->path));
+ b = pa_streq(node, cd);
+ pa_xfree(cd);
+
+ return b;
+}
+
static void inotify_cb(
pa_mainloop_api*a,
pa_io_event* e,
@@ -262,10 +469,13 @@ static void inotify_cb(
} buf;
struct userdata *u = userdata;
static int type = 0;
- pa_bool_t verify = FALSE;
+ pa_bool_t deleted = FALSE;
+ struct device *d;
+ void *state;
for (;;) {
ssize_t r;
+ struct inotify_event *event;
pa_zero(buf);
if ((r = pa_read(fd, &buf, sizeof(buf), &type)) <= 0) {
@@ -277,25 +487,60 @@ static void inotify_cb(
goto fail;
}
- if ((buf.e.mask & IN_CLOSE_WRITE) && pa_startswith(buf.e.name, "pcmC"))
- verify = TRUE;
+ event = &buf.e;
+ while (r > 0) {
+ size_t len;
+
+ if ((size_t) r < sizeof(struct inotify_event)) {
+ pa_log("read() too short.");
+ goto fail;
+ }
+
+ len = sizeof(struct inotify_event) + event->len;
+
+ if ((size_t) r < len) {
+ pa_log("Payload missing.");
+ goto fail;
+ }
+
+ /* From udev we get the guarantee that the control
+ * device's ACL is changed last. To avoid races when ACLs
+ * are changed we hence watch only the control device */
+ if (((event->mask & IN_ATTRIB) && pa_startswith(event->name, "controlC")))
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ if (control_node_belongs_to_device(d, event->name))
+ d->need_verify = TRUE;
+
+ /* ALSA doesn't really give us any guarantee on the closing
+ * order, so let's simply hope */
+ if (((event->mask & IN_CLOSE_WRITE) && pa_startswith(event->name, "pcmC")))
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ if (pcm_node_belongs_to_device(d, event->name))
+ d->need_verify = TRUE;
+
+ /* /dev/snd/ might have been removed */
+ if ((event->mask & (IN_DELETE_SELF|IN_MOVE_SELF)))
+ deleted = TRUE;
+
+ event = (struct inotify_event*) ((uint8_t*) event + len);
+ r -= len;
+ }
}
- if (verify) {
- struct device *d;
- void *state;
-
- pa_log_debug("Verifying access.");
-
- PA_HASHMAP_FOREACH(d, u->devices, state)
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ if (d->need_verify) {
+ d->need_verify = FALSE;
verify_access(u, d);
- }
+ }
- return;
+ if (!deleted)
+ return;
fail:
- a->io_free(u->inotify_io);
- u->inotify_io = NULL;
+ if (u->inotify_io) {
+ a->io_free(u->inotify_io);
+ u->inotify_io = NULL;
+ }
if (u->inotify_fd >= 0) {
pa_close(u->inotify_fd);
@@ -307,17 +552,38 @@ static int setup_inotify(struct userdata *u) {
char *dev_snd;
int r;
+ if (u->inotify_fd >= 0)
+ return 0;
+
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);
+ r = inotify_add_watch(u->inotify_fd, dev_snd, IN_ATTRIB|IN_CLOSE_WRITE|IN_DELETE_SELF|IN_MOVE_SELF);
pa_xfree(dev_snd);
if (r < 0) {
- pa_log("inotify_add_watch() failed: %s", pa_cstrerror(errno));
+ int saved_errno = errno;
+
+ pa_close(u->inotify_fd);
+ u->inotify_fd = -1;
+
+ if (saved_errno == ENOENT) {
+ pa_log_debug("/dev/snd/ is apparently not existing yet, retrying to create inotify watch later.");
+ return 0;
+ }
+
+ if (saved_errno == ENOSPC) {
+ pa_log("You apparently ran out of inotify watches, probably because Tracker/Beagle took them all away. "
+ "I wished people would do their homework first and fix inotify before using it for watching whole "
+ "directory trees which is something the current inotify is certainly not useful for. "
+ "Please make sure to drop the Tracker/Beagle guys a line complaining about their broken use of inotify.");
+ return 0;
+ }
+
+ pa_log("inotify_add_watch() failed: %s", pa_cstrerror(saved_errno));
return -1;
}
@@ -332,6 +598,7 @@ int pa__init(pa_module *m) {
struct udev_enumerate *enumerate = NULL;
struct udev_list_entry *item = NULL, *first = NULL;
int fd;
+ pa_bool_t use_tsched = TRUE, ignore_dB = FALSE;
pa_assert(m);
@@ -343,13 +610,19 @@ int pa__init(pa_module *m) {
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.");
+ if (pa_modargs_get_value_boolean(ma, "tsched", &use_tsched) < 0) {
+ pa_log("Failed to parse tsched= argument.");
+ goto fail;
+ }
+ u->use_tsched = use_tsched;
+
+ if (pa_modargs_get_value_boolean(ma, "ignore_dB", &ignore_dB) < 0) {
+ pa_log("Failed to parse ignore_dB= argument.");
goto fail;
}
+ u->ignore_dB = ignore_dB;
if (!(u->udev = udev_new())) {
pa_log("Failed to initialize udev library.");
@@ -402,7 +675,7 @@ int pa__init(pa_module *m) {
udev_enumerate_unref(enumerate);
- pa_log_info("Loaded %u modules.", pa_hashmap_size(u->devices));
+ pa_log_info("Found %u cards.", pa_hashmap_size(u->devices));
pa_modargs_free(ma);
diff --git a/src/modules/module-volume-restore.c b/src/modules/module-volume-restore.c
index 91da598e..6e484eae 100644
--- a/src/modules/module-volume-restore.c
+++ b/src/modules/module-volume-restore.c
@@ -48,6 +48,7 @@ static const char* const valid_modargs[] = {
int pa__init(pa_module*m) {
pa_modargs *ma = NULL;
pa_bool_t restore_device = TRUE, restore_volume = TRUE;
+ pa_module *n;
char *t;
pa_assert(m);
@@ -66,13 +67,15 @@ int pa__init(pa_module*m) {
pa_log_warn("We will now load module-stream-restore. Please make sure to remove module-volume-restore from your configuration.");
t = pa_sprintf_malloc("restore_volume=%s restore_device=%s", pa_yes_no(restore_volume), pa_yes_no(restore_device));
- pa_module_load(m->core, "module-stream-restore", t);
+ n = pa_module_load(m->core, "module-stream-restore", t);
pa_xfree(t);
- pa_module_unload_request(m, TRUE);
+ if (n)
+ pa_module_unload_request(m, TRUE);
pa_modargs_free(ma);
- return 0;
+
+ return n ? 0 : -1;
fail:
if (ma)
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index c44b882b..71536260 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -812,11 +812,11 @@ static void sink_get_volume(pa_sink *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM));
if (u->mixer_devmask & SOUND_MASK_VOLUME)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->real_volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_PCM)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->real_volume) >= 0)
return;
pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno));
@@ -830,11 +830,11 @@ static void sink_set_volume(pa_sink *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM));
if (u->mixer_devmask & SOUND_MASK_VOLUME)
- if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->real_volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_PCM)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->real_volume) >= 0)
return;
pa_log_info("Device doesn't support writing mixer settings: %s", pa_cstrerror(errno));
@@ -848,11 +848,11 @@ static void source_get_volume(pa_source *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_IGAIN|SOUND_MASK_RECLEV));
if (u->mixer_devmask & SOUND_MASK_IGAIN)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_RECLEV)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->volume) >= 0)
return;
pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno));
@@ -866,11 +866,11 @@ static void source_set_volume(pa_source *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_IGAIN|SOUND_MASK_RECLEV));
if (u->mixer_devmask & SOUND_MASK_IGAIN)
- if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_RECLEV)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->volume) >= 0)
return;
pa_log_info("Device doesn't support writing mixer settings: %s", pa_cstrerror(errno));
diff --git a/src/modules/raop/base64.c b/src/modules/raop/base64.c
index e1cbed02..5b061034 100644
--- a/src/modules/raop/base64.c
+++ b/src/modules/raop/base64.c
@@ -57,7 +57,6 @@ int pa_base64_encode(const void *data, int size, char **str)
p = s = pa_xnew(char, size * 4 / 3 + 4);
q = (const unsigned char *) data;
- i = 0;
for (i = 0; i < size;) {
c = q[i++];
c *= 256;
diff --git a/src/modules/raop/module-raop-sink.c b/src/modules/raop/module-raop-sink.c
index 9699132d..ac48ab10 100644
--- a/src/modules/raop/module-raop-sink.c
+++ b/src/modules/raop/module-raop-sink.c
@@ -283,15 +283,15 @@ static void sink_set_volume_cb(pa_sink *s) {
/* Calculate the max volume of all channels.
We'll use this as our (single) volume on the APEX device and emulate
any variation in channel volumes in software */
- v = pa_cvolume_max(&s->virtual_volume);
+ v = pa_cvolume_max(&s->real_volume);
/* Create a pa_cvolume version of our single value */
pa_cvolume_set(&hw, s->sample_spec.channels, v);
/* Perform any software manipulation of the volume needed */
- pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &hw);
+ pa_sw_cvolume_divide(&s->soft_volume, &s->real_volume, &hw);
- pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume));
+ pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->real_volume));
pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &hw));
pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume));
diff --git a/src/modules/reserve-monitor.c b/src/modules/reserve-monitor.c
index 13ecde2b..ab453e61 100644
--- a/src/modules/reserve-monitor.c
+++ b/src/modules/reserve-monitor.c
@@ -38,6 +38,7 @@ struct rm_monitor {
char *device_name;
char *service_name;
+ char *match;
DBusConnection *connection;
@@ -51,12 +52,18 @@ struct rm_monitor {
#define SERVICE_PREFIX "org.freedesktop.ReserveDevice1."
+#define SERVICE_FILTER \
+ "type='signal'," \
+ "sender='" DBUS_SERVICE_DBUS "'," \
+ "interface='" DBUS_INTERFACE_DBUS "'," \
+ "member='NameOwnerChanged'," \
+ "arg0='%s'"
+
static DBusHandlerResult filter_handler(
DBusConnection *c,
DBusMessage *s,
void *userdata) {
- DBusMessage *reply;
rm_monitor *m;
DBusError error;
@@ -97,31 +104,10 @@ static DBusHandlerResult filter_handler(
}
}
- 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;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
int rm_watch(
@@ -175,11 +161,13 @@ int rm_watch(
m->filtering = 1;
- dbus_bus_add_match(m->connection,
- "type='signal',"
- "sender='" DBUS_SERVICE_DBUS "',"
- "interface='" DBUS_INTERFACE_DBUS "',"
- "member='NameOwnerChanged'", error);
+ if (!(m->match = malloc(sizeof(SERVICE_FILTER) - 2 + strlen(m->service_name)))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ sprintf(m->match, SERVICE_FILTER, m->service_name);
+ dbus_bus_add_match(m->connection, m->match, error);
if (dbus_error_is_set(error)) {
r = -EIO;
@@ -220,10 +208,8 @@ void rm_release(rm_monitor *m) {
if (m->matching)
dbus_bus_remove_match(
m->connection,
- "type='signal',"
- "sender='" DBUS_SERVICE_DBUS "',"
- "interface='" DBUS_INTERFACE_DBUS "',"
- "member='NameOwnerChanged'", NULL);
+ m->match,
+ NULL);
if (m->filtering)
dbus_connection_remove_filter(
@@ -233,6 +219,7 @@ void rm_release(rm_monitor *m) {
free(m->device_name);
free(m->service_name);
+ free(m->match);
if (m->connection)
dbus_connection_unref(m->connection);
diff --git a/src/modules/reserve.c b/src/modules/reserve.c
index 5597f177..b4c168cf 100644
--- a/src/modules/reserve.c
+++ b/src/modules/reserve.c
@@ -291,7 +291,6 @@ static DBusHandlerResult filter_handler(
DBusMessage *m,
void *userdata) {
- DBusMessage *reply;
rd_device *d;
DBusError error;
@@ -323,35 +322,13 @@ static DBusHandlerResult filter_handler(
rd_release(d);
}
- return DBUS_HANDLER_RESULT_HANDLED;
}
}
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
invalid:
- if (!(reply = dbus_message_new_error(
- m,
- 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;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
diff --git a/src/modules/rtp/module-rtp-recv.c b/src/modules/rtp/module-rtp-recv.c
index 5caf8272..1a05f57d 100644
--- a/src/modules/rtp/module-rtp-recv.c
+++ b/src/modules/rtp/module-rtp-recv.c
@@ -361,7 +361,7 @@ static void sink_input_attach(pa_sink_input *i) {
pa_assert_se(s = i->userdata);
pa_assert(!s->rtpoll_item);
- s->rtpoll_item = pa_rtpoll_item_new(i->sink->rtpoll, PA_RTPOLL_LATE, 1);
+ s->rtpoll_item = pa_rtpoll_item_new(i->sink->thread_info.rtpoll, PA_RTPOLL_LATE, 1);
p = pa_rtpoll_item_get_pollfd(s->rtpoll_item, NULL);
p->fd = s->rtp_context.fd;
@@ -501,8 +501,9 @@ static struct session *session_new(struct userdata *u, const pa_sdp_info *sdp_in
pa_proplist_setf(data.proplist, "rtp.payload", "%u", (unsigned) sdp_info->payload);
data.module = u->module;
pa_sink_input_new_data_set_sample_spec(&data, &sdp_info->sample_spec);
+ data.flags = PA_SINK_INPUT_VARIABLE_RATE;
- pa_sink_input_new(&s->sink_input, u->module->core, &data, PA_SINK_INPUT_VARIABLE_RATE);
+ pa_sink_input_new(&s->sink_input, u->module->core, &data);
pa_sink_input_new_data_done(&data);
if (!s->sink_input) {
diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c
index f147364d..8e1cfe36 100644
--- a/src/modules/rtp/module-rtp-send.c
+++ b/src/modules/rtp/module-rtp-send.c
@@ -330,8 +330,9 @@ int pa__init(pa_module*m) {
data.source = s;
pa_source_output_new_data_set_sample_spec(&data, &ss);
pa_source_output_new_data_set_channel_map(&data, &cm);
+ data.flags = PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND;
- pa_source_output_new(&o, m->core, &data, PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND);
+ pa_source_output_new(&o, m->core, &data);
pa_source_output_new_data_done(&data);
if (!o) {
diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c
index 72d304e8..915c1072 100644
--- a/src/modules/rtp/rtsp_client.c
+++ b/src/modules/rtp/rtsp_client.c
@@ -214,11 +214,13 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
/* End of headers */
/* We will have a header left from our looping iteration, so add it in :) */
if (c->last_header) {
+ char *tmp = pa_strbuf_tostring_free(c->header_buffer);
/* This is not a continuation header so let's dump it into our proplist */
- pa_headerlist_puts(c->response_headers, c->last_header, pa_strbuf_tostring_free(c->header_buffer));
+ pa_headerlist_puts(c->response_headers, c->last_header, tmp);
+ pa_xfree(tmp);
pa_xfree(c->last_header);
c->last_header = NULL;
- c->header_buffer= NULL;
+ c->header_buffer = NULL;
}
pa_log_debug("Full response received. Dispatching");
@@ -240,9 +242,11 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
}
if (c->last_header) {
+ char *tmp = pa_strbuf_tostring_free(c->header_buffer);
/* This is not a continuation header so let's dump the full
header/value into our proplist */
- pa_headerlist_puts(c->response_headers, c->last_header, pa_strbuf_tostring_free(c->header_buffer));
+ pa_headerlist_puts(c->response_headers, c->last_header, tmp);
+ pa_xfree(tmp);
pa_xfree(c->last_header);
c->last_header = NULL;
c->header_buffer = NULL;
@@ -452,6 +456,8 @@ static int rtsp_exec(pa_rtsp_client* c, const char* cmd,
l = pa_iochannel_write(c->io, hdrs, strlen(hdrs));
pa_xfree(hdrs);
+ /* FIXME: this is broken, not necessarily all bytes are written */
+
return 0;
}
diff --git a/src/modules/x11/module-x11-publish.c b/src/modules/x11/module-x11-publish.c
index 2c7fdc12..7ee1b6da 100644
--- a/src/modules/x11/module-x11-publish.c
+++ b/src/modules/x11/module-x11-publish.c
@@ -90,7 +90,7 @@ static void publish_servers(struct userdata *u, pa_strlist *l) {
l = pa_strlist_reverse(l);
s = pa_strlist_tostring(l);
- l = pa_strlist_reverse(l);
+ pa_strlist_reverse(l);
pa_x11_set_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_SERVER", s);
pa_xfree(s);
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index 88823012..9b516262 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -219,11 +219,11 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p
case 6:
m->map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;
- m->map[1] = PA_CHANNEL_POSITION_REAR_LEFT;
+ m->map[1] = PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
m->map[2] = PA_CHANNEL_POSITION_FRONT_CENTER;
m->map[3] = PA_CHANNEL_POSITION_FRONT_RIGHT;
- m->map[4] = PA_CHANNEL_POSITION_REAR_RIGHT;
- m->map[5] = PA_CHANNEL_POSITION_LFE;
+ m->map[4] = PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
+ m->map[5] = PA_CHANNEL_POSITION_REAR_CENTER;
return m;
case 5:
@@ -247,7 +247,7 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p
m->map[0] = PA_CHANNEL_POSITION_LEFT;
m->map[1] = PA_CHANNEL_POSITION_CENTER;
m->map[2] = PA_CHANNEL_POSITION_RIGHT;
- m->map[3] = PA_CHANNEL_POSITION_LFE;
+ m->map[3] = PA_CHANNEL_POSITION_REAR_CENTER;
return m;
default:
@@ -299,6 +299,8 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p
case PA_CHANNEL_MAP_WAVEEX:
+ /* Following http://www.microsoft.com/whdc/device/audio/multichaud.mspx#EKLAC */
+
switch (channels) {
case 1:
m->map[0] = PA_CHANNEL_POSITION_MONO;
@@ -451,6 +453,10 @@ int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) {
pa_assert(b);
pa_return_val_if_fail(pa_channel_map_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_channel_map_valid(b), 0);
if (a->channels != b->channels)
@@ -639,6 +645,10 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
pa_assert(b);
pa_return_val_if_fail(pa_channel_map_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_channel_map_valid(b), 0);
am = pa_channel_map_mask(a);
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index d7901ac2..469effc8 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -216,17 +216,27 @@ typedef enum pa_channel_map_def {
PA_CHANNEL_MAP_AIFF,
/**< The mapping from RFC3551, which is based on AIFF-C */
+/** \cond fulldocs */
PA_CHANNEL_MAP_ALSA,
- /**< The default mapping used by ALSA */
+ /**< The default mapping used by ALSA. This mapping is probably
+ * not too useful since ALSA's default channel mapping depends on
+ * the device string used. */
+/** \endcond */
PA_CHANNEL_MAP_AUX,
/**< Only aux channels */
PA_CHANNEL_MAP_WAVEEX,
- /**< Microsoft's WAVEFORMATEXTENSIBLE mapping */
+ /**< Microsoft's WAVEFORMATEXTENSIBLE mapping. This mapping works
+ * as if all LSBs of dwChannelMask are set. */
+/** \cond fulldocs */
PA_CHANNEL_MAP_OSS,
- /**< The default channel mapping used by OSS as defined in the OSS 4.0 API specs */
+ /**< The default channel mapping used by OSS as defined in the OSS
+ * 4.0 API specs. This mapping is probably not too useful since
+ * the OSS API has changed in this respect and no longer knows a
+ * default channel mapping based on the number of channels. */
+/** \endcond */
/**< Upper limit of valid channel mapping definitions */
PA_CHANNEL_MAP_DEF_MAX,
@@ -282,7 +292,7 @@ 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 */
+/** 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 */
diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c
index 940d0b67..4aa4ba1f 100644
--- a/src/pulse/client-conf.c
+++ b/src/pulse/client-conf.c
@@ -92,16 +92,17 @@ int pa_client_conf_load(pa_client_conf *c, const char *filename) {
/* Prepare the configuration parse table */
pa_config_item table[] = {
- { "daemon-binary", pa_config_parse_string, &c->daemon_binary, NULL },
- { "extra-arguments", pa_config_parse_string, &c->extra_arguments, NULL },
- { "default-sink", pa_config_parse_string, &c->default_sink, NULL },
- { "default-source", pa_config_parse_string, &c->default_source, NULL },
- { "default-server", pa_config_parse_string, &c->default_server, NULL },
- { "autospawn", pa_config_parse_bool, &c->autospawn, NULL },
- { "cookie-file", pa_config_parse_string, &c->cookie_file, NULL },
- { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
- { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL },
- { NULL, NULL, NULL, NULL },
+ { "daemon-binary", pa_config_parse_string, &c->daemon_binary, NULL },
+ { "extra-arguments", pa_config_parse_string, &c->extra_arguments, NULL },
+ { "default-sink", pa_config_parse_string, &c->default_sink, NULL },
+ { "default-source", pa_config_parse_string, &c->default_source, NULL },
+ { "default-server", pa_config_parse_string, &c->default_server, NULL },
+ { "autospawn", pa_config_parse_bool, &c->autospawn, NULL },
+ { "cookie-file", pa_config_parse_string, &c->cookie_file, NULL },
+ { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
+ { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL },
+ { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL },
+ { NULL, NULL, NULL, NULL },
};
if (filename) {
diff --git a/src/pulse/client.conf.in b/src/pulse/client.conf.in
index 579bcc20..6c8d371c 100644
--- a/src/pulse/client.conf.in
+++ b/src/pulse/client.conf.in
@@ -29,5 +29,5 @@
; cookie-file =
-; disable-shm = no
+; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 4ded5565..894ab2e0 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -668,11 +668,24 @@ static pa_strlist *prepend_per_user(pa_strlist *l) {
static int context_autospawn(pa_context *c) {
pid_t pid;
int status, r;
-
- pa_log_debug("Trying to autospawn...");
+ struct sigaction sa;
pa_context_ref(c);
+ if (sigaction(SIGCHLD, NULL, &sa) < 0) {
+ pa_log_debug("sigaction() failed: %s", pa_cstrerror(errno));
+ pa_context_fail(c, PA_ERR_INTERNAL);
+ goto fail;
+ }
+
+ if ((sa.sa_flags & SA_NOCLDWAIT) || sa.sa_handler == SIG_IGN) {
+ pa_log_debug("Process disabled waitpid(), cannot autospawn.");
+ pa_context_fail(c, PA_ERR_CONNECTIONREFUSED);
+ goto fail;
+ }
+
+ pa_log_debug("Trying to autospawn...");
+
if (c->spawn_api.prefork)
c->spawn_api.prefork();
@@ -688,23 +701,23 @@ static int context_autospawn(pa_context *c) {
/* Child */
const char *state = NULL;
-#define MAX_ARGS 64
- const char * argv[MAX_ARGS+1];
- int n;
+ const char * argv[32];
+ unsigned n = 0;
if (c->spawn_api.atfork)
c->spawn_api.atfork();
+ /* We leave most of the cleaning up of the process environment
+ * to the executable. We only clean up the file descriptors to
+ * make sure the executable can actually be loaded
+ * correctly. */
pa_close_all(-1);
/* Setup argv */
-
- n = 0;
-
argv[n++] = c->conf->daemon_binary;
argv[n++] = "--start";
- while (n < MAX_ARGS) {
+ while (n < PA_ELEMENTSOF(argv)-1) {
char *a;
if (!(a = pa_split_spaces(c->conf->extra_arguments, &state)))
@@ -714,10 +727,10 @@ static int context_autospawn(pa_context *c) {
}
argv[n++] = NULL;
+ pa_assert(n <= PA_ELEMENTSOF(argv));
execv(argv[0], (char * const *) argv);
_exit(1);
-#undef MAX_ARGS
}
/* Parent */
@@ -730,9 +743,16 @@ static int context_autospawn(pa_context *c) {
} while (r < 0 && errno == EINTR);
if (r < 0) {
- pa_log(_("waitpid(): %s"), pa_cstrerror(errno));
- pa_context_fail(c, PA_ERR_INTERNAL);
- goto fail;
+
+ if (errno != ESRCH) {
+ pa_log(_("waitpid(): %s"), pa_cstrerror(errno));
+ pa_context_fail(c, PA_ERR_INTERNAL);
+ goto fail;
+ }
+
+ /* hmm, something already reaped our child, so we assume
+ * startup worked, even if we cannot know */
+
} else if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
pa_context_fail(c, PA_ERR_CONNECTIONREFUSED);
goto fail;
diff --git a/src/pulse/context.h b/src/pulse/context.h
index cd129313..ecff58df 100644
--- a/src/pulse/context.h
+++ b/src/pulse/context.h
@@ -147,12 +147,6 @@
* server. A pa_context object wraps a connection to a PulseAudio
* server using its native protocol. */
-/** \example pacat.c
- * A playback and recording tool using the asynchronous API */
-
-/** \example paplay.c
- * A sound file playback tool using the asynchronous API, based on libsndfile */
-
PA_C_DECL_BEGIN
/** An opaque connection context to a daemon */
@@ -267,7 +261,6 @@ pa_time_event* pa_context_rttime_new(pa_context *c, pa_usec_t usec, pa_time_even
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 08399ca8..1a7da974 100644
--- a/src/pulse/def.h
+++ b/src/pulse/def.h
@@ -394,6 +394,7 @@ enum {
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_BUSY, /**< Device or resource busy. \since 0.9.17 */
PA_ERR_MAX /**< Not really an error but the first invalid error code */
};
diff --git a/src/pulse/error.c b/src/pulse/error.c
index 93a13fc6..e8276990 100644
--- a/src/pulse/error.c
+++ b/src/pulse/error.c
@@ -64,7 +64,9 @@ const char*pa_strerror(int error) {
[PA_ERR_NOEXTENSION] = N_("No such extension"),
[PA_ERR_OBSOLETE] = N_("Obsolete functionality"),
[PA_ERR_NOTIMPLEMENTED] = N_("Missing implementation"),
- [PA_ERR_FORKED] = N_("Client forked")
+ [PA_ERR_FORKED] = N_("Client forked"),
+ [PA_ERR_IO] = N_("Input/Output error"),
+ [PA_ERR_BUSY] = N_("Device or resource busy")
};
pa_init_i18n();
diff --git a/src/pulse/ext-stream-restore.c b/src/pulse/ext-stream-restore.c
index 63c911f8..10e9fd5d 100644
--- a/src/pulse/ext-stream-restore.c
+++ b/src/pulse/ext-stream-restore.c
@@ -239,13 +239,10 @@ pa_operation *pa_ext_stream_restore_write(
return o;
fail:
- if (o) {
- pa_operation_cancel(o);
- pa_operation_unref(o);
- }
+ pa_operation_cancel(o);
+ pa_operation_unref(o);
- if (t)
- pa_tagstruct_free(t);
+ pa_tagstruct_free(t);
pa_context_set_error(c, PA_ERR_INVALID);
return NULL;
@@ -290,13 +287,10 @@ pa_operation *pa_ext_stream_restore_delete(
return o;
fail:
- if (o) {
- pa_operation_cancel(o);
- pa_operation_unref(o);
- }
+ pa_operation_cancel(o);
+ pa_operation_unref(o);
- if (t)
- pa_tagstruct_free(t);
+ pa_tagstruct_free(t);
pa_context_set_error(c, PA_ERR_INVALID);
return NULL;
diff --git a/src/pulse/glib-mainloop.h b/src/pulse/glib-mainloop.h
index 189513a8..67aba27d 100644
--- a/src/pulse/glib-mainloop.h
+++ b/src/pulse/glib-mainloop.h
@@ -56,7 +56,9 @@ pa_glib_mainloop *pa_glib_mainloop_new(GMainContext *c);
/** Free the GLIB main loop object */
void pa_glib_mainloop_free(pa_glib_mainloop* g);
-/** Return the abstract main loop API vtable for the GLIB main loop object */
+/** Return the abstract main loop API vtable for the GLIB main loop
+ object. No need of freeing the API as it is owned by the loop and
+ it is destroyed when this dies */
pa_mainloop_api* pa_glib_mainloop_get_api(pa_glib_mainloop *g);
PA_C_DECL_END
diff --git a/src/pulse/internal.h b/src/pulse/internal.h
index ec2da85b..e069c9e9 100644
--- a/src/pulse/internal.h
+++ b/src/pulse/internal.h
@@ -151,6 +151,11 @@ struct pa_stream {
uint32_t device_index;
char *device_name;
+ /* playback */
+ pa_memblock *write_memblock;
+ void *write_data;
+
+ /* recording */
pa_memchunk peek_memchunk;
void *peek_data;
pa_memblockq *record_memblockq;
diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c
index 27a587cb..100413ee 100644
--- a/src/pulse/introspect.c
+++ b/src/pulse/introspect.c
@@ -834,6 +834,8 @@ pa_operation* pa_context_get_card_info_by_name(pa_context *c, const char*name, p
}
pa_operation* pa_context_get_card_info_list(pa_context *c, pa_card_info_cb_t cb, void *userdata) {
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 15, PA_ERR_NOTSUPPORTED);
+
return pa_context_send_simple_command(c, PA_COMMAND_GET_CARD_INFO_LIST, context_get_card_info_callback, (pa_operation_cb_t) cb, userdata);
}
diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
index ee982100..68cfc874 100644
--- a/src/pulse/introspect.h
+++ b/src/pulse/introspect.h
@@ -331,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);
+/** Suspend/Resume a source. \since 0.9.7 */
+pa_operation* pa_context_suspend_source_by_name(pa_context *c, const char *source_name, int suspend, pa_context_success_cb_t cb, void* userdata);
+
+/** Suspend/Resume a source. If idx is PA_INVALID_INDEX all sources will be suspended. \since 0.9.7 */
+pa_operation* pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, int suspend, 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);
@@ -557,12 +563,6 @@ pa_operation* pa_context_move_source_output_by_name(pa_context *c, uint32_t idx,
/** Move the specified source output to a different source. \since 0.9.5 */
pa_operation* pa_context_move_source_output_by_index(pa_context *c, uint32_t idx, uint32_t source_idx, pa_context_success_cb_t cb, void* userdata);
-/** Suspend/Resume a source. \since 0.9.7 */
-pa_operation* pa_context_suspend_source_by_name(pa_context *c, const char *source_name, int suspend, pa_context_success_cb_t cb, void* userdata);
-
-/** Suspend/Resume a source. If idx is PA_INVALID_INDEX all sources will be suspended. \since 0.9.7 */
-pa_operation* pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void* userdata);
-
/** Kill a source output. */
pa_operation* pa_context_kill_source_output(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata);
diff --git a/src/pulse/mainloop.c b/src/pulse/mainloop.c
index c418d108..93a4742d 100644
--- a/src/pulse/mainloop.c
+++ b/src/pulse/mainloop.c
@@ -765,23 +765,22 @@ static pa_time_event* find_next_time_event(pa_mainloop *m) {
static int calc_next_timeout(pa_mainloop *m) {
pa_time_event *t;
- pa_usec_t usec;
+ pa_usec_t clock_now;
if (!m->n_enabled_time_events)
return -1;
- t = find_next_time_event(m);
- pa_assert(t);
+ pa_assert_se(t = find_next_time_event(m));
- if (t->time == 0)
+ if (t->time <= 0)
return 0;
- usec = t->time - pa_rtclock_now();
+ clock_now = pa_rtclock_now();
- if (usec <= 0)
+ if (t->time <= clock_now)
return 0;
- return (int) (usec / 1000); /* in milliseconds */
+ return (int) ((t->time - clock_now) / 1000); /* in milliseconds */
}
static int dispatch_timeout(pa_mainloop *m) {
diff --git a/src/pulse/mainloop.h b/src/pulse/mainloop.h
index 4a83ebe8..63abd588 100644
--- a/src/pulse/mainloop.h
+++ b/src/pulse/mainloop.h
@@ -108,7 +108,9 @@ int pa_mainloop_iterate(pa_mainloop *m, int block, int *retval);
/** Run unlimited iterations of the main loop object until the main loop's quit() routine is called. */
int pa_mainloop_run(pa_mainloop *m, int *retval);
-/** Return the abstract main loop abstraction layer vtable for this main loop. */
+/** Return the abstract main loop abstraction layer vtable for this
+ main loop. No need of freeing the API as it is owned by the loop
+ and it is destroyed when this dies */
pa_mainloop_api* pa_mainloop_get_api(pa_mainloop*m);
/** Shutdown the main loop */
diff --git a/src/pulse/operation.h b/src/pulse/operation.h
index 7b0dabdd..b6b5691d 100644
--- a/src/pulse/operation.h
+++ b/src/pulse/operation.h
@@ -40,7 +40,11 @@ pa_operation *pa_operation_ref(pa_operation *o);
/** Decrease the reference count by one */
void pa_operation_unref(pa_operation *o);
-/** Cancel the operation. Beware! This will not necessarily cancel the execution of the operation on the server side. */
+/** Cancel the operation. Beware! This will not necessarily cancel the
+ * execution of the operation on the server side. However it will make
+ * sure that the callback associated with this operation will not be
+ * called anymore, effectively disabling the operation from the client
+ * side's view. */
void pa_operation_cancel(pa_operation *o);
/** Return the current status of the operation */
diff --git a/src/pulse/proplist.c b/src/pulse/proplist.c
index c904f533..048b241a 100644
--- a/src/pulse/proplist.c
+++ b/src/pulse/proplist.c
@@ -251,7 +251,7 @@ int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nb
pa_assert(p);
pa_assert(key);
- pa_assert(data);
+ pa_assert(data || nbytes == 0);
if (!property_name_valid(key))
return -1;
@@ -264,7 +264,8 @@ int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nb
pa_xfree(prop->value);
prop->value = pa_xmalloc(nbytes+1);
- memcpy(prop->value, data, nbytes);
+ if (nbytes > 0)
+ memcpy(prop->value, data, nbytes);
((char*) prop->value)[nbytes] = 0;
prop->nbytes = nbytes;
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index bc4dbd8a..8bf9c482 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -97,6 +97,24 @@ PA_C_DECL_BEGIN
/** For streams that belong to a window on the screen: an XDG icon name for the window. e.g. "totem" */
#define PA_PROP_WINDOW_ICON_NAME "window.icon_name"
+/** For streams that belong to a window on the screen: absolute horizontal window position on the screen, integer formatted as text string. e.g. "865". \since 0.9.17 */
+#define PA_PROP_WINDOW_X "window.x"
+
+/** For streams that belong to a window on the screen: absolute vertical window position on the screen, integer formatted as text string. e.g. "343". \since 0.9.17 */
+#define PA_PROP_WINDOW_Y "window.y"
+
+/** For streams that belong to a window on the screen: window width on the screen, integer formatted as text string. e.g. "365". \since 0.9.17 */
+#define PA_PROP_WINDOW_WIDTH "window.width"
+
+/** For streams that belong to a window on the screen: window height on the screen, integer formatted as text string. e.g. "643". \since 0.9.17 */
+#define PA_PROP_WINDOW_HEIGHT "window.height"
+
+/** For streams that belong to a window on the screen: relative position of the window center on the screen, float formatted as text string, ranging from 0.0 (left side of the screen) to 1.0 (right side of the screen). e.g. "0.65". \since 0.9.17 */
+#define PA_PROP_WINDOW_HPOS "window.hpos"
+
+/** For streams that belong to a window on the screen: relative position of the window center on the screen, float formatted as text string, ranging from 0.0 (top of the screen) to 1.0 (bottom of the screen). e.g. "0.43". \since 0.9.17 */
+#define PA_PROP_WINDOW_VPOS "window.vpos"
+
/** For streams that belong to an X11 window on the screen: the X11 display string. e.g. ":0.0" */
#define PA_PROP_WINDOW_X11_DISPLAY "window.x11.display"
@@ -197,7 +215,7 @@ PA_C_DECL_BEGIN
/** For filter devices: master device id if applicable. */
#define PA_PROP_DEVICE_MASTER_DEVICE "device.master_device"
-/** For devices: buffer size in bytes, integer formatted as string.. */
+/** For devices: buffer size in bytes, integer formatted as string. */
#define PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE "device.buffering.buffer_size"
/** For devices: fragment size in bytes, integer formatted as string. */
diff --git a/src/pulse/pulseaudio.h b/src/pulse/pulseaudio.h
index aa369e69..793ba9b1 100644
--- a/src/pulse/pulseaudio.h
+++ b/src/pulse/pulseaudio.h
@@ -44,15 +44,17 @@
#include <pulse/util.h>
#include <pulse/timeval.h>
#include <pulse/proplist.h>
+#include <pulse/rtclock.h>
/** \file
- * Include all libpulse header files at once. The following
- * files are included: \ref mainloop-api.h, \ref sample.h, \ref def.h,
- * \ref context.h, \ref stream.h, \ref introspect.h, \ref subscribe.h,
- * \ref scache.h, \ref version.h, \ref error.h, \ref channelmap.h,
- * \ref operation.h,\ref volume.h, \ref xmalloc.h, \ref utf8.h, \ref
- * thread-mainloop.h, \ref mainloop.h, \ref util.h, \ref proplist.h, \ref timeval.h and
- * \ref mainloop-signal.h at once */
+ * Include all libpulse header files at once. The following files are
+ * included: \ref mainloop-api.h, \ref sample.h, \ref def.h, \ref
+ * context.h, \ref stream.h, \ref introspect.h, \ref subscribe.h, \ref
+ * scache.h, \ref version.h, \ref error.h, \ref channelmap.h, \ref
+ * operation.h,\ref volume.h, \ref xmalloc.h, \ref utf8.h, \ref
+ * thread-mainloop.h, \ref mainloop.h, \ref util.h, \ref proplist.h,
+ * \ref timeval.h, \ref rtclock.h and \ref mainloop-signal.h at
+ * once */
/** \mainpage
*
diff --git a/src/pulse/sample.c b/src/pulse/sample.c
index 0f19f8eb..9698d8a5 100644
--- a/src/pulse/sample.c
+++ b/src/pulse/sample.c
@@ -36,28 +36,27 @@
#include "sample.h"
-size_t pa_sample_size_of_format(pa_sample_format_t f) {
-
- static const size_t table[] = {
- [PA_SAMPLE_U8] = 1,
- [PA_SAMPLE_ULAW] = 1,
- [PA_SAMPLE_ALAW] = 1,
- [PA_SAMPLE_S16LE] = 2,
- [PA_SAMPLE_S16BE] = 2,
- [PA_SAMPLE_FLOAT32LE] = 4,
- [PA_SAMPLE_FLOAT32BE] = 4,
- [PA_SAMPLE_S32LE] = 4,
- [PA_SAMPLE_S32BE] = 4,
- [PA_SAMPLE_S24LE] = 3,
- [PA_SAMPLE_S24BE] = 3,
- [PA_SAMPLE_S24_32LE] = 4,
- [PA_SAMPLE_S24_32BE] = 4
- };
+static const size_t size_table[] = {
+ [PA_SAMPLE_U8] = 1,
+ [PA_SAMPLE_ULAW] = 1,
+ [PA_SAMPLE_ALAW] = 1,
+ [PA_SAMPLE_S16LE] = 2,
+ [PA_SAMPLE_S16BE] = 2,
+ [PA_SAMPLE_FLOAT32LE] = 4,
+ [PA_SAMPLE_FLOAT32BE] = 4,
+ [PA_SAMPLE_S32LE] = 4,
+ [PA_SAMPLE_S32BE] = 4,
+ [PA_SAMPLE_S24LE] = 3,
+ [PA_SAMPLE_S24BE] = 3,
+ [PA_SAMPLE_S24_32LE] = 4,
+ [PA_SAMPLE_S24_32BE] = 4
+};
+size_t pa_sample_size_of_format(pa_sample_format_t f) {
pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
- return table[f];
+ return size_table[f];
}
size_t pa_sample_size(const pa_sample_spec *spec) {
@@ -65,35 +64,35 @@ size_t pa_sample_size(const pa_sample_spec *spec) {
pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0);
- return pa_sample_size_of_format(spec->format);
+ return size_table[spec->format];
}
size_t pa_frame_size(const pa_sample_spec *spec) {
pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0);
- return pa_sample_size(spec) * spec->channels;
+ return size_table[spec->format] * spec->channels;
}
size_t pa_bytes_per_second(const pa_sample_spec *spec) {
pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0);
- return spec->rate*pa_frame_size(spec);
+ return spec->rate * size_table[spec->format] * spec->channels;
}
pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec *spec) {
pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0);
- return (((pa_usec_t) (length / pa_frame_size(spec)) * PA_USEC_PER_SEC) / spec->rate);
+ return (((pa_usec_t) (length / (size_table[spec->format] * spec->channels)) * PA_USEC_PER_SEC) / spec->rate);
}
size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec *spec) {
pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0);
- return (size_t) (((t * spec->rate) / PA_USEC_PER_SEC)) * pa_frame_size(spec);
+ return (size_t) (((t * spec->rate) / PA_USEC_PER_SEC)) * (size_table[spec->format] * spec->channels);
}
pa_sample_spec* pa_sample_spec_init(pa_sample_spec *spec) {
@@ -109,12 +108,12 @@ pa_sample_spec* pa_sample_spec_init(pa_sample_spec *spec) {
int pa_sample_spec_valid(const pa_sample_spec *spec) {
pa_assert(spec);
- if (spec->rate <= 0 ||
+ if (PA_UNLIKELY (spec->rate <= 0 ||
spec->rate > PA_RATE_MAX ||
spec->channels <= 0 ||
spec->channels > PA_CHANNELS_MAX ||
spec->format >= PA_SAMPLE_MAX ||
- spec->format < 0)
+ spec->format < 0))
return 0;
return 1;
@@ -125,6 +124,10 @@ int pa_sample_spec_equal(const pa_sample_spec*a, const pa_sample_spec*b) {
pa_assert(b);
pa_return_val_if_fail(pa_sample_spec_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_sample_spec_valid(b), 0);
return
diff --git a/src/pulse/sample.h b/src/pulse/sample.h
index 53d7dea3..7a4a55a0 100644
--- a/src/pulse/sample.h
+++ b/src/pulse/sample.h
@@ -302,6 +302,13 @@ pa_sample_format_t pa_parse_sample_format(const char *format) PA_GCC_PURE;
/** Pretty print a sample type specification to a string */
char* pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec *spec);
+/** Maximum required string length for pa_bytes_snprint(). Please note
+ * that this value can change with any release without warning and
+ * without being considered API or ABI breakage. You should not use
+ * this definition anywhere where it might become part of an
+ * ABI. \since 0.9.16 */
+#define PA_BYTES_SNPRINT_MAX 11
+
/** Pretty print a byte size value. (i.e. "2.5 MiB") */
char* pa_bytes_snprint(char *s, size_t l, unsigned v);
diff --git a/src/pulse/scache.c b/src/pulse/scache.c
index 77f60d72..27da6887 100644
--- a/src/pulse/scache.c
+++ b/src/pulse/scache.c
@@ -187,7 +187,7 @@ pa_operation *pa_context_play_sample(pa_context *c, const char *name, const char
pa_tagstruct_putu32(t, PA_INVALID_INDEX);
pa_tagstruct_puts(t, dev);
- if (volume == (pa_volume_t) -1 && c->version < 15)
+ if (volume == PA_VOLUME_INVALID && c->version < 15)
volume = PA_VOLUME_NORM;
pa_tagstruct_putu32(t, volume);
@@ -216,7 +216,6 @@ pa_operation *pa_context_play_sample_with_proplist(pa_context *c, const char *na
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, !dev || *dev, PA_ERR_INVALID);
- PA_CHECK_VALIDITY_RETURN_NULL(c, p, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 13, PA_ERR_NOTSUPPORTED);
o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
@@ -228,12 +227,19 @@ pa_operation *pa_context_play_sample_with_proplist(pa_context *c, const char *na
pa_tagstruct_putu32(t, PA_INVALID_INDEX);
pa_tagstruct_puts(t, dev);
- if (volume == (pa_volume_t) -1 && c->version < 15)
+ if (volume == PA_VOLUME_INVALID && c->version < 15)
volume = PA_VOLUME_NORM;
pa_tagstruct_putu32(t, volume);
pa_tagstruct_puts(t, name);
- pa_tagstruct_put_proplist(t, p);
+
+ if (p)
+ pa_tagstruct_put_proplist(t, p);
+ else {
+ p = pa_proplist_new();
+ pa_tagstruct_put_proplist(t, p);
+ pa_proplist_free(p);
+ }
pa_pstream_send_tagstruct(c->pstream, t);
pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, play_sample_with_proplist_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref);
diff --git a/src/pulse/scache.h b/src/pulse/scache.h
index cd579d2e..31cf7b01 100644
--- a/src/pulse/scache.h
+++ b/src/pulse/scache.h
@@ -101,7 +101,7 @@ pa_operation* pa_context_play_sample(
pa_context *c /**< Context */,
const char *name /**< Name of the sample to play */,
const char *dev /**< Sink to play this sample on */,
- pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here (pa_volume_t) -1 which will leave the decision about the volume to the server side which is a good idea. */ ,
+ pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here PA_VOLUME_INVALID which will leave the decision about the volume to the server side which is a good idea. */ ,
pa_context_success_cb_t cb /**< Call this function after successfully starting playback, or NULL */,
void *userdata /**< Userdata to pass to the callback */);
@@ -113,7 +113,7 @@ pa_operation* pa_context_play_sample_with_proplist(
pa_context *c /**< Context */,
const char *name /**< Name of the sample to play */,
const char *dev /**< Sink to play this sample on */,
- pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here (pa_volume_t) -1 which will leave the decision about the volume to the server side which is a good idea. */ ,
+ pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here PA_VOLUME_INVALID which will leave the decision about the volume to the server side which is a good idea. */ ,
pa_proplist *proplist /**< Property list for this sound. The property list of the cached entry will be merged into this property list */,
pa_context_play_sample_cb_t cb /**< Call this function after successfully starting playback, or NULL */,
void *userdata /**< Userdata to pass to the callback */);
diff --git a/src/pulse/simple.c b/src/pulse/simple.c
index f4481fc3..9ed7a653 100644
--- a/src/pulse/simple.c
+++ b/src/pulse/simple.c
@@ -70,8 +70,8 @@ struct pa_simple {
#define CHECK_DEAD_GOTO(p, rerror, label) \
do { \
- if (!(p)->context || pa_context_get_state((p)->context) != PA_CONTEXT_READY || \
- !(p)->stream || pa_stream_get_state((p)->stream) != PA_STREAM_READY) { \
+ if (!(p)->context || !PA_CONTEXT_IS_GOOD(pa_context_get_state((p)->context)) || \
+ !(p)->stream || !PA_STREAM_IS_GOOD(pa_stream_get_state((p)->stream))) { \
if (((p)->context && pa_context_get_state((p)->context) == PA_CONTEXT_FAILED) || \
((p)->stream && pa_stream_get_state((p)->stream) == PA_STREAM_FAILED)) { \
if (rerror) \
@@ -157,12 +157,8 @@ pa_simple* pa_simple_new(
CHECK_VALIDITY_RETURN_ANY(rerror, ss && pa_sample_spec_valid(ss), PA_ERR_INVALID, NULL);
CHECK_VALIDITY_RETURN_ANY(rerror, !map || (pa_channel_map_valid(map) && map->channels == ss->channels), PA_ERR_INVALID, NULL)
- p = pa_xnew(pa_simple, 1);
- p->context = NULL;
- p->stream = NULL;
+ p = pa_xnew0(pa_simple, 1);
p->direction = dir;
- p->read_data = NULL;
- p->read_index = p->read_length = 0;
if (!(p->mainloop = pa_threaded_mainloop_new()))
goto fail;
@@ -182,12 +178,21 @@ pa_simple* pa_simple_new(
if (pa_threaded_mainloop_start(p->mainloop) < 0)
goto unlock_and_fail;
- /* Wait until the context is ready */
- pa_threaded_mainloop_wait(p->mainloop);
+ for (;;) {
+ pa_context_state_t state;
- if (pa_context_get_state(p->context) != PA_CONTEXT_READY) {
- error = pa_context_errno(p->context);
- goto unlock_and_fail;
+ state = pa_context_get_state(p->context);
+
+ if (state == PA_CONTEXT_READY)
+ break;
+
+ if (!PA_CONTEXT_IS_GOOD(state)) {
+ error = pa_context_errno(p->context);
+ goto unlock_and_fail;
+ }
+
+ /* Wait until the context is ready */
+ pa_threaded_mainloop_wait(p->mainloop);
}
if (!(p->stream = pa_stream_new(p->context, stream_name, ss, map))) {
@@ -216,13 +221,21 @@ pa_simple* pa_simple_new(
goto unlock_and_fail;
}
- /* Wait until the stream is ready */
- pa_threaded_mainloop_wait(p->mainloop);
+ for (;;) {
+ pa_stream_state_t state;
- /* Wait until the stream is ready */
- if (pa_stream_get_state(p->stream) != PA_STREAM_READY) {
- error = pa_context_errno(p->context);
- goto unlock_and_fail;
+ state = pa_stream_get_state(p->stream);
+
+ if (state == PA_STREAM_READY)
+ break;
+
+ if (!PA_STREAM_IS_GOOD(state)) {
+ error = pa_context_errno(p->context);
+ goto unlock_and_fail;
+ }
+
+ /* Wait until the stream is ready */
+ pa_threaded_mainloop_wait(p->mainloop);
}
pa_threaded_mainloop_unlock(p->mainloop);
@@ -248,8 +261,10 @@ void pa_simple_free(pa_simple *s) {
if (s->stream)
pa_stream_unref(s->stream);
- if (s->context)
+ if (s->context) {
+ pa_context_disconnect(s->context);
pa_context_unref(s->context);
+ }
if (s->mainloop)
pa_threaded_mainloop_free(s->mainloop);
@@ -261,7 +276,8 @@ int pa_simple_write(pa_simple *p, const void*data, size_t length, int *rerror) {
pa_assert(p);
CHECK_VALIDITY_RETURN_ANY(rerror, p->direction == PA_STREAM_PLAYBACK, PA_ERR_BADSTATE, -1);
- CHECK_VALIDITY_RETURN_ANY(rerror, data && length, PA_ERR_INVALID, -1);
+ CHECK_VALIDITY_RETURN_ANY(rerror, data, PA_ERR_INVALID, -1);
+ CHECK_VALIDITY_RETURN_ANY(rerror, length > 0, PA_ERR_INVALID, -1);
pa_threaded_mainloop_lock(p->mainloop);
@@ -300,7 +316,8 @@ int pa_simple_read(pa_simple *p, void*data, size_t length, int *rerror) {
pa_assert(p);
CHECK_VALIDITY_RETURN_ANY(rerror, p->direction == PA_STREAM_RECORD, PA_ERR_BADSTATE, -1);
- CHECK_VALIDITY_RETURN_ANY(rerror, data && length, PA_ERR_INVALID, -1);
+ CHECK_VALIDITY_RETURN_ANY(rerror, data, PA_ERR_INVALID, -1);
+ CHECK_VALIDITY_RETURN_ANY(rerror, length > 0, PA_ERR_INVALID, -1);
pa_threaded_mainloop_lock(p->mainloop);
@@ -375,7 +392,7 @@ int pa_simple_drain(pa_simple *p, int *rerror) {
CHECK_SUCCESS_GOTO(p, rerror, o, unlock_and_fail);
p->operation_success = 0;
- while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
+ while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(p->mainloop);
CHECK_DEAD_GOTO(p, rerror, unlock_and_fail);
}
@@ -411,7 +428,7 @@ int pa_simple_flush(pa_simple *p, int *rerror) {
CHECK_SUCCESS_GOTO(p, rerror, o, unlock_and_fail);
p->operation_success = 0;
- while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
+ while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(p->mainloop);
CHECK_DEAD_GOTO(p, rerror, unlock_and_fail);
}
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index 40556329..2bc2b1e4 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -144,12 +144,13 @@ pa_stream *pa_stream_new_with_proplist(
s->suspended = FALSE;
s->corked = FALSE;
+ s->write_memblock = NULL;
+ s->write_data = NULL;
+
pa_memchunk_reset(&s->peek_memchunk);
s->peek_data = NULL;
-
s->record_memblockq = NULL;
-
memset(&s->timing_info, 0, sizeof(s->timing_info));
s->timing_info_valid = FALSE;
@@ -221,6 +222,11 @@ static void stream_free(pa_stream *s) {
stream_unlink(s);
+ if (s->write_memblock) {
+ pa_memblock_release(s->write_memblock);
+ pa_memblock_unref(s->write_data);
+ }
+
if (s->peek_memchunk.memblock) {
if (s->peek_data)
pa_memblock_release(s->peek_memchunk.memblock);
@@ -821,7 +827,7 @@ static void create_stream_complete(pa_stream *s) {
if (s->flags & PA_STREAM_AUTO_TIMING_UPDATE) {
s->auto_timing_interval_usec = AUTO_TIMING_INTERVAL_START_USEC;
pa_assert(!s->auto_timing_update_event);
- s->auto_timing_update_event = pa_context_rttime_new(s->context, pa_rtclock_now() + s->auto_timing_interval_usec, &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);
}
@@ -861,7 +867,7 @@ static void automatic_buffer_attr(pa_stream *s, pa_buffer_attr *attr, const pa_s
void pa_create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_stream *s = userdata;
- uint32_t requested_bytes;
+ uint32_t requested_bytes = 0;
pa_assert(pd);
pa_assert(s);
@@ -1166,7 +1172,7 @@ int pa_stream_connect_playback(
const char *dev,
const pa_buffer_attr *attr,
pa_stream_flags_t flags,
- pa_cvolume *volume,
+ const pa_cvolume *volume,
pa_stream *sync_stream) {
pa_assert(s);
@@ -1187,20 +1193,71 @@ int pa_stream_connect_record(
return create_stream(PA_STREAM_RECORD, s, dev, attr, flags, NULL, NULL);
}
+int pa_stream_begin_write(
+ pa_stream *s,
+ void **data,
+ size_t *nbytes) {
+
+ pa_assert(s);
+ pa_assert(PA_REFCNT_VALUE(s) >= 1);
+
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
+ PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || s->direction == PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY(s->context, data, PA_ERR_INVALID);
+ PA_CHECK_VALIDITY(s->context, nbytes && *nbytes != 0, PA_ERR_INVALID);
+
+ if (*nbytes != (size_t) -1) {
+ size_t m, fs;
+
+ m = pa_mempool_block_size_max(s->context->mempool);
+ fs = pa_frame_size(&s->sample_spec);
+
+ m = (m / fs) * fs;
+ if (*nbytes > m)
+ *nbytes = m;
+ }
+
+ if (!s->write_memblock) {
+ s->write_memblock = pa_memblock_new(s->context->mempool, *nbytes);
+ s->write_data = pa_memblock_acquire(s->write_memblock);
+ }
+
+ *data = s->write_data;
+ *nbytes = pa_memblock_get_length(s->write_memblock);
+
+ return 0;
+}
+
+int pa_stream_cancel_write(
+ pa_stream *s) {
+
+ pa_assert(s);
+ pa_assert(PA_REFCNT_VALUE(s) >= 1);
+
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
+ PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || s->direction == PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
+ PA_CHECK_VALIDITY(s->context, s->write_memblock, PA_ERR_BADSTATE);
+
+ pa_assert(s->write_data);
+
+ pa_memblock_release(s->write_memblock);
+ pa_memblock_unref(s->write_memblock);
+ s->write_memblock = NULL;
+ s->write_data = NULL;
+
+ return 0;
+}
+
int pa_stream_write(
pa_stream *s,
const void *data,
size_t length,
- void (*free_cb)(void *p),
+ pa_free_cb_t free_cb,
int64_t offset,
pa_seek_mode_t seek) {
- pa_memchunk chunk;
- pa_seek_mode_t t_seek;
- int64_t t_offset;
- size_t t_length;
- const void *t_data;
-
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
pa_assert(data);
@@ -1210,46 +1267,71 @@ int pa_stream_write(
PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || s->direction == PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, seek <= PA_SEEK_RELATIVE_END, PA_ERR_INVALID);
PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || (seek == PA_SEEK_RELATIVE && offset == 0), PA_ERR_INVALID);
+ PA_CHECK_VALIDITY(s->context,
+ !s->write_memblock ||
+ ((data >= s->write_data) &&
+ ((const char*) data + length <= (const char*) s->write_data + pa_memblock_get_length(s->write_memblock))),
+ PA_ERR_INVALID);
+ PA_CHECK_VALIDITY(s->context, !free_cb || !s->write_memblock, PA_ERR_INVALID);
- if (length <= 0)
- return 0;
+ if (s->write_memblock) {
+ pa_memchunk chunk;
- t_seek = seek;
- t_offset = offset;
- t_length = length;
- t_data = data;
+ /* pa_stream_write_begin() was called before */
- while (t_length > 0) {
+ pa_memblock_release(s->write_memblock);
- chunk.index = 0;
+ chunk.memblock = s->write_memblock;
+ chunk.index = (const char *) data - (const char *) s->write_data;
+ chunk.length = length;
- if (free_cb && !pa_pstream_get_shm(s->context->pstream)) {
- chunk.memblock = pa_memblock_new_user(s->context->mempool, (void*) t_data, t_length, free_cb, 1);
- chunk.length = t_length;
- } else {
- void *d;
+ s->write_memblock = NULL;
+ s->write_data = NULL;
- chunk.length = PA_MIN(t_length, pa_mempool_block_size_max(s->context->mempool));
- chunk.memblock = pa_memblock_new(s->context->mempool, chunk.length);
+ pa_pstream_send_memblock(s->context->pstream, s->channel, offset, seek, &chunk);
+ pa_memblock_unref(chunk.memblock);
- d = pa_memblock_acquire(chunk.memblock);
- memcpy(d, t_data, chunk.length);
- pa_memblock_release(chunk.memblock);
- }
+ } else {
+ pa_seek_mode_t t_seek = seek;
+ int64_t t_offset = offset;
+ size_t t_length = length;
+ const void *t_data = data;
- pa_pstream_send_memblock(s->context->pstream, s->channel, t_offset, t_seek, &chunk);
+ /* pa_stream_write_begin() was not called before */
- t_offset = 0;
- t_seek = PA_SEEK_RELATIVE;
+ while (t_length > 0) {
+ pa_memchunk chunk;
- t_data = (const uint8_t*) t_data + chunk.length;
- t_length -= chunk.length;
+ chunk.index = 0;
- pa_memblock_unref(chunk.memblock);
- }
+ if (free_cb && !pa_pstream_get_shm(s->context->pstream)) {
+ chunk.memblock = pa_memblock_new_user(s->context->mempool, (void*) t_data, t_length, free_cb, 1);
+ chunk.length = t_length;
+ } else {
+ void *d;
+
+ chunk.length = PA_MIN(t_length, pa_mempool_block_size_max(s->context->mempool));
+ chunk.memblock = pa_memblock_new(s->context->mempool, chunk.length);
+
+ d = pa_memblock_acquire(chunk.memblock);
+ memcpy(d, t_data, chunk.length);
+ pa_memblock_release(chunk.memblock);
+ }
- if (free_cb && pa_pstream_get_shm(s->context->pstream))
- free_cb((void*) data);
+ pa_pstream_send_memblock(s->context->pstream, s->channel, t_offset, t_seek, &chunk);
+
+ t_offset = 0;
+ t_seek = PA_SEEK_RELATIVE;
+
+ t_data = (const uint8_t*) t_data + chunk.length;
+ t_length -= chunk.length;
+
+ pa_memblock_unref(chunk.memblock);
+ }
+
+ if (free_cb && pa_pstream_get_shm(s->context->pstream))
+ free_cb((void*) data);
+ }
/* This is obviously wrong since we ignore the seeking index . But
* that's OK, the server side applies the same error */
diff --git a/src/pulse/stream.h b/src/pulse/stream.h
index 49c132a2..21dd0a85 100644
--- a/src/pulse/stream.h
+++ b/src/pulse/stream.h
@@ -319,7 +319,7 @@ typedef struct pa_stream pa_stream;
typedef void (*pa_stream_success_cb_t) (pa_stream*s, int success, void *userdata);
/** A generic request callback */
-typedef void (*pa_stream_request_cb_t)(pa_stream *p, size_t bytes, void *userdata);
+typedef void (*pa_stream_request_cb_t)(pa_stream *p, size_t nbytes, void *userdata);
/** A generic notification callback */
typedef void (*pa_stream_notify_cb_t)(pa_stream *p, void *userdata);
@@ -405,7 +405,7 @@ int pa_stream_connect_playback(
const char *dev /**< Name of the sink to connect to, or NULL for default */ ,
const pa_buffer_attr *attr /**< Buffering attributes, or NULL for default */,
pa_stream_flags_t flags /**< Additional flags, or 0 for default */,
- pa_cvolume *volume /**< Initial volume, or NULL for default */,
+ const pa_cvolume *volume /**< Initial volume, or NULL for default */,
pa_stream *sync_stream /**< Synchronize this stream with the specified one, or NULL for a standalone stream*/);
/** Connect the stream to a source */
@@ -418,15 +418,71 @@ int pa_stream_connect_record(
/** Disconnect a stream from a source/sink */
int pa_stream_disconnect(pa_stream *s);
-/** Write some data to the server (for playback sinks), if free_cb is
- * non-NULL this routine is called when all data has been written out
- * and an internal reference to the specified data is kept, the data
- * is not copied. If NULL, the data is copied into an internal
- * buffer. The client my freely seek around in the output buffer. For
+/** Prepare writing data to the server (for playback streams). This
+ * function may be used to optimize the number of memory copies when
+ * doing playback ("zero-copy"). It is recommended to call this
+ * function before each call to pa_stream_write(). Pass in the address
+ * to a pointer and an address of the number of bytes you want to
+ * write. On return the two values will contain a pointer where you
+ * can place the data to write and the maximum number of bytes you can
+ * write. On return *nbytes can be smaller or have the same value as
+ * you passed in. You need to be able to handle both cases. Accessing
+ * memory beyond the returned *nbytes value is invalid. Acessing the
+ * memory returned after the following pa_stream_write() or
+ * pa_stream_cancel_write() is invalid. On invocation only *nbytes
+ * needs to be initialized, on return both *data and *nbytes will be
+ * valid. If you place (size_t) -1 in *nbytes on invocation the memory
+ * size will be chosen automatically (which is recommended to
+ * do). After placing your data in the memory area returned call
+ * pa_stream_write() with data set to an address within this memory
+ * area and an nbytes value that is smaller or equal to what was
+ * returned by this function to actually execute the write. An
+ * invocation of pa_stream_write() should follow "quickly" on
+ * pa_stream_begin_write(). It is not recommended letting an unbounded
+ * amount of time pass after calling pa_stream_begin_write() and
+ * before calling pa_stream_write(). If you want to cancel a
+ * previously called pa_stream_begin_write() without calling
+ * pa_stream_write() use pa_stream_cancel_write(). Calling
+ * pa_stream_begin_write() twice without calling pa_stream_write() or
+ * pa_stream_cancel_write() in between will return exactly the same
+ * pointer/nbytes values.\since 0.9.16 */
+int pa_stream_begin_write(
+ pa_stream *p,
+ void **data,
+ size_t *nbytes);
+
+/** Reverses the effect of pa_stream_begin_write() dropping all data
+ * that has already been placed in the memory area returned by
+ * pa_stream_begin_write(). Only valid to call if
+ * pa_stream_begin_write() was called before and neither
+ * pa_stream_cancel_write() nor pa_stream_write() have been called
+ * yet. Accessing the memory previously returned by
+ * pa_stream_begin_write() after this call is invalid. Any further
+ * explicit freeing of the memory area is not necessary. \since
+ * 0.9.16 */
+int pa_stream_cancel_write(
+ pa_stream *p);
+
+/** Write some data to the server (for playback streams), if free_cb
+ * is non-NULL this routine is called when all data has been written
+ * out and an internal reference to the specified data is kept, the
+ * data is not copied. If NULL, the data is copied into an internal
+ * buffer. The client may freely seek around in the output buffer. For
* most applications passing 0 and PA_SEEK_RELATIVE as arguments for
* offset and seek should be useful. Afte ther write call succeeded
* the write index will be a the position after where this chunk of
- * data has been written to. */
+ * data has been written to.
+ *
+ * As an optimization for avoiding needless memory copies you may call
+ * pa_stream_begin_write() before this call and then place your audio
+ * data directly in the memory area returned by that call. Then, pass
+ * a pointer to that memory area to pa_stream_write(). After the
+ * invocation of pa_stream_write() the memory area may no longer be
+ * accessed. Any further explicit freeing of the memory area is not
+ * necessary. It is OK to write the memory area returned by
+ * pa_stream_begin_write() only partially with this call, skipping
+ * bytes both at the end and at the beginning of the reserved memory
+ * area.*/
int pa_stream_write(
pa_stream *p /**< The stream to use */,
const void *data /**< The data to write */,
@@ -435,11 +491,12 @@ int pa_stream_write(
int64_t offset, /**< Offset for seeking, must be 0 for upload streams */
pa_seek_mode_t seek /**< Seek mode, must be PA_SEEK_RELATIVE for upload streams */);
-/** Read the next fragment from the buffer (for recording).
- * data will point to the actual data and length will contain the size
- * of the data in bytes (which can be less than a complete framgnet).
- * Use pa_stream_drop() to actually remove the data from the
- * buffer. If no data is available will return a NULL pointer */
+/** Read the next fragment from the buffer (for recording streams).
+ * data will point to the actual data and nbytes will contain the size
+ * of the data in bytes (which can be less or more than a complete
+ * fragment). Use pa_stream_drop() to actually remove the data from
+ * the buffer. If no data is available this will return a NULL
+ * pointer */
int pa_stream_peek(
pa_stream *p /**< The stream to use */,
const void **data /**< Pointer to pointer that will point to data */,
@@ -455,7 +512,9 @@ size_t pa_stream_writable_size(pa_stream *p);
/** Return the number of bytes that may be read using pa_stream_peek()*/
size_t pa_stream_readable_size(pa_stream *p);
-/** Drain a playback stream. Use this for notification when the buffer is empty */
+/** Drain a playback stream. Use this for notification when the buffer
+ * is empty. Please note that only one drain operation per stream may
+ * be issued at a time. */
pa_operation* pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
/** Request a timing info structure update for a stream. Use
diff --git a/src/pulse/thread-mainloop.c b/src/pulse/thread-mainloop.c
index 6916d867..a2b98ce1 100644
--- a/src/pulse/thread-mainloop.c
+++ b/src/pulse/thread-mainloop.c
@@ -51,7 +51,7 @@
struct pa_threaded_mainloop {
pa_mainloop *real_mainloop;
- int n_waiting;
+ int n_waiting, n_waiting_for_accept;
pa_thread* thread;
pa_mutex* mutex;
@@ -190,8 +190,12 @@ void pa_threaded_mainloop_signal(pa_threaded_mainloop *m, int wait_for_accept) {
pa_cond_signal(m->cond, 1);
- if (wait_for_accept && m->n_waiting > 0)
- pa_cond_wait(m->accept_cond, m->mutex);
+ if (wait_for_accept) {
+ m->n_waiting_for_accept ++;
+
+ while (m->n_waiting_for_accept > 0)
+ pa_cond_wait(m->accept_cond, m->mutex);
+ }
}
void pa_threaded_mainloop_wait(pa_threaded_mainloop *m) {
@@ -214,6 +218,9 @@ void pa_threaded_mainloop_accept(pa_threaded_mainloop *m) {
/* Make sure that this function is not called from the helper thread */
pa_assert(!m->thread || !pa_thread_is_running(m->thread) || !in_worker(m));
+ pa_assert(m->n_waiting_for_accept > 0);
+ m->n_waiting_for_accept --;
+
pa_cond_signal(m->accept_cond, 0);
}
diff --git a/src/pulse/thread-mainloop.h b/src/pulse/thread-mainloop.h
index 8eddce4c..2cf496e1 100644
--- a/src/pulse/thread-mainloop.h
+++ b/src/pulse/thread-mainloop.h
@@ -137,15 +137,19 @@ PA_C_DECL_BEGIN
* The main function, my_drain_stream_func(), will wait for the callback to
* be called using pa_threaded_mainloop_wait().
*
- * If your application is multi-threaded, then this waiting must be done
- * inside a while loop. The reason for this is that multiple threads might be
- * using pa_threaded_mainloop_wait() at the same time. Each thread must
- * therefore verify that it was its callback that was invoked.
+ * If your application is multi-threaded, then this waiting must be
+ * done inside a while loop. The reason for this is that multiple
+ * threads might be using pa_threaded_mainloop_wait() at the same
+ * time. Each thread must therefore verify that it was its callback
+ * that was invoked. Also the underlying OS synchronization primitives
+ * are usually not free of spurious wake-ups, so a
+ * pa_threaded_mainloop_wait() must be called within a loop even if
+ * you have only one thread waiting.
*
* The callback, my_drain_callback(), indicates to the main function that it
* has been called using pa_threaded_mainloop_signal().
*
- * As you can see, both pa_threaded_mainloop_wait() may only be called with
+ * As you can see, pa_threaded_mainloop_wait() may only be called with
* the lock held. The same thing is true for pa_threaded_mainloop_signal(),
* but as the lock is held before the callback is invoked, you do not have to
* deal with that.
@@ -274,7 +278,9 @@ void pa_threaded_mainloop_unlock(pa_threaded_mainloop *m);
* inside the event loop thread. Prior to this call the event loop
* object needs to be locked using pa_threaded_mainloop_lock(). While
* waiting the lock will be released, immediately before returning it
- * will be acquired again. */
+ * will be acquired again. This function may spuriously wake up even
+ * without _signal() being called. You need to make sure to handle
+ * that! */
void pa_threaded_mainloop_wait(pa_threaded_mainloop *m);
/** Signal all threads waiting for a signalling event in
@@ -293,7 +299,9 @@ void pa_threaded_mainloop_accept(pa_threaded_mainloop *m);
/** Return the return value as specified with the main loop's quit() routine. */
int pa_threaded_mainloop_get_retval(pa_threaded_mainloop *m);
-/** Return the abstract main loop abstraction layer vtable for this main loop. */
+/** Return the abstract main loop abstraction layer vtable for this
+ main loop. No need of freeing the API as it is owned by the loop
+ and it is destroyed when this dies */
pa_mainloop_api* pa_threaded_mainloop_get_api(pa_threaded_mainloop*m);
/** Returns non-zero when called from withing the event loop thread. \since 0.9.7 */
diff --git a/src/pulse/utf8.c b/src/pulse/utf8.c
index 6b58bde3..fe7bcd26 100644
--- a/src/pulse/utf8.c
+++ b/src/pulse/utf8.c
@@ -120,10 +120,8 @@ static char* utf8_validate(const char *str, char *output) {
size = 4;
min = (1 << 16);
val = (uint32_t) (*p & 0x07);
- } else {
- size = 1;
+ } else
goto error;
- }
p++;
if (!is_continuation_char(*p))
@@ -150,12 +148,9 @@ ONE_REMAINING:
if (o) {
memcpy(o, last, (size_t) size);
- o += size - 1;
+ o += size;
}
- if (o)
- o++;
-
continue;
error:
diff --git a/src/pulse/util.c b/src/pulse/util.c
index 6f1e40a9..9440f5de 100644
--- a/src/pulse/util.c
+++ b/src/pulse/util.c
@@ -61,38 +61,40 @@
#include <pulsecore/log.h>
#include <pulsecore/core-util.h>
#include <pulsecore/macro.h>
+#include <pulsecore/usergroup.h>
#include "util.h"
char *pa_get_user_name(char *s, size_t l) {
const char *p;
+ char *name = NULL;
+#ifdef OS_IS_WIN32
char buf[1024];
+#endif
#ifdef HAVE_PWD_H
- struct passwd pw, *r;
+ struct passwd *r;
#endif
pa_assert(s);
pa_assert(l > 0);
- if (!(p = (getuid() == 0 ? "root" : NULL)) &&
- !(p = getenv("USER")) &&
- !(p = getenv("LOGNAME")) &&
- !(p = getenv("USERNAME"))) {
+ if ((p = (getuid() == 0 ? "root" : NULL)) ||
+ (p = getenv("USER")) ||
+ (p = getenv("LOGNAME")) ||
+ (p = getenv("USERNAME")))
+ {
+ name = pa_strlcpy(s, p, l);
+ } else {
#ifdef HAVE_PWD_H
-#ifdef HAVE_GETPWUID_R
- if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) {
-#else
- /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X)
- * that do not support getpwuid_r. */
- if ((r = getpwuid(getuid())) == NULL) {
-#endif
+ if ((r = pa_getpwuid_malloc(getuid())) == NULL) {
pa_snprintf(s, l, "%lu", (unsigned long) getuid());
return s;
}
- p = r->pw_name;
+ name = pa_strlcpy(s, r->pw_name, l);
+ pa_getpwuid_free(r);
#elif defined(OS_IS_WIN32) /* HAVE_PWD_H */
DWORD size = sizeof(buf);
@@ -102,7 +104,7 @@ char *pa_get_user_name(char *s, size_t l) {
return NULL;
}
- p = buf;
+ name = pa_strlcpy(s, buf, l);
#else /* HAVE_PWD_H */
@@ -110,7 +112,7 @@ char *pa_get_user_name(char *s, size_t l) {
#endif /* HAVE_PWD_H */
}
- return pa_strlcpy(s, p, l);
+ return name;
}
char *pa_get_host_name(char *s, size_t l) {
@@ -126,11 +128,10 @@ char *pa_get_host_name(char *s, size_t l) {
}
char *pa_get_home_dir(char *s, size_t l) {
- char *e;
+ char *e, *dir;
#ifdef HAVE_PWD_H
- char buf[1024];
- struct passwd pw, *r;
+ struct passwd *r;
#endif
pa_assert(s);
@@ -143,22 +144,19 @@ char *pa_get_home_dir(char *s, size_t l) {
return pa_strlcpy(s, e, l);
#ifdef HAVE_PWD_H
-
errno = 0;
-#ifdef HAVE_GETPWUID_R
- if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) {
-#else
- /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X)
- * that do not support getpwuid_r. */
- if ((r = getpwuid(getuid())) == NULL) {
-#endif
+ if ((r = pa_getpwuid_malloc(getuid())) == NULL) {
if (!errno)
errno = ENOENT;
return NULL;
}
- return pa_strlcpy(s, r->pw_dir, l);
+ dir = pa_strlcpy(s, r->pw_dir, l);
+
+ pa_getpwuid_free(r);
+
+ return dir;
#else /* HAVE_PWD_H */
errno = ENOENT;
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 42cde5b9..2d2bba25 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -40,6 +40,10 @@ int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) {
pa_assert(b);
pa_return_val_if_fail(pa_cvolume_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_cvolume_valid(b), 0);
if (a->channels != b->channels)
@@ -60,7 +64,7 @@ pa_cvolume* pa_cvolume_init(pa_cvolume *a) {
a->channels = 0;
for (c = 0; c < PA_CHANNELS_MAX; c++)
- a->values[c] = (pa_volume_t) -1;
+ a->values[c] = PA_VOLUME_INVALID;
return a;
}
@@ -122,7 +126,7 @@ pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, p
}
pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
- pa_volume_t m = 0;
+ pa_volume_t m = PA_VOLUME_MUTED;
unsigned c;
pa_assert(a);
@@ -135,9 +139,23 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
return m;
}
+pa_volume_t pa_cvolume_min(const pa_cvolume *a) {
+ pa_volume_t m = PA_VOLUME_MAX;
+ unsigned c;
+
+ pa_assert(a);
+ pa_return_val_if_fail(pa_cvolume_valid(a), PA_VOLUME_MUTED);
+
+ for (c = 0; c < a->channels; c++)
+ if (a->values[c] < m)
+ m = a->values[c];
+
+ return m;
+}
+
pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
- pa_volume_t m = 0;
- unsigned c, n;
+ pa_volume_t m = PA_VOLUME_MUTED;
+ unsigned c;
pa_assert(a);
@@ -146,7 +164,7 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED);
- for (c = n = 0; c < a->channels; c++) {
+ for (c = 0; c < a->channels; c++) {
if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask))
continue;
@@ -158,17 +176,48 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p
return m;
}
+pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
+ pa_volume_t m = PA_VOLUME_MAX;
+ unsigned c;
+
+ pa_assert(a);
+
+ if (!cm)
+ return pa_cvolume_min(a);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED);
+
+ for (c = 0; c < a->channels; c++) {
+
+ if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask))
+ continue;
+
+ if (a->values[c] < m)
+ m = a->values[c];
+ }
+
+ return m;
+}
+
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
- return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) * pa_sw_volume_to_linear(b));
+
+ pa_return_val_if_fail(a != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
+ pa_return_val_if_fail(b != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
+
+ /* cbrt((a/PA_VOLUME_NORM)^3*(b/PA_VOLUME_NORM)^3)*PA_VOLUME_NORM = a*b/PA_VOLUME_NORM */
+
+ return (pa_volume_t) (((uint64_t) a * (uint64_t) b + (uint64_t) PA_VOLUME_NORM / 2ULL) / (uint64_t) PA_VOLUME_NORM);
}
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
- double v = pa_sw_volume_to_linear(b);
- if (v <= 0)
+ pa_return_val_if_fail(a != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
+ pa_return_val_if_fail(b != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
+
+ if (b <= PA_VOLUME_MUTED)
return 0;
- return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) / v);
+ return (pa_volume_t) (((uint64_t) a * (uint64_t) PA_VOLUME_NORM + (uint64_t) b / 2ULL) / (uint64_t) b);
}
/* Amplitude, not power */
@@ -189,6 +238,8 @@ pa_volume_t pa_sw_volume_from_dB(double dB) {
double pa_sw_volume_to_dB(pa_volume_t v) {
+ pa_return_val_if_fail(v != PA_VOLUME_INVALID, PA_DECIBEL_MININFTY);
+
if (v <= PA_VOLUME_MUTED)
return PA_DECIBEL_MININFTY;
@@ -205,14 +256,19 @@ pa_volume_t pa_sw_volume_from_linear(double v) {
*
* http://www.robotplanet.dk/audio/audio_gui_design/
* http://lists.linuxaudio.org/pipermail/linux-audio-dev/2009-May/thread.html#23151
+ *
+ * We make sure that the conversion to linear and back yields the
+ * same volume value! That's why we need the lround() below!
*/
- return (pa_volume_t) (cbrt(v) * PA_VOLUME_NORM);
+ return (pa_volume_t) lround(cbrt(v) * PA_VOLUME_NORM);
}
double pa_sw_volume_to_linear(pa_volume_t v) {
double f;
+ pa_return_val_if_fail(v != PA_VOLUME_INVALID, 0.0);
+
if (v <= PA_VOLUME_MUTED)
return 0.0;
@@ -246,7 +302,7 @@ char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
l -= pa_snprintf(e, l, "%s%u: %3u%%",
first ? "" : " ",
channel,
- (c->values[channel]*100)/PA_VOLUME_NORM);
+ (c->values[channel]*100+PA_VOLUME_NORM/2)/PA_VOLUME_NORM);
e = strchr(e, 0);
first = FALSE;
@@ -261,12 +317,12 @@ char *pa_volume_snprint(char *s, size_t l, pa_volume_t v) {
pa_init_i18n();
- if (v == (pa_volume_t) -1) {
+ if (v == PA_VOLUME_INVALID) {
pa_snprintf(s, l, _("(invalid)"));
return s;
}
- pa_snprintf(s, l, "%3u%%", (v*100)/PA_VOLUME_NORM);
+ pa_snprintf(s, l, "%3u%%", (v*100+PA_VOLUME_NORM/2)/PA_VOLUME_NORM);
return s;
}
@@ -311,7 +367,7 @@ char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v) {
pa_init_i18n();
- if (v == (pa_volume_t) -1) {
+ if (v == PA_VOLUME_INVALID) {
pa_snprintf(s, l, _("(invalid)"));
return s;
}
@@ -328,6 +384,7 @@ int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) {
pa_assert(a);
pa_return_val_if_fail(pa_cvolume_valid(a), 0);
+ pa_return_val_if_fail(v != PA_VOLUME_INVALID, 0);
for (c = 0; c < a->channels; c++)
if (a->values[c] != v)
@@ -361,6 +418,7 @@ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a,
pa_assert(a);
pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
+ pa_return_val_if_fail(b != PA_VOLUME_INVALID, NULL);
for (i = 0; i < a->channels; i++)
dest->values[i] = pa_sw_volume_multiply(a->values[i], b);
@@ -395,6 +453,7 @@ pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, p
pa_assert(a);
pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
+ pa_return_val_if_fail(b != PA_VOLUME_INVALID, NULL);
for (i = 0; i < a->channels; i++)
dest->values[i] = pa_sw_volume_divide(a->values[i], b);
@@ -413,7 +472,7 @@ int pa_cvolume_valid(const pa_cvolume *v) {
return 0;
for (c = 0; c < v->channels; c++)
- if (v->values[c] == (pa_volume_t) -1)
+ if (v->values[c] == PA_VOLUME_INVALID)
return 0;
return 1;
@@ -451,8 +510,6 @@ pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa
pa_assert(from);
pa_assert(to);
- pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
- pa_return_val_if_fail(pa_channel_map_valid(from), NULL);
pa_return_val_if_fail(pa_channel_map_valid(to), NULL);
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, from), NULL);
@@ -554,8 +611,6 @@ float pa_cvolume_get_balance(const pa_cvolume *v, const pa_channel_map *map) {
pa_assert(v);
pa_assert(map);
- pa_return_val_if_fail(pa_cvolume_valid(v), 0.0f);
- pa_return_val_if_fail(pa_channel_map_valid(map), 0.0f);
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), 0.0f);
if (!pa_channel_map_can_balance(map))
@@ -587,12 +642,10 @@ pa_cvolume* pa_cvolume_set_balance(pa_cvolume *v, const pa_channel_map *map, flo
pa_assert(map);
pa_assert(v);
- pa_assert(new_balance >= -1.0f);
- pa_assert(new_balance <= 1.0f);
- pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
- pa_return_val_if_fail(pa_channel_map_valid(map), NULL);
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), NULL);
+ pa_return_val_if_fail(new_balance >= -1.0f, NULL);
+ pa_return_val_if_fail(new_balance <= 1.0f, NULL);
if (!pa_channel_map_can_balance(map))
return v;
@@ -633,7 +686,7 @@ pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) {
pa_assert(v);
pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
- pa_return_val_if_fail(max != (pa_volume_t) -1, NULL);
+ pa_return_val_if_fail(max != PA_VOLUME_INVALID, NULL);
t = pa_cvolume_max(v);
@@ -652,8 +705,12 @@ pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map
pa_assert(v);
- pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
- pa_return_val_if_fail(max != (pa_volume_t) -1, NULL);
+ pa_return_val_if_fail(max != PA_VOLUME_INVALID, NULL);
+
+ if (!cm)
+ return pa_cvolume_scale(v, max);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, cm), NULL);
t = pa_cvolume_max_mask(v, cm, mask);
@@ -704,8 +761,6 @@ float pa_cvolume_get_fade(const pa_cvolume *v, const pa_channel_map *map) {
pa_assert(v);
pa_assert(map);
- pa_return_val_if_fail(pa_cvolume_valid(v), 0.0f);
- pa_return_val_if_fail(pa_channel_map_valid(map), 0.0f);
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), 0.0f);
if (!pa_channel_map_can_fade(map))
@@ -728,12 +783,10 @@ pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float
pa_assert(map);
pa_assert(v);
- pa_assert(new_fade >= -1.0f);
- pa_assert(new_fade <= 1.0f);
- pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
- pa_return_val_if_fail(pa_channel_map_valid(map), NULL);
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), NULL);
+ pa_return_val_if_fail(new_fade >= -1.0f, NULL);
+ pa_return_val_if_fail(new_fade <= 1.0f, NULL);
if (!pa_channel_map_can_fade(map))
return v;
@@ -781,6 +834,7 @@ pa_cvolume* pa_cvolume_set_position(
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), NULL);
pa_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, NULL);
+ pa_return_val_if_fail(v != PA_VOLUME_INVALID, NULL);
for (c = 0; c < map->channels; c++)
if (map->map[c] == t) {
@@ -812,3 +866,57 @@ pa_volume_t pa_cvolume_get_position(
return v;
}
+
+pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
+ unsigned i;
+
+ pa_assert(dest);
+ pa_assert(a);
+ pa_assert(b);
+
+ 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++)
+ dest->values[i] = PA_MAX(a->values[i], b->values[i]);
+
+ dest->channels = (uint8_t) i;
+
+ return dest;
+}
+
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) {
+ pa_volume_t m;
+
+ pa_assert(v);
+
+ pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
+ pa_return_val_if_fail(inc != PA_VOLUME_INVALID, NULL);
+
+ m = pa_cvolume_max(v);
+
+ if (m >= PA_VOLUME_MAX - inc)
+ m = PA_VOLUME_MAX;
+ else
+ m += inc;
+
+ return pa_cvolume_scale(v, m);
+}
+
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) {
+ pa_volume_t m;
+
+ pa_assert(v);
+
+ pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
+ pa_return_val_if_fail(dec != PA_VOLUME_INVALID, NULL);
+
+ m = pa_cvolume_max(v);
+
+ if (m <= PA_VOLUME_MUTED + dec)
+ m = PA_VOLUME_MUTED;
+ else
+ m -= dec;
+
+ return pa_cvolume_scale(v, m);
+}
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index 05b7ebb4..c964020a 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -106,11 +106,14 @@ typedef uint32_t pa_volume_t;
/** Normal volume (100%, 0 dB) */
#define PA_VOLUME_NORM ((pa_volume_t) 0x10000U)
-/** Muted volume (0%, -inf dB) */
+/** Muted (minimal valid) volume (0%, -inf dB) */
#define PA_VOLUME_MUTED ((pa_volume_t) 0U)
-/** Maximum volume we can store. \since 0.9.15 */
-#define PA_VOLUME_MAX ((pa_volume_t) UINT32_MAX)
+/** Maximum valid volume we can store. \since 0.9.15 */
+#define PA_VOLUME_MAX ((pa_volume_t) UINT32_MAX-1)
+
+/** Special 'invalid' volume. \since 0.9.16 */
+#define PA_VOLUME_INVALID ((pa_volume_t) UINT32_MAX)
/** A structure encapsulating a per-channel volume */
typedef struct pa_cvolume {
@@ -195,6 +198,16 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) PA_GCC_PURE;
* \since 0.9.16 */
pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE;
+/** Return the minimum volume of all channels. \since 0.9.16 */
+pa_volume_t pa_cvolume_min(const pa_cvolume *a) PA_GCC_PURE;
+
+/** Return the minimum volume of all channels that are included in the
+ * specified channel map with the specified channel position mask. If
+ * cm is NULL this call is identical to pa_cvolume_min(). If no
+ * channel is selected the returned value will be PA_VOLUME_MUTED.
+ * \since 0.9.16 */
+pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE;
+
/** Return TRUE when the passed cvolume structure is valid, FALSE otherwise */
int pa_cvolume_valid(const pa_cvolume *v) PA_GCC_PURE;
@@ -213,11 +226,13 @@ int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) PA_GCC_PURE
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) PA_GCC_CONST;
/** Multiply two per-channel volumes and return the result in
- * *dest. This is only valid for software volumes! */
+ * *dest. This is only valid for software volumes! a, b and dest may
+ * point to the same structure. */
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
+ * result in *dest. This is only valid for software volumes! a
+ * and dest may point to the same structure. \since
* 0.9.16 */
pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
@@ -228,11 +243,13 @@ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a,
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) PA_GCC_CONST;
/** Divide two per-channel volumes and return the result in
- * *dest. This is only valid for software volumes! \since 0.9.13 */
+ * *dest. This is only valid for software volumes! a, b
+ * and dest may point to the same structure. \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
+ * result in *dest. This is only valid for software volumes! a
+ * and dest may point to the same structure. \since
* 0.9.16 */
pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
@@ -326,6 +343,19 @@ pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, p
* position by calling pa_channel_map_has_position(). \since 0.9.16 */
pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) PA_GCC_PURE;
+/** This goes through all channels in a and b and sets the
+ * corresponding channel in dest to the greater volume of both. a, b
+ * and dest may point to the same structure. \since 0.9.16 */
+pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+
+/** Increase the volume passed in by 'inc'. The proportions between
+ * the channels are kept. \since 0.9.16 */
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc);
+
+/** Increase the volume passed in by 'inc'. The proportions between
+ * the channels are kept. \since 0.9.16 */
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec);
+
PA_C_DECL_END
#endif
diff --git a/src/pulsecore/asyncmsgq.c b/src/pulsecore/asyncmsgq.c
index 083d9de2..b0804f79 100644
--- a/src/pulsecore/asyncmsgq.c
+++ b/src/pulsecore/asyncmsgq.c
@@ -26,14 +26,16 @@
#include <unistd.h>
#include <errno.h>
+#include <pulse/xmalloc.h>
+
#include <pulsecore/atomic.h>
+#include <pulsecore/macro.h>
#include <pulsecore/log.h>
#include <pulsecore/thread.h>
#include <pulsecore/semaphore.h>
#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
#include <pulsecore/flist.h>
-#include <pulse/xmalloc.h>
#include "asyncmsgq.h"
@@ -76,7 +78,7 @@ static void asyncmsgq_free(pa_asyncmsgq *a) {
struct asyncmsgq_item *i;
pa_assert(a);
- while ((i = pa_asyncq_pop(a->asyncq, 0))) {
+ while ((i = pa_asyncq_pop(a->asyncq, FALSE))) {
pa_assert(!i->semaphore);
@@ -246,7 +248,7 @@ int pa_asyncmsgq_wait_for(pa_asyncmsgq *a, int code) {
pa_memchunk chunk;
int ret;
- if (pa_asyncmsgq_get(a, &o, &c, &data, &offset, &chunk, 1) < 0)
+ if (pa_asyncmsgq_get(a, &o, &c, &data, &offset, &chunk, TRUE) < 0)
return -1;
ret = pa_asyncmsgq_dispatch(o, c, data, offset, &chunk);
@@ -269,7 +271,7 @@ int pa_asyncmsgq_process_one(pa_asyncmsgq *a) {
pa_assert(PA_REFCNT_VALUE(a) > 0);
- if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, 0) < 0)
+ if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, FALSE) < 0)
return 0;
pa_asyncmsgq_ref(a);
@@ -323,3 +325,35 @@ int pa_asyncmsgq_dispatch(pa_msgobject *object, int code, void *userdata, int64_
return 0;
}
+
+void pa_asyncmsgq_flush(pa_asyncmsgq *a, pa_bool_t run) {
+ pa_assert(PA_REFCNT_VALUE(a) > 0);
+
+ for (;;) {
+ pa_msgobject *object;
+ int code;
+ void *data;
+ int64_t offset;
+ pa_memchunk chunk;
+ int ret;
+
+ if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, FALSE) < 0)
+ return;
+
+ if (!run) {
+ pa_asyncmsgq_done(a, -1);
+ continue;
+ }
+
+ pa_asyncmsgq_ref(a);
+ ret = pa_asyncmsgq_dispatch(object, code, data, offset, &chunk);
+ pa_asyncmsgq_done(a, ret);
+ pa_asyncmsgq_unref(a);
+ }
+}
+
+pa_bool_t pa_asyncmsgq_dispatching(pa_asyncmsgq *a) {
+ pa_assert(PA_REFCNT_VALUE(a) > 0);
+
+ return !!a->current;
+}
diff --git a/src/pulsecore/asyncmsgq.h b/src/pulsecore/asyncmsgq.h
index 1f38207a..1085c2f0 100644
--- a/src/pulsecore/asyncmsgq.h
+++ b/src/pulsecore/asyncmsgq.h
@@ -66,6 +66,8 @@ void pa_asyncmsgq_done(pa_asyncmsgq *q, int ret);
int pa_asyncmsgq_wait_for(pa_asyncmsgq *a, int code);
int pa_asyncmsgq_process_one(pa_asyncmsgq *a);
+void pa_asyncmsgq_flush(pa_asyncmsgq *a, pa_bool_t run);
+
/* For the reading side */
int pa_asyncmsgq_read_fd(pa_asyncmsgq *q);
int pa_asyncmsgq_read_before_poll(pa_asyncmsgq *a);
@@ -76,4 +78,6 @@ int pa_asyncmsgq_write_fd(pa_asyncmsgq *q);
void pa_asyncmsgq_write_before_poll(pa_asyncmsgq *a);
void pa_asyncmsgq_write_after_poll(pa_asyncmsgq *a);
+pa_bool_t pa_asyncmsgq_dispatching(pa_asyncmsgq *a);
+
#endif
diff --git a/src/pulsecore/aupdate.c b/src/pulsecore/aupdate.c
index 56ebb8e5..85b6e00e 100644
--- a/src/pulsecore/aupdate.c
+++ b/src/pulsecore/aupdate.c
@@ -39,6 +39,7 @@ struct pa_aupdate {
pa_atomic_t read_lock;
pa_mutex *write_lock;
pa_semaphore *semaphore;
+ pa_bool_t swapped;
};
pa_aupdate *pa_aupdate_new(void) {
@@ -101,6 +102,8 @@ unsigned pa_aupdate_write_begin(pa_aupdate *a) {
n = (unsigned) pa_atomic_load(&a->read_lock);
+ a->swapped = FALSE;
+
return !WHICH(n);
}
@@ -119,11 +122,16 @@ unsigned pa_aupdate_write_swap(pa_aupdate *a) {
break;
}
+ a->swapped = TRUE;
+
return WHICH(n);
}
void pa_aupdate_write_end(pa_aupdate *a) {
pa_assert(a);
+ if (!a->swapped)
+ pa_aupdate_write_swap(a);
+
pa_mutex_unlock(a->write_lock);
}
diff --git a/src/pulsecore/aupdate.h b/src/pulsecore/aupdate.h
index 072e382d..fb38ffa2 100644
--- a/src/pulsecore/aupdate.h
+++ b/src/pulsecore/aupdate.h
@@ -93,6 +93,10 @@ unsigned pa_aupdate_write_swap(pa_aupdate *a);
* pa_update_write_end(a)
* }
*
+ * In some cases keeping both structures up-to-date might not be
+ * necessary, since they are fully rebuilt on each iteration
+ * anyway. In that case you may leave the _write_swap() call out, it
+ * will then be done implicitly in the _write_end() invocation.
*/
#endif
diff --git a/src/pulsecore/authkey.c b/src/pulsecore/authkey.c
index 1e31d076..15613e27 100644
--- a/src/pulsecore/authkey.c
+++ b/src/pulsecore/authkey.c
@@ -36,6 +36,7 @@
#include <sys/stat.h>
#include <pulse/util.h>
+#include <pulse/xmalloc.h>
#include <pulsecore/core-error.h>
#include <pulsecore/core-util.h>
#include <pulsecore/log.h>
@@ -147,47 +148,46 @@ int pa_authkey_load(const char *path, void *data, size_t length) {
/* If the specified file path starts with / return it, otherwise
* return path prepended with home directory */
-static const char *normalize_path(const char *fn, char *s, size_t l) {
+static char *normalize_path(const char *fn) {
pa_assert(fn);
- pa_assert(s);
- pa_assert(l > 0);
#ifndef OS_IS_WIN32
if (fn[0] != '/') {
#else
if (strlen(fn) < 3 || !isalpha(fn[0]) || fn[1] != ':' || fn[2] != '\\') {
#endif
- char homedir[PATH_MAX];
+ char *homedir, *s;
- if (!pa_get_home_dir(homedir, sizeof(homedir)))
+ if (!(homedir = pa_get_home_dir_malloc()))
return NULL;
-#ifndef OS_IS_WIN32
- pa_snprintf(s, l, "%s/%s", homedir, fn);
-#else
- pa_snprintf(s, l, "%s\\%s", homedir, fn);
-#endif
+ s = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", homedir, fn);
+ pa_xfree(homedir);
+
return s;
}
- return fn;
+ return pa_xstrdup(fn);
}
/* Load a cookie from a file in the home directory. If the specified
* path starts with /, use it as absolute path instead. */
int pa_authkey_load_auto(const char *fn, void *data, size_t length) {
- char path[PATH_MAX];
- const char *p;
+ char *p;
+ int ret;
pa_assert(fn);
pa_assert(data);
pa_assert(length > 0);
- if (!(p = normalize_path(fn, path, sizeof(path))))
+ if (!(p = normalize_path(fn)))
return -2;
- return pa_authkey_load(p, data, length);
+ ret = pa_authkey_load(p, data, length);
+ pa_xfree(p);
+
+ return ret;
}
/* Store the specified cookie in the specified cookie file */
@@ -195,14 +195,13 @@ int pa_authkey_save(const char *fn, const void *data, size_t length) {
int fd = -1;
int unlock = 0, ret = -1;
ssize_t r;
- char path[PATH_MAX];
- const char *p;
+ char *p;
pa_assert(fn);
pa_assert(data);
pa_assert(length > 0);
- if (!(p = normalize_path(fn, path, sizeof(path))))
+ if (!(p = normalize_path(fn)))
return -2;
if ((fd = open(p, O_RDWR|O_CREAT|O_NOCTTY, S_IRUSR|S_IWUSR)) < 0) {
@@ -232,5 +231,7 @@ finish:
}
}
+ pa_xfree(p);
+
return ret;
}
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index e2c3c066..b57919a4 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -328,7 +328,7 @@ static int pa_cli_command_source_outputs(pa_core *c, pa_tokenizer *t, pa_strbuf
static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
char ss[PA_SAMPLE_SPEC_SNPRINT_MAX];
char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
- char s[256];
+ char bytes[PA_BYTES_SNPRINT_MAX];
const pa_mempool_stat *stat;
unsigned k;
pa_sink *def_sink;
@@ -352,22 +352,22 @@ static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
pa_strbuf_printf(buf, "Memory blocks currently allocated: %u, size: %s.\n",
(unsigned) pa_atomic_load(&stat->n_allocated),
- pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->allocated_size)));
+ pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->allocated_size)));
pa_strbuf_printf(buf, "Memory blocks allocated during the whole lifetime: %u, size: %s.\n",
(unsigned) pa_atomic_load(&stat->n_accumulated),
- pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->accumulated_size)));
+ pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->accumulated_size)));
pa_strbuf_printf(buf, "Memory blocks imported from other processes: %u, size: %s.\n",
(unsigned) pa_atomic_load(&stat->n_imported),
- pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->imported_size)));
+ pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->imported_size)));
pa_strbuf_printf(buf, "Memory blocks exported to other processes: %u, size: %s.\n",
(unsigned) pa_atomic_load(&stat->n_exported),
- pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->exported_size)));
+ pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->exported_size)));
pa_strbuf_printf(buf, "Total sample cache size: %s.\n",
- pa_bytes_snprint(s, sizeof(s), (unsigned) pa_scache_total_size(c)));
+ pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_scache_total_size(c)));
pa_strbuf_printf(buf, "Default sample spec: %s\n",
pa_sample_spec_snprint(ss, sizeof(ss), &c->default_sample_spec));
@@ -529,8 +529,8 @@ static int pa_cli_command_sink_volume(pa_core *c, pa_tokenizer *t, pa_strbuf *bu
return -1;
}
- pa_cvolume_set(&cvolume, sink->sample_spec.channels, volume);
- pa_sink_set_volume(sink, &cvolume, TRUE, TRUE, TRUE, TRUE);
+ pa_cvolume_set(&cvolume, 1, volume);
+ pa_sink_set_volume(sink, &cvolume, TRUE, TRUE);
return 0;
}
@@ -571,7 +571,7 @@ static int pa_cli_command_sink_input_volume(pa_core *c, pa_tokenizer *t, pa_strb
return -1;
}
- pa_cvolume_set(&cvolume, si->sample_spec.channels, volume);
+ pa_cvolume_set(&cvolume, 1, volume);
pa_sink_input_set_volume(si, &cvolume, TRUE, TRUE);
return 0;
}
@@ -607,7 +607,7 @@ static int pa_cli_command_source_volume(pa_core *c, pa_tokenizer *t, pa_strbuf *
return -1;
}
- pa_cvolume_set(&cvolume, source->sample_spec.channels, volume);
+ pa_cvolume_set(&cvolume, 1, volume);
pa_source_set_volume(source, &cvolume, TRUE);
return 0;
}
@@ -1549,7 +1549,7 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
pa_sink *sink;
pa_source *source;
pa_card *card;
- int nl;
+ pa_bool_t nl;
uint32_t idx;
char txt[256];
time_t now;
@@ -1567,7 +1567,7 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
pa_strbuf_printf(buf, "### Configuration dump generated at %s\n", ctime(&now));
#endif
- for (m = pa_idxset_first(c->modules, &idx); m; m = pa_idxset_next(c->modules, &idx)) {
+ PA_IDXSET_FOREACH(m, c->modules, idx) {
pa_strbuf_printf(buf, "load-module %s", m->name);
@@ -1577,58 +1577,58 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
pa_strbuf_puts(buf, "\n");
}
- nl = 0;
-
- for (sink = pa_idxset_first(c->sinks, &idx); sink; sink = pa_idxset_next(c->sinks, &idx)) {
+ nl = FALSE;
+ PA_IDXSET_FOREACH(sink, c->sinks, idx) {
if (!nl) {
pa_strbuf_puts(buf, "\n");
- nl = 1;
+ nl = TRUE;
}
- pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_avg(pa_sink_get_volume(sink, FALSE, TRUE)));
+ pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_max(pa_sink_get_volume(sink, FALSE)));
pa_strbuf_printf(buf, "set-sink-mute %s %s\n", sink->name, pa_yes_no(pa_sink_get_mute(sink, FALSE)));
pa_strbuf_printf(buf, "suspend-sink %s %s\n", sink->name, pa_yes_no(pa_sink_get_state(sink) == PA_SINK_SUSPENDED));
}
- for (source = pa_idxset_first(c->sources, &idx); source; source = pa_idxset_next(c->sources, &idx)) {
+ nl = FALSE;
+ PA_IDXSET_FOREACH(source, c->sources, idx) {
if (!nl) {
pa_strbuf_puts(buf, "\n");
- nl = 1;
+ nl = TRUE;
}
- pa_strbuf_printf(buf, "set-source-volume %s 0x%03x\n", source->name, pa_cvolume_avg(pa_source_get_volume(source, FALSE)));
+ pa_strbuf_printf(buf, "set-source-volume %s 0x%03x\n", source->name, pa_cvolume_max(pa_source_get_volume(source, FALSE)));
pa_strbuf_printf(buf, "set-source-mute %s %s\n", source->name, pa_yes_no(pa_source_get_mute(source, FALSE)));
pa_strbuf_printf(buf, "suspend-source %s %s\n", source->name, pa_yes_no(pa_source_get_state(source) == PA_SOURCE_SUSPENDED));
}
- for (card = pa_idxset_first(c->cards, &idx); card; card = pa_idxset_next(c->cards, &idx)) {
+ nl = FALSE;
+ PA_IDXSET_FOREACH(card, c->cards, idx) {
if (!nl) {
pa_strbuf_puts(buf, "\n");
- nl = 1;
+ nl = TRUE;
}
if (card->active_profile)
pa_strbuf_printf(buf, "set-card-profile %s %s\n", card->name, card->active_profile->name);
}
- nl = 0;
-
+ nl = FALSE;
if ((sink = pa_namereg_get_default_sink(c))) {
if (!nl) {
pa_strbuf_puts(buf, "\n");
- nl = 1;
+ nl = TRUE;
}
+
pa_strbuf_printf(buf, "set-default-sink %s\n", sink->name);
}
if ((source = pa_namereg_get_default_source(c))) {
- if (!nl) {
+ if (!nl)
pa_strbuf_puts(buf, "\n");
- nl = 1;
- }
+
pa_strbuf_printf(buf, "set-default-source %s\n", source->name);
}
@@ -1813,8 +1813,6 @@ int pa_cli_command_execute_file(pa_core *c, const char *fn, pa_strbuf *buf, pa_b
ret = pa_cli_command_execute_file_stream(c, f, buf, fail);
- ret = 0;
-
fail:
if (f)
fclose(f);
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index 9395513d..23a57d37 100644
--- a/src/pulsecore/cli-text.c
+++ b/src/pulsecore/cli-text.c
@@ -232,6 +232,7 @@ char *pa_sink_list_to_string(pa_core *c) {
"\tflags: %s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tsuspend cause: %s%s%s%s\n"
+ "\tpriority: %u\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
"\tbase volume: %s%s%s\n"
@@ -262,10 +263,11 @@ char *pa_sink_list_to_string(pa_core *c) {
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->priority,
+ pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, 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)) : "",
- pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE, FALSE), &sink->channel_map),
+ sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE)) : "",
+ pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE), &sink->channel_map),
pa_volume_snprint(v, sizeof(v), sink->base_volume),
sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "",
sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_volume_snprint_dB(vdb, sizeof(vdb), sink->base_volume) : "",
@@ -296,7 +298,7 @@ char *pa_sink_list_to_string(pa_core *c) {
pa_strbuf_printf(
s,
"\tfixed latency: %0.2f ms\n",
- (double) pa_sink_get_requested_latency(sink) / PA_USEC_PER_MSEC);
+ (double) pa_sink_get_fixed_latency(sink) / PA_USEC_PER_MSEC);
if (sink->card)
pa_strbuf_printf(s, "\tcard: %u <%s>\n", sink->card->index, sink->card->name);
@@ -356,6 +358,7 @@ char *pa_source_list_to_string(pa_core *c) {
"\tflags: %s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tsuspend cause: %s%s%s%s\n"
+ "\tpriority: %u\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
"\tbase volume: %s%s%s\n"
@@ -383,6 +386,7 @@ char *pa_source_list_to_string(pa_core *c) {
source->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "",
source->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "",
source->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "",
+ source->priority,
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)) : "",
@@ -415,7 +419,7 @@ char *pa_source_list_to_string(pa_core *c) {
pa_strbuf_printf(
s,
"\tfixed latency: %0.2f ms\n",
- (double) pa_source_get_requested_latency(source) / PA_USEC_PER_MSEC);
+ (double) pa_source_get_fixed_latency(source) / PA_USEC_PER_MSEC);
if (source->monitor_of)
pa_strbuf_printf(s, "\tmonitor_of: %u\n", source->monitor_of->index);
@@ -482,7 +486,7 @@ char *pa_source_output_list_to_string(pa_core *c) {
s,
" index: %u\n"
"\tdriver: <%s>\n"
- "\tflags: %s%s%s%s%s%s%s%s%s%s\n"
+ "\tflags: %s%s%s%s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tsource: %u <%s>\n"
"\tcurrent latency: %0.2f ms\n"
@@ -501,7 +505,8 @@ char *pa_source_output_list_to_string(pa_core *c) {
o->flags & PA_SOURCE_OUTPUT_FIX_RATE ? "FIX_RATE " : "",
o->flags & PA_SOURCE_OUTPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "",
o->flags & PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "",
- o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "",
+ o->flags & PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_ON_SUSPEND " : "",
+ o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "",
state_table[pa_source_output_get_state(o)],
o->source->index, o->source->name,
(double) pa_source_output_get_latency(o, NULL) / PA_USEC_PER_MSEC,
@@ -564,7 +569,7 @@ char *pa_sink_input_list_to_string(pa_core *c) {
s,
" index: %u\n"
"\tdriver: <%s>\n"
- "\tflags: %s%s%s%s%s%s%s%s%s%s\n"
+ "\tflags: %s%s%s%s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tsink: %u <%s>\n"
"\tvolume: %s\n"
@@ -587,7 +592,8 @@ char *pa_sink_input_list_to_string(pa_core *c) {
i->flags & PA_SINK_INPUT_FIX_RATE ? "FIX_RATE " : "",
i->flags & PA_SINK_INPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "",
i->flags & PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "",
- i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "",
+ i->flags & PA_SINK_INPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_SUSPEND " : "",
+ i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "",
state_table[pa_sink_input_get_state(i)],
i->sink->index, i->sink->name,
pa_cvolume_snprint(cv, sizeof(cv), &v),
diff --git a/src/pulsecore/conf-parser.c b/src/pulsecore/conf-parser.c
index 2dc9a223..dd4a99ee 100644
--- a/src/pulsecore/conf-parser.c
+++ b/src/pulsecore/conf-parser.c
@@ -113,7 +113,7 @@ static int parse_line(const char *filename, unsigned line, char **section, const
return 0;
if (pa_startswith(b, ".include ")) {
- char *path, *fn;
+ char *path = NULL, *fn;
int r;
fn = strip(b+9);
@@ -278,6 +278,30 @@ int pa_config_parse_bool(const char *filename, unsigned line, const char *sectio
return 0;
}
+int pa_config_parse_not_bool(
+ const char *filename, unsigned line,
+ const char *section,
+ const char *lvalue, const char *rvalue,
+ void *data, void *userdata) {
+
+ int k;
+ pa_bool_t *b = data;
+
+ pa_assert(filename);
+ pa_assert(lvalue);
+ pa_assert(rvalue);
+ pa_assert(data);
+
+ if ((k = pa_parse_boolean(rvalue)) < 0) {
+ pa_log("[%s:%u] Failed to parse boolean value: %s", filename, line, rvalue);
+ return -1;
+ }
+
+ *b = !k;
+
+ return 0;
+}
+
int pa_config_parse_string(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
char **s = data;
diff --git a/src/pulsecore/conf-parser.h b/src/pulsecore/conf-parser.h
index 08e17ca7..c6c8a148 100644
--- a/src/pulsecore/conf-parser.h
+++ b/src/pulsecore/conf-parser.h
@@ -47,6 +47,7 @@ int pa_config_parse_int(const char *filename, unsigned line, const char *section
int pa_config_parse_unsigned(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
int pa_config_parse_size(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
int pa_config_parse_bool(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
+int pa_config_parse_not_bool(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
int pa_config_parse_string(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
#endif
diff --git a/src/pulsecore/core-scache.c b/src/pulsecore/core-scache.c
index 4c5a4b26..1fb81d0d 100644
--- a/src/pulsecore/core-scache.c
+++ b/src/pulsecore/core-scache.c
@@ -335,12 +335,12 @@ int pa_scache_play_item(pa_core *c, const char *name, pa_sink *sink, pa_volume_t
pass_volume = TRUE;
- if (e->volume_is_set && volume != (pa_volume_t) -1) {
+ if (e->volume_is_set && volume != PA_VOLUME_INVALID) {
pa_cvolume_set(&r, e->sample_spec.channels, volume);
pa_sw_cvolume_multiply(&r, &r, &e->volume);
} else if (e->volume_is_set)
r = e->volume;
- else if (volume != (pa_volume_t) -1)
+ else if (volume != PA_VOLUME_INVALID)
pa_cvolume_set(&r, e->sample_spec.channels, volume);
else
pass_volume = FALSE;
@@ -494,13 +494,14 @@ int pa_scache_add_directory_lazy(pa_core *c, const char *pathname) {
struct dirent *e;
while ((e = readdir(dir))) {
- char p[PATH_MAX];
+ char *p;
if (e->d_name[0] == '.')
continue;
- pa_snprintf(p, sizeof(p), "%s/%s", pathname, e->d_name);
+ p = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", pathname, e->d_name);
add_file(c, p);
+ pa_xfree(p);
}
closedir(dir);
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 04e7eb24..7a9f458c 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -101,6 +101,10 @@
#include "rtkit.h"
#endif
+#ifdef __linux__
+#include <sys/personality.h>
+#endif
+
#include <pulse/xmalloc.h>
#include <pulse/util.h>
#include <pulse/utf8.h>
@@ -111,6 +115,8 @@
#include <pulsecore/macro.h>
#include <pulsecore/thread.h>
#include <pulsecore/strbuf.h>
+#include <pulsecore/usergroup.h>
+#include <pulsecore/strlist.h>
#include "core-util.h"
@@ -119,6 +125,8 @@
#define MSG_NOSIGNAL 0
#endif
+static pa_strlist *recorded_env = NULL;
+
#ifdef OS_IS_WIN32
#define PULSE_ROOTENV "PULSE_ROOT"
@@ -552,12 +560,20 @@ char *pa_vsprintf_malloc(const char *format, va_list ap) {
/* Similar to OpenBSD's strlcpy() function */
char *pa_strlcpy(char *b, const char *s, size_t l) {
+ size_t k;
+
pa_assert(b);
pa_assert(s);
pa_assert(l > 0);
- strncpy(b, s, l);
- b[l-1] = 0;
+ k = strlen(s);
+
+ if (k > l-1)
+ k = l-1;
+
+ memcpy(b, s, k);
+ b[k] = 0;
+
return b;
}
@@ -575,13 +591,13 @@ static int set_scheduler(int rtprio) {
sp.sched_priority = rtprio;
#ifdef SCHED_RESET_ON_FORK
- if ((r = pthread_setschedparam(pthread_self(), SCHED_RR|SCHED_RESET_ON_FORK, &sp)) == 0) {
+ if (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 ((r = pthread_setschedparam(pthread_self(), SCHED_RR, &sp)) == 0) {
+ if (pthread_setschedparam(pthread_self(), SCHED_RR, &sp) == 0) {
pa_log_debug("SCHED_RR worked.");
return 0;
}
@@ -596,6 +612,11 @@ static int set_scheduler(int rtprio) {
return -1;
}
+ /* We need to disable exit on disconnect because otherwise
+ * dbus_shutdown will kill us. See
+ * https://bugs.freedesktop.org/show_bug.cgi?id=16924 */
+ dbus_connection_set_exit_on_disconnect(bus, FALSE);
+
r = rtkit_make_realtime(bus, 0, rtprio);
dbus_connection_unref(bus);
@@ -664,6 +685,11 @@ static int set_nice(int nice_level) {
return -1;
}
+ /* We need to disable exit on disconnect because otherwise
+ * dbus_shutdown will kill us. See
+ * https://bugs.freedesktop.org/show_bug.cgi?id=16924 */
+ dbus_connection_set_exit_on_disconnect(bus, FALSE);
+
r = rtkit_make_high_priority(bus, 0, nice_level);
dbus_connection_unref(bus);
@@ -760,7 +786,6 @@ int pa_match(const char *expr, const char *v) {
/* Try to parse a boolean string value.*/
int pa_parse_boolean(const char *v) {
const char *expr;
- int r;
pa_assert(v);
/* First we check language independant */
@@ -772,12 +797,12 @@ int pa_parse_boolean(const char *v) {
/* And then we check language dependant */
if ((expr = nl_langinfo(YESEXPR)))
if (expr[0])
- if ((r = pa_match(expr, v)) > 0)
+ if (pa_match(expr, v) > 0)
return 1;
if ((expr = nl_langinfo(NOEXPR)))
if (expr[0])
- if ((r = pa_match(expr, v)) > 0)
+ if (pa_match(expr, v) > 0)
return 0;
errno = EINVAL;
@@ -957,54 +982,24 @@ fail:
/* Check whether the specified GID and the group name match */
static int is_group(gid_t gid, const char *name) {
- struct group group, *result = NULL;
- long n;
- void *data;
+ struct group *group = NULL;
int r = -1;
-#ifdef HAVE_GETGRGID_R
-#ifdef _SC_GETGR_R_SIZE_MAX
- n = sysconf(_SC_GETGR_R_SIZE_MAX);
-#else
- n = -1;
-#endif
- if (n <= 0)
- n = 512;
-
- data = pa_xmalloc((size_t) n);
-
errno = 0;
- if (getgrgid_r(gid, &group, data, (size_t) n, &result) < 0 || !result) {
- pa_log("getgrgid_r(%u): %s", (unsigned) gid, pa_cstrerror(errno));
-
+ if (!(group = pa_getgrgid_malloc(gid)))
+ {
if (!errno)
errno = ENOENT;
- goto finish;
- }
-
- r = strcmp(name, result->gr_name) == 0;
-
-finish:
- pa_xfree(data);
-#else
- /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X) that do not
- * support getgrgid_r. */
-
- errno = 0;
- if (!(result = getgrgid(gid))) {
- pa_log("getgrgid(%u): %s", gid, pa_cstrerror(errno));
-
- if (!errno)
- errno = ENOENT;
+ pa_log("pa_getgrgid_malloc(%u): %s", gid, pa_cstrerror(errno));
goto finish;
}
- r = strcmp(name, result->gr_name) == 0;
+ r = strcmp(name, group->gr_name) == 0;
finish:
-#endif
+ pa_getgrgid_free(group);
return r;
}
@@ -1053,38 +1048,12 @@ finish:
/* Check whether the specifc user id is a member of the specified group */
int pa_uid_in_group(uid_t uid, const char *name) {
- char *g_buf, *p_buf;
- long g_n, p_n;
- struct group grbuf, *gr;
+ struct group *group = NULL;
char **i;
int r = -1;
-#ifdef _SC_GETGR_R_SIZE_MAX
- g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
-#else
- g_n = -1;
-#endif
- if (g_n <= 0)
- g_n = 512;
-
- g_buf = pa_xmalloc((size_t) g_n);
-
-#ifdef _SC_GETPW_R_SIZE_MAX
- p_n = sysconf(_SC_GETPW_R_SIZE_MAX);
-#else
- p_n = -1;
-#endif
- if (p_n <= 0)
- p_n = 512;
-
- p_buf = pa_xmalloc((size_t) p_n);
-
errno = 0;
-#ifdef HAVE_GETGRNAM_R
- if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
-#else
- if (!(gr = getgrnam(name)))
-#endif
+ if (!(group = pa_getgrnam_malloc(name)))
{
if (!errno)
errno = ENOENT;
@@ -1092,25 +1061,24 @@ int pa_uid_in_group(uid_t uid, const char *name) {
}
r = 0;
- for (i = gr->gr_mem; *i; i++) {
- struct passwd pwbuf, *pw;
+ for (i = group->gr_mem; *i; i++) {
+ struct passwd *pw = NULL;
-#ifdef HAVE_GETPWNAM_R
- if (getpwnam_r(*i, &pwbuf, p_buf, (size_t) p_n, &pw) != 0 || !pw)
-#else
- if (!(pw = getpwnam(*i)))
-#endif
+ errno = 0;
+ if (!(pw = pa_getpwnam_malloc(*i)))
continue;
- if (pw->pw_uid == uid) {
+ if (pw->pw_uid == uid)
r = 1;
+
+ pa_getpwnam_free(pw);
+
+ if (r == 1)
break;
- }
}
finish:
- pa_xfree(g_buf);
- pa_xfree(p_buf);
+ pa_getgrnam_free(group);
return r;
}
@@ -1118,26 +1086,10 @@ finish:
/* Get the GID of a gfiven group, return (gid_t) -1 on failure. */
gid_t pa_get_gid_of_group(const char *name) {
gid_t ret = (gid_t) -1;
- char *g_buf;
- long g_n;
- struct group grbuf, *gr;
-
-#ifdef _SC_GETGR_R_SIZE_MAX
- g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
-#else
- g_n = -1;
-#endif
- if (g_n <= 0)
- g_n = 512;
-
- g_buf = pa_xmalloc((size_t) g_n);
+ struct group *gr = NULL;
errno = 0;
-#ifdef HAVE_GETGRNAM_R
- if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
-#else
- if (!(gr = getgrnam(name)))
-#endif
+ if (!(gr = pa_getgrnam_malloc(name)))
{
if (!errno)
errno = ENOENT;
@@ -1147,7 +1099,7 @@ gid_t pa_get_gid_of_group(const char *name) {
ret = gr->gr_gid;
finish:
- pa_xfree(g_buf);
+ pa_getgrnam_free(gr);
return ret;
}
@@ -1242,7 +1194,7 @@ char* pa_strip_nl(char *s) {
/* Create a temporary lock file and lock it. */
int pa_lock_lockfile(const char *fn) {
- int fd = -1;
+ int fd;
pa_assert(fn);
for (;;) {
@@ -1285,8 +1237,6 @@ int pa_lock_lockfile(const char *fn) {
fd = -1;
goto fail;
}
-
- fd = -1;
}
return fd;
@@ -1328,26 +1278,32 @@ int pa_unlock_lockfile(const char *fn, int fd) {
}
static char *get_pulse_home(void) {
- char h[PATH_MAX];
+ char *h;
struct stat st;
+ char *ret = NULL;
- if (!pa_get_home_dir(h, sizeof(h))) {
+ if (!(h = pa_get_home_dir_malloc())) {
pa_log_error("Failed to get home directory.");
return NULL;
}
if (stat(h, &st) < 0) {
pa_log_error("Failed to stat home directory %s: %s", h, pa_cstrerror(errno));
- return NULL;
+ goto finish;
}
if (st.st_uid != getuid()) {
pa_log_error("Home directory %s not ours.", h);
errno = EACCES;
- return NULL;
+ goto finish;
}
- return pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse", h);
+ ret = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse", h);
+
+finish:
+ pa_xfree(h);
+
+ return ret;
}
char *pa_get_state_dir(void) {
@@ -1372,6 +1328,50 @@ char *pa_get_state_dir(void) {
return d;
}
+char *pa_get_home_dir_malloc(void) {
+ char *homedir;
+ size_t allocated = 128;
+
+ for (;;) {
+ homedir = pa_xmalloc(allocated);
+
+ if (!pa_get_home_dir(homedir, allocated)) {
+ pa_xfree(homedir);
+ return NULL;
+ }
+
+ if (strlen(homedir) < allocated - 1)
+ break;
+
+ pa_xfree(homedir);
+ allocated *= 2;
+ }
+
+ return homedir;
+}
+
+char *pa_get_binary_name_malloc(void) {
+ char *t;
+ size_t allocated = 128;
+
+ for (;;) {
+ t = pa_xmalloc(allocated);
+
+ if (!pa_get_binary_name(t, allocated)) {
+ pa_xfree(t);
+ return NULL;
+ }
+
+ if (strlen(t) < allocated - 1)
+ break;
+
+ pa_xfree(t);
+ allocated *= 2;
+ }
+
+ return t;
+}
+
static char* make_random_dir(mode_t m) {
static const char table[] =
"abcdefghijklmnopqrstuvwxyz"
@@ -1481,7 +1481,7 @@ char *pa_get_runtime_dir(void) {
goto fail;
}
- k = pa_sprintf_malloc("%s" PA_PATH_SEP "%s:runtime", d, mid);
+ k = pa_sprintf_malloc("%s" PA_PATH_SEP "%s-runtime", d, mid);
pa_xfree(d);
pa_xfree(mid);
@@ -1626,14 +1626,15 @@ FILE *pa_open_config_file(const char *global, const char *local, const char *env
if (local) {
const char *e;
char *lfn;
- char h[PATH_MAX];
+ char *h;
FILE *f;
if ((e = getenv("PULSE_CONFIG_PATH")))
fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", e, local);
- else if (pa_get_home_dir(h, sizeof(h)))
+ else if ((h = pa_get_home_dir_malloc())) {
fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse" PA_PATH_SEP "%s", h, local);
- else
+ pa_xfree(h);
+ } else
return NULL;
#ifdef OS_IS_WIN32
@@ -1713,13 +1714,14 @@ char *pa_find_config_file(const char *global, const char *local, const char *env
if (local) {
const char *e;
char *lfn;
- char h[PATH_MAX];
+ char *h;
if ((e = getenv("PULSE_CONFIG_PATH")))
fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", e, local);
- else if (pa_get_home_dir(h, sizeof(h)))
+ else if ((h = pa_get_home_dir_malloc())) {
fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse" PA_PATH_SEP "%s", h, local);
- else
+ pa_xfree(h);
+ } else
return NULL;
#ifdef OS_IS_WIN32
@@ -1885,17 +1887,17 @@ char *pa_make_path_absolute(const char *p) {
static char *get_path(const char *fn, pa_bool_t prependmid, pa_bool_t rt) {
char *rtp;
- if (pa_is_path_absolute(fn))
- return pa_xstrdup(fn);
-
rtp = rt ? pa_get_runtime_dir() : pa_get_state_dir();
- if (!rtp)
- return NULL;
-
if (fn) {
char *r;
+ if (pa_is_path_absolute(fn))
+ return pa_xstrdup(fn);
+
+ if (!rtp)
+ return NULL;
+
if (prependmid) {
char *mid;
@@ -1904,7 +1906,7 @@ static char *get_path(const char *fn, pa_bool_t prependmid, pa_bool_t rt) {
return NULL;
}
- r = pa_sprintf_malloc("%s" PA_PATH_SEP "%s:%s", rtp, mid, fn);
+ r = pa_sprintf_malloc("%s" PA_PATH_SEP "%s-%s", rtp, mid, fn);
pa_xfree(mid);
} else
r = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", rtp, fn);
@@ -2231,7 +2233,7 @@ int pa_close_all(int except_fd, ...) {
va_end(ap);
r = pa_close_allv(p);
- free(p);
+ pa_xfree(p);
return r;
}
@@ -2402,7 +2404,7 @@ int pa_reset_sigs(int except, ...) {
p[i++] = except;
while ((sig = va_arg(ap, int)) >= 0)
- sig = p[i++];
+ p[i++] = sig;
}
p[i] = -1;
@@ -2459,9 +2461,38 @@ void pa_set_env(const char *key, const char *value) {
pa_assert(key);
pa_assert(value);
+ /* This is not thread-safe */
+
putenv(pa_sprintf_malloc("%s=%s", key, value));
}
+void pa_set_env_and_record(const char *key, const char *value) {
+ pa_assert(key);
+ pa_assert(value);
+
+ /* This is not thread-safe */
+
+ pa_set_env(key, value);
+ recorded_env = pa_strlist_prepend(recorded_env, key);
+}
+
+void pa_unset_env_recorded(void) {
+
+ /* This is not thread-safe */
+
+ for (;;) {
+ char *s;
+
+ recorded_env = pa_strlist_pop(recorded_env, &s);
+
+ if (!s)
+ break;
+
+ unsetenv(s);
+ pa_xfree(s);
+ }
+}
+
pa_bool_t pa_in_system_mode(void) {
const char *e;
@@ -2779,3 +2810,47 @@ char* pa_maybe_prefix_path(const char *path, const char *prefix) {
return pa_sprintf_malloc("%s" PA_PATH_SEP "%s", prefix, path);
}
+
+size_t pa_pipe_buf(int fd) {
+
+#ifdef _PC_PIPE_BUF
+ long n;
+
+ if ((n = fpathconf(fd, _PC_PIPE_BUF)) >= 0)
+ return (size_t) n;
+#endif
+
+#ifdef PIPE_BUF
+ return PIPE_BUF;
+#else
+ return 4096;
+#endif
+}
+
+void pa_reset_personality(void) {
+
+#ifdef __linux__
+ if (personality(PER_LINUX) < 0)
+ pa_log_warn("Uh, personality() failed: %s", pa_cstrerror(errno));
+#endif
+
+}
+
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+
+pa_bool_t pa_run_from_build_tree(void) {
+ char *rp;
+ pa_bool_t b = FALSE;
+
+ /* We abuse __OPTIMIZE__ as a check whether we are a debug build
+ * or not. */
+
+ if ((rp = pa_readlink("/proc/self/exe"))) {
+ b = pa_startswith(rp, PA_BUILDDIR);
+ pa_xfree(rp);
+ }
+
+ return b;
+}
+
+#endif
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index 96a0480a..ccc9a38e 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -126,6 +126,8 @@ char* pa_find_config_file(const char *global, const char *local, const char *env
char *pa_get_runtime_dir(void);
char *pa_get_state_dir(void);
+char *pa_get_home_dir_malloc(void);
+char *pa_get_binary_name_malloc(void);
char *pa_runtime_path(const char *fn);
char *pa_state_path(const char *fn, pa_bool_t prepend_machine_id);
@@ -193,6 +195,8 @@ int pa_reset_sigs(int except, ...);
int pa_reset_sigsv(const int except[]);
void pa_set_env(const char *key, const char *value);
+void pa_set_env_and_record(const char *key, const char *value);
+void pa_unset_env_recorded(void);
pa_bool_t pa_in_system_mode(void);
@@ -236,4 +240,13 @@ char **pa_split_spaces_strv(const char *s);
char* pa_maybe_prefix_path(const char *path, const char *prefix);
+/* Returns size of the specified pipe or 4096 on failure */
+size_t pa_pipe_buf(int fd);
+
+void pa_reset_personality(void);
+
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+pa_bool_t pa_run_from_build_tree(void);
+#endif
+
#endif
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index f5eb8352..f0726453 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -47,7 +47,7 @@
#include "core.h"
-static PA_DEFINE_CHECK_TYPE(pa_core, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_core, pa_msgobject);
static int core_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk) {
pa_core *c = PA_CORE(o);
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index e7abd61b..c1002f93 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -83,7 +83,6 @@ typedef enum pa_core_hook {
PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL,
PA_CORE_HOOK_SINK_INPUT_STATE_CHANGED,
PA_CORE_HOOK_SINK_INPUT_PROPLIST_CHANGED,
- PA_CORE_HOOK_SINK_INPUT_SET_VOLUME,
PA_CORE_HOOK_SINK_INPUT_SEND_EVENT,
PA_CORE_HOOK_SOURCE_OUTPUT_NEW,
PA_CORE_HOOK_SOURCE_OUTPUT_FIXATE,
@@ -166,7 +165,7 @@ struct pa_core {
pa_hook hooks[PA_CORE_HOOK_MAX];
};
-PA_DECLARE_CLASS(pa_core);
+PA_DECLARE_PUBLIC_CLASS(pa_core);
#define PA_CORE(o) pa_core_cast(o)
enum {
diff --git a/src/pulsecore/cpu-arm.c b/src/pulsecore/cpu-arm.c
new file mode 100644
index 00000000..453b7848
--- /dev/null
+++ b/src/pulsecore/cpu-arm.c
@@ -0,0 +1,139 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ 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 <stdint.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <pulse/xmalloc.h>
+#include <pulsecore/log.h>
+
+#include "cpu-arm.h"
+
+#if defined (__arm__) && defined (__linux__)
+
+#define MAX_BUFFER 4096
+static char *
+get_cpuinfo_line (char *cpuinfo, const char *tag) {
+ char *line, *end, *colon;
+
+ if (!(line = strstr (cpuinfo, tag)))
+ return NULL;
+
+ if (!(end = strchr (line, '\n')))
+ return NULL;
+
+ if (!(colon = strchr (line, ':')))
+ return NULL;
+
+ if (++colon >= end)
+ return NULL;
+
+ return pa_xstrndup (colon, end - colon);
+}
+
+static char *get_cpuinfo(void) {
+ char *cpuinfo;
+ int n, fd;
+
+ cpuinfo = pa_xmalloc(MAX_BUFFER);
+
+ if ((fd = open("/proc/cpuinfo", O_RDONLY)) < 0) {
+ pa_xfree(cpuinfo);
+ return NULL;
+ }
+
+ if ((n = pa_read(fd, cpuinfo, MAX_BUFFER-1)) < 0) {
+ pa_xfree(cpuinfo);
+ pa_close(fd);
+ return NULL;
+ }
+ cpuinfo[n] = 0;
+ pa_close(fd);
+
+ return cpuinfo;
+}
+#endif /* defined (__arm__) && defined (__linux__) */
+
+void pa_cpu_init_arm (void) {
+#if defined (__arm__)
+#if defined (__linux__)
+ char *cpuinfo, *line;
+ int arch;
+ pa_cpu_arm_flag_t flags = 0;
+
+ /* We need to read the CPU flags from /proc/cpuinfo because there is no user
+ * space support to get the CPU features. This only works on linux AFAIK. */
+ if (!(cpuinfo = get_cpuinfo ())) {
+ pa_log ("Can't read cpuinfo");
+ return;
+ }
+
+ /* get the CPU architecture */
+ if ((line = get_cpuinfo_line (cpuinfo, "CPU architecture"))) {
+ arch = strtoul (line, NULL, 0);
+ if (arch >= 6)
+ flags |= PA_CPU_ARM_V6;
+ if (arch >= 7)
+ flags |= PA_CPU_ARM_V7;
+
+ pa_xfree(line);
+ }
+ /* get the CPU features */
+ if ((line = get_cpuinfo_line (cpuinfo, "Features"))) {
+ char *state = NULL, *current;
+
+ while ((current = pa_split_spaces (line, &state))) {
+ if (!strcmp (current, "vfp"))
+ flags |= PA_CPU_ARM_VFP;
+ else if (!strcmp (current, "edsp"))
+ flags |= PA_CPU_ARM_EDSP;
+ else if (!strcmp (current, "neon"))
+ flags |= PA_CPU_ARM_NEON;
+ else if (!strcmp (current, "vfpv3"))
+ flags |= PA_CPU_ARM_VFPV3;
+
+ pa_xfree(current);
+ }
+ }
+ pa_xfree(cpuinfo);
+
+ pa_log_info ("CPU flags: %s%s%s%s%s%s",
+ (flags & PA_CPU_ARM_V6) ? "V6 " : "",
+ (flags & PA_CPU_ARM_V7) ? "V7 " : "",
+ (flags & PA_CPU_ARM_VFP) ? "VFP " : "",
+ (flags & PA_CPU_ARM_EDSP) ? "EDSP " : "",
+ (flags & PA_CPU_ARM_NEON) ? "NEON " : "",
+ (flags & PA_CPU_ARM_VFPV3) ? "VFPV3 " : "");
+#else /* defined (__linux__) */
+ pa_log ("ARM cpu features not yet supported on this OS");
+#endif /* defined (__linux__) */
+
+ if (flags & PA_CPU_ARM_V6)
+ pa_volume_func_init_arm (flags);
+#endif /* defined (__arm__) */
+}
diff --git a/src/daemon/polkit.h b/src/pulsecore/cpu-arm.h
index 018f6ef1..3ccd0708 100644
--- a/src/daemon/polkit.h
+++ b/src/pulsecore/cpu-arm.h
@@ -1,10 +1,11 @@
-#ifndef foopolkithfoo
-#define foopolkithfoo
+#ifndef foocpuarmhfoo
+#define foocpuarmhfoo
/***
This file is part of PulseAudio.
- Copyright 2007 Lennart Poettering
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
@@ -22,6 +23,20 @@
USA.
***/
-int pa_polkit_check(const char *action);
+#include <stdint.h>
-#endif
+typedef enum pa_cpu_arm_flag {
+ PA_CPU_ARM_V6 = (1 << 0),
+ PA_CPU_ARM_V7 = (1 << 1),
+ PA_CPU_ARM_VFP = (1 << 2),
+ PA_CPU_ARM_EDSP = (1 << 3),
+ PA_CPU_ARM_NEON = (1 << 4),
+ PA_CPU_ARM_VFPV3 = (1 << 5)
+} pa_cpu_arm_flag_t;
+
+void pa_cpu_init_arm (void);
+
+/* some optimized functions */
+void pa_volume_func_init_arm(pa_cpu_arm_flag_t flags);
+
+#endif /* foocpuarmhfoo */
diff --git a/src/pulsecore/cpu-x86.c b/src/pulsecore/cpu-x86.c
new file mode 100644
index 00000000..f194a608
--- /dev/null
+++ b/src/pulsecore/cpu-x86.c
@@ -0,0 +1,125 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ 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 <stdint.h>
+
+#include <pulsecore/log.h>
+
+#include "cpu-x86.h"
+
+#if defined (__i386__) || defined (__amd64__)
+static void
+get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
+{
+ __asm__ __volatile__ (
+ " push %%"PA_REG_b" \n\t"
+ " cpuid \n\t"
+ " mov %%ebx, %%esi \n\t"
+ " pop %%"PA_REG_b" \n\t"
+
+ : "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d)
+ : "0" (op)
+ );
+}
+#endif
+
+void pa_cpu_init_x86 (void) {
+#if defined (__i386__) || defined (__amd64__)
+ uint32_t eax, ebx, ecx, edx;
+ uint32_t level;
+ pa_cpu_x86_flag_t flags = 0;
+
+ /* get standard level */
+ get_cpuid (0x00000000, &level, &ebx, &ecx, &edx);
+ if (level >= 1) {
+ get_cpuid (0x00000001, &eax, &ebx, &ecx, &edx);
+
+ if (edx & (1<<23))
+ flags |= PA_CPU_X86_MMX;
+
+ if (edx & (1<<25))
+ flags |= PA_CPU_X86_SSE;
+
+ if (edx & (1<<26))
+ flags |= PA_CPU_X86_SSE2;
+
+ if (ecx & (1<<0))
+ flags |= PA_CPU_X86_SSE3;
+
+ if (ecx & (1<<9))
+ flags |= PA_CPU_X86_SSSE3;
+
+ if (ecx & (1<<19))
+ flags |= PA_CPU_X86_SSE4_1;
+
+ if (ecx & (1<<20))
+ flags |= PA_CPU_X86_SSE4_2;
+ }
+
+ /* get extended level */
+ get_cpuid (0x80000000, &level, &ebx, &ecx, &edx);
+ if (level >= 0x80000001) {
+ get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx);
+
+ if (edx & (1<<22))
+ flags |= PA_CPU_X86_MMXEXT;
+
+ if (edx & (1<<23))
+ flags |= PA_CPU_X86_MMX;
+
+ if (edx & (1<<30))
+ flags |= PA_CPU_X86_3DNOWEXT;
+
+ if (edx & (1<<31))
+ flags |= PA_CPU_X86_3DNOW;
+ }
+
+ pa_log_info ("CPU flags: %s%s%s%s%s%s%s%s%s%s",
+ (flags & PA_CPU_X86_MMX) ? "MMX " : "",
+ (flags & PA_CPU_X86_SSE) ? "SSE " : "",
+ (flags & PA_CPU_X86_SSE2) ? "SSE2 " : "",
+ (flags & PA_CPU_X86_SSE3) ? "SSE3 " : "",
+ (flags & PA_CPU_X86_SSSE3) ? "SSSE3 " : "",
+ (flags & PA_CPU_X86_SSE4_1) ? "SSE4_1 " : "",
+ (flags & PA_CPU_X86_SSE4_2) ? "SSE4_2 " : "",
+ (flags & PA_CPU_X86_MMXEXT) ? "MMXEXT " : "",
+ (flags & PA_CPU_X86_3DNOW) ? "3DNOW " : "",
+ (flags & PA_CPU_X86_3DNOWEXT) ? "3DNOWEXT " : "");
+
+ /* activate various optimisations */
+ if (flags & PA_CPU_X86_MMX) {
+ pa_volume_func_init_mmx (flags);
+ pa_remap_func_init_mmx (flags);
+ }
+
+ if (flags & (PA_CPU_X86_SSE | PA_CPU_X86_SSE2)) {
+ pa_volume_func_init_sse (flags);
+ pa_remap_func_init_sse (flags);
+ pa_convert_func_init_sse (flags);
+ }
+
+#endif /* defined (__i386__) || defined (__amd64__) */
+}
diff --git a/src/pulsecore/cpu-x86.h b/src/pulsecore/cpu-x86.h
new file mode 100644
index 00000000..b40eb5ce
--- /dev/null
+++ b/src/pulsecore/cpu-x86.h
@@ -0,0 +1,71 @@
+#ifndef foocpux86hfoo
+#define foocpux86hfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ 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 <stdint.h>
+
+typedef enum pa_cpu_x86_flag {
+ PA_CPU_X86_MMX = (1 << 0),
+ PA_CPU_X86_MMXEXT = (1 << 1),
+ PA_CPU_X86_SSE = (1 << 2),
+ PA_CPU_X86_SSE2 = (1 << 3),
+ PA_CPU_X86_SSE3 = (1 << 4),
+ PA_CPU_X86_SSSE3 = (1 << 5),
+ PA_CPU_X86_SSE4_1 = (1 << 6),
+ PA_CPU_X86_SSE4_2 = (1 << 7),
+ PA_CPU_X86_3DNOW = (1 << 8),
+ PA_CPU_X86_3DNOWEXT = (1 << 9)
+} pa_cpu_x86_flag_t;
+
+void pa_cpu_init_x86 (void);
+
+
+#if defined (__i386__)
+typedef int32_t pa_reg_x86;
+#define PA_REG_a "eax"
+#define PA_REG_b "ebx"
+#define PA_REG_c "ecx"
+#define PA_REG_d "edx"
+#define PA_REG_D "edi"
+#define PA_REG_S "esi"
+#elif defined (__amd64__)
+typedef int64_t pa_reg_x86;
+#define PA_REG_a "rax"
+#define PA_REG_b "rbx"
+#define PA_REG_c "rcx"
+#define PA_REG_d "rdx"
+#define PA_REG_D "rdi"
+#define PA_REG_S "rsi"
+#endif
+
+/* some optimized functions */
+void pa_volume_func_init_mmx(pa_cpu_x86_flag_t flags);
+void pa_volume_func_init_sse(pa_cpu_x86_flag_t flags);
+
+void pa_remap_func_init_mmx(pa_cpu_x86_flag_t flags);
+void pa_remap_func_init_sse(pa_cpu_x86_flag_t flags);
+
+void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags);
+
+#endif /* foocpux86hfoo */
diff --git a/src/pulsecore/database-simple.c b/src/pulsecore/database-simple.c
new file mode 100644
index 00000000..1f4caf71
--- /dev/null
+++ b/src/pulsecore/database-simple.c
@@ -0,0 +1,510 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Nokia Corporation
+ Contact: Maemo Multimedia <multimedia@maemo.org>
+
+ 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 <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include <pulse/xmalloc.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/log.h>
+#include <pulsecore/core-error.h>
+#include <pulsecore/hashmap.h>
+
+#include "database.h"
+
+
+typedef struct simple_data {
+ char *filename;
+ char *tmp_filename;
+ pa_hashmap *map;
+ pa_bool_t read_only;
+} simple_data;
+
+typedef struct entry {
+ pa_datum key;
+ pa_datum data;
+} entry;
+
+void pa_datum_free(pa_datum *d) {
+ pa_assert(d);
+
+ pa_xfree(d->data);
+ d->data = NULL;
+ d->size = 0;
+}
+
+static int compare_func(const void *a, const void *b) {
+ const pa_datum *aa, *bb;
+
+ aa = (const pa_datum*)a;
+ bb = (const pa_datum*)b;
+
+ if (aa->size != bb->size)
+ return aa->size > bb->size ? 1 : -1;
+
+ return memcmp(aa->data, bb->data, aa->size);
+}
+
+/* pa_idxset_string_hash_func modified for our use */
+static unsigned hash_func(const void *p) {
+ const pa_datum *d;
+ unsigned hash = 0;
+ const char *c;
+ unsigned i;
+
+ d = (const pa_datum*)p;
+ c = d->data;
+
+ for (i = 0; i < d->size; i++) {
+ hash = 31 * hash + (unsigned) *c;
+ c++;
+ }
+
+ return hash;
+}
+
+static entry* new_entry(const pa_datum *key, const pa_datum *data) {
+ entry *e;
+
+ pa_assert(key);
+ pa_assert(data);
+
+ e = pa_xnew0(entry, 1);
+ e->key.data = key->size > 0 ? pa_xmemdup(key->data, key->size) : NULL;
+ e->key.size = key->size;
+ e->data.data = data->size > 0 ? pa_xmemdup(data->data, data->size) : NULL;
+ e->data.size = data->size;
+ return e;
+}
+
+static void free_entry(entry *e) {
+ if (e) {
+ if (e->key.data)
+ pa_xfree(e->key.data);
+ if (e->data.data)
+ pa_xfree(e->data.data);
+ pa_xfree(e);
+ }
+}
+
+static int read_uint(FILE *f, uint32_t *res) {
+ size_t items = 0;
+ uint8_t values[4];
+ uint32_t tmp;
+ int i;
+
+ items = fread(&values, sizeof(values), sizeof(uint8_t), f);
+
+ if (feof(f)) /* EOF */
+ return 0;
+
+ if (ferror(f))
+ return -1;
+
+ for (i = 0; i < 4; ++i) {
+ tmp = values[i];
+ *res += (tmp << (i*8));
+ }
+
+ return items;
+}
+
+static int read_data(FILE *f, void **data, ssize_t *length) {
+ size_t items = 0;
+ uint32_t data_len = 0;
+
+ pa_assert(f);
+
+ *data = NULL;
+ *length = 0;
+
+ if ((items = read_uint(f, &data_len)) <= 0)
+ return -1;
+
+ if (data_len > 0) {
+ *data = pa_xmalloc0(data_len);
+ items = fread(*data, data_len, 1, f);
+
+ if (feof(f)) /* EOF */
+ goto reset;
+
+ if (ferror(f))
+ goto reset;
+
+ *length = data_len;
+
+ } else { /* no data? */
+ return -1;
+ }
+
+ return 0;
+
+reset:
+ pa_xfree(*data);
+ *data = NULL;
+ *length = 0;
+ return -1;
+}
+
+static int fill_data(simple_data *db, FILE *f) {
+ pa_datum key;
+ pa_datum data;
+ void *d = NULL;
+ ssize_t l = 0;
+ pa_bool_t append = FALSE;
+ enum { FIELD_KEY = 0, FIELD_DATA } field = FIELD_KEY;
+
+ pa_assert(db);
+ pa_assert(db->map);
+
+ errno = 0;
+
+ key.size = 0;
+ key.data = NULL;
+
+ while (!read_data(f, &d, &l)) {
+
+ switch (field) {
+ case FIELD_KEY:
+ key.data = d;
+ key.size = l;
+ field = FIELD_DATA;
+ break;
+ case FIELD_DATA:
+ data.data = d;
+ data.size = l;
+ append = TRUE;
+ break;
+ }
+
+ if (append) {
+ entry *e = pa_xnew0(entry, 1);
+ e->key.data = key.data;
+ e->key.size = key.size;
+ e->data.data = data.data;
+ e->data.size = data.size;
+ pa_hashmap_put(db->map, &e->key, e);
+ append = FALSE;
+ field = FIELD_KEY;
+ }
+ }
+
+ if (ferror(f)) {
+ pa_log_warn("read error. %s", pa_cstrerror(errno));
+ pa_database_clear((pa_database*)db);
+ }
+
+ if (field == FIELD_DATA && d)
+ pa_xfree(d);
+
+ return pa_hashmap_size(db->map);
+}
+
+pa_database* pa_database_open(const char *fn, pa_bool_t for_write) {
+ FILE *f;
+ char *path;
+ simple_data *db;
+
+ pa_assert(fn);
+
+ path = pa_sprintf_malloc("%s."CANONICAL_HOST".simple", fn);
+ errno = 0;
+
+ f = fopen(path, "r");
+
+ if (f || errno == ENOENT) { /* file not found is ok */
+ db = pa_xnew0(simple_data, 1);
+ db->map = pa_hashmap_new(hash_func, compare_func);
+ db->filename = pa_xstrdup(path);
+ db->tmp_filename = pa_sprintf_malloc(".%s.tmp", db->filename);
+ db->read_only = !for_write;
+
+ if (f) {
+ fill_data(db, f);
+ fclose(f);
+ }
+ } else {
+ if (errno == 0)
+ errno = EIO;
+ db = NULL;
+ }
+
+ pa_xfree(path);
+
+ return (pa_database*) db;
+}
+
+void pa_database_close(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ pa_assert(db);
+
+ pa_database_sync(database);
+ pa_database_clear(database);
+ pa_xfree(db->filename);
+ pa_xfree(db->tmp_filename);
+ pa_hashmap_free(db->map, NULL, NULL);
+ pa_xfree(db);
+}
+
+pa_datum* pa_database_get(pa_database *database, const pa_datum *key, pa_datum* data) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ e = pa_hashmap_get(db->map, key);
+
+ if (!e)
+ return NULL;
+
+ data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL;
+ data->size = e->data.size;
+
+ return data;
+}
+
+int pa_database_set(pa_database *database, const pa_datum *key, const pa_datum* data, pa_bool_t overwrite) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+ int ret = 0;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ if (db->read_only)
+ return -1;
+
+ e = new_entry(key, data);
+
+ if (pa_hashmap_put(db->map, &e->key, e) < 0) {
+ /* entry with same key exists in hashmap */
+ entry *r;
+ if (overwrite) {
+ r = pa_hashmap_remove(db->map, key);
+ pa_hashmap_put(db->map, &e->key, e);
+ } else {
+ /* wont't overwrite, so clean new entry */
+ r = e;
+ ret = -1;
+ }
+
+ free_entry(r);
+ }
+
+ return ret;
+}
+
+int pa_database_unset(pa_database *database, const pa_datum *key) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ e = pa_hashmap_remove(db->map, key);
+ if (!e)
+ return -1;
+
+ free_entry(e);
+
+ return 0;
+}
+
+int pa_database_clear(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+
+ while ((e = pa_hashmap_steal_first(db->map)))
+ free_entry(e);
+
+ return 0;
+}
+
+signed pa_database_size(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ pa_assert(db);
+
+ return (signed) pa_hashmap_size(db->map);
+}
+
+pa_datum* pa_database_first(pa_database *database, pa_datum *key, pa_datum *data) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ e = pa_hashmap_first(db->map);
+
+ if (!e)
+ return NULL;
+
+ key->data = e->key.size > 0 ? pa_xmemdup(e->key.data, e->key.size) : NULL;
+ key->size = e->key.size;
+
+ if (data) {
+ data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL;
+ data->size = e->data.size;
+ }
+
+ return key;
+}
+
+pa_datum* pa_database_next(pa_database *database, const pa_datum *key, pa_datum *next, pa_datum *data) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+ entry *search;
+ void *state;
+ pa_bool_t pick_now;
+
+ pa_assert(db);
+ pa_assert(next);
+
+ if (!key)
+ return pa_database_first(database, next, data);
+
+ search = pa_hashmap_get(db->map, key);
+
+ state = NULL;
+ pick_now = FALSE;
+
+ while ((e = pa_hashmap_iterate(db->map, &state, NULL))) {
+ if (pick_now)
+ break;
+
+ if (search == e)
+ pick_now = TRUE;
+ }
+
+ if (!pick_now || !e)
+ return NULL;
+
+ next->data = e->key.size > 0 ? pa_xmemdup(e->key.data, e->key.size) : NULL;
+ next->size = e->key.size;
+
+ if (data) {
+ data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL;
+ data->size = e->data.size;
+ }
+
+ return next;
+}
+
+static int write_uint(FILE *f, const uint32_t num) {
+ size_t items;
+ uint8_t values[4];
+ int i;
+ errno = 0;
+
+ for (i = 0; i < 4; i++)
+ values[i] = (num >> (i*8)) & 0xFF;
+
+ items = fwrite(&values, sizeof(values), sizeof(uint8_t), f);
+
+ if (ferror(f))
+ return -1;
+
+ return items;
+}
+
+static int write_data(FILE *f, void *data, const size_t length) {
+ size_t items;
+ uint32_t len;
+
+ len = length;
+ if ((items = write_uint(f, len)) <= 0)
+ return -1;
+
+ items = fwrite(data, length, 1, f);
+
+ if (ferror(f) || items != 1)
+ return -1;
+
+ return 0;
+}
+
+static int write_entry(FILE *f, const entry *e) {
+ pa_assert(f);
+ pa_assert(e);
+
+ if (write_data(f, e->key.data, e->key.size) < 0)
+ return -1;
+ if (write_data(f, e->data.data, e->data.size) < 0)
+ return -1;
+
+ return 0;
+}
+
+int pa_database_sync(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ FILE *f;
+ void *state;
+ entry *e;
+
+ pa_assert(db);
+
+ if (db->read_only)
+ return 0;
+
+ errno = 0;
+
+ f = fopen(db->tmp_filename, "w");
+
+ if (!f)
+ goto fail;
+
+ state = NULL;
+ while((e = pa_hashmap_iterate(db->map, &state, NULL))) {
+ if (write_entry(f, e) < 0) {
+ pa_log_warn("error while writing to file. %s", pa_cstrerror(errno));
+ goto fail;
+ }
+ }
+
+ fclose(f);
+ f = NULL;
+
+ if (rename(db->tmp_filename, db->filename) < 0) {
+ pa_log_warn("error while renaming file. %s", pa_cstrerror(errno));
+ goto fail;
+ }
+
+ return 0;
+
+fail:
+ if (f)
+ fclose(f);
+ return -1;
+}
diff --git a/src/pulsecore/flist.c b/src/pulsecore/flist.c
index 6fb944f9..7e5ee244 100644
--- a/src/pulsecore/flist.c
+++ b/src/pulsecore/flist.c
@@ -130,15 +130,22 @@ void pa_flist_free(pa_flist *l, pa_free_cb_t free_cb) {
}
int pa_flist_push(pa_flist*l, void *p) {
- unsigned idx, n, len;
+ unsigned idx, n;
pa_atomic_ptr_t*cells;
+#ifdef PROFILE
+ unsigned len;
+#endif
pa_assert(l);
pa_assert(p);
cells = PA_FLIST_CELLS(l);
- n = len = l->size + N_EXTRA_SCAN - (unsigned) pa_atomic_load(&l->length);
+ n = l->size + N_EXTRA_SCAN - (unsigned) pa_atomic_load(&l->length);
+
+#ifdef PROFILE
+ len = n;
+#endif
_Y;
idx = reduce(l, (unsigned) pa_atomic_load(&l->write_idx));
@@ -171,14 +178,21 @@ int pa_flist_push(pa_flist*l, void *p) {
}
void* pa_flist_pop(pa_flist*l) {
- unsigned idx, len, n;
+ unsigned idx, n;
pa_atomic_ptr_t *cells;
+#ifdef PROFILE
+ unsigned len;
+#endif
pa_assert(l);
cells = PA_FLIST_CELLS(l);
- n = len = (unsigned) pa_atomic_load(&l->length) + N_EXTRA_SCAN;
+ n = (unsigned) pa_atomic_load(&l->length) + N_EXTRA_SCAN;
+
+#ifdef PROFILE
+ len = n;
+#endif
_Y;
idx = reduce(l, (unsigned) pa_atomic_load(&l->read_idx));
diff --git a/src/pulsecore/hook-list.c b/src/pulsecore/hook-list.c
index a00116d1..d9b9917d 100644
--- a/src/pulsecore/hook-list.c
+++ b/src/pulsecore/hook-list.c
@@ -97,7 +97,7 @@ pa_hook_result_t pa_hook_fire(pa_hook *hook, void *data) {
hook->n_firing ++;
- for (slot = hook->slots; slot; slot = slot->next) {
+ PA_LLIST_FOREACH(slot, hook->slots) {
if (slot->dead)
continue;
diff --git a/src/pulsecore/llist.h b/src/pulsecore/llist.h
index 58b51c68..27f174a9 100644
--- a/src/pulsecore/llist.h
+++ b/src/pulsecore/llist.h
@@ -107,4 +107,7 @@
#define PA_LLIST_FOREACH(i,head) \
for (i = (head); i; i = i->next)
+#define PA_LLIST_FOREACH_SAFE(i,n,head) \
+ for (i = (head); i && ((n = i->next), 1); i = n)
+
#endif
diff --git a/src/pulsecore/lock-autospawn.c b/src/pulsecore/lock-autospawn.c
index 4436974d..c0df7938 100644
--- a/src/pulsecore/lock-autospawn.c
+++ b/src/pulsecore/lock-autospawn.c
@@ -55,10 +55,16 @@ static pa_mutex *mutex;
static unsigned n_ref = 0;
static int lock_fd = -1;
static pa_mutex *lock_fd_mutex = NULL;
-static pa_bool_t taken = FALSE;
-static pa_thread *thread;
+static pa_thread *thread = NULL;
static int pipe_fd[2] = { -1, -1 };
+static enum {
+ STATE_IDLE,
+ STATE_OWNING,
+ STATE_TAKEN,
+ STATE_FAILED
+} state = STATE_IDLE;
+
static void destroy_mutex(void) PA_GCC_DESTRUCTOR;
static int ref(void) {
@@ -67,15 +73,16 @@ static int ref(void) {
pa_assert(pipe_fd[0] >= 0);
pa_assert(pipe_fd[1] >= 0);
+ pa_assert(lock_fd_mutex);
n_ref++;
return 0;
}
- pa_assert(lock_fd < 0);
pa_assert(!lock_fd_mutex);
- pa_assert(!taken);
+ pa_assert(state == STATE_IDLE);
+ pa_assert(lock_fd < 0);
pa_assert(!thread);
pa_assert(pipe_fd[0] < 0);
pa_assert(pipe_fd[1] < 0);
@@ -83,14 +90,14 @@ static int ref(void) {
if (pipe(pipe_fd) < 0)
return -1;
- lock_fd_mutex = pa_mutex_new(FALSE, FALSE);
-
pa_make_fd_cloexec(pipe_fd[0]);
pa_make_fd_cloexec(pipe_fd[1]);
pa_make_fd_nonblock(pipe_fd[1]);
pa_make_fd_nonblock(pipe_fd[0]);
+ lock_fd_mutex = pa_mutex_new(FALSE, FALSE);
+
n_ref = 1;
return 0;
}
@@ -107,15 +114,18 @@ static void unref(pa_bool_t after_fork) {
if (n_ref > 0)
return;
- pa_assert(!taken);
-
if (thread) {
pa_thread_free(thread);
thread = NULL;
}
pa_mutex_lock(lock_fd_mutex);
- if (lock_fd >= 0) {
+
+ pa_assert(state != STATE_TAKEN);
+
+ if (state == STATE_OWNING) {
+
+ pa_assert(lock_fd >= 0);
if (after_fork)
pa_close(lock_fd);
@@ -127,10 +137,12 @@ static void unref(pa_bool_t after_fork) {
pa_unlock_lockfile(lf, lock_fd);
pa_xfree(lf);
-
- lock_fd = -1;
}
}
+
+ lock_fd = -1;
+ state = STATE_IDLE;
+
pa_mutex_unlock(lock_fd_mutex);
pa_mutex_free(lock_fd_mutex);
@@ -205,15 +217,24 @@ static void thread_func(void *u) {
if (!(lf = pa_runtime_path(AUTOSPAWN_LOCK))) {
pa_log_warn(_("Cannot access autospawn lock."));
- goto finish;
+ goto fail;
}
if ((fd = pa_lock_lockfile(lf)) < 0)
- goto finish;
+ goto fail;
pa_mutex_lock(lock_fd_mutex);
- pa_assert(lock_fd < 0);
+ pa_assert(state == STATE_IDLE);
lock_fd = fd;
+ state = STATE_OWNING;
+ pa_mutex_unlock(lock_fd_mutex);
+
+ goto finish;
+
+fail:
+ pa_mutex_lock(lock_fd_mutex);
+ pa_assert(state == STATE_IDLE);
+ state = STATE_FAILED;
pa_mutex_unlock(lock_fd_mutex);
finish:
@@ -238,12 +259,10 @@ static void create_mutex(void) {
}
static void destroy_mutex(void) {
-
if (mutex)
pa_mutex_free(mutex);
}
-
int pa_autospawn_lock_init(void) {
int ret = -1;
@@ -273,13 +292,18 @@ int pa_autospawn_lock_acquire(pa_bool_t block) {
empty_pipe();
- if (lock_fd >= 0 && !taken) {
- taken = TRUE;
+ if (state == STATE_OWNING) {
+ state = STATE_TAKEN;
ret = 1;
break;
}
- if (lock_fd < 0)
+ if (state == STATE_FAILED) {
+ ret = -1;
+ break;
+ }
+
+ if (state == STATE_IDLE)
if (start_thread() < 0)
break;
@@ -310,8 +334,8 @@ void pa_autospawn_lock_release(void) {
pa_mutex_lock(mutex);
pa_assert(n_ref >= 1);
- pa_assert(taken);
- taken = FALSE;
+ pa_assert(state == STATE_TAKEN);
+ state = STATE_OWNING;
ping();
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index cf662510..bffcc264 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -59,39 +59,42 @@
#endif
/* Rounds down */
-static inline void* pa_align_ptr(const void *p) {
- return (void*) (((size_t) p) & ~(sizeof(void*)-1));
+static inline void* PA_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(sizeof(void*) - 1));
}
-#define PA_ALIGN_PTR(x) (pa_align_ptr(x))
/* Rounds up */
-static inline size_t pa_align(size_t l) {
- return (((l + sizeof(void*) - 1) / sizeof(void*)) * sizeof(void*));
+static inline size_t PA_ALIGN(size_t l) {
+ return ((l + sizeof(void*) - 1) & ~(sizeof(void*) - 1));
}
-#define PA_ALIGN(x) (pa_align(x))
/* Rounds down */
-static inline void* pa_page_align_ptr(const void *p) {
- return (void*) (((size_t) p) & ~(PA_PAGE_SIZE-1));
+static inline void* PA_PAGE_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(PA_PAGE_SIZE - 1));
}
-#define PA_PAGE_ALIGN_PTR(x) (pa_page_align_ptr(x))
/* Rounds up */
-static inline size_t pa_page_align(size_t l) {
- return ((l + PA_PAGE_SIZE - 1) / PA_PAGE_SIZE) * PA_PAGE_SIZE;
+static inline size_t PA_PAGE_ALIGN(size_t l) {
+ return (l + PA_PAGE_SIZE - 1) & ~(PA_PAGE_SIZE - 1);
}
-#define PA_PAGE_ALIGN(x) (pa_page_align(x))
#define PA_ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0]))
-/* The users of PA_MIN and PA_MAX should be aware that these macros on
- * non-GCC executed code with side effects twice. It is thus
- * considered misuse to use code with side effects as arguments to MIN
- * and MAX. */
+#if defined(__GNUC__)
+ #define PA_DECLARE_ALIGNED(n,t,v) t v __attribute__ ((aligned (n)))
+#else
+ #define PA_DECLARE_ALIGNED(n,t,v) t v
+#endif
+
+/* The users of PA_MIN and PA_MAX, PA_CLAMP, PA_ROUND_UP should be
+ * aware that these macros on non-GCC executed code with side effects
+ * twice. It is thus considered misuse to use code with side effects
+ * as arguments to MIN and MAX. */
#ifdef __GNUC__
#define PA_MAX(a,b) \
- __extension__ ({ typeof(a) _a = (a); \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
typeof(b) _b = (b); \
_a > _b ? _a : _b; \
})
@@ -101,7 +104,8 @@ static inline size_t pa_page_align(size_t l) {
#ifdef __GNUC__
#define PA_MIN(a,b) \
- __extension__ ({ typeof(a) _a = (a); \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
typeof(b) _b = (b); \
_a < _b ? _a : _b; \
})
@@ -111,7 +115,8 @@ static inline size_t pa_page_align(size_t l) {
#ifdef __GNUC__
#define PA_CLAMP(x, low, high) \
- __extension__ ({ typeof(x) _x = (x); \
+ __extension__ ({ \
+ typeof(x) _x = (x); \
typeof(low) _low = (low); \
typeof(high) _high = (high); \
((_x > _high) ? _high : ((_x < _low) ? _low : _x)); \
@@ -122,7 +127,8 @@ static inline size_t pa_page_align(size_t l) {
#ifdef __GNUC__
#define PA_CLAMP_UNLIKELY(x, low, high) \
- __extension__ ({ typeof(x) _x = (x); \
+ __extension__ ({ \
+ typeof(x) _x = (x); \
typeof(low) _low = (low); \
typeof(high) _high = (high); \
(PA_UNLIKELY(_x > _high) ? _high : (PA_UNLIKELY(_x < _low) ? _low : _x)); \
@@ -135,6 +141,39 @@ static inline size_t pa_page_align(size_t l) {
* make sense: we cannot know if it is more likely that the values is
* lower or greater than the boundaries.*/
+#ifdef __GNUC__
+#define PA_ROUND_UP(a, b) \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
+ typeof(b) _b = (b); \
+ ((_a + _b - 1) / _b) * _b; \
+ })
+#else
+#define PA_ROUND_UP(a, b) ((((a) + (b) - 1) / (b)) * (b))
+#endif
+
+#ifdef __GNUC__
+#define PA_ROUND_DOWN(a, b) \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
+ typeof(b) _b = (b); \
+ (_a / _b) * _b; \
+ })
+#else
+#define PA_ROUND_DOWN(a, b) (((a) / (b)) * (b))
+#endif
+
+#ifdef __GNUC__
+#define PA_CLIP_SUB(a, b) \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
+ typeof(b) _b = (b); \
+ _a > _b ? _a - _b : 0; \
+ })
+#else
+#define PA_CLIP_SUB(a, b) ((a) > (b) ? (a) - (b) : 0)
+#endif
+
/* This type is not intended to be used in exported APIs! Use classic "int" there! */
#ifdef HAVE_STD_BOOL
typedef _Bool pa_bool_t;
diff --git a/src/pulsecore/memblock.c b/src/pulsecore/memblock.c
index 2c3f98a5..0e40d12b 100644
--- a/src/pulsecore/memblock.c
+++ b/src/pulsecore/memblock.c
@@ -96,6 +96,7 @@ struct pa_memimport_segment {
unsigned n_blocks;
};
+/* A collection of multiple segments */
struct pa_memimport {
pa_mutex *mutex;
@@ -257,7 +258,8 @@ static struct mempool_slot* mempool_allocate_slot(pa_mempool *p) {
slot = (struct mempool_slot*) ((uint8_t*) p->memory.ptr + (p->block_size * (size_t) idx));
if (!slot) {
- pa_log_debug("Pool full");
+ if (pa_log_ratelimit())
+ pa_log_debug("Pool full");
pa_atomic_inc(&p->stat.n_pool_full);
return NULL;
}
@@ -514,9 +516,9 @@ static void memblock_free(pa_memblock *b) {
pa_mutex_lock(import->mutex);
- pa_hashmap_remove(
- import->blocks,
- PA_UINT32_TO_PTR(b->per_type.imported.id));
+ pa_assert_se(pa_hashmap_remove(
+ import->blocks,
+ PA_UINT32_TO_PTR(b->per_type.imported.id)));
pa_assert(segment->n_blocks >= 1);
if (-- segment->n_blocks <= 0)
@@ -677,9 +679,9 @@ static void memblock_replace_import(pa_memblock *b) {
pa_mutex_lock(import->mutex);
- pa_hashmap_remove(
- import->blocks,
- PA_UINT32_TO_PTR(b->per_type.imported.id));
+ pa_assert_se(pa_hashmap_remove(
+ import->blocks,
+ PA_UINT32_TO_PTR(b->per_type.imported.id)));
memblock_make_local(b);
@@ -692,7 +694,7 @@ static void memblock_replace_import(pa_memblock *b) {
pa_mempool* pa_mempool_new(pa_bool_t shared, size_t size) {
pa_mempool *p;
- char t1[64], t2[64];
+ char t1[PA_BYTES_SNPRINT_MAX], t2[PA_BYTES_SNPRINT_MAX];
p = pa_xnew(pa_mempool, 1);
@@ -960,6 +962,11 @@ pa_memblock* pa_memimport_get(pa_memimport *i, uint32_t block_id, uint32_t shm_i
pa_mutex_lock(i->mutex);
+ if ((b = pa_hashmap_get(i->blocks, PA_UINT32_TO_PTR(block_id)))) {
+ pa_memblock_ref(b);
+ goto finish;
+ }
+
if (pa_hashmap_size(i->blocks) >= PA_MEMIMPORT_SLOTS_MAX)
goto finish;
@@ -989,12 +996,11 @@ pa_memblock* pa_memimport_get(pa_memimport *i, uint32_t block_id, uint32_t shm_i
seg->n_blocks++;
+ stat_add(b);
+
finish:
pa_mutex_unlock(i->mutex);
- if (b)
- stat_add(b);
-
return b;
}
diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c
index 77f9efc9..32758be3 100644
--- a/src/pulsecore/memblockq.c
+++ b/src/pulsecore/memblockq.c
@@ -692,6 +692,12 @@ size_t pa_memblockq_get_minreq(pa_memblockq *bq) {
return bq->minreq;
}
+size_t pa_memblockq_get_maxrewind(pa_memblockq *bq) {
+ pa_assert(bq);
+
+ return bq->maxrewind;
+}
+
int64_t pa_memblockq_get_read_index(pa_memblockq *bq) {
pa_assert(bq);
diff --git a/src/pulsecore/memblockq.h b/src/pulsecore/memblockq.h
index 146d261b..587c364b 100644
--- a/src/pulsecore/memblockq.h
+++ b/src/pulsecore/memblockq.h
@@ -141,6 +141,9 @@ size_t pa_memblockq_get_prebuf(pa_memblockq *bq);
/* Returns the minimal request value */
size_t pa_memblockq_get_minreq(pa_memblockq *bq);
+/* Returns the maximal rewind value */
+size_t pa_memblockq_get_maxrewind(pa_memblockq *bq);
+
/* Return the base unit in bytes */
size_t pa_memblockq_get_base(pa_memblockq *bq);
diff --git a/src/pulsecore/memtrap.c b/src/pulsecore/memtrap.c
index 7d917450..373872c1 100644
--- a/src/pulsecore/memtrap.c
+++ b/src/pulsecore/memtrap.c
@@ -65,7 +65,7 @@ pa_bool_t pa_memtrap_is_good(pa_memtrap *m) {
}
static void sigsafe_error(const char *s) {
- write(STDERR_FILENO, s, strlen(s));
+ (void) write(STDERR_FILENO, s, strlen(s));
}
static void signal_handler(int sig, siginfo_t* si, void *data) {
@@ -200,13 +200,13 @@ pa_memtrap *pa_memtrap_update(pa_memtrap *m, const void *start, size_t size) {
goto unlock;
memtrap_unlink(m, j);
- j = pa_aupdate_write_swap(aupdate);
+ pa_aupdate_write_swap(aupdate);
m->start = (void*) start;
m->size = size;
pa_atomic_store(&m->bad, 0);
- j = pa_aupdate_write_swap(aupdate);
+ pa_assert_se(pa_aupdate_write_swap(aupdate) == j);
memtrap_link(m, j);
unlock:
diff --git a/src/pulsecore/msgobject.c b/src/pulsecore/msgobject.c
index 6a2a612d..075a28c5 100644
--- a/src/pulsecore/msgobject.c
+++ b/src/pulsecore/msgobject.c
@@ -26,22 +26,22 @@
#include "msgobject.h"
-PA_DEFINE_CHECK_TYPE(pa_msgobject, pa_object);
+PA_DEFINE_PUBLIC_CLASS(pa_msgobject, pa_object);
-pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)) {
+pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_name)) {
pa_msgobject *o;
pa_assert(size > sizeof(pa_msgobject));
- pa_assert(type_name);
+ pa_assert(type_id);
if (!check_type)
check_type = pa_msgobject_check_type;
- pa_assert(check_type(type_name));
- pa_assert(check_type("pa_object"));
- pa_assert(check_type("pa_msgobject"));
+ pa_assert(check_type(type_id));
+ pa_assert(check_type(pa_object_type_id));
+ pa_assert(check_type(pa_msgobject_type_id));
- o = PA_MSGOBJECT(pa_object_new_internal(size, type_name, check_type));
+ o = PA_MSGOBJECT(pa_object_new_internal(size, type_id, check_type));
o->process_msg = NULL;
return o;
}
diff --git a/src/pulsecore/msgobject.h b/src/pulsecore/msgobject.h
index a35a23b5..ee0ec1ed 100644
--- a/src/pulsecore/msgobject.h
+++ b/src/pulsecore/msgobject.h
@@ -38,15 +38,13 @@ struct pa_msgobject {
int (*process_msg)(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk);
};
-pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name));
+pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_name));
-int pa_msgobject_check_type(const char *type);
-
-#define pa_msgobject_new(type) ((type*) pa_msgobject_new_internal(sizeof(type), #type, type##_check_type))
+#define pa_msgobject_new(type) ((type*) pa_msgobject_new_internal(sizeof(type), type##_type_id, type##_check_type))
#define pa_msgobject_free ((void (*) (pa_msgobject* o)) pa_object_free)
#define PA_MSGOBJECT(o) pa_msgobject_cast(o)
-PA_DECLARE_CLASS(pa_msgobject);
+PA_DECLARE_PUBLIC_CLASS(pa_msgobject);
#endif
diff --git a/src/pulsecore/namereg.c b/src/pulsecore/namereg.c
index 9df2f583..37755777 100644
--- a/src/pulsecore/namereg.c
+++ b/src/pulsecore/namereg.c
@@ -57,6 +57,8 @@ static pa_bool_t is_valid_char(char c) {
pa_bool_t pa_namereg_is_valid_name(const char *name) {
const char *c;
+ pa_assert(name);
+
if (*name == 0)
return FALSE;
@@ -70,6 +72,25 @@ pa_bool_t pa_namereg_is_valid_name(const char *name) {
return TRUE;
}
+pa_bool_t pa_namereg_is_valid_name_or_wildcard(const char *name, pa_namereg_type_t type) {
+
+ pa_assert(name);
+
+ if (pa_namereg_is_valid_name(name))
+ return TRUE;
+
+ if (type == PA_NAMEREG_SINK &&
+ pa_streq(name, "@DEFAULT_SINK@"))
+ return TRUE;
+
+ if (type == PA_NAMEREG_SOURCE &&
+ (pa_streq(name, "@DEFAULT_SOURCE@") ||
+ pa_streq(name, "@DEFAULT_MONITOR@")))
+ return TRUE;
+
+ return FALSE;
+}
+
char* pa_namereg_make_valid_name(const char *name) {
const char *a;
char *b, *n;
@@ -191,7 +212,6 @@ void* pa_namereg_get(pa_core *c, const char *name, pa_namereg_type_t type) {
if ((s = pa_namereg_get(c, NULL, PA_NAMEREG_SINK)))
return s->monitor_source;
-
}
if (!name)
@@ -223,6 +243,9 @@ void* pa_namereg_get(pa_core *c, const char *name, pa_namereg_type_t type) {
pa_sink* pa_namereg_set_default_sink(pa_core*c, pa_sink *s) {
pa_assert(c);
+ if (s && !PA_SINK_IS_LINKED(pa_sink_get_state(s)))
+ return NULL;
+
if (c->default_sink != s) {
c->default_sink = s;
pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SERVER|PA_SUBSCRIPTION_EVENT_CHANGE, PA_INVALID_INDEX);
@@ -234,6 +257,9 @@ pa_sink* pa_namereg_set_default_sink(pa_core*c, pa_sink *s) {
pa_source* pa_namereg_set_default_source(pa_core*c, pa_source *s) {
pa_assert(c);
+ if (s && !PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
+ return NULL;
+
if (c->default_source != s) {
c->default_source = s;
pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SERVER|PA_SUBSCRIPTION_EVENT_CHANGE, PA_INVALID_INDEX);
@@ -243,34 +269,57 @@ pa_source* pa_namereg_set_default_source(pa_core*c, pa_source *s) {
}
pa_sink *pa_namereg_get_default_sink(pa_core *c) {
- pa_sink *s;
+ pa_sink *s, *best = NULL;
+ uint32_t idx;
pa_assert(c);
- if (c->default_sink)
+ if (c->default_sink && PA_SINK_IS_LINKED(pa_sink_get_state(c->default_sink)))
return c->default_sink;
- if ((s = pa_idxset_first(c->sinks, NULL)))
- return pa_namereg_set_default_sink(c, s);
+ PA_IDXSET_FOREACH(s, c->sinks, idx)
+ if (PA_SINK_IS_LINKED(pa_sink_get_state(s)))
+ if (!best || s->priority > best->priority)
+ best = s;
+
+ if (best)
+ return pa_namereg_set_default_sink(c, best);
return NULL;
}
pa_source *pa_namereg_get_default_source(pa_core *c) {
- pa_source *s;
+ pa_source *s, *best = NULL;
uint32_t idx;
pa_assert(c);
- if (c->default_source)
+ if (c->default_source && PA_SOURCE_IS_LINKED(pa_source_get_state(c->default_source)))
return c->default_source;
- for (s = PA_SOURCE(pa_idxset_first(c->sources, &idx)); s; s = PA_SOURCE(pa_idxset_next(c->sources, &idx)))
- if (!s->monitor_of)
- return pa_namereg_set_default_source(c, s);
-
- if ((s = pa_idxset_first(c->sources, NULL)))
- return pa_namereg_set_default_source(c, s);
+ /* First, try to find one that isn't a monitor */
+ PA_IDXSET_FOREACH(s, c->sources, idx)
+ if (!s->monitor_of && PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
+ if (!best ||
+ s->priority > best->priority)
+ best = s;
+
+ if (best)
+ return pa_namereg_set_default_source(c, best);
+
+ /* Then, fallback to a monitor */
+ PA_IDXSET_FOREACH(s, c->sources, idx)
+ if (PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
+ if (!best ||
+ s->priority > best->priority ||
+ (s->priority == best->priority &&
+ s->monitor_of &&
+ best->monitor_of &&
+ s->monitor_of->priority > best->monitor_of->priority))
+ best = s;
+
+ if (best)
+ return pa_namereg_set_default_source(c, best);
return NULL;
}
diff --git a/src/pulsecore/namereg.h b/src/pulsecore/namereg.h
index 38fae6f5..b5a976d7 100644
--- a/src/pulsecore/namereg.h
+++ b/src/pulsecore/namereg.h
@@ -45,6 +45,7 @@ pa_sink *pa_namereg_get_default_sink(pa_core *c);
pa_source *pa_namereg_get_default_source(pa_core *c);
pa_bool_t pa_namereg_is_valid_name(const char *name);
+pa_bool_t pa_namereg_is_valid_name_or_wildcard(const char *name, pa_namereg_type_t type);
char* pa_namereg_make_valid_name(const char *name);
#endif
diff --git a/src/pulsecore/object.c b/src/pulsecore/object.c
index f3ead9c5..099d50d9 100644
--- a/src/pulsecore/object.c
+++ b/src/pulsecore/object.c
@@ -28,21 +28,23 @@
#include "object.h"
-pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)) {
+const char pa_object_type_id[] = "pa_object";
+
+pa_object *pa_object_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_id)) {
pa_object *o;
pa_assert(size > sizeof(pa_object));
- pa_assert(type_name);
+ pa_assert(type_id);
if (!check_type)
check_type = pa_object_check_type;
- pa_assert(check_type(type_name));
- pa_assert(check_type("pa_object"));
+ pa_assert(check_type(type_id));
+ pa_assert(check_type(pa_object_type_id));
o = pa_xmalloc(size);
PA_REFCNT_INIT(o);
- o->type_name = type_name;
+ o->type_id = type_id;
o->free = pa_object_free;
o->check_type = check_type;
@@ -65,8 +67,8 @@ void pa_object_unref(pa_object *o) {
}
}
-int pa_object_check_type(const char *type_name) {
- pa_assert(type_name);
+pa_bool_t pa_object_check_type(const char *type_id) {
+ pa_assert(type_id);
- return pa_streq(type_name, "pa_object");
+ return type_id == pa_object_type_id;
}
diff --git a/src/pulsecore/object.h b/src/pulsecore/object.h
index 43e79327..4c120cd5 100644
--- a/src/pulsecore/object.h
+++ b/src/pulsecore/object.h
@@ -34,21 +34,23 @@ typedef struct pa_object pa_object;
struct pa_object {
PA_REFCNT_DECLARE;
- const char *type_name;
+ const char *type_id;
void (*free)(pa_object *o);
- int (*check_type)(const char *type_name);
+ pa_bool_t (*check_type)(const char *type_name);
};
-pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name));
-#define pa_object_new(type) ((type*) pa_object_new_internal(sizeof(type), #type, type##_check_type)
+pa_object *pa_object_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_id));
+#define pa_object_new(type) ((type*) pa_object_new_internal(sizeof(type), type##_type_id, type##_check_type)
#define pa_object_free ((void (*) (pa_object* _obj)) pa_xfree)
-int pa_object_check_type(const char *type);
+pa_bool_t pa_object_check_type(const char *type_id);
-static inline int pa_object_isinstance(void *o) {
+extern const char pa_object_type_id[];
+
+static inline pa_bool_t pa_object_isinstance(void *o) {
pa_object *obj = (pa_object*) o;
- return obj ? obj->check_type("pa_object") : 0;
+ return obj ? obj->check_type(pa_object_type_id) : TRUE;
}
pa_object *pa_object_ref(pa_object *o);
@@ -60,7 +62,7 @@ static inline int pa_object_refcnt(pa_object *o) {
static inline pa_object* pa_object_cast(void *o) {
pa_object *obj = (pa_object*) o;
- pa_assert(!obj || obj->check_type("pa_object"));
+ pa_assert(!obj || obj->check_type(pa_object_type_id));
return obj;
}
@@ -68,10 +70,10 @@ static inline pa_object* pa_object_cast(void *o) {
#define PA_OBJECT(o) pa_object_cast(o)
-#define PA_DECLARE_CLASS(c) \
- static inline int c##_isinstance(void *o) { \
+#define PA_DECLARE_CLASS_COMMON(c) \
+ static inline pa_bool_t c##_isinstance(void *o) { \
pa_object *obj = (pa_object*) o; \
- return obj ? obj->check_type(#c) : 1; \
+ return obj ? obj->check_type(c##_type_id) : TRUE; \
} \
static inline c* c##_cast(void *o) { \
pa_assert(c##_isinstance(o)); \
@@ -91,12 +93,27 @@ static inline pa_object* pa_object_cast(void *o) {
} \
struct __stupid_useless_struct_to_allow_trailing_semicolon
-#define PA_DEFINE_CHECK_TYPE(c, parent) \
- int c##_check_type(const char *type) { \
- pa_assert(type); \
- if (strcmp(type, #c) == 0) \
- return 1; \
- return parent##_check_type(type); \
+#define PA_DECLARE_PUBLIC_CLASS(c) \
+ extern const char c##_type_id[]; \
+ PA_DECLARE_CLASS_COMMON(c); \
+ pa_bool_t c##_check_type(const char *type_id)
+
+#define PA_DEFINE_PUBLIC_CLASS(c, parent) \
+ const char c##_type_id[] = #c; \
+ pa_bool_t c##_check_type(const char *type_id) { \
+ if (type_id == c##_type_id) \
+ return TRUE; \
+ return parent##_check_type(type_id); \
+ } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
+#define PA_DEFINE_PRIVATE_CLASS(c, parent) \
+ static const char c##_type_id[] = #c; \
+ PA_DECLARE_CLASS_COMMON(c); \
+ static pa_bool_t c##_check_type(const char *type_id) { \
+ if (type_id == c##_type_id) \
+ return TRUE; \
+ return parent##_check_type(type_id); \
} \
struct __stupid_useless_struct_to_allow_trailing_semicolon
diff --git a/src/pulsecore/pdispatch.c b/src/pulsecore/pdispatch.c
index fc8ce76f..f15466ce 100644
--- a/src/pulsecore/pdispatch.c
+++ b/src/pulsecore/pdispatch.c
@@ -169,7 +169,7 @@ static const char *command_names[PA_COMMAND_MAX] = {
/* Supported since protocol v14 (0.9.12) */
[PA_COMMAND_EXTENSION] = "EXTENSION",
-
+ /* Supported since protocol v15 (0.9.15) */
[PA_COMMAND_GET_CARD_INFO] = "GET_CARD_INFO",
[PA_COMMAND_GET_CARD_INFO_LIST] = "GET_CARD_INFO_LIST",
[PA_COMMAND_SET_CARD_PROFILE] = "SET_CARD_PROFILE",
@@ -180,7 +180,11 @@ static const char *command_names[PA_COMMAND_MAX] = {
/* SERVER->CLIENT */
[PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED] = "PLAYBACK_BUFFER_ATTR_CHANGED",
- [PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED] = "RECORD_BUFFER_ATTR_CHANGED"
+ [PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED] = "RECORD_BUFFER_ATTR_CHANGED",
+
+ /* Supported since protocol v16 (0.9.16) */
+ [PA_COMMAND_SET_SINK_PORT] = "SET_SINK_PORT",
+ [PA_COMMAND_SET_SOURCE_PORT] = "SET_SOURCE_PORT"
};
#endif
@@ -203,10 +207,10 @@ struct pa_pdispatch {
const pa_pdispatch_cb_t *callback_table;
unsigned n_commands;
PA_LLIST_HEAD(struct reply_info, replies);
- pa_pdispatch_drain_callback drain_callback;
+ pa_pdispatch_drain_cb_t drain_callback;
void *drain_userdata;
const pa_creds *creds;
- pa_bool_t use_rtclock:1;
+ pa_bool_t use_rtclock;
};
static void reply_info_free(struct reply_info *r) {
@@ -225,19 +229,16 @@ static void reply_info_free(struct reply_info *r) {
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);
+ pa_assert(mainloop);
pa_assert((entries && table) || (!entries && !table));
- pd = pa_xnew(pa_pdispatch, 1);
+ pd = pa_xnew0(pa_pdispatch, 1);
PA_REFCNT_INIT(pd);
pd->mainloop = mainloop;
pd->callback_table = table;
pd->n_commands = entries;
PA_LLIST_HEAD_INIT(struct reply_info, pd->replies);
- pd->drain_callback = NULL;
- pd->drain_userdata = NULL;
- pd->creds = NULL;
pd->use_rtclock = use_rtclock;
return pd;
@@ -317,7 +318,7 @@ int pa_pdispatch_run(pa_pdispatch *pd, pa_packet*packet, const pa_creds *creds,
if (command == PA_COMMAND_ERROR || command == PA_COMMAND_REPLY) {
struct reply_info *r;
- for (r = pd->replies; r; r = r->next)
+ PA_LLIST_FOREACH(r, pd->replies)
if (r->tag == tag)
break;
@@ -325,9 +326,9 @@ int pa_pdispatch_run(pa_pdispatch *pd, pa_packet*packet, const pa_creds *creds,
run_action(pd, r, command, ts);
} else if (pd->callback_table && (command < pd->n_commands) && pd->callback_table[command]) {
- const pa_pdispatch_cb_t *c = pd->callback_table+command;
+ const pa_pdispatch_cb_t *cb = pd->callback_table+command;
- (*c)(pd, command, tag, ts, userdata);
+ (*cb)(pd, command, tag, ts, userdata);
} else {
pa_log("Received unsupported command %u", command);
goto finish;
@@ -375,7 +376,9 @@ void pa_pdispatch_register_reply(pa_pdispatch *pd, uint32_t tag, int timeout, pa
r->free_cb = free_cb;
r->tag = tag;
- 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_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);
}
@@ -387,7 +390,7 @@ int pa_pdispatch_is_pending(pa_pdispatch *pd) {
return !!pd->replies;
}
-void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, void (*cb)(pa_pdispatch *pd, void *userdata), void *userdata) {
+void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, pa_pdispatch_drain_cb_t cb, void *userdata) {
pa_assert(pd);
pa_assert(PA_REFCNT_VALUE(pd) >= 1);
pa_assert(!cb || pa_pdispatch_is_pending(pd));
@@ -402,12 +405,9 @@ void pa_pdispatch_unregister_reply(pa_pdispatch *pd, void *userdata) {
pa_assert(pd);
pa_assert(PA_REFCNT_VALUE(pd) >= 1);
- for (r = pd->replies; r; r = n) {
- n = r->next;
-
+ PA_LLIST_FOREACH_SAFE(r, n, pd->replies)
if (r->userdata == userdata)
reply_info_free(r);
- }
}
void pa_pdispatch_unref(pa_pdispatch *pd) {
diff --git a/src/pulsecore/pdispatch.h b/src/pulsecore/pdispatch.h
index dae475af..c5431c2e 100644
--- a/src/pulsecore/pdispatch.h
+++ b/src/pulsecore/pdispatch.h
@@ -35,9 +35,9 @@
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);
+typedef void (*pa_pdispatch_drain_cb_t)(pa_pdispatch *pd, void *userdata);
-pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *m, pa_bool_t use_rtclock, 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);
@@ -47,7 +47,7 @@ void pa_pdispatch_register_reply(pa_pdispatch *pd, uint32_t tag, int timeout, pa
int pa_pdispatch_is_pending(pa_pdispatch *pd);
-void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, pa_pdispatch_drain_callback callback, void *userdata);
+void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, pa_pdispatch_drain_cb_t callback, void *userdata);
/* Remove all reply slots with the give userdata parameter */
void pa_pdispatch_unregister_reply(pa_pdispatch *pd, void *userdata);
diff --git a/src/pulsecore/pid.c b/src/pulsecore/pid.c
index 00878462..996946c2 100644
--- a/src/pulsecore/pid.c
+++ b/src/pulsecore/pid.c
@@ -81,7 +81,7 @@ static pid_t read_pid(const char *fn, int fd) {
}
static int open_pid_file(const char *fn, int mode) {
- int fd = -1;
+ int fd;
pa_assert(fn);
@@ -123,8 +123,6 @@ static int open_pid_file(const char *fn, int mode) {
fd = -1;
goto fail;
}
-
- fd = -1;
}
return fd;
diff --git a/src/pulsecore/play-memblockq.c b/src/pulsecore/play-memblockq.c
index fceb2ca1..f528c496 100644
--- a/src/pulsecore/play-memblockq.c
+++ b/src/pulsecore/play-memblockq.c
@@ -47,9 +47,8 @@ enum {
MEMBLOCKQ_STREAM_MESSAGE_UNLINK,
};
-PA_DECLARE_CLASS(memblockq_stream);
+PA_DEFINE_PRIVATE_CLASS(memblockq_stream, pa_msgobject);
#define MEMBLOCKQ_STREAM(o) (memblockq_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(memblockq_stream, pa_msgobject);
static void memblockq_stream_unlink(memblockq_stream *u) {
pa_assert(u);
@@ -200,7 +199,7 @@ pa_sink_input* pa_memblockq_sink_input_new(
pa_sink_input_new_data_set_volume(&data, volume);
pa_proplist_update(data.proplist, PA_UPDATE_REPLACE, p);
- pa_sink_input_new(&u->sink_input, sink->core, &data, 0);
+ pa_sink_input_new(&u->sink_input, sink->core, &data);
pa_sink_input_new_data_done(&data);
if (!u->sink_input)
diff --git a/src/pulsecore/proplist-util.c b/src/pulsecore/proplist-util.c
index d9769bc7..23864bcb 100644
--- a/src/pulsecore/proplist-util.c
+++ b/src/pulsecore/proplist-util.c
@@ -186,10 +186,12 @@ void pa_init_proplist(pa_proplist *p) {
}
if (!pa_proplist_contains(p, PA_PROP_APPLICATION_PROCESS_BINARY)) {
- char t[PATH_MAX];
- if (pa_get_binary_name(t, sizeof(t))) {
+ char *t;
+
+ if ((t = pa_get_binary_name_malloc())) {
char *c = pa_utf8_filter(t);
pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_BINARY, c);
+ pa_xfree(t);
pa_xfree(c);
}
}
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index f64552aa..2326eb3a 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -120,9 +120,8 @@ typedef struct connection {
pa_time_event *auth_timeout_event;
} connection;
-PA_DECLARE_CLASS(connection);
+PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject);
#define CONNECTION(o) (connection_cast(o))
-static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject);
struct pa_esound_protocol {
PA_REFCNT_DECLARE;
@@ -430,7 +429,7 @@ static int esd_proto_stream_play(connection *c, esd_proto_t request, const void
sdata.sink = sink;
pa_sink_input_new_data_set_sample_spec(&sdata, &ss);
- pa_sink_input_new(&c->sink_input, c->protocol->core, &sdata, 0);
+ pa_sink_input_new(&c->sink_input, c->protocol->core, &sdata);
pa_sink_input_new_data_done(&sdata);
CHECK_VALIDITY(c->sink_input, "Failed to create sink input.");
@@ -526,7 +525,7 @@ static int esd_proto_stream_record(connection *c, esd_proto_t request, const voi
sdata.source = source;
pa_source_output_new_data_set_sample_spec(&sdata, &ss);
- pa_source_output_new(&c->source_output, c->protocol->core, &sdata, 0);
+ pa_source_output_new(&c->source_output, c->protocol->core, &sdata);
pa_source_output_new_data_done(&sdata);
CHECK_VALIDITY(c->source_output, "Failed to create source output.");
@@ -772,7 +771,6 @@ static int esd_proto_stream_pan(connection *c, esd_proto_t request, const void *
memcpy(&rvolume, data, sizeof(uint32_t));
rvolume = PA_MAYBE_UINT32_SWAP(c->swap_byte_order, rvolume);
- data = (const char*)data + sizeof(uint32_t);
if ((conn = pa_idxset_get_by_index(c->protocol->connections, idx)) && conn->sink_input) {
pa_cvolume volume;
@@ -810,7 +808,6 @@ static int esd_proto_sample_pan(connection *c, esd_proto_t request, const void *
memcpy(&rvolume, data, sizeof(uint32_t));
rvolume = PA_MAYBE_UINT32_SWAP(c->swap_byte_order, rvolume);
- data = (const char*)data + sizeof(uint32_t);
volume.values[0] = (lvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE;
volume.values[1] = (rvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE;
@@ -1124,7 +1121,7 @@ static int do_read(connection *c) {
ssize_t r;
size_t l;
void *p;
- size_t space;
+ size_t space = 0;
pa_assert(c->input_memblockq);
diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c
index 5220cc91..c09e5348 100644
--- a/src/pulsecore/protocol-http.c
+++ b/src/pulsecore/protocol-http.c
@@ -533,7 +533,7 @@ static void handle_listen_prefix(struct connection *c, const char *source_name)
pa_source_output_new_data_set_sample_spec(&data, &ss);
pa_source_output_new_data_set_channel_map(&data, &cm);
- pa_source_output_new(&c->source_output, c->protocol->core, &data, 0);
+ pa_source_output_new(&c->source_output, c->protocol->core, &data);
pa_source_output_new_data_done(&data);
if (!c->source_output) {
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index 96184bd2..d06dd4eb 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -98,17 +98,15 @@ typedef struct record_stream {
pa_usec_t current_source_latency;
} record_stream;
-PA_DECLARE_CLASS(record_stream);
#define RECORD_STREAM(o) (record_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(record_stream, pa_msgobject);
+PA_DEFINE_PRIVATE_CLASS(record_stream, pa_msgobject);
typedef struct output_stream {
pa_msgobject parent;
} output_stream;
-PA_DECLARE_CLASS(output_stream);
#define OUTPUT_STREAM(o) (output_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(output_stream, pa_msgobject);
+PA_DEFINE_PRIVATE_CLASS(output_stream, pa_msgobject);
typedef struct playback_stream {
output_stream parent;
@@ -138,9 +136,8 @@ typedef struct playback_stream {
uint64_t playing_for, underrun_for;
} playback_stream;
-PA_DECLARE_CLASS(playback_stream);
#define PLAYBACK_STREAM(o) (playback_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(playback_stream, output_stream);
+PA_DEFINE_PRIVATE_CLASS(playback_stream, output_stream);
typedef struct upload_stream {
output_stream parent;
@@ -156,9 +153,8 @@ typedef struct upload_stream {
pa_proplist *proplist;
} upload_stream;
-PA_DECLARE_CLASS(upload_stream);
#define UPLOAD_STREAM(o) (upload_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(upload_stream, output_stream);
+PA_DEFINE_PRIVATE_CLASS(upload_stream, output_stream);
struct pa_native_connection {
pa_msgobject parent;
@@ -176,9 +172,8 @@ struct pa_native_connection {
pa_time_event *auth_timeout_event;
};
-PA_DECLARE_CLASS(pa_native_connection);
#define PA_NATIVE_CONNECTION(o) (pa_native_connection_cast(o))
-static PA_DEFINE_CHECK_TYPE(pa_native_connection, pa_msgobject);
+PA_DEFINE_PRIVATE_CLASS(pa_native_connection, pa_msgobject);
struct pa_native_protocol {
PA_REFCNT_DECLARE;
@@ -633,7 +628,6 @@ static record_stream* record_stream_new(
record_stream *s;
pa_source_output *source_output = NULL;
- size_t base;
pa_source_output_new_data data;
pa_assert(c);
@@ -653,8 +647,9 @@ static record_stream* record_stream_new(
pa_source_output_new_data_set_channel_map(&data, map);
if (peak_detect)
data.resample_method = PA_RESAMPLER_PEAKS;
+ data.flags = flags;
- *ret = -pa_source_output_new(&source_output, c->protocol->core, &data, flags);
+ *ret = -pa_source_output_new(&source_output, c->protocol->core, &data);
pa_source_output_new_data_done(&data);
@@ -686,7 +681,7 @@ static record_stream* record_stream_new(
0,
s->buffer_attr.maxlength,
0,
- base = pa_frame_size(&source_output->sample_spec),
+ pa_frame_size(&source_output->sample_spec),
1,
0,
0,
@@ -762,6 +757,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata,
return -1;
switch (code) {
+
case PLAYBACK_STREAM_MESSAGE_REQUEST_DATA: {
pa_tagstruct *t;
int l = 0;
@@ -830,24 +826,26 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata,
pa_pstream_send_simple_ack(s->connection->pstream, PA_PTR_TO_UINT(userdata));
break;
- case PLAYBACK_STREAM_MESSAGE_UPDATE_TLENGTH: {
- pa_tagstruct *t;
+ case PLAYBACK_STREAM_MESSAGE_UPDATE_TLENGTH:
s->buffer_attr.tlength = (uint32_t) offset;
- t = pa_tagstruct_new(NULL, 0);
- pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED);
- pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
- pa_tagstruct_putu32(t, s->index);
- pa_tagstruct_putu32(t, s->buffer_attr.maxlength);
- pa_tagstruct_putu32(t, s->buffer_attr.tlength);
- pa_tagstruct_putu32(t, s->buffer_attr.prebuf);
- pa_tagstruct_putu32(t, s->buffer_attr.minreq);
- pa_tagstruct_put_usec(t, s->configured_sink_latency);
- pa_pstream_send_tagstruct(s->connection->pstream, t);
+ if (s->connection->version >= 15) {
+ pa_tagstruct *t;
+
+ t = pa_tagstruct_new(NULL, 0);
+ pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED);
+ pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
+ pa_tagstruct_putu32(t, s->index);
+ pa_tagstruct_putu32(t, s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(t, s->buffer_attr.tlength);
+ pa_tagstruct_putu32(t, s->buffer_attr.prebuf);
+ pa_tagstruct_putu32(t, s->buffer_attr.minreq);
+ pa_tagstruct_put_usec(t, s->configured_sink_latency);
+ pa_pstream_send_tagstruct(s->connection->pstream, t);
+ }
break;
- }
}
return 0;
@@ -1054,8 +1052,9 @@ static playback_stream* playback_stream_new(
if (muted_set)
pa_sink_input_new_data_set_muted(&data, muted);
data.sync_base = ssync ? ssync->sink_input : NULL;
+ data.flags = flags;
- *ret = -pa_sink_input_new(&sink_input, c->protocol->core, &data, flags);
+ *ret = -pa_sink_input_new(&sink_input, c->protocol->core, &data);
pa_sink_input_new_data_done(&data);
@@ -1130,6 +1129,12 @@ static void playback_stream_request_bytes(playback_stream *s) {
m = pa_memblockq_pop_missing(s->memblockq);
+ /* pa_log("request_bytes(%lu) (tlength=%lu minreq=%lu length=%lu)", */
+ /* (unsigned long) m, */
+ /* pa_memblockq_get_tlength(s->memblockq), */
+ /* pa_memblockq_get_minreq(s->memblockq), */
+ /* pa_memblockq_get_length(s->memblockq)); */
+
if (m <= 0)
return;
@@ -1143,7 +1148,6 @@ static void playback_stream_request_bytes(playback_stream *s) {
pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_REQUEST_DATA, NULL, 0, NULL, NULL);
}
-
/* Called from main context */
static void playback_stream_send_killed(playback_stream *p) {
pa_tagstruct *t;
@@ -1288,7 +1292,8 @@ static void handle_seek(playback_stream *s, int64_t indexw) {
pa_log_debug("Requesting rewind due to end of underrun.");
pa_sink_input_request_rewind(s->sink_input,
- (size_t) (s->sink_input->thread_info.underrun_for == (size_t) -1 ? 0 : s->sink_input->thread_info.underrun_for),
+ (size_t) (s->sink_input->thread_info.underrun_for == (uint64_t) -1 ? 0 :
+ s->sink_input->thread_info.underrun_for),
FALSE, TRUE, FALSE);
}
@@ -1345,7 +1350,9 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int
/* pa_log("sink input post: %lu %lli", (unsigned long) chunk->length, (long long) windex); */
if (pa_memblockq_push_align(s->memblockq, chunk) < 0) {
- pa_log_warn("Failed to push data into queue");
+
+ if (pa_log_ratelimit())
+ pa_log_warn("Failed to push data into queue");
pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_OVERFLOW, NULL, 0, NULL, NULL);
pa_memblockq_seek(s->memblockq, (int64_t) chunk->length, PA_SEEK_RELATIVE, TRUE);
}
@@ -1617,6 +1624,9 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
s = PLAYBACK_STREAM(i->userdata);
playback_stream_assert_ref(s);
+ if (!dest)
+ return;
+
fix_playback_buffer_attr(s);
pa_memblockq_apply_attr(s->memblockq, &s->buffer_attr);
pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
@@ -1752,6 +1762,9 @@ static void source_output_moving_cb(pa_source_output *o, pa_source *dest) {
s = RECORD_STREAM(o->userdata);
record_stream_assert_ref(s);
+ if (!dest)
+ return;
+
fix_record_buffer_attr_pre(s);
pa_memblockq_set_maxlength(s->memblockq, s->buffer_attr.maxlength);
pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
@@ -1856,7 +1869,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
}
CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS);
- CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name(sink_name), tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name_or_wildcard(sink_name, PA_NAMEREG_SINK), tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, sink_index == PA_INVALID_INDEX || !sink_name, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, !sink_name || sink_index == PA_INVALID_INDEX, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, pa_channel_map_valid(&map), tag, PA_ERR_INVALID);
@@ -1951,7 +1964,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
(no_move ? PA_SINK_INPUT_DONT_MOVE : 0) |
(variable_rate ? PA_SINK_INPUT_VARIABLE_RATE : 0) |
(dont_inhibit_auto_suspend ? PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) |
- (fail_on_suspend ? PA_SINK_INPUT_FAIL_ON_SUSPEND : 0);
+ (fail_on_suspend ? PA_SINK_INPUT_NO_CREATE_ON_SUSPEND|PA_SINK_INPUT_KILL_ON_SUSPEND : 0);
/* Only since protocol version 15 there's a seperate muted_set
* flag. For older versions we synthesize it here */
@@ -2105,7 +2118,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
}
CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS);
- CHECK_VALIDITY(c->pstream, !source_name || pa_namereg_is_valid_name(source_name), tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, !source_name || pa_namereg_is_valid_name_or_wildcard(source_name, PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, source_index == PA_INVALID_INDEX || !source_name, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, !source_name || source_index == PA_INVALID_INDEX, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, pa_sample_spec_valid(&ss), tag, PA_ERR_INVALID);
@@ -2207,7 +2220,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
(no_move ? PA_SOURCE_OUTPUT_DONT_MOVE : 0) |
(variable_rate ? PA_SOURCE_OUTPUT_VARIABLE_RATE : 0) |
(dont_inhibit_auto_suspend ? PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) |
- (fail_on_suspend ? PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND : 0);
+ (fail_on_suspend ? PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND|PA_SOURCE_OUTPUT_KILL_ON_SUSPEND : 0);
s = record_stream_new(c, source, &ss, &map, peak_detect, &attr, flags, p, adjust_latency, direct_on_input, early_requests, &ret);
pa_proplist_free(p);
@@ -2262,6 +2275,8 @@ static void command_exit(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_ta
ret = pa_core_exit(c->protocol->core, FALSE, 0);
CHECK_VALIDITY(c->pstream, ret >= 0, tag, PA_ERR_ACCESS);
+ pa_log_debug("Client %s asks us to terminate.", pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY)));
+
pa_pstream_send_simple_ack(c->pstream, tag); /* nonsense */
}
@@ -2451,7 +2466,7 @@ static void command_lookup(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_
}
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, name && pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_LOOKUP_SINK ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID);
if (command == PA_COMMAND_LOOKUP_SINK) {
pa_sink *sink;
@@ -2550,7 +2565,7 @@ static void command_get_playback_latency(pa_pdispatch *pd, uint32_t command, uin
reply = reply_new(tag);
pa_tagstruct_put_usec(reply,
s->current_sink_latency +
- pa_bytes_to_usec(s->render_memblockq_length, &s->sink_input->sample_spec));
+ pa_bytes_to_usec(s->render_memblockq_length, &s->sink_input->sink->sample_spec));
pa_tagstruct_put_usec(reply, 0);
pa_tagstruct_put_boolean(reply,
s->playing_for > 0 &&
@@ -2722,7 +2737,7 @@ static void command_play_sample(pa_pdispatch *pd, uint32_t command, uint32_t tag
return;
}
- CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name(sink_name), tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name_or_wildcard(sink_name, PA_NAMEREG_SINK), tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, sink_index == PA_INVALID_INDEX || !sink_name, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, !sink_name || sink_index == PA_INVALID_INDEX, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, name && pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID);
@@ -2826,7 +2841,7 @@ static void sink_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sin
PA_TAG_SAMPLE_SPEC, &fixed_ss,
PA_TAG_CHANNEL_MAP, &sink->channel_map,
PA_TAG_U32, sink->module ? sink->module->index : PA_INVALID_INDEX,
- PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE, FALSE),
+ PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE),
PA_TAG_BOOLEAN, pa_sink_get_mute(sink, FALSE),
PA_TAG_U32, sink->monitor_source ? sink->monitor_source->index : PA_INVALID_INDEX,
PA_TAG_STRING, sink->monitor_source ? sink->monitor_source->name : NULL,
@@ -3096,7 +3111,12 @@ static void command_get_info(pa_pdispatch *pd, uint32_t command, uint32_t tag, p
}
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, !name ||
+ (command == PA_COMMAND_GET_SINK_INFO &&
+ pa_namereg_is_valid_name_or_wildcard(name, PA_NAMEREG_SINK)) ||
+ (command == PA_COMMAND_GET_SOURCE_INFO &&
+ pa_namereg_is_valid_name_or_wildcard(name, PA_NAMEREG_SOURCE)) ||
+ 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);
@@ -3323,6 +3343,7 @@ static void command_set_volume(
pa_source *source = NULL;
pa_sink_input *si = NULL;
const char *name = NULL;
+ const char *client_name;
pa_native_connection_assert_ref(c);
pa_assert(t);
@@ -3337,7 +3358,7 @@ static void command_set_volume(
}
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, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_VOLUME ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), 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);
@@ -3369,12 +3390,26 @@ 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, TRUE);
- else if (source)
+ client_name = pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY));
+
+ if (sink) {
+ CHECK_VALIDITY(c->pstream, volume.channels == 1 || pa_cvolume_compatible(&volume, &sink->sample_spec), tag, PA_ERR_INVALID);
+
+ pa_log_debug("Client %s changes volume of sink %s.", client_name, sink->name);
+ pa_sink_set_volume(sink, &volume, TRUE, TRUE);
+ } else if (source) {
+ CHECK_VALIDITY(c->pstream, volume.channels == 1 || pa_cvolume_compatible(&volume, &source->sample_spec), tag, PA_ERR_INVALID);
+
+ pa_log_debug("Client %s changes volume of source %s.", client_name, source->name);
pa_source_set_volume(source, &volume, TRUE);
- else if (si)
+ } else if (si) {
+ CHECK_VALIDITY(c->pstream, volume.channels == 1 || pa_cvolume_compatible(&volume, &si->sample_spec), tag, PA_ERR_INVALID);
+
+ pa_log_debug("Client %s changes volume of sink input %s.",
+ client_name,
+ pa_strnull(pa_proplist_gets(si->proplist, PA_PROP_MEDIA_NAME)));
pa_sink_input_set_volume(si, &volume, TRUE, TRUE);
+ }
pa_pstream_send_simple_ack(c->pstream, tag);
}
@@ -3392,7 +3427,7 @@ static void command_set_mute(
pa_sink *sink = NULL;
pa_source *source = NULL;
pa_sink_input *si = NULL;
- const char *name = NULL;
+ const char *name = NULL, *client_name;
pa_native_connection_assert_ref(c);
pa_assert(t);
@@ -3407,7 +3442,7 @@ static void command_set_mute(
}
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, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_MUTE ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), 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);
@@ -3415,7 +3450,6 @@ static void command_set_mute(
switch (command) {
case PA_COMMAND_SET_SINK_MUTE:
-
if (idx != PA_INVALID_INDEX)
sink = pa_idxset_get_by_index(c->protocol->core->sinks, idx);
else
@@ -3441,12 +3475,20 @@ static void command_set_mute(
CHECK_VALIDITY(c->pstream, si || sink || source, tag, PA_ERR_NOENTITY);
- if (sink)
+ client_name = pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY));
+
+ if (sink) {
+ pa_log_debug("Client %s changes mute of sink %s.", client_name, sink->name);
pa_sink_set_mute(sink, mute, TRUE);
- else if (source)
+ } else if (source) {
+ pa_log_debug("Client %s changes mute of source %s.", client_name, source->name);
pa_source_set_mute(source, mute, TRUE);
- else if (si)
+ } else if (si) {
+ pa_log_debug("Client %s changes mute of sink input %s.",
+ client_name,
+ pa_strnull(pa_proplist_gets(si->proplist, PA_PROP_MEDIA_NAME)));
pa_sink_input_set_mute(si, mute, TRUE);
+ }
pa_pstream_send_simple_ack(c->pstream, tag);
}
@@ -4065,7 +4107,7 @@ static void command_move_stream(pa_pdispatch *pd, uint32_t command, uint32_t tag
CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS);
CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX, tag, PA_ERR_INVALID);
- CHECK_VALIDITY(c->pstream, !name_device || pa_namereg_is_valid_name(name_device), tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, !name_device || pa_namereg_is_valid_name_or_wildcard(name_device, command == PA_COMMAND_MOVE_SINK_INPUT ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, idx_device != PA_INVALID_INDEX || name_device, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, idx_device == PA_INVALID_INDEX || !name_device, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, !name_device || idx_device == PA_INVALID_INDEX, tag, PA_ERR_INVALID);
@@ -4129,7 +4171,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
}
CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS);
- CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name(name) || *name == 0, tag, PA_ERR_INVALID);
+ CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SUSPEND_SINK ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE) || *name == 0, 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);
@@ -4289,7 +4331,7 @@ static void command_set_sink_or_source_port(pa_pdispatch *pd, uint32_t command,
}
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, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_PORT ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), 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);
@@ -4824,3 +4866,9 @@ pa_pstream* pa_native_connection_get_pstream(pa_native_connection *c) {
return c->pstream;
}
+
+pa_client* pa_native_connection_get_client(pa_native_connection *c) {
+ pa_native_connection_assert_ref(c);
+
+ return c->client;
+}
diff --git a/src/pulsecore/protocol-native.h b/src/pulsecore/protocol-native.h
index 8a8d601c..97126274 100644
--- a/src/pulsecore/protocol-native.h
+++ b/src/pulsecore/protocol-native.h
@@ -47,7 +47,6 @@ typedef struct pa_native_options {
char *auth_group;
pa_ip_acl *auth_ip_acl;
pa_auth_cookie *auth_cookie;
-
} pa_native_options;
typedef enum pa_native_hook {
@@ -80,6 +79,7 @@ int pa_native_protocol_install_ext(pa_native_protocol *p, pa_module *m, pa_nativ
void pa_native_protocol_remove_ext(pa_native_protocol *p, pa_module *m);
pa_pstream* pa_native_connection_get_pstream(pa_native_connection *c);
+pa_client* pa_native_connection_get_client(pa_native_connection *c);
pa_native_options* pa_native_options_new(void);
pa_native_options* pa_native_options_ref(pa_native_options *o);
diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c
index 776d74b6..a9f73896 100644
--- a/src/pulsecore/protocol-simple.c
+++ b/src/pulsecore/protocol-simple.c
@@ -69,9 +69,8 @@ typedef struct connection {
} playback;
} connection;
-PA_DECLARE_CLASS(connection);
+PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject);
#define CONNECTION(o) (connection_cast(o))
-static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject);
struct pa_simple_protocol {
PA_REFCNT_DECLARE;
@@ -155,7 +154,7 @@ static int do_read(connection *c) {
ssize_t r;
size_t l;
void *p;
- size_t space;
+ size_t space = 0;
connection_assert_ref(c);
@@ -542,7 +541,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp
pa_proplist_update(data.proplist, PA_UPDATE_MERGE, c->client->proplist);
pa_sink_input_new_data_set_sample_spec(&data, &o->sample_spec);
- pa_sink_input_new(&c->sink_input, p->core, &data, 0);
+ pa_sink_input_new(&c->sink_input, p->core, &data);
pa_sink_input_new_data_done(&data);
if (!c->sink_input) {
@@ -594,7 +593,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp
pa_proplist_update(data.proplist, PA_UPDATE_MERGE, c->client->proplist);
pa_source_output_new_data_set_sample_spec(&data, &o->sample_spec);
- pa_source_output_new(&c->source_output, p->core, &data, 0);
+ pa_source_output_new(&c->source_output, p->core, &data);
pa_source_output_new_data_done(&data);
if (!c->source_output) {
@@ -628,8 +627,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp
return;
fail:
- if (c)
- connection_unlink(c);
+ connection_unlink(c);
}
void pa_simple_protocol_disconnect(pa_simple_protocol *p, pa_module *m) {
diff --git a/src/pulsecore/ratelimit.h b/src/pulsecore/ratelimit.h
index ec3b5a38..9857a291 100644
--- a/src/pulsecore/ratelimit.h
+++ b/src/pulsecore/ratelimit.h
@@ -26,21 +26,31 @@
#include <pulsecore/macro.h>
typedef struct pa_ratelimit {
- const pa_usec_t interval;
- const unsigned burst;
+ pa_usec_t interval;
+ unsigned burst;
unsigned n_printed, n_missed;
pa_usec_t begin;
} pa_ratelimit;
#define PA_DEFINE_RATELIMIT(_name, _interval, _burst) \
pa_ratelimit _name = { \
- .interval = _interval, \
- .burst = _burst, \
+ .interval = (_interval), \
+ .burst = (_burst), \
.n_printed = 0, \
.n_missed = 0, \
.begin = 0 \
}
+#define PA_INIT_RATELIMIT(v, _interval, _burst) \
+ do { \
+ pa_ratelimit *r = &(v); \
+ r->interval = (_interval); \
+ r->burst = (_burst); \
+ r->n_printed = 0; \
+ r->n_missed = 0; \
+ r->begin = 0; \
+ } while (FALSE);
+
pa_bool_t pa_ratelimit_test(pa_ratelimit *r);
#endif
diff --git a/src/pulsecore/remap.c b/src/pulsecore/remap.c
new file mode 100644
index 00000000..a0fc85b9
--- /dev/null
+++ b/src/pulsecore/remap.c
@@ -0,0 +1,204 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk.com>
+
+ 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 <string.h>
+
+#include <pulse/sample.h>
+#include <pulsecore/log.h>
+#include <pulsecore/macro.h>
+
+#include "remap.h"
+
+static void remap_mono_to_stereo_c (pa_remap_t *m, void *dst, const void *src, unsigned n) {
+ unsigned i;
+
+ switch (*m->format) {
+ case PA_SAMPLE_FLOAT32NE:
+ {
+ float *d, *s;
+
+ d = (float *) dst;
+ s = (float *) src;
+
+ for (i = n >> 2; i; i--) {
+ d[0] = d[1] = s[0];
+ d[2] = d[3] = s[1];
+ d[4] = d[5] = s[2];
+ d[6] = d[7] = s[3];
+ s += 4;
+ d += 8;
+ }
+ for (i = n & 3; i; i--) {
+ d[0] = d[1] = s[0];
+ s++;
+ d += 2;
+ }
+ break;
+ }
+ case PA_SAMPLE_S16NE:
+ {
+ int16_t *d, *s;
+
+ d = (int16_t *) dst;
+ s = (int16_t *) src;
+
+ for (i = n >> 2; i; i--) {
+ d[0] = d[1] = s[0];
+ d[2] = d[3] = s[1];
+ d[4] = d[5] = s[2];
+ d[6] = d[7] = s[3];
+ s += 4;
+ d += 8;
+ }
+ for (i = n & 3; i; i--) {
+ d[0] = d[1] = s[0];
+ s++;
+ d += 2;
+ }
+ break;
+ }
+ default:
+ pa_assert_not_reached();
+ }
+}
+
+static void remap_channels_matrix_c (pa_remap_t *m, void *dst, const void *src, unsigned n) {
+ unsigned oc, ic, i;
+ unsigned n_ic, n_oc;
+
+ n_ic = m->i_ss->channels;
+ n_oc = m->o_ss->channels;
+
+ switch (*m->format) {
+ case PA_SAMPLE_FLOAT32NE:
+ {
+ float *d, *s;
+
+ memset(dst, 0, n * sizeof (float) * n_oc);
+
+ for (oc = 0; oc < n_oc; oc++) {
+
+ for (ic = 0; ic < n_ic; ic++) {
+ float vol;
+
+ vol = m->map_table_f[oc][ic];
+
+ if (vol <= 0.0)
+ continue;
+
+ d = (float *)dst + oc;
+ s = (float *)src + ic;
+
+ if (vol >= 1.0) {
+ for (i = n; i > 0; i--, s += n_ic, d += n_oc)
+ *d += *s;
+ } else {
+ for (i = n; i > 0; i--, s += n_ic, d += n_oc)
+ *d += *s * vol;
+ }
+ }
+ }
+
+ break;
+ }
+ case PA_SAMPLE_S16NE:
+ {
+ int16_t *d, *s;
+
+ memset(dst, 0, n * sizeof (int16_t) * n_oc);
+
+ for (oc = 0; oc < n_oc; oc++) {
+
+ for (ic = 0; ic < n_ic; ic++) {
+ int32_t vol;
+
+ vol = m->map_table_i[oc][ic];
+
+ if (vol <= 0)
+ continue;
+
+ d = (int16_t *)dst + oc;
+ s = (int16_t *)src + ic;
+
+ if (vol >= 0x10000) {
+ for (i = n; i > 0; i--, s += n_ic, d += n_oc)
+ *d += *s;
+ } else {
+ for (i = n; i > 0; i--, s += n_ic, d += n_oc)
+ *d += (int16_t) (((int32_t)*s * vol) >> 16);
+ }
+ }
+ }
+ break;
+ }
+ default:
+ pa_assert_not_reached();
+ }
+}
+
+/* set the function that will execute the remapping based on the matrices */
+static void init_remap_c (pa_remap_t *m) {
+ unsigned n_oc, n_ic;
+
+ n_oc = m->o_ss->channels;
+ n_ic = m->i_ss->channels;
+
+ /* find some common channel remappings, fall back to full matrix operation. */
+ if (n_ic == 1 && n_oc == 2 &&
+ m->map_table_f[0][0] >= 1.0 && m->map_table_f[1][0] >= 1.0) {
+ m->do_remap = (pa_do_remap_func_t) remap_mono_to_stereo_c;
+ pa_log_info("Using mono to stereo remapping");
+ } else {
+ m->do_remap = (pa_do_remap_func_t) remap_channels_matrix_c;
+ pa_log_info("Using generic matrix remapping");
+ }
+}
+
+
+/* default C implementation */
+static pa_init_remap_func_t remap_func = init_remap_c;
+
+void pa_init_remap (pa_remap_t *m) {
+ pa_assert (remap_func);
+
+ m->do_remap = NULL;
+
+ /* call the installed remap init function */
+ remap_func (m);
+
+ if (m->do_remap == NULL) {
+ /* nothing was installed, fallback to C version */
+ init_remap_c (m);
+ }
+}
+
+pa_init_remap_func_t pa_get_init_remap_func(void) {
+ return remap_func;
+}
+
+void pa_set_init_remap_func(pa_init_remap_func_t func) {
+ remap_func = func;
+}
diff --git a/src/pulsecore/remap.h b/src/pulsecore/remap.h
new file mode 100644
index 00000000..32a67cdd
--- /dev/null
+++ b/src/pulsecore/remap.h
@@ -0,0 +1,48 @@
+#ifndef fooremapfoo
+#define fooremapfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk.com>
+
+ 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 <pulse/sample.h>
+
+typedef struct pa_remap pa_remap_t;
+
+typedef void (*pa_do_remap_func_t) (pa_remap_t *m, void *d, const void *s, unsigned n);
+
+struct pa_remap {
+ pa_sample_format_t *format;
+ pa_sample_spec *i_ss, *o_ss;
+ float map_table_f[PA_CHANNELS_MAX][PA_CHANNELS_MAX];
+ int32_t map_table_i[PA_CHANNELS_MAX][PA_CHANNELS_MAX];
+ pa_do_remap_func_t do_remap;
+};
+
+void pa_init_remap (pa_remap_t *m);
+
+/* custom installation of init functions */
+typedef void (*pa_init_remap_func_t) (pa_remap_t *m);
+
+pa_init_remap_func_t pa_get_init_remap_func(void);
+void pa_set_init_remap_func(pa_init_remap_func_t func);
+
+#endif /* fooremapfoo */
diff --git a/src/pulsecore/remap_mmx.c b/src/pulsecore/remap_mmx.c
new file mode 100644
index 00000000..d358a58b
--- /dev/null
+++ b/src/pulsecore/remap_mmx.c
@@ -0,0 +1,161 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk.com>
+
+ 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 <string.h>
+
+#include <pulse/sample.h>
+#include <pulsecore/log.h>
+#include <pulsecore/macro.h>
+
+#include "cpu-x86.h"
+#include "remap.h"
+
+#define LOAD_SAMPLES \
+ " movq (%1), %%mm0 \n\t" \
+ " movq 8(%1), %%mm2 \n\t" \
+ " movq 16(%1), %%mm4 \n\t" \
+ " movq 24(%1), %%mm6 \n\t" \
+ " movq %%mm0, %%mm1 \n\t" \
+ " movq %%mm2, %%mm3 \n\t" \
+ " movq %%mm4, %%mm5 \n\t" \
+ " movq %%mm6, %%mm7 \n\t"
+
+#define UNPACK_SAMPLES(s) \
+ " punpckl"#s" %%mm0, %%mm0 \n\t" \
+ " punpckh"#s" %%mm1, %%mm1 \n\t" \
+ " punpckl"#s" %%mm2, %%mm2 \n\t" \
+ " punpckh"#s" %%mm3, %%mm3 \n\t" \
+ " punpckl"#s" %%mm4, %%mm4 \n\t" \
+ " punpckh"#s" %%mm5, %%mm5 \n\t" \
+ " punpckl"#s" %%mm6, %%mm6 \n\t" \
+ " punpckh"#s" %%mm7, %%mm7 \n\t"
+
+#define STORE_SAMPLES \
+ " movq %%mm0, (%0) \n\t" \
+ " movq %%mm1, 8(%0) \n\t" \
+ " movq %%mm2, 16(%0) \n\t" \
+ " movq %%mm3, 24(%0) \n\t" \
+ " movq %%mm4, 32(%0) \n\t" \
+ " movq %%mm5, 40(%0) \n\t" \
+ " movq %%mm6, 48(%0) \n\t" \
+ " movq %%mm7, 56(%0) \n\t" \
+ " add $32, %1 \n\t" \
+ " add $64, %0 \n\t"
+
+#define HANDLE_SINGLE_dq() \
+ " movd (%1), %%mm0 \n\t" \
+ " punpckldq %%mm0, %%mm0 \n\t" \
+ " movq %%mm0, (%0) \n\t" \
+ " add $4, %1 \n\t" \
+ " add $8, %0 \n\t"
+
+#define HANDLE_SINGLE_wd() \
+ " movw (%1), %w3 \n\t" \
+ " movd %3, %%mm0 \n\t" \
+ " punpcklwd %%mm0, %%mm0 \n\t" \
+ " movd %%mm0, (%0) \n\t" \
+ " add $2, %1 \n\t" \
+ " add $4, %0 \n\t"
+
+#define MONO_TO_STEREO(s,shift,mask) \
+ " mov %4, %2 \n\t" \
+ " sar $"#shift", %2 \n\t" \
+ " cmp $0, %2 \n\t" \
+ " je 2f \n\t" \
+ "1: \n\t" \
+ LOAD_SAMPLES \
+ UNPACK_SAMPLES(s) \
+ STORE_SAMPLES \
+ " dec %2 \n\t" \
+ " jne 1b \n\t" \
+ "2: \n\t" \
+ " mov %4, %2 \n\t" \
+ " and $"#mask", %2 \n\t" \
+ " je 4f \n\t" \
+ "3: \n\t" \
+ HANDLE_SINGLE_##s() \
+ " dec %2 \n\t" \
+ " jne 3b \n\t" \
+ "4: \n\t" \
+ " emms \n\t"
+
+#if defined (__i386__) || defined (__amd64__)
+static void remap_mono_to_stereo_mmx (pa_remap_t *m, void *dst, const void *src, unsigned n) {
+ pa_reg_x86 temp, temp2;
+
+ switch (*m->format) {
+ case PA_SAMPLE_FLOAT32NE:
+ {
+ __asm__ __volatile__ (
+ MONO_TO_STEREO(dq,3,7) /* do doubles to quads */
+ : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2)
+ : "r" ((pa_reg_x86)n)
+ : "cc"
+ );
+ break;
+ }
+ case PA_SAMPLE_S16NE:
+ {
+ __asm__ __volatile__ (
+ MONO_TO_STEREO(wd,4,15) /* do words to doubles */
+ : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2)
+ : "r" ((pa_reg_x86)n)
+ : "cc"
+ );
+ break;
+ }
+ default:
+ pa_assert_not_reached();
+ }
+}
+
+/* set the function that will execute the remapping based on the matrices */
+static void init_remap_mmx (pa_remap_t *m) {
+ unsigned n_oc, n_ic;
+
+ n_oc = m->o_ss->channels;
+ n_ic = m->i_ss->channels;
+
+ /* find some common channel remappings, fall back to full matrix operation. */
+ if (n_ic == 1 && n_oc == 2 &&
+ m->map_table_f[0][0] >= 1.0 && m->map_table_f[1][0] >= 1.0) {
+ m->do_remap = (pa_do_remap_func_t) remap_mono_to_stereo_mmx;
+ pa_log_info("Using MMX mono to stereo remapping");
+ }
+}
+#endif /* defined (__i386__) || defined (__amd64__) */
+
+void pa_remap_func_init_mmx (pa_cpu_x86_flag_t flags) {
+#if defined (__i386__) || defined (__amd64__)
+
+ if (flags & PA_CPU_X86_MMX) {
+ pa_log_info("Initialising MMX optimized remappers.");
+
+ pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_mmx);
+ }
+
+#endif /* defined (__i386__) || defined (__amd64__) */
+}
diff --git a/src/pulsecore/remap_sse.c b/src/pulsecore/remap_sse.c
new file mode 100644
index 00000000..0ccf3161
--- /dev/null
+++ b/src/pulsecore/remap_sse.c
@@ -0,0 +1,159 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk.com>
+
+ 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 <string.h>
+
+#include <pulse/sample.h>
+#include <pulsecore/log.h>
+#include <pulsecore/macro.h>
+
+#include "cpu-x86.h"
+#include "remap.h"
+
+#define LOAD_SAMPLES \
+ " movdqu (%1), %%xmm0 \n\t" \
+ " movdqu 16(%1), %%xmm2 \n\t" \
+ " movdqu 32(%1), %%xmm4 \n\t" \
+ " movdqu 48(%1), %%xmm6 \n\t" \
+ " movdqa %%xmm0, %%xmm1 \n\t" \
+ " movdqa %%xmm2, %%xmm3 \n\t" \
+ " movdqa %%xmm4, %%xmm5 \n\t" \
+ " movdqa %%xmm6, %%xmm7 \n\t"
+
+#define UNPACK_SAMPLES(s) \
+ " punpckl"#s" %%xmm0, %%xmm0 \n\t" \
+ " punpckh"#s" %%xmm1, %%xmm1 \n\t" \
+ " punpckl"#s" %%xmm2, %%xmm2 \n\t" \
+ " punpckh"#s" %%xmm3, %%xmm3 \n\t" \
+ " punpckl"#s" %%xmm4, %%xmm4 \n\t" \
+ " punpckh"#s" %%xmm5, %%xmm5 \n\t" \
+ " punpckl"#s" %%xmm6, %%xmm6 \n\t" \
+ " punpckh"#s" %%xmm7, %%xmm7 \n\t"
+
+#define STORE_SAMPLES \
+ " movdqu %%xmm0, (%0) \n\t" \
+ " movdqu %%xmm1, 16(%0) \n\t" \
+ " movdqu %%xmm2, 32(%0) \n\t" \
+ " movdqu %%xmm3, 48(%0) \n\t" \
+ " movdqu %%xmm4, 64(%0) \n\t" \
+ " movdqu %%xmm5, 80(%0) \n\t" \
+ " movdqu %%xmm6, 96(%0) \n\t" \
+ " movdqu %%xmm7, 112(%0) \n\t" \
+ " add $64, %1 \n\t" \
+ " add $128, %0 \n\t"
+
+#define HANDLE_SINGLE_dq() \
+ " movd (%1), %%xmm0 \n\t" \
+ " punpckldq %%xmm0, %%xmm0 \n\t" \
+ " movq %%xmm0, (%0) \n\t" \
+ " add $4, %1 \n\t" \
+ " add $8, %0 \n\t"
+
+#define HANDLE_SINGLE_wd() \
+ " movw (%1), %w3 \n\t" \
+ " movd %3, %%xmm0 \n\t" \
+ " punpcklwd %%xmm0, %%xmm0 \n\t" \
+ " movd %%xmm0, (%0) \n\t" \
+ " add $2, %1 \n\t" \
+ " add $4, %0 \n\t"
+
+#define MONO_TO_STEREO(s,shift,mask) \
+ " mov %4, %2 \n\t" \
+ " sar $"#shift", %2 \n\t" \
+ " cmp $0, %2 \n\t" \
+ " je 2f \n\t" \
+ "1: \n\t" \
+ LOAD_SAMPLES \
+ UNPACK_SAMPLES(s) \
+ STORE_SAMPLES \
+ " dec %2 \n\t" \
+ " jne 1b \n\t" \
+ "2: \n\t" \
+ " mov %4, %2 \n\t" \
+ " and $"#mask", %2 \n\t" \
+ " je 4f \n\t" \
+ "3: \n\t" \
+ HANDLE_SINGLE_##s() \
+ " dec %2 \n\t" \
+ " jne 3b \n\t" \
+ "4: \n\t"
+
+#if defined (__i386__) || defined (__amd64__)
+static void remap_mono_to_stereo_sse2 (pa_remap_t *m, void *dst, const void *src, unsigned n) {
+ pa_reg_x86 temp, temp2;
+
+ switch (*m->format) {
+ case PA_SAMPLE_FLOAT32NE:
+ {
+ __asm__ __volatile__ (
+ MONO_TO_STEREO(dq, 4, 15) /* do doubles to quads */
+ : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2)
+ : "r" ((pa_reg_x86)n)
+ : "cc"
+ );
+ break;
+ }
+ case PA_SAMPLE_S16NE:
+ {
+ __asm__ __volatile__ (
+ MONO_TO_STEREO(wd, 5, 31) /* do words to doubles */
+ : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2)
+ : "r" ((pa_reg_x86)n)
+ : "cc"
+ );
+ break;
+ }
+ default:
+ pa_assert_not_reached();
+ }
+}
+
+/* set the function that will execute the remapping based on the matrices */
+static void init_remap_sse2 (pa_remap_t *m) {
+ unsigned n_oc, n_ic;
+
+ n_oc = m->o_ss->channels;
+ n_ic = m->i_ss->channels;
+
+ /* find some common channel remappings, fall back to full matrix operation. */
+ if (n_ic == 1 && n_oc == 2 &&
+ m->map_table_f[0][0] >= 1.0 && m->map_table_f[1][0] >= 1.0) {
+ m->do_remap = (pa_do_remap_func_t) remap_mono_to_stereo_sse2;
+ pa_log_info("Using SSE mono to stereo remapping");
+ }
+}
+#endif /* defined (__i386__) || defined (__amd64__) */
+
+void pa_remap_func_init_sse (pa_cpu_x86_flag_t flags) {
+#if defined (__i386__) || defined (__amd64__)
+
+ if (flags & PA_CPU_X86_SSE2) {
+ pa_log_info("Initialising SSE2 optimized remappers.");
+ pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_sse2);
+ }
+
+#endif /* defined (__i386__) || defined (__amd64__) */
+}
diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c
index 17fb8480..bed5a20d 100644
--- a/src/pulsecore/resampler.c
+++ b/src/pulsecore/resampler.c
@@ -31,9 +31,6 @@
#include <speex/speex_resampler.h>
-#include <liboil/liboilfuncs.h>
-#include <liboil/liboil.h>
-
#include <pulse/xmalloc.h>
#include <pulsecore/sconv.h>
#include <pulsecore/log.h>
@@ -43,6 +40,7 @@
#include "ffmpeg/avcodec.h"
#include "resampler.h"
+#include "remap.h"
/* Number of samples of extra space we allow the resamplers to return */
#define EXTRA_FRAMES 128
@@ -64,7 +62,7 @@ struct pa_resampler {
pa_convert_func_t to_work_format_func;
pa_convert_func_t from_work_format_func;
- float map_table[PA_CHANNELS_MAX][PA_CHANNELS_MAX];
+ pa_remap_t remap;
pa_bool_t map_required;
void (*impl_free)(pa_resampler *r);
@@ -214,6 +212,11 @@ pa_resampler* pa_resampler_new(
r->i_ss = *a;
r->o_ss = *b;
+ /* set up the remap structure */
+ r->remap.i_ss = &r->i_ss;
+ r->remap.o_ss = &r->o_ss;
+ r->remap.format = &r->work_format;
+
if (am)
r->i_cm = *am;
else if (!pa_channel_map_init_auto(&r->i_cm, r->i_ss.channels, PA_CHANNEL_MAP_DEFAULT))
@@ -296,8 +299,7 @@ pa_resampler* pa_resampler_new(
return r;
fail:
- if (r)
- pa_xfree(r);
+ pa_xfree(r);
return NULL;
}
@@ -347,13 +349,17 @@ void pa_resampler_set_output_rate(pa_resampler *r, uint32_t rate) {
size_t pa_resampler_request(pa_resampler *r, size_t out_length) {
pa_assert(r);
- return (((out_length / r->o_fz)*r->i_ss.rate)/r->o_ss.rate) * r->i_fz;
+ /* Let's round up here */
+
+ return (((((out_length + r->o_fz-1) / r->o_fz) * r->i_ss.rate) + r->o_ss.rate-1) / r->o_ss.rate) * r->i_fz;
}
size_t pa_resampler_result(pa_resampler *r, size_t in_length) {
pa_assert(r);
- return (((in_length / r->i_fz)*r->o_ss.rate)/r->i_ss.rate) * r->o_fz;
+ /* Let's round up here */
+
+ return (((((in_length + r->i_fz-1) / r->i_fz) * r->o_ss.rate) + r->i_ss.rate-1) / r->i_ss.rate) * r->o_fz;
}
size_t pa_resampler_max_block_size(pa_resampler *r) {
@@ -576,32 +582,41 @@ static int front_rear_side(pa_channel_position_t p) {
static void calc_map_table(pa_resampler *r) {
unsigned oc, ic;
+ unsigned n_oc, n_ic;
pa_bool_t ic_connected[PA_CHANNELS_MAX];
pa_bool_t remix;
pa_strbuf *s;
char *t;
+ pa_remap_t *m;
pa_assert(r);
if (!(r->map_required = (r->i_ss.channels != r->o_ss.channels || (!(r->flags & PA_RESAMPLER_NO_REMAP) && !pa_channel_map_equal(&r->i_cm, &r->o_cm)))))
return;
- memset(r->map_table, 0, sizeof(r->map_table));
+ m = &r->remap;
+
+ n_oc = r->o_ss.channels;
+ n_ic = r->i_ss.channels;
+
+ memset(m->map_table_f, 0, sizeof(m->map_table_f));
+ memset(m->map_table_i, 0, sizeof(m->map_table_i));
+
memset(ic_connected, 0, sizeof(ic_connected));
remix = (r->flags & (PA_RESAMPLER_NO_REMAP|PA_RESAMPLER_NO_REMIX)) == 0;
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
pa_bool_t oc_connected = FALSE;
pa_channel_position_t b = r->o_cm.map[oc];
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
pa_channel_position_t a = r->i_cm.map[ic];
if (r->flags & PA_RESAMPLER_NO_REMAP) {
/* We shall not do any remapping. Hence, just check by index */
if (ic == oc)
- r->map_table[oc][ic] = 1.0;
+ m->map_table_f[oc][ic] = 1.0;
continue;
}
@@ -610,7 +625,7 @@ static void calc_map_table(pa_resampler *r) {
/* We shall not do any remixing. Hence, just check by name */
if (a == b)
- r->map_table[oc][ic] = 1.0;
+ m->map_table_f[oc][ic] = 1.0;
continue;
}
@@ -685,7 +700,7 @@ static void calc_map_table(pa_resampler *r) {
*/
if (a == b || a == PA_CHANNEL_POSITION_MONO || b == PA_CHANNEL_POSITION_MONO) {
- r->map_table[oc][ic] = 1.0;
+ m->map_table_f[oc][ic] = 1.0;
oc_connected = TRUE;
ic_connected[ic] = TRUE;
@@ -703,14 +718,14 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and on the left side, let's
* average all left side input channels. */
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_left(r->i_cm.map[ic]))
n++;
if (n > 0)
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_left(r->i_cm.map[ic])) {
- r->map_table[oc][ic] = 1.0f / (float) n;
+ m->map_table_f[oc][ic] = 1.0f / (float) n;
ic_connected[ic] = TRUE;
}
@@ -724,14 +739,14 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and on the right side, let's
* average all right side input channels. */
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_right(r->i_cm.map[ic]))
n++;
if (n > 0)
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_right(r->i_cm.map[ic])) {
- r->map_table[oc][ic] = 1.0f / (float) n;
+ m->map_table_f[oc][ic] = 1.0f / (float) n;
ic_connected[ic] = TRUE;
}
@@ -745,14 +760,14 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and at the center. Let's
* average all center input channels. */
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_center(r->i_cm.map[ic]))
n++;
if (n > 0) {
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_center(r->i_cm.map[ic])) {
- r->map_table[oc][ic] = 1.0f / (float) n;
+ m->map_table_f[oc][ic] = 1.0f / (float) n;
ic_connected[ic] = TRUE;
}
} else {
@@ -762,14 +777,14 @@ static void calc_map_table(pa_resampler *r) {
n = 0;
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_left(r->i_cm.map[ic]) || on_right(r->i_cm.map[ic]))
n++;
if (n > 0)
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
if (on_left(r->i_cm.map[ic]) || on_right(r->i_cm.map[ic])) {
- r->map_table[oc][ic] = 1.0f / (float) n;
+ m->map_table_f[oc][ic] = 1.0f / (float) n;
ic_connected[ic] = TRUE;
}
@@ -783,12 +798,12 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and an LFE. Let's average all
* channels for LFE. */
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
if (!(r->flags & PA_RESAMPLER_NO_LFE))
- r->map_table[oc][ic] = 1.0f / (float) r->i_ss.channels;
+ m->map_table_f[oc][ic] = 1.0f / (float) n_ic;
else
- r->map_table[oc][ic] = 0;
+ m->map_table_f[oc][ic] = 0;
/* Please note that a channel connected to LFE
* doesn't really count as connected. */
@@ -804,7 +819,7 @@ static void calc_map_table(pa_resampler *r) {
ic_unconnected_center = 0,
ic_unconnected_lfe = 0;
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
pa_channel_position_t a = r->i_cm.map[ic];
if (ic_connected[ic])
@@ -827,20 +842,20 @@ static void calc_map_table(pa_resampler *r) {
* the left side by .9 and add in our averaged unconnected
* channels multplied by .1 */
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
if (!on_left(r->o_cm.map[oc]))
continue;
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) {
- r->map_table[oc][ic] *= .9f;
+ m->map_table_f[oc][ic] *= .9f;
continue;
}
if (on_left(r->i_cm.map[ic]))
- r->map_table[oc][ic] = .1f / (float) ic_unconnected_left;
+ m->map_table_f[oc][ic] = .1f / (float) ic_unconnected_left;
}
}
}
@@ -852,20 +867,20 @@ static void calc_map_table(pa_resampler *r) {
* the right side by .9 and add in our averaged unconnected
* channels multplied by .1 */
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
if (!on_right(r->o_cm.map[oc]))
continue;
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) {
- r->map_table[oc][ic] *= .9f;
+ m->map_table_f[oc][ic] *= .9f;
continue;
}
if (on_right(r->i_cm.map[ic]))
- r->map_table[oc][ic] = .1f / (float) ic_unconnected_right;
+ m->map_table_f[oc][ic] = .1f / (float) ic_unconnected_right;
}
}
}
@@ -878,20 +893,20 @@ static void calc_map_table(pa_resampler *r) {
* the center side by .9 and add in our averaged unconnected
* channels multplied by .1 */
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
if (!on_center(r->o_cm.map[oc]))
continue;
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) {
- r->map_table[oc][ic] *= .9f;
+ m->map_table_f[oc][ic] *= .9f;
continue;
}
if (on_center(r->i_cm.map[ic])) {
- r->map_table[oc][ic] = .1f / (float) ic_unconnected_center;
+ m->map_table_f[oc][ic] = .1f / (float) ic_unconnected_center;
mixed_in = TRUE;
}
}
@@ -909,7 +924,7 @@ static void calc_map_table(pa_resampler *r) {
it into left and right. Using .375 and 0.75 as
factors. */
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic])
continue;
@@ -917,7 +932,7 @@ static void calc_map_table(pa_resampler *r) {
if (!on_center(r->i_cm.map[ic]))
continue;
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc]))
continue;
@@ -928,7 +943,7 @@ static void calc_map_table(pa_resampler *r) {
}
}
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc]))
continue;
@@ -938,7 +953,7 @@ static void calc_map_table(pa_resampler *r) {
}
}
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc]))
continue;
@@ -946,10 +961,10 @@ static void calc_map_table(pa_resampler *r) {
if (ncenter[oc] <= 0)
continue;
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) {
- r->map_table[oc][ic] *= .75f;
+ m->map_table_f[oc][ic] *= .75f;
continue;
}
@@ -957,7 +972,7 @@ static void calc_map_table(pa_resampler *r) {
continue;
if (!found_frs[ic] || front_rear_side(r->i_cm.map[ic]) == front_rear_side(r->o_cm.map[oc]))
- r->map_table[oc][ic] = .375f / (float) ncenter[oc];
+ m->map_table_f[oc][ic] = .375f / (float) ncenter[oc];
}
}
}
@@ -968,40 +983,46 @@ static void calc_map_table(pa_resampler *r) {
/* OK, so there is an unconnected LFE channel. Let's mix
* it into all channels, with factor 0.375 */
- for (ic = 0; ic < r->i_ss.channels; ic++) {
+ for (ic = 0; ic < n_ic; ic++) {
if (!on_lfe(r->i_cm.map[ic]))
continue;
- for (oc = 0; oc < r->o_ss.channels; oc++)
- r->map_table[oc][ic] = 0.375f / (float) ic_unconnected_lfe;
+ for (oc = 0; oc < n_oc; oc++)
+ m->map_table_f[oc][ic] = 0.375f / (float) ic_unconnected_lfe;
}
}
}
-
+ /* make an 16:16 int version of the matrix */
+ for (oc = 0; oc < n_oc; oc++)
+ for (ic = 0; ic < n_ic; ic++)
+ m->map_table_i[oc][ic] = (int32_t) (m->map_table_f[oc][ic] * 0x10000);
s = pa_strbuf_new();
pa_strbuf_printf(s, " ");
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
pa_strbuf_printf(s, " I%02u ", ic);
pa_strbuf_puts(s, "\n +");
- for (ic = 0; ic < r->i_ss.channels; ic++)
+ for (ic = 0; ic < n_ic; ic++)
pa_strbuf_printf(s, "------");
pa_strbuf_puts(s, "\n");
- for (oc = 0; oc < r->o_ss.channels; oc++) {
+ for (oc = 0; oc < n_oc; oc++) {
pa_strbuf_printf(s, "O%02u |", oc);
- for (ic = 0; ic < r->i_ss.channels; ic++)
- pa_strbuf_printf(s, " %1.3f", r->map_table[oc][ic]);
+ for (ic = 0; ic < n_ic; ic++)
+ pa_strbuf_printf(s, " %1.3f", m->map_table_f[oc][ic]);
pa_strbuf_puts(s, "\n");
}
pa_log_debug("Channel matrix:\n%s", t = pa_strbuf_tostring_free(s));
pa_xfree(t);
+
+ /* initialize the remapping function */
+ pa_init_remap (m);
}
static pa_memchunk* convert_to_work_format(pa_resampler *r, pa_memchunk *input) {
@@ -1041,41 +1062,10 @@ static pa_memchunk* convert_to_work_format(pa_resampler *r, pa_memchunk *input)
return &r->buf1;
}
-static void vectoradd_s16_with_fraction(
- int16_t *d, int dstr,
- const int16_t *s1, int sstr1,
- const int16_t *s2, int sstr2,
- int n,
- float s3, float s4) {
-
- int32_t i3, i4;
-
- i3 = (int32_t) (s3 * 0x10000);
- i4 = (int32_t) (s4 * 0x10000);
-
- for (; n > 0; n--) {
- int32_t a, b;
-
- a = *s1;
- b = *s2;
-
- a = (a * i3) / 0x10000;
- b = (b * i4) / 0x10000;
-
- *d = (int16_t) (a + b);
-
- s1 = (const int16_t*) ((const uint8_t*) s1 + sstr1);
- s2 = (const int16_t*) ((const uint8_t*) s2 + sstr2);
- d = (int16_t*) ((uint8_t*) d + dstr);
-
- }
-}
-
static pa_memchunk *remap_channels(pa_resampler *r, pa_memchunk *input) {
unsigned in_n_samples, out_n_samples, n_frames;
- int i_skip, o_skip;
- unsigned oc;
void *src, *dst;
+ pa_remap_t *remap;
pa_assert(r);
pa_assert(input);
@@ -1104,76 +1094,14 @@ static pa_memchunk *remap_channels(pa_resampler *r, pa_memchunk *input) {
src = ((uint8_t*) pa_memblock_acquire(input->memblock) + input->index);
dst = pa_memblock_acquire(r->buf2.memblock);
- memset(dst, 0, r->buf2.length);
-
- o_skip = (int) (r->w_sz * r->o_ss.channels);
- i_skip = (int) (r->w_sz * r->i_ss.channels);
-
- switch (r->work_format) {
- case PA_SAMPLE_FLOAT32NE:
-
- for (oc = 0; oc < r->o_ss.channels; oc++) {
- unsigned ic;
- static const float one = 1.0;
+ remap = &r->remap;
- for (ic = 0; ic < r->i_ss.channels; ic++) {
-
- if (r->map_table[oc][ic] <= 0.0)
- continue;
-
- oil_vectoradd_f32(
- (float*) dst + oc, o_skip,
- (float*) dst + oc, o_skip,
- (float*) src + ic, i_skip,
- (int) n_frames,
- &one, &r->map_table[oc][ic]);
- }
- }
-
- break;
-
- case PA_SAMPLE_S16NE:
-
- for (oc = 0; oc < r->o_ss.channels; oc++) {
- unsigned ic;
-
- for (ic = 0; ic < r->i_ss.channels; ic++) {
-
- if (r->map_table[oc][ic] <= 0.0)
- continue;
-
- if (r->map_table[oc][ic] >= 1.0) {
- static const int16_t one = 1;
-
- oil_vectoradd_s16(
- (int16_t*) dst + oc, o_skip,
- (int16_t*) dst + oc, o_skip,
- (int16_t*) src + ic, i_skip,
- (int) n_frames,
- &one, &one);
-
- } else
-
- vectoradd_s16_with_fraction(
- (int16_t*) dst + oc, o_skip,
- (int16_t*) dst + oc, o_skip,
- (int16_t*) src + ic, i_skip,
- (int) n_frames,
- 1.0f, r->map_table[oc][ic]);
- }
- }
-
- break;
-
- default:
- pa_assert_not_reached();
- }
+ pa_assert (remap->do_remap);
+ remap->do_remap (remap, dst, src, n_frames);
pa_memblock_release(input->memblock);
pa_memblock_release(r->buf2.memblock);
- r->buf2.length = out_n_samples * r->w_sz;
-
return &r->buf2;
}
@@ -1465,7 +1393,7 @@ static void trivial_resample(pa_resampler *r, const pa_memchunk *input, unsigned
pa_assert(o_index * fz < pa_memblock_get_length(output->memblock));
- oil_memcpy((uint8_t*) dst + fz * o_index,
+ memcpy((uint8_t*) dst + fz * o_index,
(uint8_t*) src + fz * j, (int) fz);
}
diff --git a/src/pulsecore/rtpoll.c b/src/pulsecore/rtpoll.c
index 42708a8a..666cbc98 100644
--- a/src/pulsecore/rtpoll.c
+++ b/src/pulsecore/rtpoll.c
@@ -63,6 +63,7 @@ struct pa_rtpoll {
pa_bool_t running:1;
pa_bool_t rebuild_needed:1;
pa_bool_t quit:1;
+ pa_bool_t timer_elapsed:1;
#ifdef DEBUG_TIMING
pa_usec_t timestamp;
@@ -94,26 +95,14 @@ PA_STATIC_FLIST_DECLARE(items, 0, pa_xfree);
pa_rtpoll *pa_rtpoll_new(void) {
pa_rtpoll *p;
- p = pa_xnew(pa_rtpoll, 1);
+ p = pa_xnew0(pa_rtpoll, 1);
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;
-
- pa_zero(p->next_elapse);
- p->timer_enabled = FALSE;
-
- p->running = FALSE;
- p->scan_for_dead = FALSE;
- p->rebuild_needed = FALSE;
- p->quit = FALSE;
-
- PA_LLIST_HEAD_INIT(pa_rtpoll_item, p->items);
#ifdef DEBUG_TIMING
p->timestamp = pa_rtclock_now();
- p->slept = p->awake = 0;
#endif
return p;
@@ -229,6 +218,7 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
pa_assert(!p->running);
p->running = TRUE;
+ p->timer_elapsed = FALSE;
/* First, let's do some work */
for (i = p->items; i && i->priority < PA_RTPOLL_NEVER; i = i->next) {
@@ -286,7 +276,7 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
if (p->rebuild_needed)
rtpoll_rebuild(p);
- memset(&timeout, 0, sizeof(timeout));
+ pa_zero(timeout);
/* Calculate timeout */
if (wait_op && !p->quit && p->timer_enabled) {
@@ -314,9 +304,11 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
r = ppoll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? &ts : NULL, NULL);
}
#else
- r = poll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? (int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)) : -1);
+ r = poll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? (int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)) : -1);
#endif
+ p->timer_elapsed = r == 0;
+
#ifdef DEBUG_TIMING
{
pa_usec_t now = pa_rtclock_now();
@@ -628,3 +620,9 @@ void pa_rtpoll_quit(pa_rtpoll *p) {
p->quit = TRUE;
}
+
+pa_bool_t pa_rtpoll_timer_elapsed(pa_rtpoll *p) {
+ pa_assert(p);
+
+ return p->timer_elapsed;
+}
diff --git a/src/pulsecore/rtpoll.h b/src/pulsecore/rtpoll.h
index d2d69cad..b2a87fca 100644
--- a/src/pulsecore/rtpoll.h
+++ b/src/pulsecore/rtpoll.h
@@ -73,6 +73,10 @@ void pa_rtpoll_set_timer_absolute(pa_rtpoll *p, pa_usec_t usec);
void pa_rtpoll_set_timer_relative(pa_rtpoll *p, pa_usec_t usec);
void pa_rtpoll_set_timer_disabled(pa_rtpoll *p);
+/* Return TRUE when the elapsed timer was the reason for
+ * the last pa_rtpoll_run() invocation to finish */
+pa_bool_t pa_rtpoll_timer_elapsed(pa_rtpoll *p);
+
/* A new fd wakeup item for pa_rtpoll */
pa_rtpoll_item *pa_rtpoll_item_new(pa_rtpoll *p, pa_rtpoll_priority_t prio, unsigned n_fds);
void pa_rtpoll_item_free(pa_rtpoll_item *i);
diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
index 5b8ccf59..a26dc876 100644
--- a/src/pulsecore/sample-util.c
+++ b/src/pulsecore/sample-util.c
@@ -30,9 +30,6 @@
#include <stdio.h>
#include <errno.h>
-#include <liboil/liboilfuncs.h>
-#include <liboil/liboil.h>
-
#include <pulse/timeval.h>
#include <pulsecore/log.h>
@@ -106,29 +103,41 @@ void* pa_silence_memory(void *p, size_t length, const pa_sample_spec *spec) {
return p;
}
+#define VOLUME_PADDING 32
+
static void calc_linear_integer_volume(int32_t linear[], const pa_cvolume *volume) {
- unsigned channel;
+ unsigned channel, nchannels, padding;
pa_assert(linear);
pa_assert(volume);
- for (channel = 0; channel < volume->channels; channel++)
+ nchannels = volume->channels;
+
+ for (channel = 0; channel < nchannels; channel++)
linear[channel] = (int32_t) lrint(pa_sw_volume_to_linear(volume->values[channel]) * 0x10000);
+
+ for (padding = 0; padding < VOLUME_PADDING; padding++, channel++)
+ linear[channel] = linear[padding];
}
static void calc_linear_float_volume(float linear[], const pa_cvolume *volume) {
- unsigned channel;
+ unsigned channel, nchannels, padding;
pa_assert(linear);
pa_assert(volume);
- for (channel = 0; channel < volume->channels; channel++)
+ nchannels = volume->channels;
+
+ for (channel = 0; channel < nchannels; channel++)
linear[channel] = (float) pa_sw_volume_to_linear(volume->values[channel]);
+
+ for (padding = 0; padding < VOLUME_PADDING; padding++, channel++)
+ linear[channel] = linear[padding];
}
static void calc_linear_integer_stream_volumes(pa_mix_info streams[], unsigned nstreams, const pa_cvolume *volume, const pa_sample_spec *spec) {
unsigned k, channel;
- float linear[PA_CHANNELS_MAX];
+ float linear[PA_CHANNELS_MAX + VOLUME_PADDING];
pa_assert(streams);
pa_assert(spec);
@@ -147,7 +156,7 @@ static void calc_linear_integer_stream_volumes(pa_mix_info streams[], unsigned n
static void calc_linear_float_stream_volumes(pa_mix_info streams[], unsigned nstreams, const pa_cvolume *volume, const pa_sample_spec *spec) {
unsigned k, channel;
- float linear[PA_CHANNELS_MAX];
+ float linear[PA_CHANNELS_MAX + VOLUME_PADDING];
pa_assert(streams);
pa_assert(spec);
@@ -690,6 +699,28 @@ size_t pa_mix(
return length;
}
+typedef union {
+ float f;
+ uint32_t i;
+} volume_val;
+
+typedef void (*pa_calc_volume_func_t) (void *volumes, const pa_cvolume *volume);
+
+static const pa_calc_volume_func_t calc_volume_table[] = {
+ [PA_SAMPLE_U8] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_ALAW] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_ULAW] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S16LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S16BE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_FLOAT32LE] = (pa_calc_volume_func_t) calc_linear_float_volume,
+ [PA_SAMPLE_FLOAT32BE] = (pa_calc_volume_func_t) calc_linear_float_volume,
+ [PA_SAMPLE_S32LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S32BE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24BE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24_32LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24_32BE] = (pa_calc_volume_func_t) calc_linear_integer_volume
+};
void pa_volume_memchunk(
pa_memchunk*c,
@@ -697,6 +728,8 @@ void pa_volume_memchunk(
const pa_cvolume *volume) {
void *ptr;
+ volume_val linear[PA_CHANNELS_MAX + VOLUME_PADDING];
+ pa_do_volume_func_t do_volume;
pa_assert(c);
pa_assert(spec);
@@ -714,337 +747,19 @@ void pa_volume_memchunk(
return;
}
- ptr = (uint8_t*) pa_memblock_acquire(c->memblock) + c->index;
-
- switch (spec->format) {
-
- case PA_SAMPLE_S16NE: {
- int16_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (int16_t*) ptr + c->length/sizeof(int16_t);
-
- for (channel = 0, d = ptr; d < e; d++) {
- int32_t t, hi, lo;
-
- /* Multiplying the 32bit volume factor with the 16bit
- * sample might result in an 48bit value. We want to
- * do without 64 bit integers and hence do the
- * multiplication independantly for the HI and LO part
- * of the volume. */
-
- hi = linear[channel] >> 16;
- lo = linear[channel] & 0xFFFF;
-
- t = (int32_t)(*d);
- t = ((t * lo) >> 16) + (t * hi);
- t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
- *d = (int16_t) t;
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
-
- break;
- }
-
- case PA_SAMPLE_S16RE: {
- int16_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (int16_t*) ptr + c->length/sizeof(int16_t);
-
- for (channel = 0, d = ptr; d < e; d++) {
- int32_t t, hi, lo;
-
- hi = linear[channel] >> 16;
- lo = linear[channel] & 0xFFFF;
-
- t = (int32_t) PA_INT16_SWAP(*d);
- t = ((t * lo) >> 16) + (t * hi);
- t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
- *d = PA_INT16_SWAP((int16_t) t);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
-
- break;
- }
-
- case PA_SAMPLE_S32NE: {
- int32_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (int32_t*) ptr + c->length/sizeof(int32_t);
-
- for (channel = 0, d = ptr; d < e; d++) {
- int64_t t;
-
- t = (int64_t)(*d);
- t = (t * linear[channel]) >> 16;
- t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
- *d = (int32_t) t;
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_S32RE: {
- int32_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (int32_t*) ptr + c->length/sizeof(int32_t);
-
- for (channel = 0, d = ptr; d < e; d++) {
- int64_t t;
-
- t = (int64_t) PA_INT32_SWAP(*d);
- t = (t * linear[channel]) >> 16;
- t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
- *d = PA_INT32_SWAP((int32_t) t);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_S24NE: {
- uint8_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (uint8_t*) ptr + c->length;
-
- for (channel = 0, d = ptr; d < e; d += 3) {
- int64_t t;
-
- t = (int64_t)((int32_t) (PA_READ24NE(d) << 8));
- t = (t * linear[channel]) >> 16;
- t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
- PA_WRITE24NE(d, ((uint32_t) (int32_t) t) >> 8);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_S24RE: {
- uint8_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (uint8_t*) ptr + c->length;
-
- for (channel = 0, d = ptr; d < e; d += 3) {
- int64_t t;
-
- t = (int64_t)((int32_t) (PA_READ24RE(d) << 8));
- t = (t * linear[channel]) >> 16;
- t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
- PA_WRITE24RE(d, ((uint32_t) (int32_t) t) >> 8);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_S24_32NE: {
- uint32_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (uint32_t*) ptr + c->length/sizeof(uint32_t);
-
- for (channel = 0, d = ptr; d < e; d++) {
- int64_t t;
-
- t = (int64_t) ((int32_t) (*d << 8));
- t = (t * linear[channel]) >> 16;
- t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
- *d = ((uint32_t) ((int32_t) t)) >> 8;
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_S24_32RE: {
- uint32_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (uint32_t*) ptr + c->length/sizeof(uint32_t);
-
- for (channel = 0, d = ptr; d < e; d++) {
- int64_t t;
-
- t = (int64_t) ((int32_t) (PA_UINT32_SWAP(*d) << 8));
- t = (t * linear[channel]) >> 16;
- t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
- *d = PA_UINT32_SWAP(((uint32_t) ((int32_t) t)) >> 8);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_U8: {
- uint8_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (uint8_t*) ptr + c->length;
-
- for (channel = 0, d = ptr; d < e; d++) {
- int32_t t, hi, lo;
-
- hi = linear[channel] >> 16;
- lo = linear[channel] & 0xFFFF;
-
- t = (int32_t) *d - 0x80;
- t = ((t * lo) >> 16) + (t * hi);
- t = PA_CLAMP_UNLIKELY(t, -0x80, 0x7F);
- *d = (uint8_t) (t + 0x80);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_ULAW: {
- uint8_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (uint8_t*) ptr + c->length;
-
- for (channel = 0, d = ptr; d < e; d++) {
- int32_t t, hi, lo;
-
- hi = linear[channel] >> 16;
- lo = linear[channel] & 0xFFFF;
-
- t = (int32_t) st_ulaw2linear16(*d);
- t = ((t * lo) >> 16) + (t * hi);
- t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
- *d = (uint8_t) st_14linear2ulaw((int16_t) t >> 2);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_ALAW: {
- uint8_t *d, *e;
- unsigned channel;
- int32_t linear[PA_CHANNELS_MAX];
-
- calc_linear_integer_volume(linear, volume);
-
- e = (uint8_t*) ptr + c->length;
-
- for (channel = 0, d = ptr; d < e; d++) {
- int32_t t, hi, lo;
-
- hi = linear[channel] >> 16;
- lo = linear[channel] & 0xFFFF;
-
- t = (int32_t) st_alaw2linear16(*d);
- t = ((t * lo) >> 16) + (t * hi);
- t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
- *d = (uint8_t) st_13linear2alaw((int16_t) t >> 3);
-
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
- break;
- }
-
- case PA_SAMPLE_FLOAT32NE: {
- float *d;
- int skip;
- unsigned n;
- unsigned channel;
-
- d = ptr;
- skip = (int) (spec->channels * sizeof(float));
- n = (unsigned) (c->length/sizeof(float)/spec->channels);
-
- for (channel = 0; channel < spec->channels; channel ++) {
- float v, *t;
-
- if (PA_UNLIKELY(volume->values[channel] == PA_VOLUME_NORM))
- continue;
-
- v = (float) pa_sw_volume_to_linear(volume->values[channel]);
- t = d + channel;
- oil_scalarmult_f32(t, skip, t, skip, &v, (int) n);
- }
- break;
- }
-
- case PA_SAMPLE_FLOAT32RE: {
- float *d, *e;
- unsigned channel;
- float linear[PA_CHANNELS_MAX];
-
- calc_linear_float_volume(linear, volume);
-
- e = (float*) ptr + c->length/sizeof(float);
-
- for (channel = 0, d = ptr; d < e; d++) {
- float t;
+ if (spec->format < 0 || spec->format > PA_SAMPLE_MAX) {
+ pa_log_warn(" Unable to change volume of format %s.", pa_sample_format_to_string(spec->format));
+ return;
+ }
- t = PA_FLOAT32_SWAP(*d);
- t *= linear[channel];
- *d = PA_FLOAT32_SWAP(t);
+ do_volume = pa_get_volume_func (spec->format);
+ pa_assert(do_volume);
- if (PA_UNLIKELY(++channel >= spec->channels))
- channel = 0;
- }
-
- break;
- }
+ calc_volume_table[spec->format] ((void *)linear, volume);
+ ptr = (uint8_t*) pa_memblock_acquire(c->memblock) + c->index;
- default:
- pa_log_warn(" Unable to change volume of format %s.", pa_sample_format_to_string(spec->format));
- /* If we cannot change the volume, we just don't do it */
- }
+ do_volume (ptr, (void *)linear, spec->channels, c->length);
pa_memblock_release(c->memblock);
}
@@ -1090,7 +805,7 @@ void pa_interleave(const void *src[], unsigned channels, void *dst, size_t ss, u
d = (uint8_t*) dst + c * ss;
for (j = 0; j < n; j ++) {
- oil_memcpy(d, s, (int) ss);
+ memcpy(d, s, (int) ss);
s = (uint8_t*) s + ss;
d = (uint8_t*) d + fs;
}
@@ -1118,7 +833,7 @@ void pa_deinterleave(const void *src, void *dst[], unsigned channels, size_t ss,
d = dst[c];
for (j = 0; j < n; j ++) {
- oil_memcpy(d, s, (int) ss);
+ memcpy(d, s, (int) ss);
s = (uint8_t*) s + fs;
d = (uint8_t*) d + ss;
}
@@ -1227,10 +942,15 @@ void pa_sample_clamp(pa_sample_format_t format, void *dst, size_t dstr, const vo
s = src; d = dst;
if (format == PA_SAMPLE_FLOAT32NE) {
+ for (; n > 0; n--) {
+ float f;
- float minus_one = -1.0, plus_one = 1.0;
- oil_clip_f32(d, (int) dstr, s, (int) sstr, (int) n, &minus_one, &plus_one);
+ f = *s;
+ *d = PA_CLAMP_UNLIKELY(f, -1.0f, 1.0f);
+ s = (const float*) ((const uint8_t*) s + sstr);
+ d = (float*) ((uint8_t*) d + dstr);
+ }
} else {
pa_assert(format == PA_SAMPLE_FLOAT32RE);
@@ -1336,3 +1056,13 @@ void pa_memchunk_sine(pa_memchunk *c, pa_mempool *pool, unsigned rate, unsigned
calc_sine(p, c->length, freq * l / rate);
pa_memblock_release(c->memblock);
}
+
+size_t pa_convert_size(size_t size, const pa_sample_spec *from, const pa_sample_spec *to) {
+ pa_usec_t usec;
+
+ pa_assert(from);
+ pa_assert(to);
+
+ usec = pa_bytes_to_usec_round_up(size, from);
+ return pa_usec_to_bytes_round_up(usec, to);
+}
diff --git a/src/pulsecore/sample-util.h b/src/pulsecore/sample-util.h
index 6a306c11..d0235d60 100644
--- a/src/pulsecore/sample-util.h
+++ b/src/pulsecore/sample-util.h
@@ -86,6 +86,13 @@ 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);
+typedef void (*pa_do_volume_func_t) (void *samples, void *volumes, unsigned channels, unsigned length);
+
+pa_do_volume_func_t pa_get_volume_func(pa_sample_format_t f);
+void pa_set_volume_func(pa_sample_format_t f, pa_do_volume_func_t func);
+
+size_t pa_convert_size(size_t size, const pa_sample_spec *from, const pa_sample_spec *to);
+
#define PA_CHANNEL_POSITION_MASK_LEFT \
(PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT) \
| PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_LEFT) \
diff --git a/src/pulsecore/sconv-s16le.c b/src/pulsecore/sconv-s16le.c
index 43b8cb3e..0fefdf1c 100644
--- a/src/pulsecore/sconv-s16le.c
+++ b/src/pulsecore/sconv-s16le.c
@@ -28,8 +28,6 @@
#include <inttypes.h>
#include <stdio.h>
-#include <liboil/liboilfuncs.h>
-
#include <pulsecore/sconv.h>
#include <pulsecore/macro.h>
#include <pulsecore/log.h>
@@ -86,17 +84,13 @@ void pa_sconv_s16le_to_float32ne(unsigned n, const int16_t *a, float *b) {
pa_assert(b);
#if SWAP_WORDS == 1
-
for (; n > 0; n--) {
int16_t s = *(a++);
*(b++) = ((float) INT16_FROM(s))/(float) 0x7FFF;
}
-
#else
-{
- static const double add = 0, factor = 1.0/0x7FFF;
- oil_scaleconv_f32_s16(b, a, (int) n, &add, &factor);
-}
+ for (; n > 0; n--)
+ *(b++) = ((float) (*(a++)))/(float) 0x7FFF;
#endif
}
@@ -105,17 +99,13 @@ void pa_sconv_s32le_to_float32ne(unsigned n, const int32_t *a, float *b) {
pa_assert(b);
#if SWAP_WORDS == 1
-
for (; n > 0; n--) {
int32_t s = *(a++);
*(b++) = (float) (((double) INT32_FROM(s))/0x7FFFFFFF);
}
-
#else
-{
- static const double add = 0, factor = 1.0/0x7FFFFFFF;
- oil_scaleconv_f32_s32(b, a, (int) n, &add, &factor);
-}
+ for (; n > 0; n--)
+ *(b++) = (float) (((double) (*(a++)))/0x7FFFFFFF);
#endif
}
@@ -124,7 +114,6 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) {
pa_assert(b);
#if SWAP_WORDS == 1
-
for (; n > 0; n--) {
int16_t s;
float v = *(a++);
@@ -133,12 +122,13 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) {
s = (int16_t) lrintf(v * 0x7FFF);
*(b++) = INT16_TO(s);
}
-
#else
-{
- static const double add = 0, factor = 0x7FFF;
- oil_scaleconv_s16_f32(b, a, (int) n, &add, &factor);
-}
+ for (; n > 0; n--) {
+ float v = *(a++);
+
+ v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.f);
+ *(b++) = (int16_t) lrintf(v * 0x7FFF);
+ }
#endif
}
@@ -147,7 +137,6 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) {
pa_assert(b);
#if SWAP_WORDS == 1
-
for (; n > 0; n--) {
int32_t s;
float v = *(a++);
@@ -156,12 +145,13 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) {
s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
*(b++) = INT32_TO(s);
}
-
#else
-{
- static const double add = 0, factor = 0x7FFFFFFF;
- oil_scaleconv_s32_f32(b, a, (int) n, &add, &factor);
-}
+ for (; n > 0; n--) {
+ float v = *(a++);
+
+ v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.0f);
+ *(b++) = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
+ }
#endif
}
diff --git a/src/pulsecore/sconv.c b/src/pulsecore/sconv.c
index d89f4283..301f08b4 100644
--- a/src/pulsecore/sconv.c
+++ b/src/pulsecore/sconv.c
@@ -27,9 +27,6 @@
#include <stdio.h>
#include <stdlib.h>
-#include <liboil/liboilfuncs.h>
-#include <liboil/liboil.h>
-
#include <pulsecore/g711.h>
#include <pulsecore/macro.h>
@@ -41,32 +38,31 @@
/* u8 */
static void u8_to_float32ne(unsigned n, const uint8_t *a, float *b) {
- static const double add = -1, factor = 1.0/128.0;
-
pa_assert(a);
pa_assert(b);
- oil_scaleconv_f32_u8(b, a, (int) n, &add, &factor);
+ for (; n > 0; n--, a++, b++)
+ *b = (*a * 1.0/128.0) - 1.0;
}
static void u8_from_float32ne(unsigned n, const float *a, uint8_t *b) {
- static const double add = 128, factor = 127.0;
-
pa_assert(a);
pa_assert(b);
- oil_scaleconv_u8_f32(b, a, (int) n, &add, &factor);
+ for (; n > 0; n--, a++, b++) {
+ float v;
+ v = (*a * 127.0) + 128.0;
+ v = PA_CLAMP_UNLIKELY (v, 0.0, 255.0);
+ *b = rint (v);
+ }
}
static void u8_to_s16ne(unsigned n, const uint8_t *a, int16_t *b) {
- static const int16_t add = -0x80, factor = 0x100;
-
pa_assert(a);
pa_assert(b);
- oil_conv_s16_u8(b, 2, a, 1, (int) n);
- oil_scalaradd_s16(b, 2, b, 2, &add, (int) n);
- oil_scalarmult_s16(b, 2, b, 2, &factor, (int) n);
+ for (; n > 0; n--, a++, b++)
+ *b = (((int16_t)*a) - 128) << 8;
}
static void u8_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) {
@@ -84,7 +80,7 @@ static void float32ne_to_float32ne(unsigned n, const float *a, float *b) {
pa_assert(a);
pa_assert(b);
- oil_memcpy(b, a, (int) (sizeof(float) * n));
+ memcpy(b, a, (int) (sizeof(float) * n));
}
static void float32re_to_float32ne(unsigned n, const float *a, float *b) {
@@ -101,7 +97,7 @@ static void s16ne_to_s16ne(unsigned n, const int16_t *a, int16_t *b) {
pa_assert(a);
pa_assert(b);
- oil_memcpy(b, a, (int) (sizeof(int16_t) * n));
+ memcpy(b, a, (int) (sizeof(int16_t) * n));
}
static void s16re_to_s16ne(unsigned n, const int16_t *a, int16_t *b) {
@@ -188,98 +184,130 @@ static void alaw_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) {
*b = st_13linear2alaw(*a >> 3);
}
+static pa_convert_func_t to_float32ne_table[] = {
+ [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_float32ne,
+ [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_float32ne,
+ [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_float32ne,
+ [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_to_float32ne,
+ [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_to_float32ne,
+ [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_float32ne,
+ [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_float32ne,
+ [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_float32ne,
+ [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_float32ne,
+ [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_float32ne,
+ [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_float32ne,
+ [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne,
+ [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne,
+};
+
pa_convert_func_t pa_get_convert_to_float32ne_function(pa_sample_format_t f) {
- static const pa_convert_func_t table[] = {
- [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_float32ne,
- [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_float32ne,
- [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_float32ne,
- [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_to_float32ne,
- [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_to_float32ne,
- [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_float32ne,
- [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_float32ne,
- [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_float32ne,
- [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_float32ne,
- [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_float32ne,
- [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_float32ne,
- [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne,
- [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne,
- };
+ pa_assert(f >= 0);
+ pa_assert(f < PA_SAMPLE_MAX);
+
+ return to_float32ne_table[f];
+}
+
+void pa_set_convert_to_float32ne_function(pa_sample_format_t f, pa_convert_func_t func) {
pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
- return table[f];
+ to_float32ne_table[f] = func;
}
+static pa_convert_func_t from_float32ne_table[] = {
+ [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_float32ne,
+ [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_from_float32ne,
+ [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_from_float32ne,
+ [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_float32ne,
+ [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_float32ne,
+ [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_float32ne,
+ [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_float32ne,
+ [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_float32ne,
+ [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_float32ne,
+ [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne,
+ [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne,
+ [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_float32ne,
+ [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_float32ne
+};
+
pa_convert_func_t pa_get_convert_from_float32ne_function(pa_sample_format_t f) {
- static const pa_convert_func_t table[] = {
- [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_float32ne,
- [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_from_float32ne,
- [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_from_float32ne,
- [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_float32ne,
- [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_float32ne,
- [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_float32ne,
- [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_float32ne,
- [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_float32ne,
- [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_float32ne,
- [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne,
- [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne,
- [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_float32ne,
- [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_float32ne
- };
+ pa_assert(f >= 0);
+ pa_assert(f < PA_SAMPLE_MAX);
+
+ return from_float32ne_table[f];
+}
+
+void pa_set_convert_from_float32ne_function(pa_sample_format_t f, pa_convert_func_t func) {
pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
- return table[f];
+ from_float32ne_table[f] = func;
}
+static pa_convert_func_t to_s16ne_table[] = {
+ [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_s16ne,
+ [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne,
+ [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne,
+ [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_to_s16ne,
+ [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_to_s16ne,
+ [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_s16ne,
+ [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_s16ne,
+ [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_s16ne,
+ [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_s16ne,
+ [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_s16ne,
+ [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_s16ne,
+ [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_s16ne,
+ [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_s16ne
+};
+
pa_convert_func_t pa_get_convert_to_s16ne_function(pa_sample_format_t f) {
- static const pa_convert_func_t table[] = {
- [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_s16ne,
- [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne,
- [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne,
- [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_to_s16ne,
- [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_to_s16ne,
- [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_s16ne,
- [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_s16ne,
- [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_s16ne,
- [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_s16ne,
- [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_s16ne,
- [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_s16ne,
- [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_s16ne,
- [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_s16ne
- };
+ pa_assert(f >= 0);
+ pa_assert(f < PA_SAMPLE_MAX);
+
+ return to_s16ne_table[f];
+}
+
+void pa_set_convert_to_s16ne_function(pa_sample_format_t f, pa_convert_func_t func) {
pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
- return table[f];
+ to_s16ne_table[f] = func;
}
+static pa_convert_func_t from_s16ne_table[] = {
+ [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_s16ne,
+ [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne,
+ [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne,
+ [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_from_s16ne,
+ [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_from_s16ne,
+ [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_s16ne,
+ [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_s16ne,
+ [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_s16ne,
+ [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_s16ne,
+ [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_s16ne,
+ [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_s16ne,
+ [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_s16ne,
+ [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_s16ne,
+};
+
pa_convert_func_t pa_get_convert_from_s16ne_function(pa_sample_format_t f) {
- static const pa_convert_func_t table[] = {
- [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_s16ne,
- [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne,
- [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne,
- [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_from_s16ne,
- [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_from_s16ne,
- [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_s16ne,
- [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_s16ne,
- [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_s16ne,
- [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_s16ne,
- [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_s16ne,
- [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_s16ne,
- [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_s16ne,
- [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_s16ne,
- };
+ pa_assert(f >= 0);
+ pa_assert(f < PA_SAMPLE_MAX);
+
+ return from_s16ne_table[f];
+}
+
+void pa_set_convert_from_s16ne_function(pa_sample_format_t f, pa_convert_func_t func) {
pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
- return table[f];
+ from_s16ne_table[f] = func;
}
diff --git a/src/pulsecore/sconv.h b/src/pulsecore/sconv.h
index b00a16a4..cd937559 100644
--- a/src/pulsecore/sconv.h
+++ b/src/pulsecore/sconv.h
@@ -33,4 +33,10 @@ pa_convert_func_t pa_get_convert_from_float32ne_function(pa_sample_format_t f) P
pa_convert_func_t pa_get_convert_to_s16ne_function(pa_sample_format_t f) PA_GCC_PURE;
pa_convert_func_t pa_get_convert_from_s16ne_function(pa_sample_format_t f) PA_GCC_PURE;
+void pa_set_convert_to_float32ne_function(pa_sample_format_t f, pa_convert_func_t func);
+void pa_set_convert_from_float32ne_function(pa_sample_format_t f, pa_convert_func_t func);
+
+void pa_set_convert_to_s16ne_function(pa_sample_format_t f, pa_convert_func_t func);
+void pa_set_convert_from_s16ne_function(pa_sample_format_t f, pa_convert_func_t func);
+
#endif
diff --git a/src/pulsecore/sconv_sse.c b/src/pulsecore/sconv_sse.c
new file mode 100644
index 00000000..3737af2a
--- /dev/null
+++ b/src/pulsecore/sconv_sse.c
@@ -0,0 +1,235 @@
+/***
+ 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <pulsecore/g711.h>
+#include <pulsecore/macro.h>
+
+#include "endianmacros.h"
+
+#include "cpu-x86.h"
+#include "sconv.h"
+
+#if defined (__i386__) || defined (__amd64__)
+
+static const PA_DECLARE_ALIGNED (16, float, one[4]) = { 1.0, 1.0, 1.0, 1.0 };
+static const PA_DECLARE_ALIGNED (16, float, mone[4]) = { -1.0, -1.0, -1.0, -1.0 };
+static const PA_DECLARE_ALIGNED (16, float, scale[4]) = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
+
+static void pa_sconv_s16le_from_f32ne_sse(unsigned n, const float *a, int16_t *b) {
+ pa_reg_x86 temp, i;
+
+ __asm__ __volatile__ (
+ " movaps %5, %%xmm5 \n\t"
+ " movaps %6, %%xmm6 \n\t"
+ " movaps %7, %%xmm7 \n\t"
+ " xor %0, %0 \n\t"
+
+ " mov %4, %1 \n\t"
+ " sar $3, %1 \n\t" /* 8 floats at a time */
+ " cmp $0, %1 \n\t"
+ " je 2f \n\t"
+
+ "1: \n\t"
+ " movups (%2, %0, 2), %%xmm0 \n\t" /* read 8 floats */
+ " movups 16(%2, %0, 2), %%xmm2 \n\t"
+ " minps %%xmm5, %%xmm0 \n\t" /* clamp to 1.0 */
+ " minps %%xmm5, %%xmm2 \n\t"
+ " maxps %%xmm6, %%xmm0 \n\t" /* clamp to -1.0 */
+ " maxps %%xmm6, %%xmm2 \n\t"
+ " mulps %%xmm7, %%xmm0 \n\t" /* *= 0x7fff */
+ " mulps %%xmm7, %%xmm2 \n\t"
+
+ " cvtps2pi %%xmm0, %%mm0 \n\t" /* low part to int */
+ " cvtps2pi %%xmm2, %%mm2 \n\t"
+ " movhlps %%xmm0, %%xmm0 \n\t" /* bring high part in position */
+ " movhlps %%xmm2, %%xmm2 \n\t"
+ " cvtps2pi %%xmm0, %%mm1 \n\t" /* high part to int */
+ " cvtps2pi %%xmm2, %%mm3 \n\t"
+
+ " packssdw %%mm1, %%mm0 \n\t" /* pack parts */
+ " packssdw %%mm3, %%mm2 \n\t"
+ " movq %%mm0, (%3, %0) \n\t"
+ " movq %%mm2, 8(%3, %0) \n\t"
+
+ " add $16, %0 \n\t"
+ " dec %1 \n\t"
+ " jne 1b \n\t"
+
+ "2: \n\t"
+ " mov %4, %1 \n\t" /* prepare for leftovers */
+ " and $7, %1 \n\t"
+ " je 4f \n\t"
+
+ "3: \n\t"
+ " movss (%2, %0, 2), %%xmm0 \n\t"
+ " minss %%xmm5, %%xmm0 \n\t"
+ " maxss %%xmm6, %%xmm0 \n\t"
+ " mulss %%xmm7, %%xmm0 \n\t"
+ " cvtss2si %%xmm0, %4 \n\t"
+ " movw %w4, (%3, %0) \n\t"
+ " add $2, %0 \n\t"
+ " dec %1 \n\t"
+ " jne 3b \n\t"
+
+ "4: \n\t"
+ " emms \n\t"
+
+ : "=&r" (i), "=&r" (temp)
+ : "r" (a), "r" (b), "r" ((pa_reg_x86)n), "m" (*one), "m" (*mone), "m" (*scale)
+ : "cc", "memory"
+ );
+}
+
+static void pa_sconv_s16le_from_f32ne_sse2(unsigned n, const float *a, int16_t *b) {
+ pa_reg_x86 temp, i;
+
+ __asm__ __volatile__ (
+ " movaps %5, %%xmm5 \n\t"
+ " movaps %6, %%xmm6 \n\t"
+ " movaps %7, %%xmm7 \n\t"
+ " xor %0, %0 \n\t"
+
+ " mov %4, %1 \n\t"
+ " sar $3, %1 \n\t" /* 8 floats at a time */
+ " cmp $0, %1 \n\t"
+ " je 2f \n\t"
+
+ "1: \n\t"
+ " movups (%2, %0, 2), %%xmm0 \n\t" /* read 8 floats */
+ " movups 16(%2, %0, 2), %%xmm2 \n\t"
+ " minps %%xmm5, %%xmm0 \n\t" /* clamp to 1.0 */
+ " minps %%xmm5, %%xmm2 \n\t"
+ " maxps %%xmm6, %%xmm0 \n\t" /* clamp to -1.0 */
+ " maxps %%xmm6, %%xmm2 \n\t"
+ " mulps %%xmm7, %%xmm0 \n\t" /* *= 0x7fff */
+ " mulps %%xmm7, %%xmm2 \n\t"
+
+ " cvtps2dq %%xmm0, %%xmm0 \n\t"
+ " cvtps2dq %%xmm2, %%xmm2 \n\t"
+
+ " packssdw %%xmm2, %%xmm0 \n\t"
+ " movdqu %%xmm0, (%3, %0) \n\t"
+
+ " add $16, %0 \n\t"
+ " dec %1 \n\t"
+ " jne 1b \n\t"
+
+ "2: \n\t"
+ " mov %4, %1 \n\t" /* prepare for leftovers */
+ " and $7, %1 \n\t"
+ " je 4f \n\t"
+
+ "3: \n\t"
+ " movss (%2, %0, 2), %%xmm0 \n\t"
+ " minss %%xmm5, %%xmm0 \n\t"
+ " maxss %%xmm6, %%xmm0 \n\t"
+ " mulss %%xmm7, %%xmm0 \n\t"
+ " cvtss2si %%xmm0, %4 \n\t"
+ " movw %w4, (%3, %0) \n\t"
+ " add $2, %0 \n\t"
+ " dec %1 \n\t"
+ " jne 3b \n\t"
+
+ "4: \n\t"
+
+ : "=&r" (i), "=&r" (temp)
+ : "r" (a), "r" (b), "r" ((pa_reg_x86)n), "m" (*one), "m" (*mone), "m" (*scale)
+ : "cc", "memory"
+ );
+}
+
+#undef RUN_TEST
+
+#ifdef RUN_TEST
+#define SAMPLES 1019
+#define TIMES 1000
+
+static void run_test (void) {
+ int16_t samples[SAMPLES];
+ int16_t samples_ref[SAMPLES];
+ float floats[SAMPLES];
+ int i;
+ pa_usec_t start, stop;
+ pa_convert_func_t func;
+
+ printf ("checking SSE %zd\n", sizeof (samples));
+
+ memset (samples_ref, 0, sizeof (samples_ref));
+ memset (samples, 0, sizeof (samples));
+
+ for (i = 0; i < SAMPLES; i++) {
+ floats[i] = (rand()/(RAND_MAX+2.2)) - 1.1;
+ }
+
+ func = pa_get_convert_from_float32ne_function (PA_SAMPLE_S16LE);
+ func (SAMPLES, floats, samples_ref);
+ pa_sconv_s16le_from_f32ne_sse2 (SAMPLES, floats, samples);
+
+ for (i = 0; i < SAMPLES; i++) {
+ if (samples[i] != samples_ref[i]) {
+ printf ("%d: %04x != %04x (%f)\n", i, samples[i], samples_ref[i],
+ floats[i]);
+ }
+ }
+
+ start = pa_rtclock_now();
+ for (i = 0; i < TIMES; i++) {
+ pa_sconv_s16le_from_f32ne_sse2 (SAMPLES, floats, samples);
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("SSE: %llu usec.", (long long unsigned int)(stop - start));
+
+ start = pa_rtclock_now();
+ for (i = 0; i < TIMES; i++) {
+ func (SAMPLES, floats, samples_ref);
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start));
+}
+#endif
+#endif /* defined (__i386__) || defined (__amd64__) */
+
+
+void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags) {
+#if defined (__i386__) || defined (__amd64__)
+
+#ifdef RUN_TEST
+ run_test ();
+#endif
+
+ if (flags & PA_CPU_X86_SSE2) {
+ pa_log_info("Initialising SSE2 optimized conversions.");
+ pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse2);
+ } else {
+ pa_log_info("Initialising SSE optimized conversions.");
+ pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse);
+ }
+
+#endif /* defined (__i386__) || defined (__amd64__) */
+}
diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c
index 6e428426..fbf777a4 100644
--- a/src/pulsecore/shm.c
+++ b/src/pulsecore/shm.c
@@ -60,7 +60,8 @@
#define MADV_REMOVE 9
#endif
-#define MAX_SHM_SIZE (PA_ALIGN(1024*1024*64))
+/* 1 GiB at max */
+#define MAX_SHM_SIZE (PA_ALIGN(1024*1024*1024))
#ifdef __linux__
/* On Linux we know that the shared memory blocks are files in
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index a5f96351..744c47ff 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -44,14 +44,15 @@
#define MEMBLOCKQ_MAXLENGTH (32*1024*1024)
#define CONVERT_BUFFER_LENGTH (PA_PAGE_SIZE)
-static PA_DEFINE_CHECK_TYPE(pa_sink_input, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_sink_input, pa_msgobject);
static void sink_input_free(pa_object *o);
+static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v);
pa_sink_input_new_data* pa_sink_input_new_data_init(pa_sink_input_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->resample_method = PA_RESAMPLER_INVALID;
data->proplist = pa_proplist_new();
@@ -91,6 +92,18 @@ void pa_sink_input_new_data_apply_volume_factor(pa_sink_input_new_data *data, co
}
}
+void pa_sink_input_new_data_apply_volume_factor_sink(pa_sink_input_new_data *data, const pa_cvolume *volume_factor) {
+ pa_assert(data);
+ pa_assert(volume_factor);
+
+ if (data->volume_factor_sink_is_set)
+ pa_sw_cvolume_multiply(&data->volume_factor_sink, &data->volume_factor_sink, volume_factor);
+ else {
+ data->volume_factor_sink_is_set = TRUE;
+ data->volume_factor_sink = *volume_factor;
+ }
+}
+
void pa_sink_input_new_data_set_muted(pa_sink_input_new_data *data, pa_bool_t mute) {
pa_assert(data);
@@ -114,6 +127,7 @@ static void reset_callbacks(pa_sink_input *i) {
i->update_max_request = NULL;
i->update_sink_requested_latency = NULL;
i->update_sink_latency_range = NULL;
+ i->update_sink_fixed_latency = NULL;
i->attach = NULL;
i->detach = NULL;
i->suspend = NULL;
@@ -124,14 +138,15 @@ static void reset_callbacks(pa_sink_input *i) {
i->state_change = NULL;
i->may_move_to = NULL;
i->send_event = NULL;
+ i->volume_changed = NULL;
+ i->mute_changed = NULL;
}
/* Called from main context */
int pa_sink_input_new(
pa_sink_input **_i,
pa_core *core,
- pa_sink_input_new_data *data,
- pa_sink_input_flags_t flags) {
+ pa_sink_input_new_data *data) {
pa_sink_input *i;
pa_resampler *resampler = NULL;
@@ -142,6 +157,7 @@ int pa_sink_input_new(
pa_assert(_i);
pa_assert(core);
pa_assert(data);
+ pa_assert_ctl_context();
if (data->client)
pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->client->proplist);
@@ -172,7 +188,6 @@ int pa_sink_input_new(
pa_channel_map_init_extend(&data->channel_map, data->sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
}
- pa_return_val_if_fail(pa_channel_map_valid(&data->channel_map), -PA_ERR_INVALID);
pa_return_val_if_fail(pa_channel_map_compatible(&data->channel_map, &data->sample_spec), -PA_ERR_INVALID);
if (!data->volume_is_set) {
@@ -181,27 +196,30 @@ int pa_sink_input_new(
data->save_volume = FALSE;
}
- pa_return_val_if_fail(pa_cvolume_valid(&data->volume), -PA_ERR_INVALID);
pa_return_val_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec), -PA_ERR_INVALID);
if (!data->volume_factor_is_set)
pa_cvolume_reset(&data->volume_factor, data->sample_spec.channels);
- pa_return_val_if_fail(pa_cvolume_valid(&data->volume_factor), -PA_ERR_INVALID);
pa_return_val_if_fail(pa_cvolume_compatible(&data->volume_factor, &data->sample_spec), -PA_ERR_INVALID);
+ if (!data->volume_factor_sink_is_set)
+ pa_cvolume_reset(&data->volume_factor_sink, data->sink->sample_spec.channels);
+
+ pa_return_val_if_fail(pa_cvolume_compatible(&data->volume_factor_sink, &data->sink->sample_spec), -PA_ERR_INVALID);
+
if (!data->muted_is_set)
data->muted = FALSE;
- if (flags & PA_SINK_INPUT_FIX_FORMAT)
+ if (data->flags & PA_SINK_INPUT_FIX_FORMAT)
data->sample_spec.format = data->sink->sample_spec.format;
- if (flags & PA_SINK_INPUT_FIX_RATE)
+ if (data->flags & PA_SINK_INPUT_FIX_RATE)
data->sample_spec.rate = data->sink->sample_spec.rate;
original_cm = data->channel_map;
- if (flags & PA_SINK_INPUT_FIX_CHANNELS) {
+ if (data->flags & PA_SINK_INPUT_FIX_CHANNELS) {
data->sample_spec.channels = data->sink->sample_spec.channels;
data->channel_map = data->sink->channel_map;
}
@@ -220,7 +238,7 @@ int pa_sink_input_new(
if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_INPUT_FIXATE], data)) < 0)
return r;
- if ((flags & PA_SINK_INPUT_FAIL_ON_SUSPEND) &&
+ if ((data->flags & PA_SINK_INPUT_NO_CREATE_ON_SUSPEND) &&
pa_sink_get_state(data->sink) == PA_SINK_SUSPENDED) {
pa_log_warn("Failed to create sink input: sink is suspended.");
return -PA_ERR_BADSTATE;
@@ -231,7 +249,7 @@ int pa_sink_input_new(
return -PA_ERR_TOOLARGE;
}
- if ((flags & PA_SINK_INPUT_VARIABLE_RATE) ||
+ if ((data->flags & PA_SINK_INPUT_VARIABLE_RATE) ||
!pa_sample_spec_equal(&data->sample_spec, &data->sink->sample_spec) ||
!pa_channel_map_equal(&data->channel_map, &data->sink->channel_map)) {
@@ -240,9 +258,9 @@ int pa_sink_input_new(
&data->sample_spec, &data->channel_map,
&data->sink->sample_spec, &data->sink->channel_map,
data->resample_method,
- ((flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
- ((flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
- (core->disable_remixing || (flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
+ ((data->flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
+ ((data->flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
+ (core->disable_remixing || (data->flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
(core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) {
pa_log_warn("Unsupported resampling operation.");
return -PA_ERR_NOTSUPPORTED;
@@ -255,7 +273,7 @@ int pa_sink_input_new(
i->core = core;
i->state = PA_SINK_INPUT_INIT;
- i->flags = flags;
+ i->flags = data->flags;
i->proplist = pa_proplist_copy(data->proplist);
i->driver = pa_xstrdup(pa_path_get_filename(data->driver));
i->module = data->module;
@@ -268,18 +286,21 @@ int pa_sink_input_new(
i->channel_map = data->channel_map;
if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !data->volume_is_absolute) {
+ pa_cvolume remapped;
+
/* When the 'absolute' bool is not set then we'll treat the volume
* as relative to the sink volume even in flat volume mode */
-
- pa_cvolume v = data->sink->reference_volume;
- pa_cvolume_remap(&v, &data->sink->channel_map, &data->channel_map);
- pa_sw_cvolume_multiply(&i->virtual_volume, &data->volume, &v);
+ remapped = data->sink->reference_volume;
+ pa_cvolume_remap(&remapped, &data->sink->channel_map, &data->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &data->volume, &remapped);
} else
- i->virtual_volume = data->volume;
+ i->volume = data->volume;
i->volume_factor = data->volume_factor;
- pa_cvolume_init(&i->soft_volume);
- memset(i->relative_volume, 0, sizeof(i->relative_volume));
+ i->volume_factor_sink = data->volume_factor_sink;
+ i->real_ratio = i->reference_ratio = data->volume;
+ pa_cvolume_reset(&i->soft_volume, i->sample_spec.channels);
+ pa_cvolume_reset(&i->real_ratio, i->sample_spec.channels);
i->save_volume = data->save_volume;
i->save_sink = data->save_sink;
i->save_muted = data->save_muted;
@@ -348,6 +369,7 @@ int pa_sink_input_new(
/* Called from main context */
static void update_n_corked(pa_sink_input *i, pa_sink_input_state_t state) {
pa_assert(i);
+ pa_assert_ctl_context();
if (!i->sink)
return;
@@ -362,6 +384,7 @@ static void update_n_corked(pa_sink_input *i, pa_sink_input_state_t state) {
static void sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state) {
pa_sink_input *ssync;
pa_assert(i);
+ pa_assert_ctl_context();
if (state == PA_SINK_INPUT_DRAINED)
state = PA_SINK_INPUT_RUNNING;
@@ -400,7 +423,9 @@ static void sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state)
void pa_sink_input_unlink(pa_sink_input *i) {
pa_bool_t linked;
pa_source_output *o, *p = NULL;
+
pa_assert(i);
+ pa_assert_ctl_context();
/* See pa_sink_unlink() for a couple of comments how this function
* works */
@@ -439,11 +464,8 @@ void pa_sink_input_unlink(pa_sink_input *i) {
if (linked && i->sink) {
/* We might need to update the sink's volume if we are in flat volume mode. */
- 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, FALSE);
- }
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
+ pa_sink_set_volume(i->sink, NULL, FALSE, FALSE);
if (i->sink->asyncmsgq)
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_REMOVE_INPUT, i, 0, NULL) == 0);
@@ -471,6 +493,7 @@ static void sink_input_free(pa_object *o) {
pa_sink_input* i = PA_SINK_INPUT(o);
pa_assert(i);
+ pa_assert_ctl_context();
pa_assert(pa_sink_input_refcnt(i) == 0);
if (PA_SINK_INPUT_IS_LINKED(i->state))
@@ -478,7 +501,10 @@ static void sink_input_free(pa_object *o) {
pa_log_info("Freeing input %u \"%s\"", i->index, pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME)));
- pa_assert(!i->thread_info.attached);
+ /* Side note: this function must be able to destruct properly any
+ * kind of sink input in any state, even those which are
+ * "half-moved" or are connected to sinks that have no asyncmsgq
+ * and are hence half-destructed themselves! */
if (i->thread_info.render_memblockq)
pa_memblockq_free(i->thread_info.render_memblockq);
@@ -502,7 +528,9 @@ static void sink_input_free(pa_object *o) {
/* Called from main context */
void pa_sink_input_put(pa_sink_input *i) {
pa_sink_input_state_t state;
+
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(i->state == PA_SINK_INPUT_INIT);
@@ -517,12 +545,10 @@ void pa_sink_input_put(pa_sink_input *i) {
i->state = state;
/* We might need to update the sink's volume if we are in flat volume mode. */
- 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, FALSE);
- } else
- pa_sink_input_set_relative_volume(i, &i->virtual_volume);
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
+ pa_sink_set_volume(i->sink, NULL, FALSE, i->save_volume);
+ else
+ set_real_ratio(i, &i->volume);
i->thread_info.soft_volume = i->soft_volume;
i->thread_info.muted = i->muted;
@@ -538,6 +564,7 @@ void pa_sink_input_put(pa_sink_input *i) {
/* Called from main context */
void pa_sink_input_kill(pa_sink_input*i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
i->kill(i);
@@ -548,6 +575,7 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency) {
pa_usec_t r[2] = { 0, 0 };
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_GET_LATENCY, r, 0, NULL) == 0);
@@ -563,12 +591,13 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency) {
/* Called from thread context */
void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, pa_memchunk *chunk, pa_cvolume *volume) {
- pa_bool_t do_volume_adj_here;
+ pa_bool_t do_volume_adj_here, need_volume_factor_sink;
pa_bool_t volume_is_norm;
size_t block_size_max_sink, block_size_max_sink_input;
size_t ilength;
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(slength, &i->sink->sample_spec));
pa_assert(chunk);
@@ -610,6 +639,7 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
do_volume_adj_here = !pa_channel_map_equal(&i->channel_map, &i->sink->channel_map);
volume_is_norm = pa_cvolume_is_norm(&i->thread_info.soft_volume) && !i->thread_info.muted;
+ need_volume_factor_sink = !pa_cvolume_is_norm(&i->volume_factor_sink);
while (!pa_memblockq_is_readable(i->thread_info.render_memblockq)) {
pa_memchunk tchunk;
@@ -641,6 +671,7 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
while (tchunk.length > 0) {
pa_memchunk wchunk;
+ pa_bool_t nvfs = need_volume_factor_sink;
wchunk = tchunk;
pa_memblock_ref(wchunk.memblock);
@@ -652,18 +683,41 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
if (do_volume_adj_here && !volume_is_norm) {
pa_memchunk_make_writable(&wchunk, 0);
- if (i->thread_info.muted)
+ if (i->thread_info.muted) {
pa_silence_memchunk(&wchunk, &i->thread_info.sample_spec);
- else
+ nvfs = FALSE;
+
+ } else if (!i->thread_info.resampler && nvfs) {
+ pa_cvolume v;
+
+ /* If we don't need a resampler we can merge the
+ * post and the pre volume adjustment into one */
+
+ pa_sw_cvolume_multiply(&v, &i->thread_info.soft_volume, &i->volume_factor_sink);
+ pa_volume_memchunk(&wchunk, &i->thread_info.sample_spec, &v);
+ nvfs = FALSE;
+
+ } else
pa_volume_memchunk(&wchunk, &i->thread_info.sample_spec, &i->thread_info.soft_volume);
}
- if (!i->thread_info.resampler)
+ if (!i->thread_info.resampler) {
+
+ if (nvfs) {
+ pa_memchunk_make_writable(&wchunk, 0);
+ pa_volume_memchunk(&wchunk, &i->sink->sample_spec, &i->volume_factor_sink);
+ }
+
pa_memblockq_push_align(i->thread_info.render_memblockq, &wchunk);
- else {
+ } else {
pa_memchunk rchunk;
pa_resampler_run(i->thread_info.resampler, &wchunk, &rchunk);
+ if (nvfs) {
+ pa_memchunk_make_writable(&rchunk, 0);
+ pa_volume_memchunk(&rchunk, &i->sink->sample_spec, &i->volume_factor_sink);
+ }
+
/* pa_log_debug("pushing %lu", (unsigned long) rchunk.length); */
if (rchunk.memblock) {
@@ -706,8 +760,9 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
/* Called from thread context */
void pa_sink_input_drop(pa_sink_input *i, size_t nbytes /* in sink sample spec */) {
- pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
pa_assert(nbytes > 0);
@@ -721,8 +776,9 @@ void pa_sink_input_drop(pa_sink_input *i, size_t nbytes /* in sink sample spec *
void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sample spec */) {
size_t lbq;
pa_bool_t called = FALSE;
- pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
@@ -790,8 +846,28 @@ void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sam
}
/* Called from thread context */
+size_t pa_sink_input_get_max_rewind(pa_sink_input *i) {
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+
+ return i->thread_info.resampler ? pa_resampler_request(i->thread_info.resampler, i->sink->thread_info.max_rewind) : i->sink->thread_info.max_rewind;
+}
+
+/* Called from thread context */
+size_t pa_sink_input_get_max_request(pa_sink_input *i) {
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+
+ /* We're not verifying the status here, to allow this to be called
+ * in the state change handler between _INIT and _RUNNING */
+
+ return i->thread_info.resampler ? pa_resampler_request(i->thread_info.resampler, i->sink->thread_info.max_request) : i->sink->thread_info.max_request;
+}
+
+/* Called from thread context */
void pa_sink_input_update_max_rewind(pa_sink_input *i, size_t nbytes /* in the sink's sample spec */) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
@@ -804,6 +880,7 @@ void pa_sink_input_update_max_rewind(pa_sink_input *i, size_t nbytes /* in the
/* Called from thread context */
void pa_sink_input_update_max_request(pa_sink_input *i, size_t nbytes /* in the sink's sample spec */) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
@@ -814,15 +891,16 @@ void pa_sink_input_update_max_request(pa_sink_input *i, size_t nbytes /* in the
/* Called from thread context */
pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa_usec_t usec) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY))
- usec = i->sink->fixed_latency;
+ usec = i->sink->thread_info.fixed_latency;
if (usec != (pa_usec_t) -1)
usec = PA_CLAMP(usec, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
i->thread_info.requested_sink_latency = usec;
- pa_sink_invalidate_requested_latency(i->sink);
+ pa_sink_invalidate_requested_latency(i->sink, TRUE);
return usec;
}
@@ -830,6 +908,7 @@ pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa
/* Called from main context */
pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) {
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
@@ -841,7 +920,7 @@ pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec)
if (i->sink) {
if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY))
- usec = i->sink->fixed_latency;
+ usec = pa_sink_get_fixed_latency(i->sink);
if (usec != (pa_usec_t) -1) {
pa_usec_t min_latency, max_latency;
@@ -858,6 +937,7 @@ pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec)
/* Called from main context */
pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) {
pa_usec_t usec = 0;
@@ -872,121 +952,101 @@ pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) {
}
/* Called from main context */
+static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v) {
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+ pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec));
+
+ /* This basically calculates:
+ *
+ * i->real_ratio := v
+ * i->soft_volume := i->real_ratio * i->volume_factor */
+
+ if (v)
+ i->real_ratio = *v;
+ else
+ pa_cvolume_reset(&i->real_ratio, i->sample_spec.channels);
+
+ pa_sw_cvolume_multiply(&i->soft_volume, &i->real_ratio, &i->volume_factor);
+ /* We don't copy the data to the thread_info data. That's left for someone else to do */
+}
+
+/* Called from main context */
void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute) {
pa_cvolume v;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(volume);
pa_assert(pa_cvolume_valid(volume));
- pa_assert(pa_cvolume_compatible(volume, &i->sample_spec));
+ pa_assert(volume->channels == 1 || pa_cvolume_compatible(volume, &i->sample_spec));
if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) {
v = i->sink->reference_volume;
pa_cvolume_remap(&v, &i->sink->channel_map, &i->channel_map);
- volume = pa_sw_cvolume_multiply(&v, &v, volume);
+
+ if (pa_cvolume_compatible(volume, &i->sample_spec))
+ volume = pa_sw_cvolume_multiply(&v, &v, volume);
+ else
+ volume = pa_sw_cvolume_multiply_scalar(&v, &v, pa_cvolume_max(volume));
+ } else {
+
+ if (!pa_cvolume_compatible(volume, &i->sample_spec)) {
+ v = i->volume;
+ volume = pa_cvolume_scale(&v, pa_cvolume_max(volume));
+ }
}
- if (pa_cvolume_equal(volume, &i->virtual_volume))
+ if (pa_cvolume_equal(volume, &i->volume)) {
+ i->save_volume = i->save_volume || save;
return;
+ }
- i->virtual_volume = *volume;
+ i->volume = *volume;
i->save_volume = save;
- if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
-
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
/* We are in flat volume mode, so let's update all sink input
* 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, FALSE);
-
- } else {
+ pa_sink_set_volume(i->sink, NULL, TRUE, save);
+ else {
/* OK, we are in normal volume mode. The volume only affects
* ourselves */
- pa_sink_input_set_relative_volume(i, volume);
-
- /* Hooks have the ability to play games with i->soft_volume */
- pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);
+ set_real_ratio(i, volume);
/* Copy the new soft_volume to the thread_info struct */
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0);
}
- /* The virtual volume changed, let's tell people so */
+ /* The volume changed, let's tell people so */
+ if (i->volume_changed)
+ i->volume_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
}
/* Called from main context */
pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
- if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) {
- pa_cvolume v = i->sink->reference_volume;
- pa_cvolume_remap(&v, &i->sink->channel_map, &i->channel_map);
- pa_sw_cvolume_divide(volume, &i->virtual_volume, &v);
- } else
- *volume = i->virtual_volume;
+ if (absolute || !(i->sink->flags & PA_SINK_FLAT_VOLUME))
+ *volume = i->volume;
+ else
+ *volume = i->reference_ratio;
return volume;
}
/* Called from main context */
-pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v) {
- unsigned c;
-
- pa_sink_input_assert_ref(i);
- pa_assert(v);
- pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
-
- /* This always returns the relative volume. Converts the float
- * version into a pa_cvolume */
-
- v->channels = i->sample_spec.channels;
-
- for (c = 0; c < v->channels; c++)
- v->values[c] = pa_sw_volume_from_linear(i->relative_volume[c]);
-
- return v;
-}
-
-/* Called from main context */
-void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v) {
- unsigned c;
- pa_cvolume _v;
-
- pa_sink_input_assert_ref(i);
- pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
- pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec));
-
- if (!v)
- v = pa_cvolume_reset(&_v, i->sample_spec.channels);
-
- /* This basically calculates:
- *
- * i->relative_volume := v
- * i->soft_volume := i->relative_volume * i->volume_factor */
-
- i->soft_volume.channels = i->sample_spec.channels;
-
- for (c = 0; c < i->sample_spec.channels; c++) {
- i->relative_volume[c] = pa_sw_volume_to_linear(v->values[c]);
-
- i->soft_volume.values[c] = pa_sw_volume_from_linear(
- i->relative_volume[c] *
- pa_sw_volume_to_linear(i->volume_factor.values[c]));
- }
-
- /* We don't copy the data to the thread_info data. That's left for someone else to do */
-}
-
-/* Called from main context */
void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
- pa_assert(i);
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
if (!i->muted == !mute)
@@ -996,12 +1056,18 @@ void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
i->save_muted = save;
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_MUTE, NULL, 0, NULL) == 0);
+
+ /* The mute status changed, let's tell people so */
+ if (i->mute_changed)
+ i->mute_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
}
/* Called from main context */
pa_bool_t pa_sink_input_get_mute(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
return i->muted;
@@ -1010,6 +1076,7 @@ pa_bool_t pa_sink_input_get_mute(pa_sink_input *i) {
/* Called from main thread */
void pa_sink_input_update_proplist(pa_sink_input *i, pa_update_mode_t mode, pa_proplist *p) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(i->proplist, mode, p);
@@ -1023,6 +1090,7 @@ void pa_sink_input_update_proplist(pa_sink_input *i, pa_update_mode_t mode, pa_p
/* Called from main context */
void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
sink_input_set_state(i, b ? PA_SINK_INPUT_CORKED : PA_SINK_INPUT_RUNNING);
@@ -1031,6 +1099,7 @@ void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b) {
/* Called from main context */
int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_return_val_if_fail(i->thread_info.resampler, -PA_ERR_BADSTATE);
@@ -1049,13 +1118,14 @@ int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate) {
void pa_sink_input_set_name(pa_sink_input *i, const char *name) {
const char *old;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (!name && !pa_proplist_contains(i->proplist, PA_PROP_MEDIA_NAME))
return;
old = pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME);
- if (old && name && !strcmp(old, name))
+ if (old && name && pa_streq(old, name))
return;
if (name)
@@ -1072,6 +1142,7 @@ void pa_sink_input_set_name(pa_sink_input *i, const char *name) {
/* Called from main context */
pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
return i->actual_resample_method;
}
@@ -1079,6 +1150,7 @@ pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i) {
/* Called from main context */
pa_bool_t pa_sink_input_may_move(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
if (i->flags & PA_SINK_INPUT_DONT_MOVE)
@@ -1095,6 +1167,7 @@ pa_bool_t pa_sink_input_may_move(pa_sink_input *i) {
/* Called from main context */
pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_sink_assert_ref(dest);
@@ -1119,10 +1192,10 @@ pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest) {
/* Called from main context */
int pa_sink_input_start_move(pa_sink_input *i) {
pa_source_output *o, *p = NULL;
- pa_sink *origin;
int r;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(i->sink);
@@ -1132,8 +1205,6 @@ int pa_sink_input_start_move(pa_sink_input *i) {
if ((r = pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_START], i)) < 0)
return r;
- origin = i->sink;
-
/* Kill directly connected outputs */
while ((o = pa_idxset_first(i->direct_outputs, NULL))) {
pa_assert(o != p);
@@ -1147,24 +1218,15 @@ int pa_sink_input_start_move(pa_sink_input *i) {
if (pa_sink_input_get_state(i) == PA_SINK_INPUT_CORKED)
pa_assert_se(i->sink->n_corked-- >= 1);
- if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
-
- /* Make the virtual volume relative */
- pa_sink_input_get_relative_volume(i, &i->virtual_volume);
-
- /* And reset the the relative volume */
- pa_sink_input_set_relative_volume(i, NULL);
-
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
/* 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, FALSE);
- }
+ pa_sink_set_volume(i->sink, NULL, FALSE, FALSE);
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_START_MOVE, i, 0, NULL) == 0);
pa_sink_update_status(i->sink);
+ pa_cvolume_remap(&i->volume_factor_sink, &i->sink->channel_map, &i->channel_map);
i->sink = NULL;
pa_sink_input_unref(i);
@@ -1177,6 +1239,7 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
pa_resampler *new_resampler;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(!i->sink);
pa_sink_assert_ref(dest);
@@ -1218,6 +1281,8 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
i->save_sink = save;
pa_idxset_put(dest->inputs, pa_sink_input_ref(i), NULL);
+ pa_cvolume_remap(&i->volume_factor_sink, &i->channel_map, &i->sink->channel_map);
+
if (pa_sink_input_get_state(i) == PA_SINK_INPUT_CORKED)
i->sink->n_corked++;
@@ -1243,16 +1308,15 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
pa_sink_update_status(dest);
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
+ pa_cvolume remapped;
- /* Make relative volume absolute again */
- pa_cvolume t = dest->reference_volume;
- pa_cvolume_remap(&t, &dest->channel_map, &i->channel_map);
- pa_sw_cvolume_multiply(&i->virtual_volume, &i->virtual_volume, &t);
+ /* Make relative volumes absolute */
+ remapped = dest->reference_volume;
+ pa_cvolume_remap(&remapped, &dest->channel_map, &i->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &i->reference_ratio, &remapped);
/* 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, FALSE);
+ pa_sink_set_volume(i->sink, NULL, FALSE, i->save_volume);
}
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_FINISH_MOVE, i, 0, NULL) == 0);
@@ -1261,16 +1325,39 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
/* Notify everyone */
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FINISH], i);
+
+ if (i->volume_changed)
+ i->volume_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
return 0;
}
/* Called from main context */
+void pa_sink_input_fail_move(pa_sink_input *i) {
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+ pa_assert(!i->sink);
+
+ /* Check if someone wants this sink input? */
+ if (pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], i) == PA_HOOK_STOP)
+ return;
+
+ if (i->moving)
+ i->moving(i, NULL);
+
+ pa_sink_input_kill(i);
+}
+
+/* Called from main context */
int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
int r;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(i->sink);
pa_sink_assert_ref(dest);
@@ -1289,6 +1376,7 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
}
if ((r = pa_sink_input_finish_move(i, dest, save)) < 0) {
+ pa_sink_input_fail_move(i);
pa_sink_input_unref(i);
return r;
}
@@ -1301,7 +1389,9 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
/* Called from IO thread context */
void pa_sink_input_set_state_within_thread(pa_sink_input *i, pa_sink_input_state_t state) {
pa_bool_t corking, uncorking;
+
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
if (state == i->thread_info.state)
return;
@@ -1411,6 +1501,7 @@ int pa_sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int64_t
/* Called from main thread */
pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (i->state == PA_SINK_INPUT_RUNNING || i->state == PA_SINK_INPUT_DRAINED)
return pa_atomic_load(&i->thread_info.drained) ? PA_SINK_INPUT_DRAINED : PA_SINK_INPUT_RUNNING;
@@ -1421,6 +1512,7 @@ pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i) {
/* Called from IO context */
pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
if (PA_SINK_INPUT_IS_LINKED(i->thread_info.state))
return pa_memblockq_is_empty(i->thread_info.render_memblockq);
@@ -1429,7 +1521,13 @@ pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i) {
}
/* Called from IO context */
-void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sample spec */, pa_bool_t rewrite, pa_bool_t flush, pa_bool_t dont_rewind_render) {
+void pa_sink_input_request_rewind(
+ pa_sink_input *i,
+ size_t nbytes /* in our sample spec */,
+ pa_bool_t rewrite,
+ pa_bool_t flush,
+ pa_bool_t dont_rewind_render) {
+
size_t lbq;
/* If 'rewrite' is TRUE the sink is rewound as far as requested
@@ -1444,18 +1542,20 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam
* dont_rewind_render is TRUE then the render memblockq is not
* rewound. */
- pa_sink_input_assert_ref(i);
-
- nbytes = PA_MAX(i->thread_info.rewrite_nbytes, nbytes);
+ /* nbytes = 0 means maximum rewind request */
-/* pa_log_debug("request rewrite %lu", (unsigned long) nbytes); */
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+ pa_assert(rewrite || flush);
+ pa_assert(!dont_rewind_render || !rewrite);
/* We don't take rewind requests while we are corked */
if (i->thread_info.state == PA_SINK_INPUT_CORKED)
return;
- pa_assert(rewrite || flush);
- pa_assert(!dont_rewind_render || !rewrite);
+ nbytes = PA_MAX(i->thread_info.rewrite_nbytes, nbytes);
+
+ /* pa_log_debug("request rewrite %zu", nbytes); */
/* Calculate how much we can rewind locally without having to
* touch the sink */
@@ -1475,6 +1575,7 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam
nbytes = pa_resampler_request(i->thread_info.resampler, nbytes);
}
+ /* Remember how much we actually want to rewrite */
if (i->thread_info.rewrite_nbytes != (size_t) -1) {
if (rewrite) {
/* Make sure to not overwrite over underruns */
@@ -1511,8 +1612,11 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam
/* Called from main context */
pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(ret);
+ /* FIXME: Shouldn't access resampler object from main context! */
+
pa_silence_memchunk_get(
&i->core->silence_cache,
i->core->mempool,
@@ -1529,6 +1633,7 @@ void pa_sink_input_send_event(pa_sink_input *i, const char *event, pa_proplist *
pa_sink_input_send_event_hook_data hook_data;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(event);
if (!i->send_event)
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index 98144d41..415a801f 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -42,6 +42,7 @@ typedef enum pa_sink_input_state {
PA_SINK_INPUT_RUNNING, /*< The stream is alive and kicking */
PA_SINK_INPUT_CORKED, /*< The stream was corked on user request */
PA_SINK_INPUT_UNLINKED /*< The stream is dead */
+ /* FIXME: we need a state for MOVING here */
} pa_sink_input_state_t;
static inline pa_bool_t PA_SINK_INPUT_IS_LINKED(pa_sink_input_state_t x) {
@@ -58,7 +59,8 @@ typedef enum pa_sink_input_flags {
PA_SINK_INPUT_FIX_RATE = 64,
PA_SINK_INPUT_FIX_CHANNELS = 128,
PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND = 256,
- PA_SINK_INPUT_FAIL_ON_SUSPEND = 512
+ PA_SINK_INPUT_NO_CREATE_ON_SUSPEND = 512,
+ PA_SINK_INPUT_KILL_ON_SUSPEND = 1024
} pa_sink_input_flags_t;
struct pa_sink_input {
@@ -92,10 +94,14 @@ struct pa_sink_input {
pa_sink_input *sync_prev, *sync_next;
/* Also see http://pulseaudio.org/wiki/InternalVolumes */
- pa_cvolume virtual_volume; /* The volume clients are informed about */
- pa_cvolume volume_factor; /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */
- double relative_volume[PA_CHANNELS_MAX]; /* The calculated volume relative to the sink volume as linear factors. */
- pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as relative_volume * volume_factor */
+ pa_cvolume volume; /* The volume clients are informed about */
+ pa_cvolume reference_ratio; /* The ratio of the stream's volume to the sink's reference volume */
+ pa_cvolume real_ratio; /* The ratio of the stream's volume to the sink's real volume */
+ pa_cvolume volume_factor; /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */
+ pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as real_ratio * volume_factor */
+
+ pa_cvolume volume_factor_sink; /* A second volume factor in format of the sink this stream is connected to */
+
pa_bool_t muted:1;
/* if TRUE then the source we are connected to and/or the volume
@@ -137,6 +143,10 @@ struct pa_sink_input {
* from IO context. */
void (*update_sink_latency_range) (pa_sink_input *i); /* may be NULL */
+ /* Called whenver the fixed latency of the sink changes, if there
+ * is one. Called from IO context. */
+ void (*update_sink_fixed_latency) (pa_sink_input *i); /* may be NULL */
+
/* If non-NULL this function is called when the input is first
* connected to a sink or when the rtpoll/asyncmsgq fields
* change. You usually don't need to implement this function
@@ -159,7 +169,9 @@ struct pa_sink_input {
/* If non-NULL called whenever the sink input is moved to a new
* sink. Called from main context after the sink input has been
* detached from the old sink and before it has been attached to
- * the new sink. */
+ * the new sink. If dest is NULL the move was executed in two
+ * phases and the second one failed; the stream will be destroyed
+ * after this call. */
void (*moving) (pa_sink_input *i, pa_sink *dest); /* may be NULL */
/* Supposed to unlink and destroy this stream. Called from main
@@ -182,8 +194,16 @@ struct pa_sink_input {
pa_bool_t (*may_move_to) (pa_sink_input *i, pa_sink *s); /* may be NULL */
/* If non-NULL this function is used to dispatch asynchronous
- * control events. */
- void (*send_event)(pa_sink_input *i, const char *event, pa_proplist* data);
+ * control events. Called from main context. */
+ void (*send_event)(pa_sink_input *i, const char *event, pa_proplist* data); /* may be NULL */
+
+ /* If non-NULL this function is called whenever the sink input
+ * volume changes. Called from main context */
+ void (*volume_changed)(pa_sink_input *i); /* may be NULL */
+
+ /* If non-NULL this function is called whenever the sink input
+ * mute status changes. Called from main context */
+ void (*mute_changed)(pa_sink_input *i); /* may be NULL */
struct {
pa_sink_input_state_t state;
@@ -194,7 +214,7 @@ struct pa_sink_input {
pa_bool_t attached:1; /* True only between ->attach() and ->detach() calls */
- /* 0: rewrite nothing, (size_t) -1: rewrite everything, otherwise how many bytes to rewrite */
+ /* rewrite_nbytes: 0: rewrite nothing, (size_t) -1: rewrite everything, otherwise how many bytes to rewrite */
pa_bool_t rewrite_flush:1, dont_rewind_render:1;
size_t rewrite_nbytes;
uint64_t underrun_for, playing_for;
@@ -217,7 +237,7 @@ struct pa_sink_input {
void *userdata;
};
-PA_DECLARE_CLASS(pa_sink_input);
+PA_DECLARE_PUBLIC_CLASS(pa_sink_input);
#define PA_SINK_INPUT(o) pa_sink_input_cast(o)
enum {
@@ -238,6 +258,8 @@ typedef struct pa_sink_input_send_event_hook_data {
} pa_sink_input_send_event_hook_data;
typedef struct pa_sink_input_new_data {
+ pa_sink_input_flags_t flags;
+
pa_proplist *proplist;
const char *driver;
@@ -253,13 +275,13 @@ typedef struct pa_sink_input_new_data {
pa_sample_spec sample_spec;
pa_channel_map channel_map;
- pa_cvolume volume, volume_factor;
+ pa_cvolume volume, volume_factor, volume_factor_sink;
pa_bool_t muted:1;
pa_bool_t sample_spec_is_set:1;
pa_bool_t channel_map_is_set:1;
- pa_bool_t volume_is_set:1, volume_factor_is_set:1;
+ pa_bool_t volume_is_set:1, volume_factor_is_set:1, volume_factor_sink_is_set:1;
pa_bool_t muted_is_set:1;
pa_bool_t volume_is_absolute:1;
@@ -272,6 +294,7 @@ void pa_sink_input_new_data_set_sample_spec(pa_sink_input_new_data *data, const
void pa_sink_input_new_data_set_channel_map(pa_sink_input_new_data *data, const pa_channel_map *map);
void pa_sink_input_new_data_set_volume(pa_sink_input_new_data *data, const pa_cvolume *volume);
void pa_sink_input_new_data_apply_volume_factor(pa_sink_input_new_data *data, const pa_cvolume *volume_factor);
+void pa_sink_input_new_data_apply_volume_factor_sink(pa_sink_input_new_data *data, const pa_cvolume *volume_factor);
void pa_sink_input_new_data_set_muted(pa_sink_input_new_data *data, pa_bool_t mute);
void pa_sink_input_new_data_done(pa_sink_input_new_data *data);
@@ -280,8 +303,7 @@ void pa_sink_input_new_data_done(pa_sink_input_new_data *data);
int pa_sink_input_new(
pa_sink_input **i,
pa_core *core,
- pa_sink_input_new_data *data,
- pa_sink_input_flags_t flags);
+ pa_sink_input_new_data *data);
void pa_sink_input_put(pa_sink_input *i);
void pa_sink_input_unlink(pa_sink_input* i);
@@ -303,6 +325,10 @@ void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b);
int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate);
+/* This returns the sink's fields converted into out sample type */
+size_t pa_sink_input_get_max_rewind(pa_sink_input *i);
+size_t pa_sink_input_get_max_request(pa_sink_input *i);
+
/* Callable by everyone from main thread*/
/* External code may request disconnection with this function */
@@ -313,8 +339,6 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency);
void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute);
pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute);
-pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v);
-
void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save);
pa_bool_t pa_sink_input_get_mute(pa_sink_input *i);
@@ -333,6 +357,7 @@ pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest); /* may thi
* new sink */
int pa_sink_input_start_move(pa_sink_input *i);
int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save);
+void pa_sink_input_fail_move(pa_sink_input *i);
pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i);
@@ -356,7 +381,7 @@ pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i);
pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret);
-/* To be used by sink.c only */
-void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v);
+#define pa_sink_input_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SINK_INPUT_IS_LINKED((s)->state))
#endif
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index d8f3c7d1..bda92fcc 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -52,14 +52,14 @@
#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC)
-static PA_DEFINE_CHECK_TYPE(pa_sink, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_sink, pa_msgobject);
static void sink_free(pa_object *s);
pa_sink_new_data* pa_sink_new_data_init(pa_sink_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->proplist = pa_proplist_new();
return data;
@@ -177,6 +177,7 @@ pa_sink* pa_sink_new(
pa_assert(core);
pa_assert(data);
pa_assert(data->name);
+ pa_assert_ctl_context();
s = pa_msgobject_new(pa_sink);
@@ -211,7 +212,7 @@ pa_sink* pa_sink_new(
pa_cvolume_reset(&data->volume, data->sample_spec.channels);
pa_return_null_if_fail(pa_cvolume_valid(&data->volume));
- pa_return_null_if_fail(data->volume.channels == data->sample_spec.channels);
+ pa_return_null_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec));
if (!data->muted_is_set)
data->muted = FALSE;
@@ -235,6 +236,7 @@ pa_sink* pa_sink_new(
s->core = core;
s->state = PA_SINK_INIT;
s->flags = flags;
+ s->priority = 0;
s->suspend_cause = 0;
s->name = pa_xstrdup(name);
s->proplist = pa_proplist_copy(data->proplist);
@@ -242,26 +244,25 @@ pa_sink* pa_sink_new(
s->module = data->module;
s->card = data->card;
+ s->priority = pa_device_init_priority(s->proplist);
+
s->sample_spec = data->sample_spec;
s->channel_map = data->channel_map;
s->inputs = pa_idxset_new(NULL, NULL);
s->n_corked = 0;
- s->reference_volume = s->virtual_volume = data->volume;
+ s->reference_volume = s->real_volume = data->volume;
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->base_volume = PA_VOLUME_NORM;
s->n_volume_steps = PA_VOLUME_NORM+1;
s->muted = data->muted;
s->refresh_volume = s->refresh_muted = FALSE;
- s->fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
-
reset_callbacks(s);
s->userdata = NULL;
s->asyncmsgq = NULL;
- s->rtpoll = NULL;
/* As a minor optimization we just steal the list instead of
* copying it here */
@@ -294,6 +295,7 @@ pa_sink* pa_sink_new(
&s->sample_spec,
0);
+ s->thread_info.rtpoll = NULL;
s->thread_info.inputs = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
@@ -306,7 +308,9 @@ pa_sink* pa_sink_new(
s->thread_info.requested_latency = 0;
s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY;
s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY;
+ s->thread_info.fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
+ /* FIXME: This should probably be moved to pa_sink_put() */
pa_assert_se(pa_idxset_put(core->sinks, s, &s->index) >= 0);
if (s->card)
@@ -348,6 +352,7 @@ pa_sink* pa_sink_new(
s->monitor_source->monitor_of = s;
pa_source_set_latency_range(s->monitor_source, s->thread_info.min_latency, s->thread_info.max_latency);
+ pa_source_set_fixed_latency(s->monitor_source, s->thread_info.fixed_latency);
pa_source_set_max_rewind(s->monitor_source, s->thread_info.max_rewind);
return s;
@@ -360,6 +365,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
pa_sink_state_t original_state;
pa_assert(s);
+ pa_assert_ctl_context();
if (s->state == state)
return 0;
@@ -396,9 +402,9 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
/* We're suspending or resuming, tell everyone about it */
- 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)
if (s->state == PA_SINK_SUSPENDED &&
- (i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND))
+ (i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND))
pa_sink_input_kill(i);
else if (i->suspend)
i->suspend(i, state == PA_SINK_SUSPENDED);
@@ -413,12 +419,12 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
/* Called from main context */
void pa_sink_put(pa_sink* s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(s->state == PA_SINK_INIT);
/* The following fields must be initialized properly when calling _put() */
pa_assert(s->asyncmsgq);
- pa_assert(s->rtpoll);
pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency);
/* Generally, flags should be initialized via pa_sink_new(). As a
@@ -431,16 +437,21 @@ void pa_sink_put(pa_sink* s) {
if ((s->flags & PA_SINK_DECIBEL_VOLUME) && s->core->flat_volumes)
s->flags |= PA_SINK_FLAT_VOLUME;
+ /* We assume that if the sink implementor changed the default
+ * volume he did so in real_volume, because that is the usual
+ * place where he is supposed to place his changes. */
+ s->reference_volume = s->real_volume;
+
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
pa_assert((s->flags & PA_SINK_HW_VOLUME_CTRL) || (s->base_volume == PA_VOLUME_NORM && s->flags & PA_SINK_DECIBEL_VOLUME));
pa_assert(!(s->flags & PA_SINK_DECIBEL_VOLUME) || s->n_volume_steps == PA_VOLUME_NORM+1);
- pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == (s->fixed_latency != 0));
+ pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0));
pa_assert(!(s->flags & PA_SINK_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_LATENCY));
pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_DYNAMIC_LATENCY));
- pa_assert(s->monitor_source->fixed_latency == s->fixed_latency);
+ pa_assert(s->monitor_source->thread_info.fixed_latency == s->thread_info.fixed_latency);
pa_assert(s->monitor_source->thread_info.min_latency == s->thread_info.min_latency);
pa_assert(s->monitor_source->thread_info.max_latency == s->thread_info.max_latency);
@@ -458,6 +469,7 @@ void pa_sink_unlink(pa_sink* s) {
pa_sink_input *i, *j = NULL;
pa_assert(s);
+ pa_assert_ctl_context();
/* Please note that pa_sink_unlink() does more than simply
* reversing pa_sink_put(). It also undoes the registrations
@@ -507,6 +519,7 @@ static void sink_free(pa_object *o) {
pa_sink_input *i;
pa_assert(s);
+ pa_assert_ctl_context();
pa_assert(pa_sink_refcnt(s) == 0);
if (PA_SINK_IS_LINKED(s->state))
@@ -547,9 +560,10 @@ static void sink_free(pa_object *o) {
pa_xfree(s);
}
-/* Called from main context */
+/* Called from main context, and not while the IO thread is active, please */
void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
s->asyncmsgq = q;
@@ -557,11 +571,32 @@ void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) {
pa_source_set_asyncmsgq(s->monitor_source, q);
}
-/* Called from main context */
+/* Called from main context, and not while the IO thread is active, please */
+void pa_sink_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t value) {
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (mask == 0)
+ return;
+
+ /* For now, allow only a minimal set of flags to be changed. */
+ pa_assert((mask & ~(PA_SINK_DYNAMIC_LATENCY|PA_SINK_LATENCY)) == 0);
+
+ s->flags = (s->flags & ~mask) | (value & mask);
+
+ pa_source_update_flags(s->monitor_source,
+ ((mask & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) |
+ ((mask & PA_SINK_DYNAMIC_LATENCY) ? PA_SOURCE_DYNAMIC_LATENCY : 0),
+ ((value & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) |
+ ((value & PA_SINK_DYNAMIC_LATENCY) ? PA_SINK_DYNAMIC_LATENCY : 0));
+}
+
+/* Called from IO context, or before _put() from main context */
void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) {
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
- s->rtpoll = p;
+ s->thread_info.rtpoll = p;
if (s->monitor_source)
pa_source_set_rtpoll(s->monitor_source, p);
@@ -570,6 +605,7 @@ void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) {
/* Called from main context */
int pa_sink_update_status(pa_sink*s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
if (s->state == PA_SINK_SUSPENDED)
@@ -581,6 +617,7 @@ int pa_sink_update_status(pa_sink*s) {
/* Called from main context */
int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(cause != 0);
@@ -609,6 +646,7 @@ pa_queue *pa_sink_move_all_start(pa_sink *s, pa_queue *q) {
uint32_t idx;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
if (!q)
@@ -633,12 +671,13 @@ void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save) {
pa_sink_input *i;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(q);
while ((i = PA_SINK_INPUT(pa_queue_pop(q)))) {
if (pa_sink_input_finish_move(i, s, save) < 0)
- pa_sink_input_kill(i);
+ pa_sink_input_fail_move(i);
pa_sink_input_unref(i);
}
@@ -649,13 +688,13 @@ void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save) {
/* Called from main context */
void pa_sink_move_all_fail(pa_queue *q) {
pa_sink_input *i;
+
+ pa_assert_ctl_context();
pa_assert(q);
while ((i = PA_SINK_INPUT(pa_queue_pop(q)))) {
- if (pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], i) == PA_HOOK_OK) {
- pa_sink_input_kill(i);
- pa_sink_input_unref(i);
- }
+ pa_sink_input_fail_move(i);
+ pa_sink_input_unref(i);
}
pa_queue_free(q, NULL, NULL);
@@ -665,11 +704,15 @@ void pa_sink_move_all_fail(pa_queue *q) {
void pa_sink_process_rewind(pa_sink *s, size_t nbytes) {
pa_sink_input *i;
void *state = NULL;
+
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
/* If nobody requested this and this is actually no real rewind
- * then we can short cut this */
+ * then we can short cut this. Please note that this means that
+ * not all rewind requests triggered upstream will always be
+ * translated in actual requests! */
if (!s->thread_info.rewind_requested && nbytes <= 0)
return;
@@ -682,7 +725,7 @@ void pa_sink_process_rewind(pa_sink *s, size_t nbytes) {
if (nbytes > 0)
pa_log_debug("Processing rewind...");
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) {
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) {
pa_sink_input_assert_ref(i);
pa_sink_input_process_rewind(i, nbytes);
}
@@ -700,6 +743,7 @@ static unsigned fill_mix_info(pa_sink *s, size_t *length, pa_mix_info *info, uns
size_t mixlength = *length;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(info);
while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)) && maxinfo > 0) {
@@ -734,18 +778,19 @@ static unsigned fill_mix_info(pa_sink *s, size_t *length, pa_mix_info *info, uns
/* Called from IO thread context */
static void inputs_drop(pa_sink *s, pa_mix_info *info, unsigned n, pa_memchunk *result) {
pa_sink_input *i;
- void *state = NULL;
+ void *state;
unsigned p = 0;
unsigned n_unreffed = 0;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(result);
pa_assert(result->memblock);
pa_assert(result->length > 0);
/* We optimize for the case where the order of the inputs has not changed */
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) {
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) {
unsigned j;
pa_mix_info* m = NULL;
@@ -834,12 +879,11 @@ void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result) {
size_t block_size_max;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(pa_frame_aligned(length, &s->sample_spec));
pa_assert(result);
- pa_sink_ref(s);
-
pa_assert(!s->thread_info.rewind_requested);
pa_assert(s->thread_info.rewind_nbytes == 0);
@@ -850,6 +894,8 @@ void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result) {
return;
}
+ pa_sink_ref(s);
+
if (length <= 0)
length = pa_frame_align(MIX_BUFFER_LENGTH, &s->sample_spec);
@@ -920,14 +966,13 @@ void pa_sink_render_into(pa_sink*s, pa_memchunk *target) {
size_t length, block_size_max;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(target);
pa_assert(target->memblock);
pa_assert(target->length > 0);
pa_assert(pa_frame_aligned(target->length, &s->sample_spec));
- pa_sink_ref(s);
-
pa_assert(!s->thread_info.rewind_requested);
pa_assert(s->thread_info.rewind_nbytes == 0);
@@ -936,6 +981,8 @@ void pa_sink_render_into(pa_sink*s, pa_memchunk *target) {
return;
}
+ pa_sink_ref(s);
+
length = target->length;
block_size_max = pa_mempool_block_size_max(s->core->mempool);
if (length > block_size_max)
@@ -1003,17 +1050,23 @@ void pa_sink_render_into_full(pa_sink *s, pa_memchunk *target) {
size_t l, d;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(target);
pa_assert(target->memblock);
pa_assert(target->length > 0);
pa_assert(pa_frame_aligned(target->length, &s->sample_spec));
- pa_sink_ref(s);
-
pa_assert(!s->thread_info.rewind_requested);
pa_assert(s->thread_info.rewind_nbytes == 0);
+ if (s->thread_info.state == PA_SINK_SUSPENDED) {
+ pa_silence_memchunk(target, &s->sample_spec);
+ return;
+ }
+
+ pa_sink_ref(s);
+
l = target->length;
d = 0;
while (l > 0) {
@@ -1032,91 +1085,31 @@ void pa_sink_render_into_full(pa_sink *s, pa_memchunk *target) {
/* Called from IO thread context */
void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
- pa_mix_info info[MAX_MIX_CHANNELS];
- size_t length1st = length;
- unsigned n;
-
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(length > 0);
pa_assert(pa_frame_aligned(length, &s->sample_spec));
pa_assert(result);
- pa_sink_ref(s);
-
pa_assert(!s->thread_info.rewind_requested);
pa_assert(s->thread_info.rewind_nbytes == 0);
- pa_assert(length > 0);
-
- 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);
- } else if (n == 1) {
- pa_cvolume volume;
-
- *result = info[0].chunk;
- pa_memblock_ref(result->memblock);
-
- if (result->length > length)
- result->length = length;
-
- 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)) {
- pa_memblock_unref(result->memblock);
- pa_silence_memchunk_get(&s->core->silence_cache,
- s->core->mempool,
- result,
- &s->sample_spec,
- result->length);
- } else {
- pa_memchunk_make_writable(result, length);
- pa_volume_memchunk(result, &s->sample_spec, &volume);
- }
- }
- } else {
- void *ptr;
-
- result->index = 0;
- result->memblock = pa_memblock_new(s->core->mempool, length);
-
- ptr = pa_memblock_acquire(result->memblock);
-
- result->length = pa_mix(info, n,
- (uint8_t*) ptr + result->index, length1st,
- &s->sample_spec,
- &s->thread_info.soft_volume,
- s->thread_info.soft_muted);
-
- pa_memblock_release(result->memblock);
- }
+ pa_sink_ref(s);
- inputs_drop(s, info, n, result);
+ pa_sink_render(s, length, result);
if (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;
+ chunk.memblock = result->memblock;
+ chunk.index = result->index + result->length;
+ chunk.length = length - result->length;
- pa_sink_render_into(s, &chunk);
+ pa_sink_render_into_full(s, &chunk);
- d += chunk.length;
- l -= chunk.length;
- }
result->length = length;
}
@@ -1128,6 +1121,7 @@ pa_usec_t pa_sink_get_latency(pa_sink *s) {
pa_usec_t usec = 0;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
/* The returned value is supposed to be in the time domain of the sound card! */
@@ -1149,6 +1143,7 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) {
pa_msgobject *o;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
/* The returned value is supposed to be in the time domain of the sound card! */
@@ -1161,7 +1156,7 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) {
o = PA_MSGOBJECT(s);
- /* We probably should make this a proper vtable callback instead of going through process_msg() */
+ /* FIXME: We probably should make this a proper vtable callback instead of going through process_msg() */
if (o->process_msg(o, PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
return -1;
@@ -1169,108 +1164,149 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) {
return usec;
}
-static void compute_new_soft_volume(pa_sink_input *i, const pa_cvolume *new_volume) {
- unsigned c;
+/* Called from main context */
+static void compute_reference_ratios(pa_sink *s) {
+ uint32_t idx;
+ pa_sink_input *i;
- pa_sink_input_assert_ref(i);
- pa_assert(new_volume->channels == i->sample_spec.channels);
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
+ pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
- /*
- * This basically calculates:
- *
- * i->relative_volume := i->virtual_volume / new_volume
- * i->soft_volume := i->relative_volume * i->volume_factor
- */
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ unsigned c;
+ pa_cvolume remapped;
+
+ /*
+ * Calculates the reference volume from the sink's reference
+ * volume. This basically calculates:
+ *
+ * i->reference_ratio = i->volume / s->reference_volume
+ */
- /* The new sink volume passed in here must already be remapped to
- * the sink input's channel map! */
+ remapped = s->reference_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
- i->soft_volume.channels = i->sample_spec.channels;
+ i->reference_ratio.channels = i->sample_spec.channels;
- for (c = 0; c < i->sample_spec.channels; c++)
+ for (c = 0; c < i->sample_spec.channels; c++) {
- if (new_volume->values[c] <= PA_VOLUME_MUTED)
- /* We leave i->relative_volume untouched */
- i->soft_volume.values[c] = PA_VOLUME_MUTED;
- else {
- i->relative_volume[c] =
- pa_sw_volume_to_linear(i->virtual_volume.values[c]) /
- pa_sw_volume_to_linear(new_volume->values[c]);
+ /* We don't update when the sink volume is 0 anyway */
+ if (remapped.values[c] <= PA_VOLUME_MUTED)
+ continue;
+
+ /* Don't update the reference ratio unless necessary */
+ if (pa_sw_volume_multiply(
+ i->reference_ratio.values[c],
+ remapped.values[c]) == i->volume.values[c])
+ continue;
- i->soft_volume.values[c] = pa_sw_volume_from_linear(
- i->relative_volume[c] *
- pa_sw_volume_to_linear(i->volume_factor.values[c]));
+ i->reference_ratio.values[c] = pa_sw_volume_divide(
+ i->volume.values[c],
+ remapped.values[c]);
}
+ }
+}
+
+/* Called from main context */
+static void compute_real_ratios(pa_sink *s) {
+ pa_sink_input *i;
+ uint32_t idx;
+
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
+ pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
+
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ unsigned c;
+ pa_cvolume remapped;
+
+ /*
+ * This basically calculates:
+ *
+ * i->real_ratio := i->volume / s->real_volume
+ * i->soft_volume := i->real_ratio * i->volume_factor
+ */
- /* Hooks have the ability to play games with i->soft_volume */
- pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);
+ remapped = s->real_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
- /* We don't copy the soft_volume to the thread_info data
- * here. That must be done by the caller */
+ i->real_ratio.channels = i->sample_spec.channels;
+ i->soft_volume.channels = i->sample_spec.channels;
+
+ for (c = 0; c < i->sample_spec.channels; c++) {
+
+ if (remapped.values[c] <= PA_VOLUME_MUTED) {
+ /* We leave i->real_ratio untouched */
+ i->soft_volume.values[c] = PA_VOLUME_MUTED;
+ continue;
+ }
+
+ /* Don't lose accuracy unless necessary */
+ if (pa_sw_volume_multiply(
+ i->real_ratio.values[c],
+ remapped.values[c]) != i->volume.values[c])
+
+ i->real_ratio.values[c] = pa_sw_volume_divide(
+ i->volume.values[c],
+ remapped.values[c]);
+
+ i->soft_volume.values[c] = pa_sw_volume_multiply(
+ i->real_ratio.values[c],
+ i->volume_factor.values[c]);
+ }
+
+ /* We don't copy the soft_volume to the thread_info data
+ * here. That must be done by the caller */
+ }
}
/* Called from main thread */
-void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume) {
+static void compute_real_volume(pa_sink *s) {
pa_sink_input *i;
uint32_t idx;
pa_sink_assert_ref(s);
- pa_assert(new_volume);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
- /* This is called whenever a sink input volume changes or a sink
- * input is added/removed and we might need to fix up the sink
- * volume accordingly. Please note that we don't actually update
- * the sinks volume here, we only return how it needs to be
- * updated. The caller should then call pa_sink_set_volume().*/
+ /* This determines the maximum volume of all streams and sets
+ * s->real_volume accordingly. */
if (pa_idxset_isempty(s->inputs)) {
/* In the special case that we have no sink input we leave the
* volume unmodified. */
- *new_volume = s->reference_volume;
+ s->real_volume = s->reference_volume;
return;
}
- pa_cvolume_mute(new_volume, s->channel_map.channels);
+ pa_cvolume_mute(&s->real_volume, s->channel_map.channels);
/* First let's determine the new maximum volume of all inputs
* connected to this sink */
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
- unsigned c;
- pa_cvolume remapped_volume;
-
- remapped_volume = i->virtual_volume;
- pa_cvolume_remap(&remapped_volume, &i->channel_map, &s->channel_map);
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ pa_cvolume remapped;
- for (c = 0; c < new_volume->channels; c++)
- if (remapped_volume.values[c] > new_volume->values[c])
- new_volume->values[c] = remapped_volume.values[c];
+ remapped = i->volume;
+ pa_cvolume_remap(&remapped, &i->channel_map, &s->channel_map);
+ pa_cvolume_merge(&s->real_volume, &s->real_volume, &remapped);
}
- /* Then, let's update the soft volumes of all inputs connected
- * to this sink */
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
- pa_cvolume remapped_new_volume;
-
- remapped_new_volume = *new_volume;
- pa_cvolume_remap(&remapped_new_volume, &s->channel_map, &i->channel_map);
- compute_new_soft_volume(i, &remapped_new_volume);
-
- /* We don't copy soft_volume to the thread_info data here
- * (i.e. issue PA_SINK_INPUT_MESSAGE_SET_VOLUME) because we
- * want the update to be atomically with the sink volume
- * update, hence we do it within the pa_sink_set_volume() call
- * below */
- }
+ /* Then, let's update the real ratios/soft volumes of all inputs
+ * connected to this sink */
+ compute_real_ratios(s);
}
/* Called from main thread */
-void pa_sink_propagate_flat_volume(pa_sink *s) {
+static void propagate_reference_volume(pa_sink *s) {
pa_sink_input *i;
uint32_t idx;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
@@ -1278,63 +1314,88 @@ void pa_sink_propagate_flat_volume(pa_sink *s) {
* caused by a sink input volume change. We need to fix up the
* sink input volumes accordingly */
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
- pa_cvolume sink_volume, new_virtual_volume;
- unsigned c;
-
- /* This basically calculates i->virtual_volume := i->relative_volume * s->virtual_volume */
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ pa_cvolume old_volume, remapped;
- sink_volume = s->virtual_volume;
- pa_cvolume_remap(&sink_volume, &s->channel_map, &i->channel_map);
+ old_volume = i->volume;
- for (c = 0; c < i->sample_spec.channels; c++)
- new_virtual_volume.values[c] = pa_sw_volume_from_linear(
- i->relative_volume[c] *
- pa_sw_volume_to_linear(sink_volume.values[c]));
+ /* This basically calculates:
+ *
+ * i->volume := s->reference_volume * i->reference_ratio */
- new_virtual_volume.channels = i->sample_spec.channels;
+ remapped = s->reference_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
- if (!pa_cvolume_equal(&new_virtual_volume, &i->virtual_volume)) {
- i->virtual_volume = new_virtual_volume;
+ /* The volume changed, let's tell people so */
+ if (!pa_cvolume_equal(&old_volume, &i->volume)) {
- /* Hmm, the soft volume might no longer actually match
- * what has been chosen as new virtual volume here,
- * especially when the old volume was
- * PA_VOLUME_MUTED. Hence let's recalculate the soft
- * volumes here. */
- compute_new_soft_volume(i, &sink_volume);
+ if (i->volume_changed)
+ i->volume_changed(i);
- /* The virtual volume changed, let's tell people so */
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
}
}
-
- /* If the soft_volume of any of the sink inputs got changed, let's
- * make sure the thread copies are synced up. */
- pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SYNC_VOLUMES, NULL, 0, NULL) == 0);
}
/* 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, pa_bool_t save) {
- pa_bool_t virtual_volume_changed;
+void pa_sink_set_volume(
+ pa_sink *s,
+ const pa_cvolume *volume,
+ pa_bool_t sendmsg,
+ pa_bool_t save) {
+
+ pa_cvolume old_reference_volume;
+ pa_bool_t reference_changed;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
- pa_assert(volume);
- pa_assert(pa_cvolume_valid(volume));
- pa_assert(pa_cvolume_compatible(volume, &s->sample_spec));
+ pa_assert(!volume || pa_cvolume_valid(volume));
+ pa_assert(volume || (s->flags & PA_SINK_FLAT_VOLUME));
+ pa_assert(!volume || volume->channels == 1 || pa_cvolume_compatible(volume, &s->sample_spec));
+
+ /* As a special exception we accept mono volumes on all sinks --
+ * even on those with more complex channel maps */
+
+ /* If volume is NULL we synchronize the sink's real and reference
+ * volumes with the stream volumes. If it is not NULL we update
+ * the reference_volume with it. */
+
+ old_reference_volume = s->reference_volume;
+
+ if (volume) {
- 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 (pa_cvolume_compatible(volume, &s->sample_spec))
+ s->reference_volume = *volume;
+ else
+ pa_cvolume_scale(&s->reference_volume, pa_cvolume_max(volume));
+
+ if (s->flags & PA_SINK_FLAT_VOLUME) {
+ /* OK, propagate this volume change back to the inputs */
+ propagate_reference_volume(s);
+
+ /* And now recalculate the real volume */
+ compute_real_volume(s);
+ } else
+ s->real_volume = s->reference_volume;
+
+ } else {
+ pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
- if (become_reference)
- s->reference_volume = s->virtual_volume;
+ /* Ok, let's determine the new real volume */
+ compute_real_volume(s);
- /* Propagate this volume change back to the inputs */
- if (virtual_volume_changed)
- if (propagate && (s->flags & PA_SINK_FLAT_VOLUME))
- pa_sink_propagate_flat_volume(s);
+ /* Let's 'push' the reference volume if necessary */
+ pa_cvolume_merge(&s->reference_volume, &s->reference_volume, &s->real_volume);
+
+ /* We need to fix the reference ratios of all streams now that
+ * we changed the reference volume */
+ compute_reference_ratios(s);
+ }
+
+ reference_changed = !pa_cvolume_equal(&old_reference_volume, &s->reference_volume);
+ s->save_volume = (!reference_changed && s->save_volume) || save;
if (s->set_volume) {
/* If we have a function set_volume(), then we do not apply a
@@ -1347,72 +1408,133 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat
} else
/* If we have no function set_volume(), then the soft volume
* becomes the virtual volume */
- s->soft_volume = s->virtual_volume;
+ s->soft_volume = s->real_volume;
/* This tells the sink that soft and/or virtual volume changed */
if (sendmsg)
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
- if (virtual_volume_changed)
+ if (reference_changed)
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
/* Called from main thread. Only to be called by sink implementor */
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume) {
pa_sink_assert_ref(s);
- pa_assert(volume);
+ pa_assert_ctl_context();
- s->soft_volume = *volume;
+ if (!volume)
+ pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
+ else
+ s->soft_volume = *volume;
if (PA_SINK_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
else
- s->thread_info.soft_volume = *volume;
+ s->thread_info.soft_volume = s->soft_volume;
}
-/* Called from main thread */
-const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh, pa_bool_t reference) {
+static void propagate_real_volume(pa_sink *s, const pa_cvolume *old_real_volume) {
+ pa_sink_input *i;
+ uint32_t idx;
+ pa_cvolume old_reference_volume;
+
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
- if (s->refresh_volume || force_refresh) {
- struct pa_cvolume old_virtual_volume = s->virtual_volume;
+ /* This is called when the hardware's real volume changes due to
+ * some external event. We copy the real volume into our
+ * reference volume and then rebuild the stream volumes based on
+ * i->real_ratio which should stay fixed. */
- if (s->get_volume)
- s->get_volume(s);
+ if (pa_cvolume_equal(old_real_volume, &s->real_volume))
+ return;
- pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0);
+ old_reference_volume = s->reference_volume;
- if (!pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume)) {
+ /* 1. Make the real volume the reference volume */
+ s->reference_volume = s->real_volume;
- s->reference_volume = s->virtual_volume;
+ if (s->flags & PA_SINK_FLAT_VOLUME) {
- if (s->flags & PA_SINK_FLAT_VOLUME)
- pa_sink_propagate_flat_volume(s);
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ pa_cvolume old_volume, remapped;
- pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+ old_volume = i->volume;
+
+ /* 2. Since the sink's reference and real volumes are equal
+ * now our ratios should be too. */
+ i->reference_ratio = i->real_ratio;
+
+ /* 3. Recalculate the new stream reference volume based on the
+ * reference ratio and the sink's reference volume.
+ *
+ * This basically calculates:
+ *
+ * i->volume = s->reference_volume * i->reference_ratio
+ *
+ * This is identical to propagate_reference_volume() */
+ remapped = s->reference_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
+
+ /* Notify if something changed */
+ if (!pa_cvolume_equal(&old_volume, &i->volume)) {
+
+ if (i->volume_changed)
+ i->volume_changed(i);
+
+ pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
+ }
}
}
- return reference ? &s->reference_volume : &s->virtual_volume;
+ /* Something got changed in the hardware. It probably makes sense
+ * to save changed hw settings given that hw volume changes not
+ * triggered by PA are almost certainly done by the user. */
+ s->save_volume = TRUE;
+
+ if (!pa_cvolume_equal(&old_reference_volume, &s->reference_volume))
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
/* Called from main thread */
-void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume, pa_bool_t save) {
+const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
- /* 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)) {
- s->save_volume = s->save_volume || save;
- return;
+ if (s->refresh_volume || force_refresh) {
+ struct pa_cvolume old_real_volume;
+
+ old_real_volume = s->real_volume;
+
+ if (s->get_volume)
+ s->get_volume(s);
+
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0);
+
+ propagate_real_volume(s, &old_real_volume);
}
- s->reference_volume = s->virtual_volume = *new_volume;
- s->save_volume = save;
+ return &s->reference_volume;
+}
- if (s->flags & PA_SINK_FLAT_VOLUME)
- pa_sink_propagate_flat_volume(s);
+/* Called from main thread */
+void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_real_volume) {
+ pa_cvolume old_real_volume;
- pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
+
+ /* The sink implementor may call this if the volume changed to make sure everyone is notified */
+
+ old_real_volume = s->real_volume;
+ s->real_volume = *new_real_volume;
+
+ propagate_real_volume(s, &old_real_volume);
}
/* Called from main thread */
@@ -1420,6 +1542,7 @@ 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);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
old_muted = s->muted;
@@ -1439,6 +1562,8 @@ void pa_sink_set_mute(pa_sink *s, pa_bool_t mute, pa_bool_t save) {
pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
if (s->refresh_muted || force_refresh) {
pa_bool_t old_muted = s->muted;
@@ -1449,6 +1574,8 @@ 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) {
+ s->save_muted = TRUE;
+
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
/* Make sure the soft mute status stays in sync */
@@ -1460,18 +1587,18 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
}
/* Called from main thread */
-void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save) {
+void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
/* The sink implementor may call this if the volume changed to make sure everyone is notified */
- if (s->muted == new_muted) {
- s->save_muted = s->save_muted || save;
+ if (s->muted == new_muted)
return;
- }
s->muted = new_muted;
- s->save_muted = save;
+ s->save_muted = TRUE;
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
@@ -1479,6 +1606,7 @@ void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save) {
/* Called from main thread */
pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(s->proplist, mode, p);
@@ -1492,16 +1620,18 @@ pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist
}
/* Called from main thread */
+/* FIXME -- this should be dropped and be merged into pa_sink_update_proplist() */
void pa_sink_set_description(pa_sink *s, const char *description) {
const char *old;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!description && !pa_proplist_contains(s->proplist, PA_PROP_DEVICE_DESCRIPTION))
return;
old = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_DESCRIPTION);
- if (old && description && !strcmp(old, description))
+ if (old && description && pa_streq(old, description))
return;
if (description)
@@ -1528,6 +1658,7 @@ unsigned pa_sink_linked_by(pa_sink *s) {
unsigned ret;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
ret = pa_idxset_size(s->inputs);
@@ -1546,6 +1677,7 @@ unsigned pa_sink_used_by(pa_sink *s) {
unsigned ret;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
ret = pa_idxset_size(s->inputs);
@@ -1564,6 +1696,7 @@ unsigned pa_sink_check_suspend(pa_sink *s) {
uint32_t idx;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SINK_IS_LINKED(s->state))
return 0;
@@ -1597,8 +1730,9 @@ static void sync_input_volumes_within_thread(pa_sink *s) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
- while ((i = PA_SINK_INPUT(pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))) {
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) {
if (pa_cvolume_equal(&i->thread_info.soft_volume, &i->soft_volume))
continue;
@@ -1701,7 +1835,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
if (pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index)))
pa_sink_input_unref(i);
- pa_sink_invalidate_requested_latency(s);
+ pa_sink_invalidate_requested_latency(s, TRUE);
pa_sink_request_rewind(s, (size_t) -1);
/* In flat volume mode we need to update the volume as
@@ -1723,10 +1857,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
size_t sink_nbytes, total_nbytes;
/* Get the latency of the sink */
- if (!(s->flags & PA_SINK_LATENCY) ||
- PA_MSGOBJECT(s)->process_msg(PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
-
+ usec = pa_sink_get_latency_within_thread(s);
sink_nbytes = pa_usec_to_bytes(usec, &s->sample_spec);
total_nbytes = sink_nbytes + pa_memblockq_get_length(i->thread_info.render_memblockq);
@@ -1747,7 +1878,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
if (pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index)))
pa_sink_input_unref(i);
- pa_sink_invalidate_requested_latency(s);
+ pa_sink_invalidate_requested_latency(s, TRUE);
pa_log_debug("Requesting rewind due to started move");
pa_sink_request_rewind(s, (size_t) -1);
@@ -1785,10 +1916,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
size_t nbytes;
/* Get the latency of the sink */
- if (!(s->flags & PA_SINK_LATENCY) ||
- PA_MSGOBJECT(s)->process_msg(PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
-
+ usec = pa_sink_get_latency_within_thread(s);
nbytes = pa_usec_to_bytes(usec, &s->sample_spec);
if (nbytes > 0)
@@ -1876,6 +2004,9 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
pa_usec_t *usec = userdata;
*usec = pa_sink_get_requested_latency_within_thread(s);
+ /* Yes, that's right, the IO thread will see -1 when no
+ * explicit requested latency is configured, the main
+ * thread will see max_latency */
if (*usec == (pa_usec_t) -1)
*usec = s->thread_info.max_latency;
@@ -1899,6 +2030,16 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
return 0;
}
+ case PA_SINK_MESSAGE_GET_FIXED_LATENCY:
+
+ *((pa_usec_t*) userdata) = s->thread_info.fixed_latency;
+ return 0;
+
+ case PA_SINK_MESSAGE_SET_FIXED_LATENCY:
+
+ pa_sink_set_fixed_latency_within_thread(s, (pa_usec_t) offset);
+ return 0;
+
case PA_SINK_MESSAGE_GET_MAX_REWIND:
*((size_t*) userdata) = s->thread_info.max_rewind;
@@ -1934,9 +2075,10 @@ int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause)
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert_ctl_context();
pa_assert(cause != 0);
- for (sink = PA_SINK(pa_idxset_first(c->sinks, &idx)); sink; sink = PA_SINK(pa_idxset_next(c->sinks, &idx))) {
+ PA_IDXSET_FOREACH(sink, c->sinks, idx) {
int r;
if ((r = pa_sink_suspend(sink, suspend, cause)) < 0)
@@ -1949,6 +2091,7 @@ int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause)
/* Called from main thread */
void pa_sink_detach(pa_sink *s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_DETACH, NULL, 0, NULL) == 0);
@@ -1957,6 +2100,7 @@ void pa_sink_detach(pa_sink *s) {
/* Called from main thread */
void pa_sink_attach(pa_sink *s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_ATTACH, NULL, 0, NULL) == 0);
@@ -1968,9 +2112,10 @@ void pa_sink_detach_within_thread(pa_sink *s) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->detach)
i->detach(i);
@@ -1984,9 +2129,10 @@ void pa_sink_attach_within_thread(pa_sink *s) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->attach)
i->attach(i);
@@ -1997,6 +2143,7 @@ void pa_sink_attach_within_thread(pa_sink *s) {
/* Called from IO thread */
void pa_sink_request_rewind(pa_sink*s, size_t nbytes) {
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
if (s->thread_info.state == PA_SINK_SUSPENDED)
@@ -2026,15 +2173,15 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) {
pa_usec_t monitor_latency;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
- return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
+ return PA_CLAMP(s->thread_info.fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
if (s->thread_info.requested_latency_valid)
return s->thread_info.requested_latency;
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
-
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->thread_info.requested_sink_latency != (pa_usec_t) -1 &&
(result == (pa_usec_t) -1 || result > i->thread_info.requested_sink_latency))
result = i->thread_info.requested_sink_latency;
@@ -2062,6 +2209,7 @@ pa_usec_t pa_sink_get_requested_latency(pa_sink *s) {
pa_usec_t usec = 0;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
if (s->state == PA_SINK_SUSPENDED)
@@ -2077,16 +2225,16 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
if (max_rewind == s->thread_info.max_rewind)
return;
s->thread_info.max_rewind = max_rewind;
- if (PA_SINK_IS_LINKED(s->thread_info.state)) {
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ if (PA_SINK_IS_LINKED(s->thread_info.state))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
pa_sink_input_update_max_rewind(i, s->thread_info.max_rewind);
- }
if (s->monitor_source)
pa_source_set_max_rewind_within_thread(s->monitor_source, s->thread_info.max_rewind);
@@ -2095,6 +2243,7 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind) {
/* Called from main thread */
void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (PA_SINK_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0);
@@ -2107,6 +2256,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
if (max_request == s->thread_info.max_request)
return;
@@ -2116,7 +2266,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) {
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
pa_sink_input *i;
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
pa_sink_input_update_max_request(i, s->thread_info.max_request);
}
}
@@ -2124,6 +2274,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) {
/* Called from main thread */
void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (PA_SINK_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REQUEST, NULL, max_request, NULL) == 0);
@@ -2132,23 +2283,24 @@ void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
}
/* Called from IO thread */
-void pa_sink_invalidate_requested_latency(pa_sink *s) {
+void pa_sink_invalidate_requested_latency(pa_sink *s, pa_bool_t dynamic) {
pa_sink_input *i;
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
- if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
+ if ((s->flags & PA_SINK_DYNAMIC_LATENCY))
+ s->thread_info.requested_latency_valid = FALSE;
+ else if (dynamic)
return;
- s->thread_info.requested_latency_valid = FALSE;
-
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
if (s->update_requested_latency)
s->update_requested_latency(s);
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->update_sink_requested_latency)
i->update_sink_requested_latency(i);
}
@@ -2157,6 +2309,7 @@ void pa_sink_invalidate_requested_latency(pa_sink *s) {
/* Called from main thread */
void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
/* min_latency == 0: no limit
* min_latency anything else: specified limit
@@ -2191,6 +2344,7 @@ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_
/* Called from main thread */
void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *max_latency) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(min_latency);
pa_assert(max_latency);
@@ -2209,9 +2363,8 @@ void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *ma
/* Called from IO thread */
void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) {
- void *state = NULL;
-
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY);
pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY);
@@ -2222,27 +2375,36 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
max_latency == ABSOLUTE_MAX_LATENCY) ||
(s->flags & PA_SINK_DYNAMIC_LATENCY));
+ if (s->thread_info.min_latency == min_latency &&
+ s->thread_info.max_latency == max_latency)
+ return;
+
s->thread_info.min_latency = min_latency;
s->thread_info.max_latency = max_latency;
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
pa_sink_input *i;
+ void *state = NULL;
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->update_sink_latency_range)
i->update_sink_latency_range(i);
}
- pa_sink_invalidate_requested_latency(s);
+ pa_sink_invalidate_requested_latency(s, FALSE);
pa_source_set_latency_range_within_thread(s->monitor_source, min_latency, max_latency);
}
-/* Called from main thread, before the sink is put */
+/* Called from main thread */
void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
- pa_assert(pa_sink_get_state(s) == PA_SINK_INIT);
+ if (s->flags & PA_SINK_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
if (latency < ABSOLUTE_MIN_LATENCY)
latency = ABSOLUTE_MIN_LATENCY;
@@ -2250,14 +2412,69 @@ void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
if (latency > ABSOLUTE_MAX_LATENCY)
latency = ABSOLUTE_MAX_LATENCY;
- s->fixed_latency = latency;
+ if (PA_SINK_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_FIXED_LATENCY, NULL, (int64_t) latency, NULL) == 0);
+ else
+ s->thread_info.fixed_latency = latency;
+
pa_source_set_fixed_latency(s->monitor_source, latency);
}
+/* Called from main thread */
+pa_usec_t pa_sink_get_fixed_latency(pa_sink *s) {
+ pa_usec_t latency;
+
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (s->flags & PA_SINK_DYNAMIC_LATENCY)
+ return 0;
+
+ if (PA_SINK_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_FIXED_LATENCY, &latency, 0, NULL) == 0);
+ else
+ latency = s->thread_info.fixed_latency;
+
+ return latency;
+}
+
+/* Called from IO thread */
+void pa_sink_set_fixed_latency_within_thread(pa_sink *s, pa_usec_t latency) {
+ pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
+
+ if (s->flags & PA_SINK_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
+
+ pa_assert(latency >= ABSOLUTE_MIN_LATENCY);
+ pa_assert(latency <= ABSOLUTE_MAX_LATENCY);
+
+ if (s->thread_info.fixed_latency == latency)
+ return;
+
+ s->thread_info.fixed_latency = latency;
+
+ if (PA_SINK_IS_LINKED(s->thread_info.state)) {
+ pa_sink_input *i;
+ void *state = NULL;
+
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
+ if (i->update_sink_fixed_latency)
+ i->update_sink_fixed_latency(i);
+ }
+
+ pa_sink_invalidate_requested_latency(s, FALSE);
+
+ pa_source_set_fixed_latency_within_thread(s->monitor_source, latency);
+}
+
/* Called from main context */
size_t pa_sink_get_max_rewind(pa_sink *s) {
size_t r;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SINK_IS_LINKED(s->state))
return s->thread_info.max_rewind;
@@ -2271,6 +2488,7 @@ size_t pa_sink_get_max_rewind(pa_sink *s) {
size_t pa_sink_get_max_request(pa_sink *s) {
size_t r;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SINK_IS_LINKED(s->state))
return s->thread_info.max_request;
@@ -2284,7 +2502,8 @@ size_t pa_sink_get_max_request(pa_sink *s) {
int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save) {
pa_device_port *port;
- pa_assert(s);
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!s->set_port) {
pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name);
@@ -2315,7 +2534,6 @@ int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t 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;
@@ -2430,3 +2648,48 @@ pa_bool_t pa_device_init_intended_roles(pa_proplist *p) {
return FALSE;
}
+
+unsigned pa_device_init_priority(pa_proplist *p) {
+ const char *s;
+ unsigned priority = 0;
+
+ pa_assert(p);
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS))) {
+
+ if (pa_streq(s, "sound"))
+ priority += 9000;
+ else if (!pa_streq(s, "modem"))
+ priority += 1000;
+ }
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR))) {
+
+ if (pa_streq(s, "internal"))
+ priority += 900;
+ else if (pa_streq(s, "speaker"))
+ priority += 500;
+ else if (pa_streq(s, "headphone"))
+ priority += 400;
+ }
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_BUS))) {
+
+ if (pa_streq(s, "pci"))
+ priority += 50;
+ else if (pa_streq(s, "usb"))
+ priority += 40;
+ else if (pa_streq(s, "bluetooth"))
+ priority += 30;
+ }
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PROFILE_NAME))) {
+
+ if (pa_startswith(s, "analog-"))
+ priority += 9;
+ else if (pa_startswith(s, "iec958-"))
+ priority += 8;
+ }
+
+ return priority;
+}
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index d16fcc01..ba547fc3 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -42,6 +42,7 @@ typedef struct pa_device_port pa_device_port;
#include <pulsecore/rtpoll.h>
#include <pulsecore/card.h>
#include <pulsecore/queue.h>
+#include <pulsecore/thread-mq.h>
#define PA_MAX_INPUTS_PER_SINK 32
@@ -89,9 +90,10 @@ struct pa_sink {
unsigned n_volume_steps; /* shall be constant */
/* Also see http://pulseaudio.org/wiki/InternalVolumes */
- pa_cvolume virtual_volume; /* The volume clients are informed about */
- pa_cvolume reference_volume; /* The volume taken as refernce base for relative sink input volumes */
+ pa_cvolume reference_volume; /* The volume exported and taken as reference base for relative sink input volumes */
+ pa_cvolume real_volume; /* The volume that the hardware is configured to */
pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through */
+
pa_bool_t muted:1;
pa_bool_t refresh_volume:1;
@@ -101,15 +103,14 @@ struct pa_sink {
pa_bool_t save_muted:1;
pa_asyncmsgq *asyncmsgq;
- pa_rtpoll *rtpoll;
pa_memchunk silence;
- pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */
-
pa_hashmap *ports;
pa_device_port *active_port;
+ unsigned priority;
+
/* Called when the main loop requests a state change. Called from
* main loop context. If returns -1 the state change will be
* inhibited */
@@ -155,9 +156,14 @@ struct pa_sink {
pa_sink_state_t state;
pa_hashmap *inputs;
+ pa_rtpoll *rtpoll;
+
pa_cvolume soft_volume;
pa_bool_t soft_muted:1;
+ /* The requested latency is used for dynamic latency
+ * sinks. For fixed latency sinks it is always identical to
+ * the fixed_latency. See below. */
pa_bool_t requested_latency_valid:1;
pa_usec_t requested_latency;
@@ -173,14 +179,21 @@ struct pa_sink {
size_t rewind_nbytes;
pa_bool_t rewind_requested;
+ /* Both dynamic and fixed latencies will be clamped to this
+ * range. */
pa_usec_t min_latency; /* we won't go below this latency */
pa_usec_t max_latency; /* An upper limit for the latencies */
+
+ /* 'Fixed' simply means that the latency is exclusively
+ * decided on by the sink, and the clients have no influence
+ * in changing it */
+ pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */
} thread_info;
void *userdata;
};
-PA_DECLARE_CLASS(pa_sink);
+PA_DECLARE_PUBLIC_CLASS(pa_sink);
#define PA_SINK(s) (pa_sink_cast(s))
typedef enum pa_sink_message {
@@ -200,6 +213,8 @@ typedef enum pa_sink_message {
PA_SINK_MESSAGE_DETACH,
PA_SINK_MESSAGE_SET_LATENCY_RANGE,
PA_SINK_MESSAGE_GET_LATENCY_RANGE,
+ PA_SINK_MESSAGE_SET_FIXED_LATENCY,
+ PA_SINK_MESSAGE_GET_FIXED_LATENCY,
PA_SINK_MESSAGE_GET_MAX_REWIND,
PA_SINK_MESSAGE_GET_MAX_REQUEST,
PA_SINK_MESSAGE_SET_MAX_REWIND,
@@ -267,12 +282,15 @@ 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, pa_bool_t save);
-void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save);
+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_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t value);
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);
+unsigned pa_device_init_priority(pa_proplist *p);
/**** May be called by everyone, from main context */
@@ -280,6 +298,7 @@ pa_bool_t pa_device_init_intended_roles(pa_proplist *p);
pa_usec_t pa_sink_get_latency(pa_sink *s);
pa_usec_t pa_sink_get_requested_latency(pa_sink *s);
void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *max_latency);
+pa_usec_t pa_sink_get_fixed_latency(pa_sink *s);
size_t pa_sink_get_max_rewind(pa_sink *s);
size_t pa_sink_get_max_request(pa_sink *s);
@@ -288,11 +307,8 @@ int pa_sink_update_status(pa_sink*s);
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, 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_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t sendmsg, pa_bool_t save);
+const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh);
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);
@@ -331,16 +347,23 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind);
void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request);
void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_sink_set_fixed_latency_within_thread(pa_sink *s, pa_usec_t latency);
/*** To be called exclusively by sink input drivers, from IO context */
void pa_sink_request_rewind(pa_sink*s, size_t nbytes);
-void pa_sink_invalidate_requested_latency(pa_sink *s);
+void pa_sink_invalidate_requested_latency(pa_sink *s, pa_bool_t dynamic);
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);
+/* Verify that we called in IO context (aka 'thread context), or that
+ * the sink is not yet set up, i.e. the thread not set up yet. See
+ * pa_assert_io_context() in thread-mq.h for more information. */
+#define pa_sink_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SINK_IS_LINKED((s)->state))
+
#endif
diff --git a/src/pulsecore/socket-client.c b/src/pulsecore/socket-client.c
index 24535157..c9cfdbe3 100644
--- a/src/pulsecore/socket-client.c
+++ b/src/pulsecore/socket-client.c
@@ -202,8 +202,6 @@ static void connect_io_cb(pa_mainloop_api*m, pa_io_event *e, int fd, pa_io_event
}
static int do_connect(pa_socket_client *c, const struct sockaddr *sa, socklen_t len) {
- int r;
-
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(sa);
@@ -211,7 +209,7 @@ static int do_connect(pa_socket_client *c, const struct sockaddr *sa, socklen_t
pa_make_fd_nonblock(c->fd);
- if ((r = connect(c->fd, sa, len)) < 0) {
+ if (connect(c->fd, sa, len) < 0) {
#ifdef OS_IS_WIN32
if (WSAGetLastError() != EWOULDBLOCK) {
pa_log_debug("connect(): %d", WSAGetLastError());
diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c
index 502e5c69..16de4923 100644
--- a/src/pulsecore/sound-file-stream.c
+++ b/src/pulsecore/sound-file-stream.c
@@ -64,9 +64,8 @@ enum {
FILE_STREAM_MESSAGE_UNLINK
};
-PA_DECLARE_CLASS(file_stream);
+PA_DEFINE_PRIVATE_CLASS(file_stream, pa_msgobject);
#define FILE_STREAM(o) (file_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(file_stream, pa_msgobject);
/* Called from main context */
static void file_stream_unlink(file_stream *u) {
@@ -312,7 +311,7 @@ int pa_play_file(
pa_proplist_sets(data.proplist, PA_PROP_MEDIA_FILENAME, fname);
pa_sndfile_init_proplist(u->sndfile, data.proplist);
- pa_sink_input_new(&u->sink_input, sink->core, &data, 0);
+ pa_sink_input_new(&u->sink_input, sink->core, &data);
pa_sink_input_new_data_done(&data);
if (!u->sink_input)
@@ -335,8 +334,7 @@ int pa_play_file(
return 0;
fail:
- if (u)
- file_stream_unref(u);
+ file_stream_unref(u);
if (fd >= 0)
pa_close(fd);
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 4ba25ae4..1509807b 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -41,14 +41,14 @@
#define MEMBLOCKQ_MAXLENGTH (32*1024*1024)
-static PA_DEFINE_CHECK_TYPE(pa_source_output, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_source_output, pa_msgobject);
static void source_output_free(pa_object* mo);
pa_source_output_new_data* pa_source_output_new_data_init(pa_source_output_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->resample_method = PA_RESAMPLER_INVALID;
data->proplist = pa_proplist_new();
@@ -84,6 +84,7 @@ static void reset_callbacks(pa_source_output *o) {
o->update_max_rewind = NULL;
o->update_source_requested_latency = NULL;
o->update_source_latency_range = NULL;
+ o->update_source_fixed_latency = NULL;
o->attach = NULL;
o->detach = NULL;
o->suspend = NULL;
@@ -100,8 +101,7 @@ static void reset_callbacks(pa_source_output *o) {
int pa_source_output_new(
pa_source_output**_o,
pa_core *core,
- pa_source_output_new_data *data,
- pa_source_output_flags_t flags) {
+ pa_source_output_new_data *data) {
pa_source_output *o;
pa_resampler *resampler = NULL;
@@ -111,6 +111,7 @@ int pa_source_output_new(
pa_assert(_o);
pa_assert(core);
pa_assert(data);
+ pa_assert_ctl_context();
if (data->client)
pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->client->proplist);
@@ -144,13 +145,13 @@ int pa_source_output_new(
pa_return_val_if_fail(pa_channel_map_valid(&data->channel_map), -PA_ERR_INVALID);
pa_return_val_if_fail(pa_channel_map_compatible(&data->channel_map, &data->sample_spec), -PA_ERR_INVALID);
- if (flags & PA_SOURCE_OUTPUT_FIX_FORMAT)
+ if (data->flags & PA_SOURCE_OUTPUT_FIX_FORMAT)
data->sample_spec.format = data->source->sample_spec.format;
- if (flags & PA_SOURCE_OUTPUT_FIX_RATE)
+ if (data->flags & PA_SOURCE_OUTPUT_FIX_RATE)
data->sample_spec.rate = data->source->sample_spec.rate;
- if (flags & PA_SOURCE_OUTPUT_FIX_CHANNELS) {
+ if (data->flags & PA_SOURCE_OUTPUT_FIX_CHANNELS) {
data->sample_spec.channels = data->source->sample_spec.channels;
data->channel_map = data->source->channel_map;
}
@@ -166,7 +167,7 @@ int pa_source_output_new(
if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_FIXATE], data)) < 0)
return r;
- if ((flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND) &&
+ if ((data->flags & PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND) &&
pa_source_get_state(data->source) == PA_SOURCE_SUSPENDED) {
pa_log("Failed to create source output: source is suspended.");
return -PA_ERR_BADSTATE;
@@ -177,7 +178,7 @@ int pa_source_output_new(
return -PA_ERR_TOOLARGE;
}
- if ((flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ||
+ if ((data->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ||
!pa_sample_spec_equal(&data->sample_spec, &data->source->sample_spec) ||
!pa_channel_map_equal(&data->channel_map, &data->source->channel_map)) {
@@ -186,9 +187,9 @@ int pa_source_output_new(
&data->source->sample_spec, &data->source->channel_map,
&data->sample_spec, &data->channel_map,
data->resample_method,
- ((flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
- ((flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
- (core->disable_remixing || (flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
+ ((data->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
+ ((data->flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
+ (core->disable_remixing || (data->flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
(core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) {
pa_log_warn("Unsupported resampling operation.");
return -PA_ERR_NOTSUPPORTED;
@@ -201,7 +202,7 @@ int pa_source_output_new(
o->core = core;
o->state = PA_SOURCE_OUTPUT_INIT;
- o->flags = flags;
+ o->flags = data->flags;
o->proplist = pa_proplist_copy(data->proplist);
o->driver = pa_xstrdup(pa_path_get_filename(data->driver));
o->module = data->module;
@@ -262,6 +263,7 @@ int pa_source_output_new(
/* Called from main context */
static void update_n_corked(pa_source_output *o, pa_source_output_state_t state) {
pa_assert(o);
+ pa_assert_ctl_context();
if (!o->source)
return;
@@ -275,6 +277,7 @@ static void update_n_corked(pa_source_output *o, pa_source_output_state_t state)
/* Called from main context */
static void source_output_set_state(pa_source_output *o, pa_source_output_state_t state) {
pa_assert(o);
+ pa_assert_ctl_context();
if (o->state == state)
return;
@@ -294,6 +297,7 @@ static void source_output_set_state(pa_source_output *o, pa_source_output_state_
void pa_source_output_unlink(pa_source_output*o) {
pa_bool_t linked;
pa_assert(o);
+ pa_assert_ctl_context();
/* See pa_sink_unlink() for a couple of comments how this function
* works */
@@ -346,6 +350,7 @@ static void source_output_free(pa_object* mo) {
pa_source_output *o = PA_SOURCE_OUTPUT(mo);
pa_assert(o);
+ pa_assert_ctl_context();
pa_assert(pa_source_output_refcnt(o) == 0);
if (PA_SOURCE_OUTPUT_IS_LINKED(o->state))
@@ -353,8 +358,6 @@ static void source_output_free(pa_object* mo) {
pa_log_info("Freeing output %u \"%s\"", o->index, pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_MEDIA_NAME)));
- pa_assert(!o->thread_info.attached);
-
if (o->thread_info.delay_memblockq)
pa_memblockq_free(o->thread_info.delay_memblockq);
@@ -371,7 +374,9 @@ static void source_output_free(pa_object* mo) {
/* Called from main context */
void pa_source_output_put(pa_source_output *o) {
pa_source_output_state_t state;
+
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(o->state == PA_SOURCE_OUTPUT_INIT);
@@ -395,6 +400,7 @@ void pa_source_output_put(pa_source_output *o) {
/* Called from main context */
void pa_source_output_kill(pa_source_output*o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
o->kill(o);
@@ -405,6 +411,7 @@ pa_usec_t pa_source_output_get_latency(pa_source_output *o, pa_usec_t *source_la
pa_usec_t r[2] = { 0, 0 };
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_GET_LATENCY, r, 0, NULL) == 0);
@@ -424,6 +431,7 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {
size_t limit, mbs = 0;
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state));
pa_assert(chunk);
pa_assert(pa_frame_aligned(chunk->length, &o->source->sample_spec));
@@ -499,8 +507,9 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {
/* Called from thread context */
void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in source sample spec */) {
- pa_source_output_assert_ref(o);
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &o->source->sample_spec));
@@ -526,8 +535,17 @@ void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in so
}
/* Called from thread context */
+size_t pa_source_output_get_max_rewind(pa_source_output *o) {
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
+
+ return o->thread_info.resampler ? pa_resampler_request(o->thread_info.resampler, o->source->thread_info.max_rewind) : o->source->thread_info.max_rewind;
+}
+
+/* Called from thread context */
void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* in the source's sample spec */) {
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &o->source->sample_spec));
@@ -538,15 +556,16 @@ void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* i
/* Called from thread context */
pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output *o, pa_usec_t usec) {
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY))
- usec = o->source->fixed_latency;
+ usec = o->source->thread_info.fixed_latency;
if (usec != (pa_usec_t) -1)
usec = PA_CLAMP(usec, o->source->thread_info.min_latency, o->source->thread_info.max_latency);
o->thread_info.requested_source_latency = usec;
- pa_source_invalidate_requested_latency(o->source);
+ pa_source_invalidate_requested_latency(o->source, TRUE);
return usec;
}
@@ -554,6 +573,7 @@ pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output
/* Called from main context */
pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t usec) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) {
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
@@ -565,7 +585,7 @@ pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t
if (o->source) {
if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY))
- usec = o->source->fixed_latency;
+ usec = pa_source_get_fixed_latency(o->source);
if (usec != (pa_usec_t) -1) {
pa_usec_t min_latency, max_latency;
@@ -582,6 +602,7 @@ pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t
/* Called from main context */
pa_usec_t pa_source_output_get_requested_latency(pa_source_output *o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) {
pa_usec_t usec = 0;
@@ -598,6 +619,7 @@ pa_usec_t pa_source_output_get_requested_latency(pa_source_output *o) {
/* Called from main context */
void pa_source_output_cork(pa_source_output *o, pa_bool_t b) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
source_output_set_state(o, b ? PA_SOURCE_OUTPUT_CORKED : PA_SOURCE_OUTPUT_RUNNING);
@@ -606,6 +628,7 @@ void pa_source_output_cork(pa_source_output *o, pa_bool_t b) {
/* Called from main context */
int pa_source_output_set_rate(pa_source_output *o, uint32_t rate) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_return_val_if_fail(o->thread_info.resampler, -PA_ERR_BADSTATE);
@@ -623,6 +646,7 @@ int pa_source_output_set_rate(pa_source_output *o, uint32_t rate) {
/* Called from main context */
void pa_source_output_set_name(pa_source_output *o, const char *name) {
const char *old;
+ pa_assert_ctl_context();
pa_source_output_assert_ref(o);
if (!name && !pa_proplist_contains(o->proplist, PA_PROP_MEDIA_NAME))
@@ -647,11 +671,12 @@ void pa_source_output_set_name(pa_source_output *o, const char *name) {
/* Called from main thread */
void pa_source_output_update_proplist(pa_source_output *o, pa_update_mode_t mode, pa_proplist *p) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(o->proplist, mode, p);
- if (PA_SINK_IS_LINKED(o->state)) {
+ if (PA_SOURCE_OUTPUT_IS_LINKED(o->state)) {
pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_PROPLIST_CHANGED], o);
pa_subscription_post(o->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_CHANGE, o->index);
}
@@ -660,6 +685,7 @@ void pa_source_output_update_proplist(pa_source_output *o, pa_update_mode_t mode
/* Called from main context */
pa_resample_method_t pa_source_output_get_resample_method(pa_source_output *o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
return o->actual_resample_method;
}
@@ -667,6 +693,7 @@ pa_resample_method_t pa_source_output_get_resample_method(pa_source_output *o) {
/* Called from main context */
pa_bool_t pa_source_output_may_move(pa_source_output *o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
if (o->flags & PA_SOURCE_OUTPUT_DONT_MOVE)
@@ -708,6 +735,7 @@ int pa_source_output_start_move(pa_source_output *o) {
int r;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert(o->source);
@@ -739,6 +767,7 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t
pa_resampler *new_resampler;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert(!o->source);
pa_source_assert_ref(dest);
@@ -816,10 +845,29 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t
}
/* Called from main context */
+void pa_source_output_fail_move(pa_source_output *o) {
+
+ pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
+ pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
+ pa_assert(!o->source);
+
+ /* Check if someone wants this source output? */
+ if (pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], o) == PA_HOOK_STOP)
+ return;
+
+ if (o->moving)
+ o->moving(o, NULL);
+
+ pa_source_output_kill(o);
+}
+
+/* Called from main context */
int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t save) {
int r;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert(o->source);
pa_source_assert_ref(dest);
@@ -838,6 +886,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
}
if ((r = pa_source_output_finish_move(o, dest, save)) < 0) {
+ pa_source_output_fail_move(o);
pa_source_output_unref(o);
return r;
}
@@ -850,6 +899,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
/* Called from IO thread context */
void pa_source_output_set_state_within_thread(pa_source_output *o, pa_source_output_state_t state) {
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
if (state == o->thread_info.state)
return;
@@ -906,11 +956,13 @@ int pa_source_output_process_msg(pa_msgobject *mo, int code, void *userdata, int
return -PA_ERR_NOTIMPLEMENTED;
}
+/* Called from main context */
void pa_source_output_send_event(pa_source_output *o, const char *event, pa_proplist *data) {
pa_proplist *pl = NULL;
pa_source_output_send_event_hook_data hook_data;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(event);
if (!o->send_event)
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 9824e160..273b78fc 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -55,7 +55,8 @@ typedef enum pa_source_output_flags {
PA_SOURCE_OUTPUT_FIX_RATE = 64,
PA_SOURCE_OUTPUT_FIX_CHANNELS = 128,
PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND = 256,
- PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND = 512
+ PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND = 512,
+ PA_SOURCE_OUTPUT_KILL_ON_SUSPEND = 1024
} pa_source_output_flags_t;
struct pa_source_output {
@@ -108,6 +109,10 @@ struct pa_source_output {
* from IO context. */
void (*update_source_latency_range) (pa_source_output *o); /* may be NULL */
+ /* Called whenver the fixed latency of the source changes, if there
+ * is one. Called from IO context. */
+ void (*update_source_fixed_latency) (pa_source_output *i); /* may be NULL */
+
/* If non-NULL this function is called when the output is first
* connected to a source. Called from IO thread context */
void (*attach) (pa_source_output *o); /* may be NULL */
@@ -127,7 +132,9 @@ struct pa_source_output {
/* If non-NULL called whenever the source output is moved to a new
* source. Called from main context after the stream was detached
* from the old source and before it is attached to the new
- * source. */
+ * source. If dest is NULL the move was executed in two
+ * phases and the second one failed; the stream will be destroyed
+ * after this call. */
void (*moving) (pa_source_output *o, pa_source *dest); /* may be NULL */
/* Supposed to unlink and destroy this stream. Called from main
@@ -175,7 +182,7 @@ struct pa_source_output {
void *userdata;
};
-PA_DECLARE_CLASS(pa_source_output);
+PA_DECLARE_PUBLIC_CLASS(pa_source_output);
#define PA_SOURCE_OUTPUT(o) pa_source_output_cast(o)
enum {
@@ -194,6 +201,8 @@ typedef struct pa_source_output_send_event_hook_data {
} pa_source_output_send_event_hook_data;
typedef struct pa_source_output_new_data {
+ pa_source_output_flags_t flags;
+
pa_proplist *proplist;
pa_sink_input *direct_on_input;
@@ -224,8 +233,7 @@ void pa_source_output_new_data_done(pa_source_output_new_data *data);
int pa_source_output_new(
pa_source_output**o,
pa_core *core,
- pa_source_output_new_data *data,
- pa_source_output_flags_t flags);
+ pa_source_output_new_data *data);
void pa_source_output_put(pa_source_output *o);
void pa_source_output_unlink(pa_source_output*o);
@@ -238,6 +246,8 @@ void pa_source_output_cork(pa_source_output *o, pa_bool_t b);
int pa_source_output_set_rate(pa_source_output *o, uint32_t rate);
+size_t pa_source_output_get_max_rewind(pa_source_output *o);
+
/* Callable by everyone */
/* External code may request disconnection with this funcion */
@@ -260,6 +270,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
* new source */
int pa_source_output_start_move(pa_source_output *o);
int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t save);
+void pa_source_output_fail_move(pa_source_output *o);
#define pa_source_output_get_state(o) ((o)->state)
@@ -277,4 +288,7 @@ int pa_source_output_process_msg(pa_msgobject *mo, int code, void *userdata, int
pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output *o, pa_usec_t usec);
+#define pa_source_output_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SOURCE_OUTPUT_IS_LINKED((s)->state))
+
#endif
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 74f38bc5..415c54bc 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -33,6 +33,7 @@
#include <pulse/timeval.h>
#include <pulse/util.h>
+#include <pulsecore/core-util.h>
#include <pulsecore/source-output.h>
#include <pulsecore/namereg.h>
#include <pulsecore/core-subscribe.h>
@@ -45,14 +46,14 @@
#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC)
-static PA_DEFINE_CHECK_TYPE(pa_source, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_source, pa_msgobject);
static void source_free(pa_object *o);
pa_source_new_data* pa_source_new_data_init(pa_source_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->proplist = pa_proplist_new();
return data;
@@ -145,6 +146,7 @@ pa_source* pa_source_new(
pa_assert(core);
pa_assert(data);
pa_assert(data->name);
+ pa_assert_ctl_context();
s = pa_msgobject_new(pa_source);
@@ -179,7 +181,7 @@ pa_source* pa_source_new(
pa_cvolume_reset(&data->volume, data->sample_spec.channels);
pa_return_null_if_fail(pa_cvolume_valid(&data->volume));
- pa_return_null_if_fail(data->volume.channels == data->sample_spec.channels);
+ pa_return_null_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec));
if (!data->muted_is_set)
data->muted = FALSE;
@@ -203,6 +205,7 @@ pa_source* pa_source_new(
s->core = core;
s->state = PA_SOURCE_INIT;
s->flags = flags;
+ s->priority = 0;
s->suspend_cause = 0;
s->name = pa_xstrdup(name);
s->proplist = pa_proplist_copy(data->proplist);
@@ -210,6 +213,8 @@ pa_source* pa_source_new(
s->module = data->module;
s->card = data->card;
+ s->priority = pa_device_init_priority(s->proplist);
+
s->sample_spec = data->sample_spec;
s->channel_map = data->channel_map;
@@ -217,20 +222,17 @@ pa_source* pa_source_new(
s->n_corked = 0;
s->monitor_of = NULL;
- s->virtual_volume = data->volume;
+ s->volume = data->volume;
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->base_volume = PA_VOLUME_NORM;
s->n_volume_steps = PA_VOLUME_NORM+1;
s->muted = data->muted;
s->refresh_volume = s->refresh_muted = FALSE;
- s->fixed_latency = flags & PA_SOURCE_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
-
reset_callbacks(s);
s->userdata = NULL;
s->asyncmsgq = NULL;
- s->rtpoll = NULL;
/* As a minor optimization we just steal the list instead of
* copying it here */
@@ -263,6 +265,7 @@ pa_source* pa_source_new(
&s->sample_spec,
0);
+ s->thread_info.rtpoll = NULL;
s->thread_info.outputs = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
@@ -272,6 +275,7 @@ pa_source* pa_source_new(
s->thread_info.requested_latency = 0;
s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY;
s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY;
+ s->thread_info.fixed_latency = flags & PA_SOURCE_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
pa_assert_se(pa_idxset_put(core->sources, s, &s->index) >= 0);
@@ -297,6 +301,7 @@ static int source_set_state(pa_source *s, pa_source_state_t state) {
pa_source_state_t original_state;
pa_assert(s);
+ pa_assert_ctl_context();
if (s->state == state)
return 0;
@@ -333,27 +338,26 @@ static int source_set_state(pa_source *s, pa_source_state_t state) {
/* We're suspending or resuming, tell everyone about it */
- 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)
if (s->state == PA_SOURCE_SUSPENDED &&
- (o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND))
+ (o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND))
pa_source_output_kill(o);
else if (o->suspend)
o->suspend(o, state == PA_SOURCE_SUSPENDED);
}
-
return 0;
}
/* Called from main context */
void pa_source_put(pa_source *s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(s->state == PA_SOURCE_INIT);
/* The following fields must be initialized properly when calling _put() */
pa_assert(s->asyncmsgq);
- pa_assert(s->rtpoll);
pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency);
/* Generally, flags should be initialized via pa_source_new(). As
@@ -368,7 +372,7 @@ void pa_source_put(pa_source *s) {
pa_assert((s->flags & PA_SOURCE_HW_VOLUME_CTRL) || (s->base_volume == PA_VOLUME_NORM && s->flags & PA_SOURCE_DECIBEL_VOLUME));
pa_assert(!(s->flags & PA_SOURCE_DECIBEL_VOLUME) || s->n_volume_steps == PA_VOLUME_NORM+1);
- pa_assert(!(s->flags & PA_SOURCE_DYNAMIC_LATENCY) == (s->fixed_latency != 0));
+ pa_assert(!(s->flags & PA_SOURCE_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0));
pa_assert_se(source_set_state(s, PA_SOURCE_IDLE) == 0);
@@ -382,6 +386,7 @@ void pa_source_unlink(pa_source *s) {
pa_source_output *o, *j = NULL;
pa_assert(s);
+ pa_assert_ctl_context();
/* See pa_sink_unlink() for a couple of comments how this function
* works. */
@@ -423,6 +428,7 @@ static void source_free(pa_object *o) {
pa_source *s = PA_SOURCE(o);
pa_assert(s);
+ pa_assert_ctl_context();
pa_assert(pa_source_refcnt(s) == 0);
if (PA_SOURCE_IS_LINKED(s->state))
@@ -458,23 +464,40 @@ static void source_free(pa_object *o) {
pa_xfree(s);
}
-/* Called from main context */
+/* Called from main context, and not while the IO thread is active, please */
void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
s->asyncmsgq = q;
}
-/* Called from main context */
+/* Called from main context, and not while the IO thread is active, please */
+void pa_source_update_flags(pa_source *s, pa_source_flags_t mask, pa_source_flags_t value) {
+ pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (mask == 0)
+ return;
+
+ /* For now, allow only a minimal set of flags to be changed. */
+ pa_assert((mask & ~(PA_SOURCE_DYNAMIC_LATENCY|PA_SOURCE_LATENCY)) == 0);
+
+ s->flags = (s->flags & ~mask) | (value & mask);
+}
+
+/* Called from IO context, or before _put() from main context */
void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p) {
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
- s->rtpoll = p;
+ s->thread_info.rtpoll = p;
}
/* Called from main context */
int pa_source_update_status(pa_source*s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->state == PA_SOURCE_SUSPENDED)
@@ -486,6 +509,7 @@ int pa_source_update_status(pa_source*s) {
/* Called from main context */
int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(cause != 0);
@@ -513,6 +537,7 @@ int pa_source_sync_suspend(pa_source *s) {
pa_sink_state_t state;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(s->monitor_of);
@@ -532,6 +557,7 @@ pa_queue *pa_source_move_all_start(pa_source *s, pa_queue *q) {
uint32_t idx;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (!q)
@@ -556,12 +582,13 @@ void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save) {
pa_source_output *o;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(q);
while ((o = PA_SOURCE_OUTPUT(pa_queue_pop(q)))) {
if (pa_source_output_finish_move(o, s, save) < 0)
- pa_source_output_kill(o);
+ pa_source_output_fail_move(o);
pa_source_output_unref(o);
}
@@ -572,13 +599,13 @@ void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save) {
/* Called from main context */
void pa_source_move_all_fail(pa_queue *q) {
pa_source_output *o;
+
+ pa_assert_ctl_context();
pa_assert(q);
while ((o = PA_SOURCE_OUTPUT(pa_queue_pop(q)))) {
- if (pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], o) == PA_HOOK_OK) {
- pa_source_output_kill(o);
- pa_source_output_unref(o);
- }
+ pa_source_output_fail_move(o);
+ pa_source_output_unref(o);
}
pa_queue_free(q, NULL, NULL);
@@ -590,17 +617,18 @@ void pa_source_process_rewind(pa_source *s, size_t nbytes) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
- if (s->thread_info.state == PA_SOURCE_SUSPENDED)
+ if (nbytes <= 0)
return;
- if (nbytes <= 0)
+ if (s->thread_info.state == PA_SOURCE_SUSPENDED)
return;
pa_log_debug("Processing rewind...");
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL))) {
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) {
pa_source_output_assert_ref(o);
pa_source_output_process_rewind(o, nbytes);
}
@@ -612,6 +640,7 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
pa_assert(chunk);
@@ -651,6 +680,7 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) {
/* Called from IO thread context */
void pa_source_post_direct(pa_source*s, pa_source_output *o, const pa_memchunk *chunk) {
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
pa_source_output_assert_ref(o);
pa_assert(o->thread_info.direct_on_input);
@@ -682,6 +712,7 @@ pa_usec_t pa_source_get_latency(pa_source *s) {
pa_usec_t usec;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->state == PA_SOURCE_SUSPENDED)
@@ -701,6 +732,7 @@ pa_usec_t pa_source_get_latency_within_thread(pa_source *s) {
pa_msgobject *o;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
/* The returned value is supposed to be in the time domain of the sound card! */
@@ -722,77 +754,96 @@ 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, pa_bool_t save) {
- pa_cvolume old_virtual_volume;
- pa_bool_t virtual_volume_changed;
+void pa_source_set_volume(
+ pa_source *s,
+ const pa_cvolume *volume,
+ pa_bool_t save) {
+
+ pa_bool_t real_changed;
+ pa_cvolume old_volume;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
- pa_assert(volume);
pa_assert(pa_cvolume_valid(volume));
- pa_assert(pa_cvolume_compatible(volume, &s->sample_spec));
+ pa_assert(volume->channels == 1 || pa_cvolume_compatible(volume, &s->sample_spec));
- 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;
+ old_volume = s->volume;
+
+ if (pa_cvolume_compatible(volume, &s->sample_spec))
+ s->volume = *volume;
+ else
+ pa_cvolume_scale(&s->volume, pa_cvolume_max(volume));
+
+ real_changed = !pa_cvolume_equal(&old_volume, &s->volume);
+ s->save_volume = (!real_changed && s->save_volume) || save;
if (s->set_volume) {
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->set_volume(s);
} else
- s->soft_volume = s->virtual_volume;
+ s->soft_volume = s->volume;
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
- if (virtual_volume_changed)
+ if (real_changed)
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
/* Called from main thread. Only to be called by source implementor */
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume) {
pa_source_assert_ref(s);
- pa_assert(volume);
+ pa_assert_ctl_context();
+
+ if (!volume)
+ pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
+ else
+ s->soft_volume = *volume;
if (PA_SOURCE_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
else
- s->thread_info.soft_volume = *volume;
+ s->thread_info.soft_volume = s->soft_volume;
}
/* Called from main thread */
const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->refresh_volume || force_refresh) {
- pa_cvolume old_virtual_volume = s->virtual_volume;
+ pa_cvolume old_volume;
+
+ old_volume = s->volume;
if (s->get_volume)
s->get_volume(s);
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0);
- if (!pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume))
+ if (!pa_cvolume_equal(&old_volume, &s->volume)) {
+ s->save_volume = TRUE;
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+ }
}
- return &s->virtual_volume;
+ return &s->volume;
}
/* Called from main thread */
-void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume, pa_bool_t save) {
+void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SOURCE_IS_LINKED(s->state));
/* 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)) {
- s->save_volume = s->save_volume || save;
+ if (pa_cvolume_equal(&s->volume, new_volume))
return;
- }
- s->virtual_volume = *new_volume;
- s->save_volume = save;
+ s->volume = *new_volume;
+ s->save_volume = TRUE;
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
@@ -802,6 +853,7 @@ 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);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
old_muted = s->muted;
@@ -820,6 +872,7 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute, pa_bool_t save) {
/* Called from main thread */
pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->refresh_muted || force_refresh) {
@@ -831,6 +884,8 @@ 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) {
+ s->save_muted = TRUE;
+
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
/* Make sure the soft mute status stays in sync */
@@ -842,18 +897,18 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
}
/* Called from main thread */
-void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save) {
+void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SOURCE_IS_LINKED(s->state));
/* The source implementor may call this if the mute state changed to make sure everyone is notified */
- if (s->muted == new_muted) {
- s->save_muted = s->save_muted || save;
+ if (s->muted == new_muted)
return;
- }
s->muted = new_muted;
- s->save_muted = save;
+ s->save_muted = TRUE;
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
@@ -861,6 +916,7 @@ void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save) {
/* Called from main thread */
pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(s->proplist, mode, p);
@@ -874,16 +930,18 @@ pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_prop
}
/* Called from main thread */
+/* FIXME -- this should be dropped and be merged into pa_source_update_proplist() */
void pa_source_set_description(pa_source *s, const char *description) {
const char *old;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (!description && !pa_proplist_contains(s->proplist, PA_PROP_DEVICE_DESCRIPTION))
return;
old = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_DESCRIPTION);
- if (old && description && !strcmp(old, description))
+ if (old && description && pa_streq(old, description))
return;
if (description)
@@ -901,6 +959,7 @@ void pa_source_set_description(pa_source *s, const char *description) {
unsigned pa_source_linked_by(pa_source *s) {
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ pa_assert_ctl_context();
return pa_idxset_size(s->outputs);
}
@@ -911,6 +970,7 @@ unsigned pa_source_used_by(pa_source *s) {
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ pa_assert_ctl_context();
ret = pa_idxset_size(s->outputs);
pa_assert(ret >= s->n_corked);
@@ -925,6 +985,7 @@ unsigned pa_source_check_suspend(pa_source *s) {
uint32_t idx;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SOURCE_IS_LINKED(s->state))
return 0;
@@ -1006,7 +1067,7 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
if (pa_hashmap_remove(s->thread_info.outputs, PA_UINT32_TO_PTR(o->index)))
pa_source_output_unref(o);
- pa_source_invalidate_requested_latency(s);
+ pa_source_invalidate_requested_latency(s, TRUE);
return 0;
}
@@ -1086,6 +1147,16 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
return 0;
}
+ case PA_SOURCE_MESSAGE_GET_FIXED_LATENCY:
+
+ *((pa_usec_t*) userdata) = s->thread_info.fixed_latency;
+ return 0;
+
+ case PA_SOURCE_MESSAGE_SET_FIXED_LATENCY:
+
+ pa_source_set_fixed_latency_within_thread(s, (pa_usec_t) offset);
+ return 0;
+
case PA_SOURCE_MESSAGE_GET_MAX_REWIND:
*((size_t*) userdata) = s->thread_info.max_rewind;
@@ -1120,6 +1191,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert_ctl_context();
pa_assert(cause != 0);
for (source = PA_SOURCE(pa_idxset_first(c->sources, &idx)); source; source = PA_SOURCE(pa_idxset_next(c->sources, &idx))) {
@@ -1138,6 +1210,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus
/* Called from main thread */
void pa_source_detach(pa_source *s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_DETACH, NULL, 0, NULL) == 0);
@@ -1146,6 +1219,7 @@ void pa_source_detach(pa_source *s) {
/* Called from main thread */
void pa_source_attach(pa_source *s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_ATTACH, NULL, 0, NULL) == 0);
@@ -1157,9 +1231,10 @@ void pa_source_detach_within_thread(pa_source *s) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->detach)
o->detach(o);
}
@@ -1170,9 +1245,10 @@ void pa_source_attach_within_thread(pa_source *s) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->attach)
o->attach(o);
}
@@ -1184,15 +1260,15 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
- return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
+ return PA_CLAMP(s->thread_info.fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
if (s->thread_info.requested_latency_valid)
return s->thread_info.requested_latency;
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
-
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->thread_info.requested_source_latency != (pa_usec_t) -1 &&
(result == (pa_usec_t) -1 || result > o->thread_info.requested_source_latency))
result = o->thread_info.requested_source_latency;
@@ -1214,6 +1290,7 @@ pa_usec_t pa_source_get_requested_latency(pa_source *s) {
pa_usec_t usec = 0;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->state == PA_SOURCE_SUSPENDED)
@@ -1230,21 +1307,22 @@ void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
if (max_rewind == s->thread_info.max_rewind)
return;
s->thread_info.max_rewind = max_rewind;
- if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ if (PA_SOURCE_IS_LINKED(s->thread_info.state))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
pa_source_output_update_max_rewind(o, s->thread_info.max_rewind);
- }
}
/* Called from main thread */
void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (PA_SOURCE_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0);
@@ -1253,17 +1331,18 @@ void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) {
}
/* Called from IO thread */
-void pa_source_invalidate_requested_latency(pa_source *s) {
+void pa_source_invalidate_requested_latency(pa_source *s, pa_bool_t dynamic) {
pa_source_output *o;
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
- if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ if ((s->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ s->thread_info.requested_latency_valid = FALSE;
+ else if (dynamic)
return;
- s->thread_info.requested_latency_valid = FALSE;
-
if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
if (s->update_requested_latency)
@@ -1275,12 +1354,13 @@ void pa_source_invalidate_requested_latency(pa_source *s) {
}
if (s->monitor_of)
- pa_sink_invalidate_requested_latency(s->monitor_of);
+ pa_sink_invalidate_requested_latency(s->monitor_of, dynamic);
}
/* Called from main thread */
void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
/* min_latency == 0: no limit
* min_latency anything else: specified limit
@@ -1315,6 +1395,7 @@ void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t
/* Called from main thread */
void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t *max_latency) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(min_latency);
pa_assert(max_latency);
@@ -1333,9 +1414,8 @@ void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t
/* Called from IO thread, and from main thread before pa_source_put() is called */
void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) {
- void *state = NULL;
-
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY);
pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY);
@@ -1347,25 +1427,34 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten
(s->flags & PA_SOURCE_DYNAMIC_LATENCY) ||
s->monitor_of);
+ if (s->thread_info.min_latency == min_latency &&
+ s->thread_info.max_latency == max_latency)
+ return;
+
s->thread_info.min_latency = min_latency;
s->thread_info.max_latency = max_latency;
if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
pa_source_output *o;
+ void *state = NULL;
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->update_source_latency_range)
o->update_source_latency_range(o);
}
- pa_source_invalidate_requested_latency(s);
+ pa_source_invalidate_requested_latency(s, FALSE);
}
/* Called from main thread, before the source is put */
void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
- pa_assert(pa_source_get_state(s) == PA_SOURCE_INIT);
+ if (s->flags & PA_SOURCE_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
if (latency < ABSOLUTE_MIN_LATENCY)
latency = ABSOLUTE_MIN_LATENCY;
@@ -1373,12 +1462,64 @@ void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) {
if (latency > ABSOLUTE_MAX_LATENCY)
latency = ABSOLUTE_MAX_LATENCY;
- s->fixed_latency = latency;
+ if (PA_SOURCE_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_FIXED_LATENCY, NULL, (int64_t) latency, NULL) == 0);
+ else
+ s->thread_info.fixed_latency = latency;
+}
+
+/* Called from main thread */
+pa_usec_t pa_source_get_fixed_latency(pa_source *s) {
+ pa_usec_t latency;
+
+ pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (s->flags & PA_SOURCE_DYNAMIC_LATENCY)
+ return 0;
+
+ if (PA_SOURCE_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_FIXED_LATENCY, &latency, 0, NULL) == 0);
+ else
+ latency = s->thread_info.fixed_latency;
+
+ return latency;
+}
+
+/* Called from IO thread */
+void pa_source_set_fixed_latency_within_thread(pa_source *s, pa_usec_t latency) {
+ pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
+
+ if (s->flags & PA_SOURCE_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
+
+ pa_assert(latency >= ABSOLUTE_MIN_LATENCY);
+ pa_assert(latency <= ABSOLUTE_MAX_LATENCY);
+
+ if (s->thread_info.fixed_latency == latency)
+ return;
+
+ s->thread_info.fixed_latency = latency;
+
+ if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
+ pa_source_output *o;
+ void *state = NULL;
+
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
+ if (o->update_source_fixed_latency)
+ o->update_source_fixed_latency(o);
+ }
+
+ pa_source_invalidate_requested_latency(s, FALSE);
}
/* Called from main thread */
size_t pa_source_get_max_rewind(pa_source *s) {
size_t r;
+ pa_assert_ctl_context();
pa_source_assert_ref(s);
if (!PA_SOURCE_IS_LINKED(s->state))
@@ -1394,9 +1535,10 @@ int pa_source_set_port(pa_source *s, const char *name, pa_bool_t save) {
pa_device_port *port;
pa_assert(s);
+ pa_assert_ctl_context();
if (!s->set_port) {
- pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name);
+ pa_log_debug("set_port() operation not implemented for source %u \"%s\"", s->index, s->name);
return -PA_ERR_NOTIMPLEMENTED;
}
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 7e9fd8b7..e3e56bc4 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -43,6 +43,7 @@ typedef struct pa_source pa_source;
#include <pulsecore/source-output.h>
#include <pulsecore/card.h>
#include <pulsecore/queue.h>
+#include <pulsecore/thread-mq.h>
#define PA_MAX_OUTPUTS_PER_SOURCE 32
@@ -78,7 +79,7 @@ struct pa_source {
pa_volume_t base_volume; /* shall be constant */
unsigned n_volume_steps; /* shall be constant */
- pa_cvolume virtual_volume, soft_volume;
+ pa_cvolume volume, soft_volume;
pa_bool_t muted:1;
pa_bool_t refresh_volume:1;
@@ -89,15 +90,14 @@ struct pa_source {
pa_bool_t save_muted:1;
pa_asyncmsgq *asyncmsgq;
- pa_rtpoll *rtpoll;
pa_memchunk silence;
- pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */
-
pa_hashmap *ports;
pa_device_port *active_port;
+ unsigned priority;
+
/* Called when the main loop requests a state change. Called from
* main loop context. If returns -1 the state change will be
* inhibited */
@@ -139,6 +139,8 @@ struct pa_source {
pa_source_state_t state;
pa_hashmap *outputs;
+ pa_rtpoll *rtpoll;
+
pa_cvolume soft_volume;
pa_bool_t soft_muted:1;
@@ -151,12 +153,14 @@ struct pa_source {
pa_usec_t min_latency; /* we won't go below this latency */
pa_usec_t max_latency; /* An upper limit for the latencies */
- } thread_info;
+
+ pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */
+ } thread_info;
void *userdata;
};
-PA_DECLARE_CLASS(pa_source);
+PA_DECLARE_PUBLIC_CLASS(pa_source);
#define PA_SOURCE(s) pa_source_cast(s)
typedef enum pa_source_message {
@@ -173,6 +177,8 @@ typedef enum pa_source_message {
PA_SOURCE_MESSAGE_DETACH,
PA_SOURCE_MESSAGE_SET_LATENCY_RANGE,
PA_SOURCE_MESSAGE_GET_LATENCY_RANGE,
+ PA_SOURCE_MESSAGE_SET_FIXED_LATENCY,
+ PA_SOURCE_MESSAGE_GET_FIXED_LATENCY,
PA_SOURCE_MESSAGE_GET_MAX_REWIND,
PA_SOURCE_MESSAGE_SET_MAX_REWIND,
PA_SOURCE_MESSAGE_MAX
@@ -237,17 +243,20 @@ 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, pa_bool_t save);
-void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save);
+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);
int pa_source_sync_suspend(pa_source *s);
+void pa_source_update_flags(pa_source *s, pa_source_flags_t mask, pa_source_flags_t value);
+
/*** May be called by everyone, from main context */
/* The returned value is supposed to be in the time domain of the sound card! */
pa_usec_t pa_source_get_latency(pa_source *s);
pa_usec_t pa_source_get_requested_latency(pa_source *s);
void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t *max_latency);
+pa_usec_t pa_source_get_fixed_latency(pa_source *s);
size_t pa_source_get_max_rewind(pa_source *s);
@@ -257,6 +266,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus
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, pa_bool_t save);
pa_bool_t pa_source_get_mute(pa_source *source, pa_bool_t force_refresh);
@@ -288,11 +298,16 @@ void pa_source_detach_within_thread(pa_source *s);
pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s);
void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind);
+
void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_source_set_fixed_latency_within_thread(pa_source *s, pa_usec_t latency);
/*** To be called exclusively by source output drivers, from IO context */
-void pa_source_invalidate_requested_latency(pa_source *s);
+void pa_source_invalidate_requested_latency(pa_source *s, pa_bool_t dynamic);
pa_usec_t pa_source_get_latency_within_thread(pa_source *s);
+#define pa_source_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SOURCE_IS_LINKED((s)->state))
+
#endif
diff --git a/src/pulsecore/start-child.c b/src/pulsecore/start-child.c
index 7774bde6..4a70aea1 100644
--- a/src/pulsecore/start-child.c
+++ b/src/pulsecore/start-child.c
@@ -68,23 +68,29 @@ int pa_start_child_for_read(const char *name, const char *argv1, pid_t *pid) {
} else {
/* child */
- pa_reset_priority();
+ pa_reset_personality();
pa_assert_se(pa_close(pipe_fds[0]) == 0);
- pa_assert_se(dup2(pipe_fds[1], 1) == 1);
+ pa_assert_se(dup2(pipe_fds[1], STDOUT_FILENO) == STDOUT_FILENO);
- if (pipe_fds[1] != 1)
+ if (pipe_fds[1] != STDOUT_FILENO)
pa_assert_se(pa_close(pipe_fds[1]) == 0);
- pa_close(0);
- pa_assert_se(open("/dev/null", O_RDONLY) == 0);
+ pa_close(STDIN_FILENO);
+ pa_assert_se(open("/dev/null", O_RDONLY) == STDIN_FILENO);
- pa_close(2);
- pa_assert_se(open("/dev/null", O_WRONLY) == 2);
+ pa_close(STDERR_FILENO);
+ pa_assert_se(open("/dev/null", O_WRONLY) == STDERR_FILENO);
pa_close_all(-1);
pa_reset_sigs(-1);
pa_unblock_sigs(-1);
+ pa_reset_priority();
+ pa_unset_env_recorded();
+
+ /* Make sure our children are not influenced by the
+ * LD_BIND_NOW we set for ourselves. */
+ unsetenv("LD_BIND_NOW");
#ifdef PR_SET_PDEATHSIG
/* On Linux we can use PR_SET_PDEATHSIG to have the helper
diff --git a/src/pulsecore/svolume_arm.c b/src/pulsecore/svolume_arm.c
new file mode 100644
index 00000000..5bd1448f
--- /dev/null
+++ b/src/pulsecore/svolume_arm.c
@@ -0,0 +1,195 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ 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/timeval.h>
+#include <pulsecore/random.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/g711.h>
+#include <pulsecore/core-util.h>
+
+#include "cpu-arm.h"
+
+#include "sample-util.h"
+#include "endianmacros.h"
+
+#if defined (__arm__)
+
+#define MOD_INC() \
+ " subs r0, r6, %2 \n\t" \
+ " addcs r0, %1 \n\t" \
+ " movcs r6, r0 \n\t"
+
+static void
+pa_volume_s16ne_arm (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ int32_t *ve;
+
+ channels = PA_MAX (4U, channels);
+ ve = volumes + channels;
+
+ __asm__ __volatile__ (
+ " mov r6, %1 \n\t"
+ " mov %3, %3, LSR #1 \n\t" /* length /= sizeof (int16_t) */
+ " tst %3, #1 \n\t" /* check for odd samples */
+ " beq 2f \n\t"
+
+ "1: \n\t"
+ " ldr r0, [r6], #4 \n\t" /* odd samples volumes */
+ " ldrh r2, [%0] \n\t"
+
+ " smulwb r0, r0, r2 \n\t"
+ " ssat r0, #16, r0 \n\t"
+
+ " strh r0, [%0], #2 \n\t"
+
+ MOD_INC()
+
+ "2: \n\t"
+ " mov %3, %3, LSR #1 \n\t"
+ " tst %3, #1 \n\t" /* check for odd samples */
+ " beq 4f \n\t"
+
+ "3: \n\t"
+ " ldrd r2, [r6], #8 \n\t" /* 2 samples at a time */
+ " ldr r0, [%0] \n\t"
+
+ " smulwt r2, r2, r0 \n\t"
+ " smulwb r3, r3, r0 \n\t"
+
+ " ssat r2, #16, r2 \n\t"
+ " ssat r3, #16, r3 \n\t"
+
+ " pkhbt r0, r3, r2, LSL #16 \n\t"
+ " str r0, [%0], #4 \n\t"
+
+ MOD_INC()
+
+ "4: \n\t"
+ " movs %3, %3, LSR #1 \n\t"
+ " beq 6f \n\t"
+
+ "5: \n\t"
+ " ldrd r2, [r6], #8 \n\t" /* 4 samples at a time */
+ " ldrd r4, [r6], #8 \n\t"
+ " ldrd r0, [%0] \n\t"
+
+ " smulwt r2, r2, r0 \n\t"
+ " smulwb r3, r3, r0 \n\t"
+ " smulwt r4, r4, r1 \n\t"
+ " smulwb r5, r5, r1 \n\t"
+
+ " ssat r2, #16, r2 \n\t"
+ " ssat r3, #16, r3 \n\t"
+ " ssat r4, #16, r4 \n\t"
+ " ssat r5, #16, r5 \n\t"
+
+ " pkhbt r0, r3, r2, LSL #16 \n\t"
+ " pkhbt r1, r5, r4, LSL #16 \n\t"
+ " strd r0, [%0], #8 \n\t"
+
+ MOD_INC()
+
+ " subs %3, %3, #1 \n\t"
+ " bne 5b \n\t"
+ "6: \n\t"
+
+ : "+r" (samples), "+r" (volumes), "+r" (ve), "+r" (length)
+ :
+ : "r6", "r5", "r4", "r3", "r2", "r1", "r0", "cc"
+ );
+}
+
+#undef RUN_TEST
+
+#ifdef RUN_TEST
+#define CHANNELS 2
+#define SAMPLES 1023
+#define TIMES 1000
+#define PADDING 16
+
+static void run_test (void) {
+ int16_t samples[SAMPLES];
+ int16_t samples_ref[SAMPLES];
+ int16_t samples_orig[SAMPLES];
+ int32_t volumes[CHANNELS + PADDING];
+ int i, j, padding;
+ pa_do_volume_func_t func;
+ pa_usec_t start, stop;
+
+ func = pa_get_volume_func (PA_SAMPLE_S16NE);
+
+ printf ("checking ARM %zd\n", sizeof (samples));
+
+ pa_random (samples, sizeof (samples));
+ memcpy (samples_ref, samples, sizeof (samples));
+ memcpy (samples_orig, samples, sizeof (samples));
+
+ for (i = 0; i < CHANNELS; i++)
+ volumes[i] = rand() >> 1;
+ for (padding = 0; padding < PADDING; padding++, i++)
+ volumes[i] = volumes[padding];
+
+ func (samples_ref, volumes, CHANNELS, sizeof (samples));
+ pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples));
+ for (i = 0; i < SAMPLES; i++) {
+ if (samples[i] != samples_ref[i]) {
+ printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i],
+ samples_orig[i], volumes[i % CHANNELS]);
+ }
+ }
+
+ start = pa_rtclock_now();
+ for (j = 0; j < TIMES; j++) {
+ memcpy (samples, samples_orig, sizeof (samples));
+ pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples));
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("ARM: %llu usec.", (long long unsigned int) (stop - start));
+
+ start = pa_rtclock_now();
+ for (j = 0; j < TIMES; j++) {
+ memcpy (samples_ref, samples_orig, sizeof (samples));
+ func (samples_ref, volumes, CHANNELS, sizeof (samples));
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("ref: %llu usec.", (long long unsigned int) (stop - start));
+}
+#endif
+
+#endif /* defined (__arm__) */
+
+
+void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) {
+#if defined (__arm__)
+ pa_log_info("Initialising ARM optimized functions.");
+
+#ifdef RUN_TEST
+ run_test ();
+#endif
+
+ pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_arm);
+#endif /* defined (__arm__) */
+}
diff --git a/src/pulsecore/svolume_c.c b/src/pulsecore/svolume_c.c
new file mode 100644
index 00000000..5fc052b8
--- /dev/null
+++ b/src/pulsecore/svolume_c.c
@@ -0,0 +1,335 @@
+/***
+ 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <pulsecore/macro.h>
+#include <pulsecore/g711.h>
+#include <pulsecore/core-util.h>
+
+#include "sample-util.h"
+#include "endianmacros.h"
+
+static void
+pa_volume_u8_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ for (channel = 0; length; length--) {
+ int32_t t, hi, lo;
+
+ hi = volumes[channel] >> 16;
+ lo = volumes[channel] & 0xFFFF;
+
+ t = (int32_t) *samples - 0x80;
+ t = ((t * lo) >> 16) + (t * hi);
+ t = PA_CLAMP_UNLIKELY(t, -0x80, 0x7F);
+ *samples++ = (uint8_t) (t + 0x80);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_alaw_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ for (channel = 0; length; length--) {
+ int32_t t, hi, lo;
+
+ hi = volumes[channel] >> 16;
+ lo = volumes[channel] & 0xFFFF;
+
+ t = (int32_t) st_alaw2linear16(*samples);
+ t = ((t * lo) >> 16) + (t * hi);
+ t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
+ *samples++ = (uint8_t) st_13linear2alaw((int16_t) t >> 3);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_ulaw_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ for (channel = 0; length; length--) {
+ int32_t t, hi, lo;
+
+ hi = volumes[channel] >> 16;
+ lo = volumes[channel] & 0xFFFF;
+
+ t = (int32_t) st_ulaw2linear16(*samples);
+ t = ((t * lo) >> 16) + (t * hi);
+ t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
+ *samples++ = (uint8_t) st_14linear2ulaw((int16_t) t >> 2);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s16ne_c (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (int16_t);
+
+ for (channel = 0; length; length--) {
+ int32_t t, hi, lo;
+
+ /* Multiplying the 32bit volume factor with the 16bit
+ * sample might result in an 48bit value. We want to
+ * do without 64 bit integers and hence do the
+ * multiplication independantly for the HI and LO part
+ * of the volume. */
+
+ hi = volumes[channel] >> 16;
+ lo = volumes[channel] & 0xFFFF;
+
+ t = (int32_t)(*samples);
+ t = ((t * lo) >> 16) + (t * hi);
+ t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
+ *samples++ = (int16_t) t;
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s16re_c (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (int16_t);
+
+ for (channel = 0; length; length--) {
+ int32_t t, hi, lo;
+
+ hi = volumes[channel] >> 16;
+ lo = volumes[channel] & 0xFFFF;
+
+ t = (int32_t) PA_INT16_SWAP(*samples);
+ t = ((t * lo) >> 16) + (t * hi);
+ t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
+ *samples++ = PA_INT16_SWAP((int16_t) t);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_float32ne_c (float *samples, float *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (float);
+
+ for (channel = 0; length; length--) {
+ *samples++ *= volumes[channel];
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_float32re_c (float *samples, float *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (float);
+
+ for (channel = 0; length; length--) {
+ float t;
+
+ t = PA_FLOAT32_SWAP(*samples);
+ t *= volumes[channel];
+ *samples++ = PA_FLOAT32_SWAP(t);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s32ne_c (int32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (int32_t);
+
+ for (channel = 0; length; length--) {
+ int64_t t;
+
+ t = (int64_t)(*samples);
+ t = (t * volumes[channel]) >> 16;
+ t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
+ *samples++ = (int32_t) t;
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s32re_c (int32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (int32_t);
+
+ for (channel = 0; length; length--) {
+ int64_t t;
+
+ t = (int64_t) PA_INT32_SWAP(*samples);
+ t = (t * volumes[channel]) >> 16;
+ t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
+ *samples++ = PA_INT32_SWAP((int32_t) t);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s24ne_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+ uint8_t *e;
+
+ e = samples + length;
+
+ for (channel = 0; samples < e; samples += 3) {
+ int64_t t;
+
+ t = (int64_t)((int32_t) (PA_READ24NE(samples) << 8));
+ t = (t * volumes[channel]) >> 16;
+ t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
+ PA_WRITE24NE(samples, ((uint32_t) (int32_t) t) >> 8);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s24re_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+ uint8_t *e;
+
+ e = samples + length;
+
+ for (channel = 0; samples < e; samples += 3) {
+ int64_t t;
+
+ t = (int64_t)((int32_t) (PA_READ24RE(samples) << 8));
+ t = (t * volumes[channel]) >> 16;
+ t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
+ PA_WRITE24RE(samples, ((uint32_t) (int32_t) t) >> 8);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s24_32ne_c (uint32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (uint32_t);
+
+ for (channel = 0; length; length--) {
+ int64_t t;
+
+ t = (int64_t) ((int32_t) (*samples << 8));
+ t = (t * volumes[channel]) >> 16;
+ t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
+ *samples++ = ((uint32_t) ((int32_t) t)) >> 8;
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static void
+pa_volume_s24_32re_c (uint32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ unsigned channel;
+
+ length /= sizeof (uint32_t);
+
+ for (channel = 0; length; length--) {
+ int64_t t;
+
+ t = (int64_t) ((int32_t) (PA_UINT32_SWAP(*samples) << 8));
+ t = (t * volumes[channel]) >> 16;
+ t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
+ *samples++ = PA_UINT32_SWAP(((uint32_t) ((int32_t) t)) >> 8);
+
+ if (PA_UNLIKELY(++channel >= channels))
+ channel = 0;
+ }
+}
+
+static pa_do_volume_func_t do_volume_table[] =
+{
+ [PA_SAMPLE_U8] = (pa_do_volume_func_t) pa_volume_u8_c,
+ [PA_SAMPLE_ALAW] = (pa_do_volume_func_t) pa_volume_alaw_c,
+ [PA_SAMPLE_ULAW] = (pa_do_volume_func_t) pa_volume_ulaw_c,
+ [PA_SAMPLE_S16NE] = (pa_do_volume_func_t) pa_volume_s16ne_c,
+ [PA_SAMPLE_S16RE] = (pa_do_volume_func_t) pa_volume_s16re_c,
+ [PA_SAMPLE_FLOAT32NE] = (pa_do_volume_func_t) pa_volume_float32ne_c,
+ [PA_SAMPLE_FLOAT32RE] = (pa_do_volume_func_t) pa_volume_float32re_c,
+ [PA_SAMPLE_S32NE] = (pa_do_volume_func_t) pa_volume_s32ne_c,
+ [PA_SAMPLE_S32RE] = (pa_do_volume_func_t) pa_volume_s32re_c,
+ [PA_SAMPLE_S24NE] = (pa_do_volume_func_t) pa_volume_s24ne_c,
+ [PA_SAMPLE_S24RE] = (pa_do_volume_func_t) pa_volume_s24re_c,
+ [PA_SAMPLE_S24_32NE] = (pa_do_volume_func_t) pa_volume_s24_32ne_c,
+ [PA_SAMPLE_S24_32RE] = (pa_do_volume_func_t) pa_volume_s24_32re_c
+};
+
+pa_do_volume_func_t pa_get_volume_func(pa_sample_format_t f) {
+ pa_assert(f >= 0);
+ pa_assert(f < PA_SAMPLE_MAX);
+
+ return do_volume_table[f];
+}
+
+void pa_set_volume_func(pa_sample_format_t f, pa_do_volume_func_t func) {
+ pa_assert(f >= 0);
+ pa_assert(f < PA_SAMPLE_MAX);
+
+ do_volume_table[f] = func;
+}
diff --git a/src/pulsecore/svolume_mmx.c b/src/pulsecore/svolume_mmx.c
new file mode 100644
index 00000000..74918e78
--- /dev/null
+++ b/src/pulsecore/svolume_mmx.c
@@ -0,0 +1,316 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ 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/timeval.h>
+#include <pulsecore/random.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/g711.h>
+#include <pulsecore/core-util.h>
+
+#include "cpu-x86.h"
+
+#include "sample-util.h"
+#include "endianmacros.h"
+
+#if defined (__i386__) || defined (__amd64__)
+/* in s: 2 int16_t samples
+ * in v: 2 int32_t volumes, fixed point 16:16
+ * out s: contains scaled and clamped int16_t samples.
+ *
+ * We calculate the high 32 bits of a 32x16 multiply which we then
+ * clamp to 16 bits. The calulcation is:
+ *
+ * vl = (v & 0xffff)
+ * vh = (v >> 16)
+ * s = ((s * vl) >> 16) + (s * vh);
+ *
+ * For the first multiply we have to do a sign correction as we need to
+ * multiply a signed int with an unsigned int. Hacker's delight 8-3 gives a
+ * simple formula to correct the sign of the high word after the signed
+ * multiply.
+ */
+#define VOLUME_32x16(s,v) /* .. | vh | vl | */ \
+ " pxor %%mm4, %%mm4 \n\t" /* .. | 0 | 0 | */ \
+ " punpcklwd %%mm4, "#s" \n\t" /* .. | 0 | p0 | */ \
+ " pcmpgtw "#v", %%mm4 \n\t" /* .. | 0 | s(vl) | */ \
+ " pand "#s", %%mm4 \n\t" /* .. | 0 | (p0) | (vl >> 15) & p */ \
+ " movq %%mm6, %%mm5 \n\t" /* .. | ffff | 0 | */ \
+ " pand "#v", %%mm5 \n\t" /* .. | vh | 0 | */ \
+ " por %%mm5, %%mm4 \n\t" /* .. | vh | (p0) | */ \
+ " pmulhw "#s", "#v" \n\t" /* .. | 0 | vl*p0 | */ \
+ " paddw %%mm4, "#v" \n\t" /* .. | vh | vl*p0 | vh + sign correct */ \
+ " pslld $16, "#s" \n\t" /* .. | p0 | 0 | */ \
+ " por %%mm7, "#s" \n\t" /* .. | p0 | 1 | */ \
+ " pmaddwd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
+ " packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
+
+/* approximately advances %3 = (%3 + a) % b. This function requires that
+ * a <= b. */
+#define MOD_ADD(a,b) \
+ " add "#a", %3 \n\t" \
+ " mov %3, %4 \n\t" \
+ " sub "#b", %4 \n\t" \
+ " cmovae %4, %3 \n\t"
+
+/* swap 16 bits */
+#define SWAP_16(s) \
+ " movq "#s", %%mm4 \n\t" /* .. | h l | */ \
+ " psrlw $8, %%mm4 \n\t" /* .. | 0 h | */ \
+ " psllw $8, "#s" \n\t" /* .. | l 0 | */ \
+ " por %%mm4, "#s" \n\t" /* .. | l h | */
+
+/* swap 2 registers 16 bits for better pairing */
+#define SWAP_16_2(s1,s2) \
+ " movq "#s1", %%mm4 \n\t" /* .. | h l | */ \
+ " movq "#s2", %%mm5 \n\t" \
+ " psrlw $8, %%mm4 \n\t" /* .. | 0 h | */ \
+ " psrlw $8, %%mm5 \n\t" \
+ " psllw $8, "#s1" \n\t" /* .. | l 0 | */ \
+ " psllw $8, "#s2" \n\t" \
+ " por %%mm4, "#s1" \n\t" /* .. | l h | */ \
+ " por %%mm5, "#s2" \n\t"
+
+static void
+pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+
+ /* the max number of samples we process at a time, this is also the max amount
+ * we overread the volume array, which should have enough padding. */
+ channels = PA_MAX (4U, channels);
+
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
+ " pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */
+ " pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */
+ " pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */
+ " psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */
+
+ " test $1, %2 \n\t" /* check for odd samples */
+ " je 2f \n\t"
+
+ " movd (%1, %3, 4), %%mm0 \n\t" /* | v0h | v0l | */
+ " movw (%0), %w4 \n\t" /* .. | p0 | */
+ " movd %4, %%mm1 \n\t"
+ VOLUME_32x16 (%%mm1, %%mm0)
+ " movd %%mm0, %4 \n\t" /* .. | p0*v0 | */
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ MOD_ADD ($1, %5)
+
+ "2: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */
+ " test $1, %2 \n\t" /* check for odd samples */
+ " je 4f \n\t"
+
+ "3: \n\t" /* do samples in groups of 2 */
+ " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
+ " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
+ VOLUME_32x16 (%%mm1, %%mm0)
+ " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
+ " add $4, %0 \n\t"
+ MOD_ADD ($2, %5)
+
+ "4: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+
+ "5: \n\t" /* do samples in groups of 4 */
+ " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
+ " movq 8(%1, %3, 4), %%mm2 \n\t" /* | v3h | v3l | v2h | v2l | */
+ " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
+ " movd 4(%0), %%mm3 \n\t" /* .. | p3 | p2 | */
+ VOLUME_32x16 (%%mm1, %%mm0)
+ VOLUME_32x16 (%%mm3, %%mm2)
+ " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
+ " movd %%mm2, 4(%0) \n\t" /* .. | p3*v3 | p2*v2 | */
+ " add $8, %0 \n\t"
+ MOD_ADD ($4, %5)
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+
+ "6: \n\t"
+ " emms \n\t"
+
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
+ : "r" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+
+static void
+pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+
+ /* the max number of samples we process at a time, this is also the max amount
+ * we overread the volume array, which should have enough padding. */
+ channels = PA_MAX (4U, channels);
+
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
+ " pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */
+ " pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */
+ " pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */
+ " psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */
+
+ " test $1, %2 \n\t" /* check for odd samples */
+ " je 2f \n\t"
+
+ " movd (%1, %3, 4), %%mm0 \n\t" /* | v0h | v0l | */
+ " movw (%0), %w4 \n\t" /* .. | p0 | */
+ " rorw $8, %w4 \n\t"
+ " movd %4, %%mm1 \n\t"
+ VOLUME_32x16 (%%mm1, %%mm0)
+ " movd %%mm0, %4 \n\t" /* .. | p0*v0 | */
+ " rorw $8, %w4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ MOD_ADD ($1, %5)
+
+ "2: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */
+ " test $1, %2 \n\t" /* check for odd samples */
+ " je 4f \n\t"
+
+ "3: \n\t" /* do samples in groups of 2 */
+ " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
+ " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
+ SWAP_16 (%%mm1)
+ VOLUME_32x16 (%%mm1, %%mm0)
+ SWAP_16 (%%mm0)
+ " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
+ " add $4, %0 \n\t"
+ MOD_ADD ($2, %5)
+
+ "4: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+
+ "5: \n\t" /* do samples in groups of 4 */
+ " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
+ " movq 8(%1, %3, 4), %%mm2 \n\t" /* | v3h | v3l | v2h | v2l | */
+ " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
+ " movd 4(%0), %%mm3 \n\t" /* .. | p3 | p2 | */
+ SWAP_16_2 (%%mm1, %%mm3)
+ VOLUME_32x16 (%%mm1, %%mm0)
+ VOLUME_32x16 (%%mm3, %%mm2)
+ SWAP_16_2 (%%mm0, %%mm2)
+ " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
+ " movd %%mm2, 4(%0) \n\t" /* .. | p3*v3 | p2*v2 | */
+ " add $8, %0 \n\t"
+ MOD_ADD ($4, %5)
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+
+ "6: \n\t"
+ " emms \n\t"
+
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
+ : "r" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+
+#undef RUN_TEST
+
+#ifdef RUN_TEST
+#define CHANNELS 2
+#define SAMPLES 1021
+#define TIMES 1000
+#define PADDING 16
+
+static void run_test (void) {
+ int16_t samples[SAMPLES];
+ int16_t samples_ref[SAMPLES];
+ int16_t samples_orig[SAMPLES];
+ int32_t volumes[CHANNELS + PADDING];
+ int i, j, padding;
+ pa_do_volume_func_t func;
+ pa_usec_t start, stop;
+
+ func = pa_get_volume_func (PA_SAMPLE_S16NE);
+
+ printf ("checking MMX %zd\n", sizeof (samples));
+
+ pa_random (samples, sizeof (samples));
+ memcpy (samples_ref, samples, sizeof (samples));
+ memcpy (samples_orig, samples, sizeof (samples));
+
+ for (i = 0; i < CHANNELS; i++)
+ volumes[i] = rand() >> 1;
+ for (padding = 0; padding < PADDING; padding++, i++)
+ volumes[i] = volumes[padding];
+
+ func (samples_ref, volumes, CHANNELS, sizeof (samples));
+ pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples));
+ for (i = 0; i < SAMPLES; i++) {
+ if (samples[i] != samples_ref[i]) {
+ printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i],
+ samples_orig[i], volumes[i % CHANNELS]);
+ }
+ }
+
+ start = pa_rtclock_now();
+ for (j = 0; j < TIMES; j++) {
+ memcpy (samples, samples_orig, sizeof (samples));
+ pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples));
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("MMX: %llu usec.", (long long unsigned int)(stop - start));
+
+ start = pa_rtclock_now();
+ for (j = 0; j < TIMES; j++) {
+ memcpy (samples_ref, samples_orig, sizeof (samples));
+ func (samples_ref, volumes, CHANNELS, sizeof (samples));
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start));
+}
+#endif
+
+#endif /* defined (__i386__) || defined (__amd64__) */
+
+
+void pa_volume_func_init_mmx (pa_cpu_x86_flag_t flags) {
+#if defined (__i386__) || defined (__amd64__)
+
+#ifdef RUN_TEST
+ run_test ();
+#endif
+
+ if (flags & PA_CPU_X86_MMX) {
+ pa_log_info("Initialising MMX optimized functions.");
+
+ pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_mmx);
+ pa_set_volume_func (PA_SAMPLE_S16RE, (pa_do_volume_func_t) pa_volume_s16re_mmx);
+ }
+#endif /* defined (__i386__) || defined (__amd64__) */
+}
diff --git a/src/pulsecore/svolume_sse.c b/src/pulsecore/svolume_sse.c
new file mode 100644
index 00000000..bbd73a9b
--- /dev/null
+++ b/src/pulsecore/svolume_sse.c
@@ -0,0 +1,317 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006 Lennart Poettering
+ Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ 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/timeval.h>
+#include <pulsecore/random.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/g711.h>
+#include <pulsecore/core-util.h>
+
+#include "cpu-x86.h"
+
+#include "sample-util.h"
+#include "endianmacros.h"
+
+#if defined (__i386__) || defined (__amd64__)
+
+#define VOLUME_32x16(s,v) /* .. | vh | vl | */ \
+ " pxor %%xmm4, %%xmm4 \n\t" /* .. | 0 | 0 | */ \
+ " punpcklwd %%xmm4, "#s" \n\t" /* .. | 0 | p0 | */ \
+ " pcmpgtw "#s", %%xmm4 \n\t" /* .. | 0 | s(p0) | */ \
+ " pand "#v", %%xmm4 \n\t" /* .. | 0 | (vl) | */ \
+ " movdqa "#s", %%xmm5 \n\t" \
+ " pmulhuw "#v", "#s" \n\t" /* .. | 0 | vl*p0 | */ \
+ " psubd %%xmm4, "#s" \n\t" /* .. | 0 | vl*p0 | + sign correct */ \
+ " psrld $16, "#v" \n\t" /* .. | p0 | 0 | */ \
+ " pmaddwd %%xmm5, "#v" \n\t" /* .. | p0 * vh | */ \
+ " paddd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
+ " packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
+
+#define MOD_ADD(a,b) \
+ " add "#a", %3 \n\t" /* channel += inc */ \
+ " mov %3, %4 \n\t" \
+ " sub "#b", %4 \n\t" /* tmp = channel - channels */ \
+ " cmovae %4, %3 \n\t" /* if (tmp >= 0) channel = tmp */
+
+/* swap 16 bits */
+#define SWAP_16(s) \
+ " movdqa "#s", %%xmm4 \n\t" /* .. | h l | */ \
+ " psrlw $8, %%xmm4 \n\t" /* .. | 0 h | */ \
+ " psllw $8, "#s" \n\t" /* .. | l 0 | */ \
+ " por %%xmm4, "#s" \n\t" /* .. | l h | */
+
+/* swap 2 registers 16 bits for better pairing */
+#define SWAP_16_2(s1,s2) \
+ " movdqa "#s1", %%xmm4 \n\t" /* .. | h l | */ \
+ " movdqa "#s2", %%xmm5 \n\t" \
+ " psrlw $8, %%xmm4 \n\t" /* .. | 0 h | */ \
+ " psrlw $8, %%xmm5 \n\t" \
+ " psllw $8, "#s1" \n\t" /* .. | l 0 | */ \
+ " psllw $8, "#s2" \n\t" \
+ " por %%xmm4, "#s1" \n\t" /* .. | l h | */ \
+ " por %%xmm5, "#s2" \n\t"
+
+static void
+pa_volume_s16ne_sse2 (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+
+ /* the max number of samples we process at a time, this is also the max amount
+ * we overread the volume array, which should have enough padding. */
+ channels = PA_MAX (8U, channels);
+
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
+
+ " test $1, %2 \n\t" /* check for odd samples */
+ " je 2f \n\t"
+
+ " movd (%1, %3, 4), %%xmm0 \n\t" /* | v0h | v0l | */
+ " movw (%0), %w4 \n\t" /* .. | p0 | */
+ " movd %4, %%xmm1 \n\t"
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ " movd %%xmm0, %4 \n\t" /* .. | p0*v0 | */
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ MOD_ADD ($1, %5)
+
+ "2: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+
+ "3: \n\t" /* do samples in groups of 2 */
+ " movq (%1, %3, 4), %%xmm0 \n\t" /* | v1h | v1l | v0h | v0l | */
+ " movd (%0), %%xmm1 \n\t" /* .. | p1 | p0 | */
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ " movd %%xmm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
+ " add $4, %0 \n\t"
+ MOD_ADD ($2, %5)
+
+ "4: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */
+ " test $1, %2 \n\t"
+ " je 6f \n\t"
+
+ /* FIXME, we can do aligned access of the volume values if we can guarantee
+ * that the array is 16 bytes aligned, we probably have to do the odd values
+ * after this then. */
+ "5: \n\t" /* do samples in groups of 4 */
+ " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */
+ " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */
+ " add $8, %0 \n\t"
+ MOD_ADD ($4, %5)
+
+ "6: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 8 samples at a time */
+ " cmp $0, %2 \n\t"
+ " je 8f \n\t"
+
+ "7: \n\t" /* do samples in groups of 8 */
+ " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */
+ " movdqu 16(%1, %3, 4), %%xmm2 \n\t" /* | v7h | v7l .. v4h | v4l | */
+ " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */
+ " movq 8(%0), %%xmm3 \n\t" /* .. | p7 .. p4 | */
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ VOLUME_32x16 (%%xmm3, %%xmm2)
+ " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */
+ " movq %%xmm2, 8(%0) \n\t" /* .. | p7*v7 .. p4*v4 | */
+ " add $16, %0 \n\t"
+ MOD_ADD ($8, %5)
+ " dec %2 \n\t"
+ " jne 7b \n\t"
+ "8: \n\t"
+
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" (channel), "=&r" (temp)
+ : "r" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+
+static void
+pa_volume_s16re_sse2 (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+
+ /* the max number of samples we process at a time, this is also the max amount
+ * we overread the volume array, which should have enough padding. */
+ channels = PA_MAX (8U, channels);
+
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
+
+ " test $1, %2 \n\t" /* check for odd samples */
+ " je 2f \n\t"
+
+ " movd (%1, %3, 4), %%xmm0 \n\t" /* | v0h | v0l | */
+ " movw (%0), %w4 \n\t" /* .. | p0 | */
+ " rorw $8, %w4 \n\t"
+ " movd %4, %%xmm1 \n\t"
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ " movd %%xmm0, %4 \n\t" /* .. | p0*v0 | */
+ " rorw $8, %w4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ MOD_ADD ($1, %5)
+
+ "2: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+
+ "3: \n\t" /* do samples in groups of 2 */
+ " movq (%1, %3, 4), %%xmm0 \n\t" /* | v1h | v1l | v0h | v0l | */
+ " movd (%0), %%xmm1 \n\t" /* .. | p1 | p0 | */
+ SWAP_16 (%%xmm1)
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ SWAP_16 (%%xmm0)
+ " movd %%xmm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
+ " add $4, %0 \n\t"
+ MOD_ADD ($2, %5)
+
+ "4: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */
+ " test $1, %2 \n\t"
+ " je 6f \n\t"
+
+ /* FIXME, we can do aligned access of the volume values if we can guarantee
+ * that the array is 16 bytes aligned, we probably have to do the odd values
+ * after this then. */
+ "5: \n\t" /* do samples in groups of 4 */
+ " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */
+ " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */
+ SWAP_16 (%%xmm1)
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ SWAP_16 (%%xmm0)
+ " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */
+ " add $8, %0 \n\t"
+ MOD_ADD ($4, %5)
+
+ "6: \n\t"
+ " sar $1, %2 \n\t" /* prepare for processing 8 samples at a time */
+ " cmp $0, %2 \n\t"
+ " je 8f \n\t"
+
+ "7: \n\t" /* do samples in groups of 8 */
+ " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */
+ " movdqu 16(%1, %3, 4), %%xmm2 \n\t" /* | v7h | v7l .. v4h | v4l | */
+ " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */
+ " movq 8(%0), %%xmm3 \n\t" /* .. | p7 .. p4 | */
+ SWAP_16_2 (%%xmm1, %%xmm3)
+ VOLUME_32x16 (%%xmm1, %%xmm0)
+ VOLUME_32x16 (%%xmm3, %%xmm2)
+ SWAP_16_2 (%%xmm0, %%xmm2)
+ " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */
+ " movq %%xmm2, 8(%0) \n\t" /* .. | p7*v7 .. p4*v4 | */
+ " add $16, %0 \n\t"
+ MOD_ADD ($8, %5)
+ " dec %2 \n\t"
+ " jne 7b \n\t"
+ "8: \n\t"
+
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" (channel), "=&r" (temp)
+ : "r" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+
+#undef RUN_TEST
+
+#ifdef RUN_TEST
+#define CHANNELS 2
+#define SAMPLES 1021
+#define TIMES 1000
+#define PADDING 16
+
+static void run_test (void) {
+ int16_t samples[SAMPLES];
+ int16_t samples_ref[SAMPLES];
+ int16_t samples_orig[SAMPLES];
+ int32_t volumes[CHANNELS + PADDING];
+ int i, j, padding;
+ pa_do_volume_func_t func;
+ pa_usec_t start, stop;
+
+ func = pa_get_volume_func (PA_SAMPLE_S16NE);
+
+ printf ("checking SSE %zd\n", sizeof (samples));
+
+ pa_random (samples, sizeof (samples));
+ memcpy (samples_ref, samples, sizeof (samples));
+ memcpy (samples_orig, samples, sizeof (samples));
+
+ for (i = 0; i < CHANNELS; i++)
+ volumes[i] = rand() >> 1;
+ for (padding = 0; padding < PADDING; padding++, i++)
+ volumes[i] = volumes[padding];
+
+ func (samples_ref, volumes, CHANNELS, sizeof (samples));
+ pa_volume_s16ne_sse (samples, volumes, CHANNELS, sizeof (samples));
+ for (i = 0; i < SAMPLES; i++) {
+ if (samples[i] != samples_ref[i]) {
+ printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i],
+ samples_orig[i], volumes[i % CHANNELS]);
+ }
+ }
+
+ start = pa_rtclock_now();
+ for (j = 0; j < TIMES; j++) {
+ memcpy (samples, samples_orig, sizeof (samples));
+ pa_volume_s16ne_sse (samples, volumes, CHANNELS, sizeof (samples));
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("SSE: %llu usec.", (long long unsigned int)(stop - start));
+
+ start = pa_rtclock_now();
+ for (j = 0; j < TIMES; j++) {
+ memcpy (samples_ref, samples_orig, sizeof (samples));
+ func (samples_ref, volumes, CHANNELS, sizeof (samples));
+ }
+ stop = pa_rtclock_now();
+ pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start));
+}
+#endif
+#endif /* defined (__i386__) || defined (__amd64__) */
+
+void pa_volume_func_init_sse (pa_cpu_x86_flag_t flags) {
+#if defined (__i386__) || defined (__amd64__)
+
+#ifdef RUN_TEST
+ run_test ();
+#endif
+
+ if (flags & PA_CPU_X86_SSE2) {
+ pa_log_info("Initialising SSE2 optimized functions.");
+
+ pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_sse2);
+ pa_set_volume_func (PA_SAMPLE_S16RE, (pa_do_volume_func_t) pa_volume_s16re_sse2);
+ }
+#endif /* defined (__i386__) || defined (__amd64__) */
+}
diff --git a/src/pulsecore/thread-mq.c b/src/pulsecore/thread-mq.c
index 34f92a7e..73997a74 100644
--- a/src/pulsecore/thread-mq.c
+++ b/src/pulsecore/thread-mq.c
@@ -59,7 +59,7 @@ static void asyncmsgq_read_cb(pa_mainloop_api*api, pa_io_event* e, int fd, pa_io
pa_memchunk chunk;
/* Check whether there is a message for us to process */
- while (pa_asyncmsgq_get(aq, &object, &code, &data, &offset, &chunk, 0) == 0) {
+ while (pa_asyncmsgq_get(aq, &object, &code, &data, &offset, &chunk, 0) >= 0) {
int ret;
ret = pa_asyncmsgq_dispatch(object, code, data, offset, &chunk);
@@ -104,6 +104,15 @@ void pa_thread_mq_init(pa_thread_mq *q, pa_mainloop_api *mainloop, pa_rtpoll *rt
void pa_thread_mq_done(pa_thread_mq *q) {
pa_assert(q);
+ /* Since we are called from main context we can be sure that the
+ * inq is empty. However, the outq might still contain messages
+ * for the main loop, which we need to dispatch (e.g. release
+ * msgs, other stuff). Hence do so if we aren't currently
+ * dispatching anyway. */
+
+ if (!pa_asyncmsgq_dispatching(q->outq))
+ pa_asyncmsgq_flush(q->outq, TRUE);
+
q->mainloop->io_free(q->read_event);
q->mainloop->io_free(q->write_event);
q->read_event = q->write_event = NULL;
diff --git a/src/pulsecore/thread-mq.h b/src/pulsecore/thread-mq.h
index 3b5e0e78..96839d25 100644
--- a/src/pulsecore/thread-mq.h
+++ b/src/pulsecore/thread-mq.h
@@ -45,4 +45,12 @@ void pa_thread_mq_install(pa_thread_mq *q);
/* Return the pa_thread_mq object that is set for the current thread */
pa_thread_mq *pa_thread_mq_get(void);
+/* Verify that we are in control context (aka 'main context'). */
+#define pa_assert_ctl_context(s) \
+ pa_assert(!pa_thread_mq_get())
+
+/* Verify that we are in IO context (aka 'thread context'). */
+#define pa_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get())
+
#endif
diff --git a/src/pulsecore/time-smoother.c b/src/pulsecore/time-smoother.c
index 9d5a0705..d6c37878 100644
--- a/src/pulsecore/time-smoother.c
+++ b/src/pulsecore/time-smoother.c
@@ -108,29 +108,11 @@ pa_smoother* pa_smoother_new(
s = pa_xnew(pa_smoother, 1);
s->adjust_time = adjust_time;
s->history_time = history_time;
- s->time_offset = 0;
+ s->min_history = min_history;
s->monotonic = monotonic;
-
- s->px = s->py = 0;
- s->dp = 1;
-
- s->ex = s->ey = s->ry = 0;
- s->de = 1;
-
- s->history_idx = 0;
- s->n_history = 0;
-
- s->last_y = s->last_x = 0;
-
- s->abc_valid = FALSE;
-
- s->paused = FALSE;
s->smoothing = smoothing;
- s->min_history = min_history;
-
- s->paused = paused;
- s->time_offset = s->pause_time = time_offset;
+ pa_smoother_reset(s, time_offset, paused);
return s;
}
@@ -514,9 +496,26 @@ pa_usec_t pa_smoother_translate(pa_smoother *s, pa_usec_t x, pa_usec_t y_delay)
return (pa_usec_t) llrint((double) y_delay / nde);
}
-void pa_smoother_reset(pa_smoother *s) {
+void pa_smoother_reset(pa_smoother *s, pa_usec_t time_offset, pa_bool_t paused) {
pa_assert(s);
+ s->px = s->py = 0;
+ s->dp = 1;
+
+ s->ex = s->ey = s->ry = 0;
+ s->de = 1;
+
+ s->history_idx = 0;
s->n_history = 0;
+
+ s->last_y = s->last_x = 0;
+
s->abc_valid = FALSE;
+
+ s->paused = paused;
+ s->time_offset = s->pause_time = time_offset;
+
+#ifdef DEBUG_DATA
+ pa_log_debug("reset()");
+#endif
}
diff --git a/src/pulsecore/time-smoother.h b/src/pulsecore/time-smoother.h
index 5244a7e7..63d33e48 100644
--- a/src/pulsecore/time-smoother.h
+++ b/src/pulsecore/time-smoother.h
@@ -52,7 +52,7 @@ void pa_smoother_set_time_offset(pa_smoother *s, pa_usec_t x_offset);
void pa_smoother_pause(pa_smoother *s, pa_usec_t x);
void pa_smoother_resume(pa_smoother *s, pa_usec_t x, pa_bool_t abrupt);
-void pa_smoother_reset(pa_smoother *s);
+void pa_smoother_reset(pa_smoother *s, pa_usec_t time_offset, pa_bool_t paused);
void pa_smoother_fix_now(pa_smoother *s);
diff --git a/src/pulsecore/usergroup.c b/src/pulsecore/usergroup.c
new file mode 100644
index 00000000..71b13bca
--- /dev/null
+++ b/src/pulsecore/usergroup.c
@@ -0,0 +1,372 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Ted Percival
+
+ 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 <sys/types.h>
+#include <errno.h>
+
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+
+#include <pulse/xmalloc.h>
+#include <pulsecore/macro.h>
+
+#include "usergroup.h"
+
+#ifdef HAVE_GRP_H
+
+/* Returns a suitable starting size for a getgrnam_r() or getgrgid_r() buffer,
+ plus the size of a struct group.
+ */
+static size_t starting_getgr_buflen(void) {
+ size_t full_size;
+ long n;
+#ifdef _SC_GETGR_R_SIZE_MAX
+ n = sysconf(_SC_GETGR_R_SIZE_MAX);
+#else
+ n = -1;
+#endif
+ if (n <= 0)
+ n = 512;
+
+ full_size = (size_t) n + sizeof(struct group);
+
+ if (full_size < (size_t) n) /* check for integer overflow */
+ return (size_t) n;
+
+ return full_size;
+}
+
+/* Returns a suitable starting size for a getpwnam_r() or getpwuid_r() buffer,
+ plus the size of a struct passwd.
+ */
+static size_t starting_getpw_buflen(void) {
+ long n;
+ size_t full_size;
+
+#ifdef _SC_GETPW_R_SIZE_MAX
+ n = sysconf(_SC_GETPW_R_SIZE_MAX);
+#else
+ n = -1;
+#endif
+ if (n <= 0)
+ n = 512;
+
+ full_size = (size_t) n + sizeof(struct passwd);
+
+ if (full_size < (size_t) n) /* check for integer overflow */
+ return (size_t) n;
+
+ return full_size;
+}
+
+/* Given a memory allocation (*bufptr) and its length (*buflenptr),
+ double the size of the allocation, updating the given buffer and length
+ arguments. This function should be used in conjunction with the pa_*alloc
+ and pa_xfree functions.
+
+ Unlike realloc(), this function does *not* retain the original buffer's
+ contents.
+
+ Returns 0 on success, nonzero on error. The error cause is indicated by
+ errno.
+ */
+static int expand_buffer_trashcontents(void **bufptr, size_t *buflenptr) {
+ size_t newlen;
+
+ if (!bufptr || !*bufptr || !buflenptr) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ newlen = *buflenptr * 2;
+
+ if (newlen < *buflenptr) {
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ /* Don't bother retaining memory contents; free & alloc anew */
+ pa_xfree(*bufptr);
+
+ *bufptr = pa_xmalloc(newlen);
+ *buflenptr = newlen;
+
+ return 0;
+}
+
+#ifdef HAVE_GETGRGID_R
+/* Thread-safe getgrgid() replacement.
+ Returned value should be freed using pa_getgrgid_free() when the caller is
+ finished with the returned group data.
+
+ API is the same as getgrgid(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct group *pa_getgrgid_malloc(gid_t gid) {
+ size_t buflen, getgr_buflen;
+ int err;
+ void *buf;
+ void *getgr_buf;
+ struct group *result = NULL;
+
+ buflen = starting_getgr_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+
+ while ((err = getgrgid_r(gid, (struct group *)buf, getgr_buf,
+ getgr_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getgrgid_free(struct group *grp) {
+ pa_xfree(grp);
+}
+
+#else /* !HAVE_GETGRGID_R */
+
+struct group *pa_getgrgid_malloc(gid_t gid) {
+ return getgrgid(gid);
+}
+
+void pa_getgrgid_free(struct group *grp) {
+ /* nothing */
+ return;
+}
+
+#endif /* !HAVE_GETGRGID_R */
+
+#ifdef HAVE_GETGRNAM_R
+/* Thread-safe getgrnam() function.
+ Returned value should be freed using pa_getgrnam_free() when the caller is
+ finished with the returned group data.
+
+ API is the same as getgrnam(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct group *pa_getgrnam_malloc(const char *name) {
+ size_t buflen, getgr_buflen;
+ int err;
+ void *buf;
+ void *getgr_buf;
+ struct group *result = NULL;
+
+ buflen = starting_getgr_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+
+ while ((err = getgrnam_r(name, (struct group *)buf, getgr_buf,
+ getgr_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getgrnam_free(struct group *group) {
+ pa_xfree(group);
+}
+
+#else /* !HAVE_GETGRNAM_R */
+
+struct group *pa_getgrnam_malloc(const char *name) {
+ return getgrnam(name);
+}
+
+void pa_getgrnam_free(struct group *group) {
+ /* nothing */
+ return;
+}
+
+#endif /* HAVE_GETGRNAM_R */
+
+#endif /* HAVE_GRP_H */
+
+#ifdef HAVE_PWD_H
+
+#ifdef HAVE_GETPWNAM_R
+/* Thread-safe getpwnam() function.
+ Returned value should be freed using pa_getpwnam_free() when the caller is
+ finished with the returned passwd data.
+
+ API is the same as getpwnam(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct passwd *pa_getpwnam_malloc(const char *name) {
+ size_t buflen, getpw_buflen;
+ int err;
+ void *buf;
+ void *getpw_buf;
+ struct passwd *result = NULL;
+
+ buflen = starting_getpw_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+
+ while ((err = getpwnam_r(name, (struct passwd *)buf, getpw_buf,
+ getpw_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getpwnam_free(struct passwd *passwd) {
+ pa_xfree(passwd);
+}
+
+#else /* !HAVE_GETPWNAM_R */
+
+struct passwd *pa_getpwnam_malloc(const char *name) {
+ return getpwnam(name);
+}
+
+void pa_getpwnam_free(struct passwd *passwd) {
+ /* nothing */
+ return;
+}
+
+#endif /* !HAVE_GETPWNAM_R */
+
+#ifdef HAVE_GETPWUID_R
+/* Thread-safe getpwuid() function.
+ Returned value should be freed using pa_getpwuid_free() when the caller is
+ finished with the returned group data.
+
+ API is the same as getpwuid(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct passwd *pa_getpwuid_malloc(uid_t uid) {
+ size_t buflen, getpw_buflen;
+ int err;
+ void *buf;
+ void *getpw_buf;
+ struct passwd *result = NULL;
+
+ buflen = starting_getpw_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+
+ while ((err = getpwuid_r(uid, (struct passwd *)buf, getpw_buf,
+ getpw_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getpwuid_free(struct passwd *passwd) {
+ pa_xfree(passwd);
+}
+
+#else /* !HAVE_GETPWUID_R */
+
+struct passwd *pa_getpwuid_malloc(uid_t uid) {
+ return getpwuid(uid);
+}
+
+void pa_getpwuid_free(struct passwd *passwd) {
+ /* nothing */
+ return;
+}
+
+#endif /* !HAVE_GETPWUID_R */
+
+#endif /* HAVE_PWD_H */
diff --git a/src/pulsecore/usergroup.h b/src/pulsecore/usergroup.h
new file mode 100644
index 00000000..1c091638
--- /dev/null
+++ b/src/pulsecore/usergroup.h
@@ -0,0 +1,51 @@
+#ifndef foousergrouphfoo
+#define foousergrouphfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Ted Percival
+
+ 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 <sys/types.h>
+
+#ifndef PACKAGE
+#error "Please include config.h before including this file!"
+#endif
+
+#ifdef HAVE_GRP_H
+
+struct group *pa_getgrgid_malloc(gid_t gid);
+void pa_getgrgid_free(struct group *grp);
+
+struct group *pa_getgrnam_malloc(const char *name);
+void pa_getgrnam_free(struct group *group);
+
+#endif /* HAVE_GRP_H */
+
+#ifdef HAVE_PWD_H
+
+struct passwd *pa_getpwuid_malloc(uid_t uid);
+void pa_getpwuid_free(struct passwd *passwd);
+
+struct passwd *pa_getpwnam_malloc(const char *name);
+void pa_getpwnam_free(struct passwd *passwd);
+
+#endif /* HAVE_PWD_H */
+
+#endif /* foousergrouphfoo */
diff --git a/src/pulsecore/vector.h b/src/pulsecore/vector.h
index 924e3cb8..9de3b8cd 100644
--- a/src/pulsecore/vector.h
+++ b/src/pulsecore/vector.h
@@ -23,7 +23,8 @@
#include <inttypes.h>
/* First, define HAVE_VECTOR if we have the gcc vector extensions at all */
-#if defined(__SSE2__) || defined(__ALTIVEC__)
+#if defined(__SSE2__)
+ /* || defined(__ALTIVEC__)*/
#define HAVE_VECTOR
diff --git a/src/tests/envelope-test.c b/src/tests/envelope-test.c
index 3af3044e..9382040b 100644
--- a/src/tests/envelope-test.c
+++ b/src/tests/envelope-test.c
@@ -34,8 +34,6 @@
#include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h>
-#include <liboil/liboil.h>
-
const pa_envelope_def ramp_down = {
.n_points = 2,
.points_x = { 100*PA_USEC_PER_MSEC, 300*PA_USEC_PER_MSEC },
@@ -202,7 +200,6 @@ int main(int argc, char *argv[]) {
.values = { PA_VOLUME_NORM, PA_VOLUME_NORM/2 }
};
- oil_init();
pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
diff --git a/src/tests/get-binary-name-test.c b/src/tests/get-binary-name-test.c
index a34e38fd..e49f2eff 100644
--- a/src/tests/get-binary-name-test.c
+++ b/src/tests/get-binary-name-test.c
@@ -23,12 +23,33 @@
#include <limits.h>
#include <stdio.h>
+#include <string.h>
#include <pulse/util.h>
+#include <pulse/xmalloc.h>
int main(int argc, char *argv[]) {
- char exename[PATH_MAX];
+ char *exename;
+ size_t allocated = 128;
+
+ for (;;) {
+ exename = pa_xmalloc(allocated);
+
+ if (!pa_get_binary_name(exename, allocated)) {
+ printf("failed to read binary name\n");
+ pa_xfree(exename);
+ break;
+ }
+
+ if (strlen(exename) < allocated - 1) {
+ printf("%s\n", exename);
+ pa_xfree(exename);
+ break;
+ }
+
+ pa_xfree(exename);
+ allocated *= 2;
+ }
- printf("%s\n", pa_get_binary_name(exename, sizeof(exename)));
return 0;
}
diff --git a/src/tests/interpol-test.c b/src/tests/interpol-test.c
index 0c906d3e..007555c3 100644
--- a/src/tests/interpol-test.c
+++ b/src/tests/interpol-test.c
@@ -43,20 +43,37 @@ static pa_context *context = NULL;
static pa_stream *stream = NULL;
static pa_mainloop_api *mainloop_api = NULL;
static pa_bool_t playback = TRUE;
+static pa_usec_t latency = 0;
static void stream_write_cb(pa_stream *p, size_t nbytes, void *userdata) {
/* Just some silence */
- pa_assert_se(pa_stream_write(p, pa_xmalloc0(nbytes), nbytes, pa_xfree, 0, PA_SEEK_RELATIVE) == 0);
+
+ for (;;) {
+ void *data;
+
+ pa_assert_se((nbytes = pa_stream_writable_size(p)) != (size_t) -1);
+
+ if (nbytes <= 0)
+ break;
+
+ pa_assert_se(pa_stream_begin_write(p, &data, &nbytes) == 0);
+ pa_memzero(data, nbytes);
+ pa_assert_se(pa_stream_write(p, data, nbytes, NULL, 0, PA_SEEK_RELATIVE) == 0);
+ }
}
static void stream_read_cb(pa_stream *p, size_t nbytes, void *userdata) {
- /* We don't care, just drop the data */
+ /* We don't care about the data, just drop it */
- while (pa_stream_readable_size(p) > 0) {
- const void *d;
- size_t b;
+ for (;;) {
+ const void *data;
- pa_assert_se(pa_stream_peek(p, &d, &b) == 0);
+ pa_assert_se((nbytes = pa_stream_readable_size(p)) != (size_t) -1);
+
+ if (nbytes <= 0)
+ break;
+
+ pa_assert_se(pa_stream_peek(p, &data, &nbytes) == 0);
pa_assert_se(pa_stream_drop(p) == 0);
}
}
@@ -82,27 +99,36 @@ static void context_state_callback(pa_context *c, void *userdata) {
case PA_CONTEXT_READY: {
pa_stream_flags_t flags = PA_STREAM_AUTO_TIMING_UPDATE;
-
+ pa_buffer_attr attr;
static const pa_sample_spec ss = {
.format = PA_SAMPLE_S16LE,
.rate = 44100,
.channels = 2
};
+ pa_zero(attr);
+ attr.maxlength = (uint32_t) -1;
+ attr.tlength = latency > 0 ? (uint32_t) pa_usec_to_bytes(latency, &ss) : (uint32_t) -1;
+ attr.prebuf = (uint32_t) -1;
+ attr.minreq = (uint32_t) -1;
+ attr.fragsize = (uint32_t) -1;
+
#ifdef INTERPOLATE
flags |= PA_STREAM_INTERPOLATE_TIMING;
#endif
+ if (latency > 0)
+ flags |= PA_STREAM_ADJUST_LATENCY;
+
fprintf(stderr, "Connection established.\n");
- stream = pa_stream_new(c, "interpol-test", &ss, NULL);
- assert(stream);
+ pa_assert_se(stream = pa_stream_new(c, "interpol-test", &ss, NULL));
if (playback) {
- pa_assert_se(pa_stream_connect_playback(stream, NULL, NULL, flags, NULL, NULL) == 0);
+ pa_assert_se(pa_stream_connect_playback(stream, NULL, &attr, flags, NULL, NULL) == 0);
pa_stream_set_write_callback(stream, stream_write_cb, NULL);
} else {
- pa_assert_se(pa_stream_connect_record(stream, NULL, NULL, flags) == 0);
+ pa_assert_se(pa_stream_connect_record(stream, NULL, &attr, flags) == 0);
pa_stream_set_read_callback(stream, stream_read_cb, NULL);
}
@@ -123,7 +149,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
int main(int argc, char *argv[]) {
pa_threaded_mainloop* m = NULL;
- int k, r;
+ int k;
struct timeval start, last_info = { 0, 0 };
pa_usec_t old_t = 0, old_rtc = 0;
#ifdef CORK
@@ -134,24 +160,22 @@ int main(int argc, char *argv[]) {
playback = argc <= 1 || !pa_streq(argv[1], "-r");
- /* Set up a new main loop */
- m = pa_threaded_mainloop_new();
- assert(m);
-
- mainloop_api = pa_threaded_mainloop_get_api(m);
+ latency =
+ (argc >= 2 && !pa_streq(argv[1], "-r")) ? atoi(argv[1]) :
+ (argc >= 3 ? atoi(argv[2]) : 0);
- context = pa_context_new(mainloop_api, argv[0]);
- assert(context);
+ /* Set up a new main loop */
+ pa_assert_se(m = pa_threaded_mainloop_new());
+ pa_assert_se(mainloop_api = pa_threaded_mainloop_get_api(m));
+ pa_assert_se(context = pa_context_new(mainloop_api, argv[0]));
pa_context_set_state_callback(context, context_state_callback, NULL);
- r = pa_context_connect(context, NULL, 0, NULL);
- assert(r >= 0);
+ pa_assert_se(pa_context_connect(context, NULL, 0, NULL) >= 0);
pa_gettimeofday(&start);
- r = pa_threaded_mainloop_start(m);
- assert(r >= 0);
+ pa_assert_se(pa_threaded_mainloop_start(m) >= 0);
/* #ifdef CORK */
for (k = 0; k < 20000; k++)
@@ -160,7 +184,7 @@ int main(int argc, char *argv[]) {
/* #endif */
{
pa_bool_t success = FALSE, changed = FALSE;
- pa_usec_t t, rtc;
+ pa_usec_t t, rtc, d;
struct timeval now, tv;
pa_bool_t playing = FALSE;
@@ -169,7 +193,8 @@ int main(int argc, char *argv[]) {
if (stream) {
const pa_timing_info *info;
- if (pa_stream_get_time(stream, &t) >= 0)
+ if (pa_stream_get_time(stream, &t) >= 0 &&
+ pa_stream_get_latency(stream, &d, NULL) >= 0)
success = TRUE;
if ((info = pa_stream_get_timing_info(stream))) {
@@ -191,14 +216,16 @@ int main(int argc, char *argv[]) {
pa_bool_t cork_now;
#endif
rtc = pa_timeval_diff(&now, &start);
- printf("%i\t%llu\t%llu\t%llu\t%llu\t%lli\t%u\t%u\n", k,
+ printf("%i\t%llu\t%llu\t%llu\t%llu\t%lli\t%u\t%u\t%llu\t%llu\n", k,
(unsigned long long) rtc,
(unsigned long long) t,
(unsigned long long) (rtc-old_rtc),
(unsigned long long) (t-old_t),
(signed long long) rtc - (signed long long) t,
changed,
- playing);
+ playing,
+ (unsigned long long) latency,
+ (unsigned long long) d);
fflush(stdout);
old_t = t;
diff --git a/src/tests/mix-test.c b/src/tests/mix-test.c
index c7a30d67..457c4acd 100644
--- a/src/tests/mix-test.c
+++ b/src/tests/mix-test.c
@@ -32,8 +32,6 @@
#include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h>
-#include <liboil/liboil.h>
-
static float swap_float(float a) {
uint32_t *b = (uint32_t*) &a;
*b = PA_UINT32_SWAP(*b);
@@ -69,6 +67,8 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
break;
}
+ case PA_SAMPLE_S24_32NE:
+ case PA_SAMPLE_S24_32RE:
case PA_SAMPLE_S32NE:
case PA_SAMPLE_S32RE: {
uint32_t *u = d;
@@ -83,8 +83,10 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
case PA_SAMPLE_S24RE: {
uint8_t *u = d;
- for (i = 0; i < chunk->length / pa_frame_size(ss); i++)
- printf("0x%02x%02x%02xx ", *(u++), *(u++), *(u++));
+ for (i = 0; i < chunk->length / pa_frame_size(ss); i++) {
+ printf("0x%02x%02x%02xx ", *u, *(u+1), *(u+2));
+ u += 3;
+ }
break;
}
@@ -123,66 +125,72 @@ static pa_memblock* generate_block(pa_mempool *pool, const pa_sample_spec *ss) {
case PA_SAMPLE_U8:
case PA_SAMPLE_ULAW:
case PA_SAMPLE_ALAW: {
- static const uint8_t u8_samples[] =
- { 0x00, 0xFF, 0x7F, 0x80, 0x9f,
- 0x3f, 0x01, 0xF0, 0x20, 0x21 };
+ static const uint8_t u8_samples[] = {
+ 0x00, 0xFF, 0x7F, 0x80, 0x9f,
+ 0x3f, 0x01, 0xF0, 0x20, 0x21
+ };
- memcpy(d, &u8_samples[0], sizeof(u8_samples));
+ memcpy(d, u8_samples, sizeof(u8_samples));
break;
}
case PA_SAMPLE_S16NE:
case PA_SAMPLE_S16RE: {
- static const uint16_t u16_samples[] =
- { 0x0000, 0xFFFF, 0x7FFF, 0x8000, 0x9fff,
- 0x3fff, 0x0001, 0xF000, 0x0020, 0x0021 };
+ static const uint16_t u16_samples[] = {
+ 0x0000, 0xFFFF, 0x7FFF, 0x8000, 0x9fff,
+ 0x3fff, 0x0001, 0xF000, 0x0020, 0x0021
+ };
- memcpy(d, &u16_samples[0], sizeof(u16_samples));
+ memcpy(d, u16_samples, sizeof(u16_samples));
break;
}
+ case PA_SAMPLE_S24_32NE:
+ case PA_SAMPLE_S24_32RE:
case PA_SAMPLE_S32NE:
case PA_SAMPLE_S32RE: {
- static const uint32_t u32_samples[] =
- { 0x00000001, 0xFFFF0002, 0x7FFF0003, 0x80000004, 0x9fff0005,
- 0x3fff0006, 0x00010007, 0xF0000008, 0x00200009, 0x0021000A };
+ static const uint32_t u32_samples[] = {
+ 0x00000001, 0xFFFF0002, 0x7FFF0003, 0x80000004, 0x9fff0005,
+ 0x3fff0006, 0x00010007, 0xF0000008, 0x00200009, 0x0021000A
+ };
- memcpy(d, &u32_samples[0], sizeof(u32_samples));
+ memcpy(d, u32_samples, sizeof(u32_samples));
break;
}
case PA_SAMPLE_S24NE:
case PA_SAMPLE_S24RE: {
- /* Need to be on a byte array because they are not aligned */
- static const uint8_t u24_samples[] =
- { 0x00, 0x00, 0x01,
- 0xFF, 0xFF, 0x02,
- 0x7F, 0xFF, 0x03,
- 0x80, 0x00, 0x04,
- 0x9f, 0xff, 0x05,
- 0x3f, 0xff, 0x06,
- 0x01, 0x00, 0x07,
- 0xF0, 0x00, 0x08,
- 0x20, 0x00, 0x09,
- 0x21, 0x00, 0x0A };
-
- memcpy(d, &u24_samples[0], sizeof(u24_samples));
+ /* Need to be on a byte array because they are not aligned */
+ static const uint8_t u24_samples[] = {
+ 0x00, 0x00, 0x01,
+ 0xFF, 0xFF, 0x02,
+ 0x7F, 0xFF, 0x03,
+ 0x80, 0x00, 0x04,
+ 0x9f, 0xff, 0x05,
+ 0x3f, 0xff, 0x06,
+ 0x01, 0x00, 0x07,
+ 0xF0, 0x00, 0x08,
+ 0x20, 0x00, 0x09,
+ 0x21, 0x00, 0x0A
+ };
+
+ memcpy(d, u24_samples, sizeof(u24_samples));
break;
}
case PA_SAMPLE_FLOAT32NE:
case PA_SAMPLE_FLOAT32RE: {
float *u = d;
- static const float float_samples[] =
- { 0.0f, -1.0f, 1.0f, 4711.0f, 0.222f,
- 0.33f, -.3f, 99.0f, -0.555f, -.123f };
+ static const float float_samples[] = {
+ 0.0f, -1.0f, 1.0f, 4711.0f, 0.222f,
+ 0.33f, -.3f, 99.0f, -0.555f, -.123f
+ };
if (ss->format == PA_SAMPLE_FLOAT32RE) {
for (i = 0; i < 10; i++)
u[i] = swap_float(float_samples[i]);
- } else {
- memcpy(d, &float_samples[0], sizeof(float_samples));
- }
+ } else
+ memcpy(d, float_samples, sizeof(float_samples));
break;
}
@@ -201,7 +209,6 @@ int main(int argc, char *argv[]) {
pa_sample_spec a;
pa_cvolume v;
- oil_init();
pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
diff --git a/src/tests/remix-test.c b/src/tests/remix-test.c
index 9d110d6b..4990bf93 100644
--- a/src/tests/remix-test.c
+++ b/src/tests/remix-test.c
@@ -32,8 +32,6 @@
#include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h>
-#include <liboil/liboil.h>
-
int main(int argc, char *argv[]) {
static const pa_channel_map maps[] = {
@@ -55,7 +53,6 @@ int main(int argc, char *argv[]) {
unsigned i, j;
pa_mempool *pool;
- oil_init();
pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
diff --git a/src/tests/resampler-test.c b/src/tests/resampler-test.c
index 7236265a..82198b5e 100644
--- a/src/tests/resampler-test.c
+++ b/src/tests/resampler-test.c
@@ -32,8 +32,6 @@
#include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h>
-#include <liboil/liboil.h>
-
static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
void *d;
unsigned i;
@@ -248,7 +246,6 @@ int main(int argc, char *argv[]) {
pa_sample_spec a, b;
pa_cvolume v;
- oil_init();
pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
diff --git a/src/tests/stripnul.c b/src/tests/stripnul.c
index 1d8c4938..d677ad20 100644
--- a/src/tests/stripnul.c
+++ b/src/tests/stripnul.c
@@ -31,7 +31,7 @@
int main(int argc, char *argv[]) {
FILE *i, *o;
size_t granularity;
- pa_bool_t found;
+ pa_bool_t found = FALSE;
uint8_t *zero;
pa_assert_se(argc >= 2);
diff --git a/src/tests/usergroup-test.c b/src/tests/usergroup-test.c
new file mode 100644
index 00000000..a48b016d
--- /dev/null
+++ b/src/tests/usergroup-test.c
@@ -0,0 +1,161 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Ted Percival
+
+ 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 <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+#include <errno.h>
+
+#include <pulsecore/usergroup.h>
+
+static int load_reference_structs(struct group **gr, struct passwd **pw) {
+ setpwent();
+ *pw = getpwent();
+ endpwent();
+
+ setgrent();
+ *gr = getgrent();
+ endgrent();
+
+ return (*gr && *pw) ? 0 : 1;
+}
+
+static int compare_group(const struct group *a, const struct group *b) {
+ char **amem, **bmem;
+
+ if (strcmp(a->gr_name, b->gr_name)) {
+ fprintf(stderr, "Group name mismatch: [%s] [%s]\n",
+ a->gr_name, b->gr_name);
+ return 1;
+ }
+
+ if (strcmp(a->gr_passwd, b->gr_passwd)) {
+ fprintf(stderr, "Group password mismatch: [%s] [%s]\n",
+ a->gr_passwd, b->gr_passwd);
+ return 1;
+ }
+
+ if (a->gr_gid != b->gr_gid) {
+ fprintf(stderr, "Gid mismatch: [%lu] [%lu]\n",
+ (unsigned long) a->gr_gid, (unsigned long) b->gr_gid);
+ return 1;
+ }
+
+ /* XXX: Assuming the group ordering is identical. */
+ for (amem = a->gr_mem, bmem = b->gr_mem; *amem && *bmem; ++amem, ++bmem) {
+ if (strcmp(*amem, *bmem)) {
+ fprintf(stderr, "Group member mismatch: [%s] [%s]\n",
+ *amem, *bmem);
+ return 1;
+ }
+ }
+
+ if (*amem || *bmem) {
+ fprintf(stderr, "Mismatched group count\n");
+ return 1;
+ }
+
+ return 0;
+}
+
+static int compare_passwd(const struct passwd *a, const struct passwd *b) {
+ if (strcmp(a->pw_name, b->pw_name)) {
+ fprintf(stderr, "pw_name mismatch: [%s] [%s]\n", a->pw_name, b->pw_name);
+ return 1;
+ }
+
+ if (strcmp(a->pw_passwd, b->pw_passwd)) {
+ fprintf(stderr, "pw_passwd mismatch: [%s] [%s]\n", a->pw_passwd, b->pw_passwd);
+ return 1;
+ }
+
+ if (a->pw_uid != b->pw_uid) {
+ fprintf(stderr, "pw_uid mismatch: [%lu] [%lu]\n",
+ (unsigned long) a->pw_uid, (unsigned long) b->pw_uid);
+ return 1;
+ }
+
+ if (a->pw_gid != b->pw_gid) {
+ fprintf(stderr, "pw_gid mismatch: [%lu] [%lu]\n",
+ (unsigned long) a->pw_gid, (unsigned long) b->pw_gid);
+ return 1;
+ }
+
+ if (strcmp(a->pw_gecos, b->pw_gecos)) {
+ fprintf(stderr, "pw_gecos mismatch: [%s] [%s]\n", a->pw_gecos, b->pw_gecos);
+ return 1;
+ }
+
+ if (strcmp(a->pw_dir, b->pw_dir)) {
+ fprintf(stderr, "pw_dir mismatch: [%s] [%s]\n", a->pw_dir, b->pw_dir);
+ return 1;
+ }
+
+ if (strcmp(a->pw_shell, b->pw_shell)) {
+ fprintf(stderr, "pw_shell mismatch: [%s] [%s]\n", a->pw_shell, b->pw_shell);
+ return 1;
+ }
+
+ return 0;
+}
+
+int main(int argc, char *argv[]) {
+ struct group *gr;
+ struct passwd *pw;
+ int err;
+ struct group *reference_group = NULL;
+ struct passwd *reference_passwd = NULL;
+
+ err = load_reference_structs(&reference_group, &reference_passwd);
+ if (err)
+ return 77;
+
+ errno = 0;
+ gr = pa_getgrgid_malloc(reference_group->gr_gid);
+ if (compare_group(reference_group, gr))
+ return 1;
+ pa_getgrgid_free(gr);
+
+ errno = 0;
+ gr = pa_getgrnam_malloc(reference_group->gr_name);
+ if (compare_group(reference_group, gr))
+ return 1;
+ pa_getgrnam_free(gr);
+
+ errno = 0;
+ pw = pa_getpwuid_malloc(reference_passwd->pw_uid);
+ if (compare_passwd(reference_passwd, pw))
+ return 1;
+ pa_getpwuid_free(pw);
+
+ errno = 0;
+ pw = pa_getpwnam_malloc(reference_passwd->pw_name);
+ if (compare_passwd(reference_passwd, pw))
+ return 1;
+ pa_getpwnam_free(pw);
+
+ return 0;
+}
diff --git a/src/tests/voltest.c b/src/tests/voltest.c
index 2dcfa53c..551f7ecd 100644
--- a/src/tests/voltest.c
+++ b/src/tests/voltest.c
@@ -1,13 +1,40 @@
+/***
+ 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <stdio.h>
#include <pulse/volume.h>
#include <pulse/gccmacro.h>
+#include <pulsecore/macro.h>
+
int main(int argc, char *argv[]) {
pa_volume_t v;
pa_cvolume cv;
float b;
pa_channel_map map;
+ pa_volume_t md = 0;
+ unsigned mdn = 0;
printf("Attenuation of sample 1 against 32767: %g dB\n", 20.0*log10(1.0/32767.0));
printf("Smallest possible attenutation > 0 applied to 32767: %li\n", lrint(32767.0*pa_sw_volume_to_linear(1)));
@@ -60,5 +87,48 @@ int main(int argc, char *argv[]) {
printf("After: volume: [%s]; balance: %2.1f (intended: %2.1f) %s\n", pa_cvolume_snprint(s, sizeof(s), &r), k, b, k < b-.05 || k > b+.5 ? "MISMATCH" : "");
}
+ for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 51) {
+
+ double l = pa_sw_volume_to_linear(v);
+ pa_volume_t k = pa_sw_volume_from_linear(l);
+ double db = pa_sw_volume_to_dB(v);
+ pa_volume_t r = pa_sw_volume_from_dB(db);
+ pa_volume_t w;
+
+ pa_assert(k == v);
+ pa_assert(r == v);
+
+ for (w = PA_VOLUME_MUTED; w < PA_VOLUME_NORM*2; w += 37) {
+
+ double t = pa_sw_volume_to_linear(w);
+ double db2 = pa_sw_volume_to_dB(w);
+ pa_volume_t p, p1, p2;
+ double q, qq;
+
+ p = pa_sw_volume_multiply(v, w);
+ qq = db + db2;
+ p2 = pa_sw_volume_from_dB(qq);
+ q = l*t;
+ p1 = pa_sw_volume_from_linear(q);
+
+ if (p2 > p && p2 - p > md)
+ md = p2 - p;
+ if (p2 < p && p - p2 > md)
+ md = p - p2;
+ if (p1 > p && p1 - p > md)
+ md = p1 - p;
+ if (p1 < p && p - p1 > md)
+ md = p - p1;
+
+ if (p1 != p || p2 != p)
+ mdn++;
+ }
+ }
+
+ printf("max deviation: %lu n=%lu\n", (unsigned long) md, (unsigned long) mdn);
+
+ pa_assert(md <= 1);
+ pa_assert(mdn <= 251);
+
return 0;
}
diff --git a/src/utils/pacat.c b/src/utils/pacat.c
index f00a32eb..781bfa33 100644
--- a/src/utils/pacat.c
+++ b/src/utils/pacat.c
@@ -105,12 +105,12 @@ static void context_drain_complete(pa_context*c, void *userdata) {
static void stream_drain_complete(pa_stream*s, int success, void *userdata) {
if (!success) {
- pa_log(_("Failed to drain stream: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("Failed to drain stream: %s"), pa_strerror(pa_context_errno(context)));
quit(1);
}
if (verbose)
- pa_log(_("Playback stream drained.\n"));
+ pa_log(_("Playback stream drained."));
pa_stream_disconnect(stream);
pa_stream_unref(stream);
@@ -120,7 +120,7 @@ static void stream_drain_complete(pa_stream*s, int success, void *userdata) {
pa_context_disconnect(context);
else {
if (verbose)
- pa_log(_("Draining connection to server.\n"));
+ pa_log(_("Draining connection to server."));
}
}
@@ -133,7 +133,7 @@ static void start_drain(void) {
pa_stream_set_write_callback(stream, NULL, NULL);
if (!(o = pa_stream_drain(stream, stream_drain_complete, NULL))) {
- pa_log(_("pa_stream_drain(): %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_stream_drain(): %s"), pa_strerror(pa_context_errno(context)));
quit(1);
return;
}
@@ -156,7 +156,7 @@ static void do_stream_write(size_t length) {
l = buffer_length;
if (pa_stream_write(stream, (uint8_t*) buffer + buffer_index, l, NULL, 0, PA_SEEK_RELATIVE) < 0) {
- pa_log(_("pa_stream_write() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_stream_write() failed: %s"), pa_strerror(pa_context_errno(context)));
quit(1);
return;
}
@@ -193,7 +193,11 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
pa_assert(sndfile);
- data = pa_xmalloc(length);
+ if (pa_stream_begin_write(s, &data, &length) < 0) {
+ pa_log(_("pa_stream_begin_write() failed: %s"), pa_strerror(pa_context_errno(context)));
+ quit(1);
+ return;
+ }
if (readf_function) {
size_t k = pa_frame_size(&sample_spec);
@@ -205,9 +209,9 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
bytes = sf_read_raw(sndfile, data, (sf_count_t) length);
if (bytes > 0)
- pa_stream_write(s, data, (size_t) bytes, pa_xfree, 0, PA_SEEK_RELATIVE);
+ pa_stream_write(s, data, (size_t) bytes, NULL, 0, PA_SEEK_RELATIVE);
else
- pa_xfree(data);
+ pa_stream_cancel_write(s);
if (bytes < (sf_count_t) length)
start_drain();
@@ -226,12 +230,11 @@ static void stream_read_callback(pa_stream *s, size_t length, void *userdata) {
if (stdio_event)
mainloop_api->io_enable(stdio_event, PA_IO_EVENT_OUTPUT);
-
while (pa_stream_readable_size(s) > 0) {
const void *data;
if (pa_stream_peek(s, &data, &length) < 0) {
- pa_log(_("pa_stream_peek() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_stream_peek() failed: %s"), pa_strerror(pa_context_errno(context)));
quit(1);
return;
}
@@ -249,6 +252,7 @@ static void stream_read_callback(pa_stream *s, size_t length, void *userdata) {
buffer_length = length;
buffer_index = 0;
}
+
pa_stream_drop(s);
}
@@ -260,7 +264,7 @@ static void stream_read_callback(pa_stream *s, size_t length, void *userdata) {
const void *data;
if (pa_stream_peek(s, &data, &length) < 0) {
- pa_log(_("pa_stream_peek() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_stream_peek() failed: %s"), pa_strerror(pa_context_errno(context)));
quit(1);
return;
}
@@ -300,25 +304,25 @@ static void stream_state_callback(pa_stream *s, void *userdata) {
const pa_buffer_attr *a;
char cmt[PA_CHANNEL_MAP_SNPRINT_MAX], sst[PA_SAMPLE_SPEC_SNPRINT_MAX];
- pa_log(_("Stream successfully created.\n"));
+ pa_log(_("Stream successfully created."));
if (!(a = pa_stream_get_buffer_attr(s)))
- pa_log(_("pa_stream_get_buffer_attr() failed: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
+ pa_log(_("pa_stream_get_buffer_attr() failed: %s"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
else {
if (mode == PLAYBACK)
- pa_log(_("Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"), a->maxlength, a->tlength, a->prebuf, a->minreq);
+ pa_log(_("Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"), a->maxlength, a->tlength, a->prebuf, a->minreq);
else {
pa_assert(mode == RECORD);
- pa_log(_("Buffer metrics: maxlength=%u, fragsize=%u\n"), a->maxlength, a->fragsize);
+ pa_log(_("Buffer metrics: maxlength=%u, fragsize=%u"), a->maxlength, a->fragsize);
}
}
- pa_log(_("Using sample spec '%s', channel map '%s'.\n"),
+ pa_log(_("Using sample spec '%s', channel map '%s'."),
pa_sample_spec_snprint(sst, sizeof(sst), pa_stream_get_sample_spec(s)),
pa_channel_map_snprint(cmt, sizeof(cmt), pa_stream_get_channel_map(s)));
- pa_log(_("Connected to device %s (%u, %ssuspended).\n"),
+ pa_log(_("Connected to device %s (%u, %ssuspended)."),
pa_stream_get_device_name(s),
pa_stream_get_device_index(s),
pa_stream_is_suspended(s) ? "" : "not ");
@@ -328,7 +332,7 @@ static void stream_state_callback(pa_stream *s, void *userdata) {
case PA_STREAM_FAILED:
default:
- pa_log(_("Stream error: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
+ pa_log(_("Stream error: %s"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
quit(1);
}
}
@@ -338,9 +342,9 @@ static void stream_suspended_callback(pa_stream *s, void *userdata) {
if (verbose) {
if (pa_stream_is_suspended(s))
- pa_log(_("Stream device suspended.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream device suspended.%s"), CLEAR_LINE);
else
- pa_log(_("Stream device resumed.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream device resumed.%s"), CLEAR_LINE);
}
}
@@ -348,35 +352,35 @@ static void stream_underflow_callback(pa_stream *s, void *userdata) {
pa_assert(s);
if (verbose)
- pa_log(_("Stream underrun.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream underrun.%s"), CLEAR_LINE);
}
static void stream_overflow_callback(pa_stream *s, void *userdata) {
pa_assert(s);
if (verbose)
- pa_log(_("Stream overrun.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream overrun.%s"), CLEAR_LINE);
}
static void stream_started_callback(pa_stream *s, void *userdata) {
pa_assert(s);
if (verbose)
- pa_log(_("Stream started.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream started.%s"), CLEAR_LINE);
}
static void stream_moved_callback(pa_stream *s, void *userdata) {
pa_assert(s);
if (verbose)
- pa_log(_("Stream moved to device %s (%u, %ssuspended).%s \n"), pa_stream_get_device_name(s), pa_stream_get_device_index(s), pa_stream_is_suspended(s) ? "" : _("not "), CLEAR_LINE);
+ pa_log(_("Stream moved to device %s (%u, %ssuspended).%s"), pa_stream_get_device_name(s), pa_stream_get_device_index(s), pa_stream_is_suspended(s) ? "" : _("not "), CLEAR_LINE);
}
static void stream_buffer_attr_callback(pa_stream *s, void *userdata) {
pa_assert(s);
if (verbose)
- pa_log(_("Stream buffer attributes changed.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream buffer attributes changed.%s"), CLEAR_LINE);
}
static void stream_event_callback(pa_stream *s, const char *name, pa_proplist *pl, void *userdata) {
@@ -387,7 +391,7 @@ static void stream_event_callback(pa_stream *s, const char *name, pa_proplist *p
pa_assert(pl);
t = pa_proplist_to_string_sep(pl, ", ");
- pa_log("Got event '%s', properties '%s'\n", name, t);
+ pa_log("Got event '%s', properties '%s'", name, t);
pa_xfree(t);
}
@@ -402,17 +406,16 @@ static void context_state_callback(pa_context *c, void *userdata) {
break;
case PA_CONTEXT_READY: {
- int r;
pa_buffer_attr buffer_attr;
pa_assert(c);
pa_assert(!stream);
if (verbose)
- pa_log(_("Connection established.%s \n"), CLEAR_LINE);
+ pa_log(_("Connection established.%s"), CLEAR_LINE);
if (!(stream = pa_stream_new_with_proplist(c, NULL, &sample_spec, &channel_map, proplist))) {
- pa_log(_("pa_stream_new() failed: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("pa_stream_new() failed: %s"), pa_strerror(pa_context_errno(c)));
goto fail;
}
@@ -439,14 +442,14 @@ static void context_state_callback(pa_context *c, void *userdata) {
if (mode == PLAYBACK) {
pa_cvolume cv;
- if ((r = pa_stream_connect_playback(stream, device, latency > 0 ? &buffer_attr : NULL, flags, volume_is_set ? pa_cvolume_set(&cv, sample_spec.channels, volume) : NULL, NULL)) < 0) {
- pa_log(_("pa_stream_connect_playback() failed: %s\n"), pa_strerror(pa_context_errno(c)));
+ if (pa_stream_connect_playback(stream, device, latency > 0 ? &buffer_attr : NULL, flags, volume_is_set ? pa_cvolume_set(&cv, sample_spec.channels, volume) : NULL, NULL) < 0) {
+ pa_log(_("pa_stream_connect_playback() failed: %s"), pa_strerror(pa_context_errno(c)));
goto fail;
}
} else {
- if ((r = pa_stream_connect_record(stream, device, latency > 0 ? &buffer_attr : NULL, flags)) < 0) {
- pa_log(_("pa_stream_connect_record() failed: %s\n"), pa_strerror(pa_context_errno(c)));
+ if (pa_stream_connect_record(stream, device, latency > 0 ? &buffer_attr : NULL, flags) < 0) {
+ pa_log(_("pa_stream_connect_record() failed: %s"), pa_strerror(pa_context_errno(c)));
goto fail;
}
}
@@ -460,7 +463,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
case PA_CONTEXT_FAILED:
default:
- pa_log(_("Connection failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Connection failure: %s"), pa_strerror(pa_context_errno(c)));
goto fail;
}
@@ -493,12 +496,12 @@ static void stdin_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_even
if ((r = read(fd, buffer, l)) <= 0) {
if (r == 0) {
if (verbose)
- pa_log(_("Got EOF.\n"));
+ pa_log(_("Got EOF."));
start_drain();
} else {
- pa_log(_("read() failed: %s\n"), strerror(errno));
+ pa_log(_("read() failed: %s"), strerror(errno));
quit(1);
}
@@ -530,7 +533,7 @@ static void stdout_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_eve
pa_assert(buffer_length);
if ((r = write(fd, (uint8_t*) buffer+buffer_index, buffer_length)) <= 0) {
- pa_log(_("write() failed: %s\n"), strerror(errno));
+ pa_log(_("write() failed: %s"), strerror(errno));
quit(1);
mainloop_api->io_free(stdio_event);
@@ -551,7 +554,7 @@ static void stdout_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_eve
/* UNIX signal to quit recieved */
static void exit_signal_callback(pa_mainloop_api*m, pa_signal_event *e, int sig, void *userdata) {
if (verbose)
- pa_log(_("Got signal, exiting.\n"));
+ pa_log(_("Got signal, exiting."));
quit(0);
}
@@ -565,14 +568,15 @@ static void stream_update_timing_callback(pa_stream *s, int success, void *userd
if (!success ||
pa_stream_get_time(s, &usec) < 0 ||
pa_stream_get_latency(s, &l, &negative) < 0) {
- pa_log(_("Failed to get latency: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("Failed to get latency: %s"), pa_strerror(pa_context_errno(context)));
quit(1);
return;
}
- pa_log(_("Time: %0.3f sec; Latency: %0.0f usec. \r"),
+ fprintf(stderr, _("Time: %0.3f sec; Latency: %0.0f usec."),
(float) usec / 1000000,
(float) l * (negative?-1.0f:1.0f));
+ fprintf(stderr, " \r");
}
/* Someone requested that the latency is shown */
@@ -588,7 +592,7 @@ static void time_event_callback(pa_mainloop_api *m, pa_time_event *e, const stru
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)))
- pa_log(_("pa_stream_update_timing_info() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_stream_update_timing_info() failed: %s"), pa_strerror(pa_context_errno(context)));
else
pa_operation_unref(o);
}
@@ -753,7 +757,7 @@ int main(int argc, char *argv[]) {
if (!(t = pa_locale_to_utf8(optarg)) ||
pa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, t) < 0) {
- pa_log(_("Invalid client name '%s'\n"), t ? t : optarg);
+ pa_log(_("Invalid client name '%s'"), t ? t : optarg);
pa_xfree(t);
goto quit;
}
@@ -764,12 +768,11 @@ int main(int argc, char *argv[]) {
case ARG_STREAM_NAME: {
char *t;
- t = pa_locale_to_utf8(optarg);
if (!(t = pa_locale_to_utf8(optarg)) ||
pa_proplist_sets(proplist, PA_PROP_MEDIA_NAME, t) < 0) {
- pa_log(_("Invalid stream name '%s'\n"), t ? t : optarg);
+ pa_log(_("Invalid stream name '%s'"), t ? t : optarg);
pa_xfree(t);
goto quit;
}
@@ -806,7 +809,7 @@ int main(int argc, char *argv[]) {
case ARG_CHANNELMAP:
if (!pa_channel_map_parse(&channel_map, optarg)) {
- pa_log(_("Invalid channel map '%s'\n"), optarg);
+ pa_log(_("Invalid channel map '%s'"), optarg);
goto quit;
}
@@ -835,14 +838,14 @@ int main(int argc, char *argv[]) {
case ARG_LATENCY:
if (((latency = (size_t) atoi(optarg))) <= 0) {
- pa_log(_("Invalid latency specification '%s'\n"), optarg);
+ pa_log(_("Invalid latency specification '%s'"), optarg);
goto quit;
}
break;
case ARG_PROCESS_TIME:
if (((process_time = (size_t) atoi(optarg))) <= 0) {
- pa_log(_("Invalid process time specification '%s'\n"), optarg);
+ pa_log(_("Invalid process time specification '%s'"), optarg);
goto quit;
}
break;
@@ -854,7 +857,7 @@ int main(int argc, char *argv[]) {
pa_proplist_setp(proplist, t) < 0) {
pa_xfree(t);
- pa_log(_("Invalid property '%s'\n"), optarg);
+ pa_log(_("Invalid property '%s'"), optarg);
goto quit;
}
@@ -890,7 +893,7 @@ int main(int argc, char *argv[]) {
}
if (!pa_sample_spec_valid(&sample_spec)) {
- pa_log(_("Invalid sample specification\n"));
+ pa_log(_("Invalid sample specification"));
goto quit;
}
@@ -900,19 +903,19 @@ int main(int argc, char *argv[]) {
filename = argv[optind];
if ((fd = open(argv[optind], mode == PLAYBACK ? O_RDONLY : O_WRONLY|O_TRUNC|O_CREAT, 0666)) < 0) {
- pa_log(_("open(): %s\n"), strerror(errno));
+ pa_log(_("open(): %s"), strerror(errno));
goto quit;
}
if (dup2(fd, mode == PLAYBACK ? STDIN_FILENO : STDOUT_FILENO) < 0) {
- pa_log(_("dup2(): %s\n"), strerror(errno));
+ pa_log(_("dup2(): %s"), strerror(errno));
goto quit;
}
pa_close(fd);
} else if (optind+1 <= argc) {
- pa_log(_("Too many arguments.\n"));
+ pa_log(_("Too many arguments."));
goto quit;
}
@@ -923,7 +926,7 @@ int main(int argc, char *argv[]) {
if (mode == RECORD) {
/* This might patch up the sample spec */
if (pa_sndfile_write_sample_spec(&sfi, &sample_spec) < 0) {
- pa_log(_("Failed to generate sample specification for file.\n"));
+ pa_log(_("Failed to generate sample specification for file."));
goto quit;
}
@@ -943,16 +946,16 @@ int main(int argc, char *argv[]) {
if (!(sndfile = sf_open_fd(mode == RECORD ? STDOUT_FILENO : STDIN_FILENO,
mode == RECORD ? SFM_WRITE : SFM_READ,
&sfi, 0))) {
- pa_log(_("Failed to open audio file.\n"));
+ pa_log(_("Failed to open audio file."));
goto quit;
}
if (mode == PLAYBACK) {
if (sample_spec_set)
- pa_log(_("Warning: specified sample specification will be overwritten with specification from file.\n"));
+ pa_log(_("Warning: specified sample specification will be overwritten with specification from file."));
if (pa_sndfile_read_sample_spec(sndfile, &sample_spec) < 0) {
- pa_log(_("Failed to determine sample specification from file.\n"));
+ pa_log(_("Failed to determine sample specification from file."));
goto quit;
}
sample_spec_set = TRUE;
@@ -961,7 +964,7 @@ int main(int argc, char *argv[]) {
/* Allow the user to overwrite the channel map on the command line */
if (pa_sndfile_read_channel_map(sndfile, &channel_map) < 0) {
if (sample_spec.channels > 2)
- pa_log(_("Warning: Failed to determine channel map from file.\n"));
+ pa_log(_("Warning: Failed to determine channel map from file."));
} else
channel_map_set = TRUE;
}
@@ -972,7 +975,7 @@ int main(int argc, char *argv[]) {
pa_channel_map_init_extend(&channel_map, sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
if (!pa_channel_map_compatible(&channel_map, &sample_spec)) {
- pa_log(_("Channel map doesn't match sample specification\n"));
+ pa_log(_("Channel map doesn't match sample specification"));
goto quit;
}
@@ -983,7 +986,7 @@ int main(int argc, char *argv[]) {
readf_function = pa_sndfile_readf_function(&sample_spec);
else {
if (pa_sndfile_write_channel_map(sndfile, &channel_map) < 0)
- pa_log(_("Warning: failed to write channel map to file.\n"));
+ pa_log(_("Warning: failed to write channel map to file."));
writef_function = pa_sndfile_writef_function(&sample_spec);
}
@@ -998,7 +1001,7 @@ int main(int argc, char *argv[]) {
if (verbose) {
char tss[PA_SAMPLE_SPEC_SNPRINT_MAX], tcm[PA_CHANNEL_MAP_SNPRINT_MAX];
- pa_log(_("Opening a %s stream with sample specification '%s' and channel map '%s'.\n"),
+ pa_log(_("Opening a %s stream with sample specification '%s' and channel map '%s'."),
mode == RECORD ? _("recording") : _("playback"),
pa_sample_spec_snprint(tss, sizeof(tss), &sample_spec),
pa_channel_map_snprint(tcm, sizeof(tcm), &channel_map));
@@ -1025,7 +1028,7 @@ int main(int argc, char *argv[]) {
/* Set up a new main loop */
if (!(m = pa_mainloop_new())) {
- pa_log(_("pa_mainloop_new() failed.\n"));
+ pa_log(_("pa_mainloop_new() failed."));
goto quit;
}
@@ -1044,14 +1047,14 @@ int main(int argc, char *argv[]) {
mode == PLAYBACK ? STDIN_FILENO : STDOUT_FILENO,
mode == PLAYBACK ? PA_IO_EVENT_INPUT : PA_IO_EVENT_OUTPUT,
mode == PLAYBACK ? stdin_callback : stdout_callback, NULL))) {
- pa_log(_("io_new() failed.\n"));
+ pa_log(_("io_new() failed."));
goto quit;
}
}
/* Create a new connection context */
if (!(context = pa_context_new_with_proplist(mainloop_api, NULL, proplist))) {
- pa_log(_("pa_context_new() failed.\n"));
+ pa_log(_("pa_context_new() failed."));
goto quit;
}
@@ -1059,20 +1062,20 @@ int main(int argc, char *argv[]) {
/* Connect the context */
if (pa_context_connect(context, server, 0, NULL) < 0) {
- pa_log(_("pa_context_connect() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_context_connect() failed: %s"), pa_strerror(pa_context_errno(context)));
goto quit;
}
if (verbose) {
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"));
+ pa_log(_("pa_context_rttime_new() failed."));
goto quit;
}
}
/* Run the main loop */
if (pa_mainloop_run(m, &ret) < 0) {
- pa_log(_("pa_mainloop_run() failed.\n"));
+ pa_log(_("pa_mainloop_run() failed."));
goto quit;
}
diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c
index ac60a0bc..5ef57e3b 100644
--- a/src/utils/pacmd.c
+++ b/src/utils/pacmd.c
@@ -25,7 +25,7 @@
#include <assert.h>
#include <signal.h>
-#include <sys/select.h>
+#include <sys/poll.h>
#include <sys/socket.h>
#include <unistd.h>
#include <errno.h>
@@ -45,6 +45,13 @@
int main(int argc, char*argv[]) {
+ enum {
+ WATCH_STDIN,
+ WATCH_STDOUT,
+ WATCH_SOCKET,
+ N_WATCH
+ };
+
pid_t pid ;
int fd = -1;
int ret = 1, i;
@@ -53,6 +60,7 @@ int main(int argc, char*argv[]) {
size_t ibuf_index, ibuf_length, obuf_index, obuf_length;
char *cli;
pa_bool_t ibuf_eof, obuf_eof, ibuf_closed, obuf_closed;
+ struct pollfd pollfd[N_WATCH];
setlocale(LC_ALL, "");
bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
@@ -108,7 +116,7 @@ int main(int argc, char*argv[]) {
size_t k;
k = PA_MIN(sizeof(ibuf) - ibuf_length, strlen(argv[i]));
- memcpy(ibuf + ibuf_length, argv[1], k);
+ memcpy(ibuf + ibuf_length, argv[i], k);
ibuf_length += k;
if (ibuf_length < sizeof(ibuf)) {
@@ -120,38 +128,45 @@ int main(int argc, char*argv[]) {
ibuf_eof = TRUE;
}
- for (;;) {
- fd_set ifds, ofds;
+ pa_zero(pollfd);
+ pollfd[WATCH_STDIN].fd = STDIN_FILENO;
+ pollfd[WATCH_STDOUT].fd = STDOUT_FILENO;
+ pollfd[WATCH_SOCKET].fd = fd;
+
+ for (;;) {
if (ibuf_eof &&
obuf_eof &&
ibuf_length <= 0 &&
obuf_length <= 0)
break;
- FD_ZERO(&ifds);
- FD_ZERO(&ofds);
+ pollfd[WATCH_STDIN].events = pollfd[WATCH_STDOUT].events = pollfd[WATCH_SOCKET].events = 0;
if (obuf_length > 0)
- FD_SET(1, &ofds);
+ pollfd[WATCH_STDOUT].events |= POLLOUT;
else if (!obuf_eof)
- FD_SET(fd, &ifds);
+ pollfd[WATCH_SOCKET].events |= POLLIN;
if (ibuf_length > 0)
- FD_SET(fd, &ofds);
+ pollfd[WATCH_SOCKET].events |= POLLOUT;
else if (!ibuf_eof)
- FD_SET(0, &ifds);
+ pollfd[WATCH_STDIN].events |= POLLIN;
- if (select(FD_SETSIZE, &ifds, &ofds, NULL, NULL) < 0) {
- pa_log(_("select(): %s"), strerror(errno));
+ if (poll(pollfd, N_WATCH, -1) < 0) {
+
+ if (errno == EINTR)
+ continue;
+
+ pa_log(_("poll(): %s"), strerror(errno));
goto fail;
}
- if (FD_ISSET(0, &ifds)) {
+ if (pollfd[WATCH_STDIN].revents & POLLIN) {
ssize_t r;
pa_assert(!ibuf_length);
- if ((r = pa_read(0, ibuf, sizeof(ibuf), NULL)) <= 0) {
+ if ((r = pa_read(STDIN_FILENO, ibuf, sizeof(ibuf), NULL)) <= 0) {
if (r < 0) {
pa_log(_("read(): %s"), strerror(errno));
goto fail;
@@ -164,7 +179,7 @@ int main(int argc, char*argv[]) {
}
}
- if (FD_ISSET(fd, &ifds)) {
+ if (pollfd[WATCH_SOCKET].revents & POLLIN) {
ssize_t r;
pa_assert(!obuf_length);
@@ -181,21 +196,26 @@ int main(int argc, char*argv[]) {
}
}
- if (FD_ISSET(1, &ofds)) {
+ if (pollfd[WATCH_STDOUT].revents & POLLHUP) {
+ obuf_eof = TRUE;
+ obuf_length = 0;
+ } else if (pollfd[WATCH_STDOUT].revents & POLLOUT) {
ssize_t r;
pa_assert(obuf_length);
- if ((r = pa_write(1, obuf + obuf_index, obuf_length, NULL)) < 0) {
+ if ((r = pa_write(STDOUT_FILENO, obuf + obuf_index, obuf_length, NULL)) < 0) {
pa_log(_("write(): %s"), strerror(errno));
goto fail;
}
obuf_length -= (size_t) r;
obuf_index += obuf_index;
-
}
- if (FD_ISSET(fd, &ofds)) {
+ if (pollfd[WATCH_SOCKET].revents & POLLHUP) {
+ ibuf_eof = TRUE;
+ ibuf_length = 0;
+ } if (pollfd[WATCH_SOCKET].revents & POLLOUT) {
ssize_t r;
pa_assert(ibuf_length);
@@ -209,14 +229,14 @@ int main(int argc, char*argv[]) {
}
if (ibuf_length <= 0 && ibuf_eof && !ibuf_closed) {
- pa_close(0);
+ pa_close(STDIN_FILENO);
shutdown(fd, SHUT_WR);
ibuf_closed = TRUE;
}
if (obuf_length <= 0 && obuf_eof && !obuf_closed) {
shutdown(fd, SHUT_RD);
- pa_close(1);
+ pa_close(STDOUT_FILENO);
obuf_closed = TRUE;
}
}
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index c8c3a437..141ab5b1 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -50,7 +50,6 @@ 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,
@@ -66,6 +65,8 @@ static uint32_t
static uint32_t module_index;
static pa_bool_t suspend;
+static pa_bool_t mute;
+static pa_volume_t volume;
static pa_proplist *proplist = NULL;
@@ -74,7 +75,6 @@ static pa_stream *sample_stream = NULL;
static pa_sample_spec sample_spec;
static pa_channel_map channel_map;
static size_t sample_length = 0;
-
static int actions = 1;
static pa_bool_t nl = FALSE;
@@ -95,7 +95,13 @@ static enum {
SUSPEND_SOURCE,
SET_CARD_PROFILE,
SET_SINK_PORT,
- SET_SOURCE_PORT
+ SET_SOURCE_PORT,
+ SET_SINK_VOLUME,
+ SET_SOURCE_VOLUME,
+ SET_SINK_INPUT_VOLUME,
+ SET_SINK_MUTE,
+ SET_SOURCE_MUTE,
+ SET_SINK_INPUT_MUTE
} action = NONE;
static void quit(int ret) {
@@ -109,6 +115,7 @@ static void context_drain_complete(pa_context *c, void *userdata) {
static void drain(void) {
pa_operation *o;
+
if (!(o = pa_context_drain(context, context_drain_complete, NULL)))
pa_context_disconnect(context);
else
@@ -123,9 +130,9 @@ static void complete_action(void) {
}
static void stat_callback(pa_context *c, const pa_stat_info *i, void *userdata) {
- char s[128];
+ char s[PA_BYTES_SNPRINT_MAX];
if (!i) {
- pa_log(_("Failed to get statistics: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get statistics: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -146,7 +153,7 @@ static void get_server_info_callback(pa_context *c, const pa_server_info *i, voi
char ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX];
if (!i) {
- pa_log(_("Failed to get server information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get server information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -195,7 +202,7 @@ static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get sink information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get sink information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -287,7 +294,7 @@ static void get_source_info_callback(pa_context *c, const pa_source_info *i, int
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get source information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get source information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -365,7 +372,7 @@ static void get_module_info_callback(pa_context *c, const pa_module_info *i, int
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get module information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get module information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -402,7 +409,7 @@ static void get_client_info_callback(pa_context *c, const pa_client_info *i, int
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get client information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get client information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -437,7 +444,7 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get card information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get card information: %s"), pa_strerror(pa_context_errno(c)));
complete_action();
return;
}
@@ -486,7 +493,7 @@ static void get_sink_input_info_callback(pa_context *c, const pa_sink_input_info
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get sink input information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get sink input information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -544,7 +551,7 @@ static void get_source_output_info_callback(pa_context *c, const pa_source_outpu
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get source output information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get source output information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -591,11 +598,11 @@ static void get_source_output_info_callback(pa_context *c, const pa_source_outpu
}
static void get_sample_info_callback(pa_context *c, const pa_sample_info *i, int is_last, void *userdata) {
- char t[32], s[PA_SAMPLE_SPEC_SNPRINT_MAX], cv[PA_CVOLUME_SNPRINT_MAX], cvdb[PA_SW_CVOLUME_SNPRINT_DB_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX];
+ char t[PA_BYTES_SNPRINT_MAX], s[PA_SAMPLE_SPEC_SNPRINT_MAX], cv[PA_CVOLUME_SNPRINT_MAX], cvdb[PA_SW_CVOLUME_SNPRINT_DB_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX];
char *pl;
if (is_last < 0) {
- pa_log(_("Failed to get sample information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get sample information: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -643,7 +650,7 @@ static void get_sample_info_callback(pa_context *c, const pa_sample_info *i, int
static void simple_callback(pa_context *c, int success, void *userdata) {
if (!success) {
- pa_log(_("Failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failure: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -653,7 +660,7 @@ static void simple_callback(pa_context *c, int success, void *userdata) {
static void index_callback(pa_context *c, uint32_t idx, void *userdata) {
if (idx == PA_INVALID_INDEX) {
- pa_log(_("Failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failure: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -677,7 +684,7 @@ static void stream_state_callback(pa_stream *s, void *userdata) {
case PA_STREAM_FAILED:
default:
- pa_log(_("Failed to upload sample: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
+ pa_log(_("Failed to upload sample: %s"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
quit(1);
}
}
@@ -694,7 +701,7 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
if ((sf_readf_float(sndfile, d, l)) != l) {
pa_xfree(d);
- pa_log(_("Premature end of file\n"));
+ pa_log(_("Premature end of file"));
quit(1);
return;
}
@@ -726,7 +733,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
break;
case PLAY_SAMPLE:
- pa_operation_unref(pa_context_play_sample(c, sample_name, device, PA_VOLUME_NORM, simple_callback, NULL));
+ pa_operation_unref(pa_context_play_sample(c, sample_name, sink_name, PA_VOLUME_NORM, simple_callback, NULL));
break;
case REMOVE_SAMPLE:
@@ -800,6 +807,42 @@ static void context_state_callback(pa_context *c, void *userdata) {
pa_operation_unref(pa_context_set_source_port_by_name(c, source_name, port_name, simple_callback, NULL));
break;
+ case SET_SINK_MUTE:
+ pa_operation_unref(pa_context_set_sink_mute_by_name(c, sink_name, mute, simple_callback, NULL));
+ break;
+
+ case SET_SOURCE_MUTE:
+ pa_operation_unref(pa_context_set_source_mute_by_name(c, source_name, mute, simple_callback, NULL));
+ break;
+
+ case SET_SINK_INPUT_MUTE:
+ pa_operation_unref(pa_context_set_sink_input_mute(c, sink_input_idx, mute, simple_callback, NULL));
+ break;
+
+ case SET_SINK_VOLUME: {
+ pa_cvolume v;
+
+ pa_cvolume_set(&v, 1, volume);
+ pa_operation_unref(pa_context_set_sink_volume_by_name(c, sink_name, &v, simple_callback, NULL));
+ break;
+ }
+
+ case SET_SOURCE_VOLUME: {
+ pa_cvolume v;
+
+ pa_cvolume_set(&v, 1, volume);
+ pa_operation_unref(pa_context_set_source_volume_by_name(c, source_name, &v, simple_callback, NULL));
+ break;
+ }
+
+ case SET_SINK_INPUT_VOLUME: {
+ pa_cvolume v;
+
+ pa_cvolume_set(&v, 1, volume);
+ pa_operation_unref(pa_context_set_sink_input_volume(c, sink_input_idx, &v, simple_callback, NULL));
+ break;
+ }
+
default:
pa_assert_not_reached();
}
@@ -811,13 +854,13 @@ static void context_state_callback(pa_context *c, void *userdata) {
case PA_CONTEXT_FAILED:
default:
- pa_log(_("Connection failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Connection failure: %s"), pa_strerror(pa_context_errno(c)));
quit(1);
}
}
static void exit_signal_callback(pa_mainloop_api *m, pa_signal_event *e, int sig, void *userdata) {
- pa_log(_("Got SIGINT, exiting.\n"));
+ pa_log(_("Got SIGINT, exiting."));
quit(0);
}
@@ -829,20 +872,30 @@ static void help(const char *argv0) {
"%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] move-sink-input SINKINPUT SINK\n"
+ "%s [options] move-source-output SOURCEOUTPUT 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"
+ "%s [options] unload-module MODULE\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"
+ "%s [options] set-sink-volume SINK VOLUME\n"
+ "%s [options] set-source-volume SOURCE VOLUME\n"
+ "%s [options] set-sink-input-volume SINKINPUT VOLUME\n"
+ "%s [options] set-sink-mute SINK 1|0\n"
+ "%s [options] set-source-mute SOURCE 1|0\n"
+ "%s [options] set-sink-input-mute SINKINPUT 1|0\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, argv0, argv0,
+ argv0, argv0, argv0, argv0, argv0,
+ argv0);
}
enum {
@@ -897,7 +950,7 @@ int main(int argc, char *argv[]) {
if (!(t = pa_locale_to_utf8(optarg)) ||
pa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, t) < 0) {
- pa_log(_("Invalid client name '%s'\n"), t ? t : optarg);
+ pa_log(_("Invalid client name '%s'"), t ? t : optarg);
pa_xfree(t);
goto quit;
}
@@ -923,7 +976,7 @@ int main(int argc, char *argv[]) {
action = UPLOAD_SAMPLE;
if (optind+1 >= argc) {
- pa_log(_("Please specify a sample file to load\n"));
+ pa_log(_("Please specify a sample file to load"));
goto quit;
}
@@ -936,19 +989,19 @@ int main(int argc, char *argv[]) {
pa_zero(sfi);
if (!(sndfile = sf_open(argv[optind+1], SFM_READ, &sfi))) {
- pa_log(_("Failed to open sound file.\n"));
+ pa_log(_("Failed to open sound file."));
goto quit;
}
if (pa_sndfile_read_sample_spec(sndfile, &sample_spec) < 0) {
- pa_log(_("Failed to determine sample specification from file.\n"));
+ pa_log(_("Failed to determine sample specification from file."));
goto quit;
}
sample_spec.format = PA_SAMPLE_FLOAT32;
if (pa_sndfile_read_channel_map(sndfile, &channel_map) < 0) {
if (sample_spec.channels > 2)
- pa_log(_("Warning: Failed to determine sample specification from file.\n"));
+ pa_log(_("Warning: Failed to determine sample specification from file."));
pa_channel_map_init_extend(&channel_map, sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
}
@@ -958,19 +1011,19 @@ int main(int argc, char *argv[]) {
} else if (pa_streq(argv[optind], "play-sample")) {
action = PLAY_SAMPLE;
if (argc != optind+2 && argc != optind+3) {
- pa_log(_("You have to specify a sample name to play\n"));
+ pa_log(_("You have to specify a sample name to play"));
goto quit;
}
sample_name = pa_xstrdup(argv[optind+1]);
if (optind+2 < argc)
- device = pa_xstrdup(argv[optind+2]);
+ sink_name = pa_xstrdup(argv[optind+2]);
} else if (pa_streq(argv[optind], "remove-sample")) {
action = REMOVE_SAMPLE;
if (argc != optind+2) {
- pa_log(_("You have to specify a sample name to remove\n"));
+ pa_log(_("You have to specify a sample name to remove"));
goto quit;
}
@@ -979,7 +1032,7 @@ int main(int argc, char *argv[]) {
} else if (pa_streq(argv[optind], "move-sink-input")) {
action = MOVE_SINK_INPUT;
if (argc != optind+3) {
- pa_log(_("You have to specify a sink input index and a sink\n"));
+ pa_log(_("You have to specify a sink input index and a sink"));
goto quit;
}
@@ -989,7 +1042,7 @@ int main(int argc, char *argv[]) {
} else if (pa_streq(argv[optind], "move-source-output")) {
action = MOVE_SOURCE_OUTPUT;
if (argc != optind+3) {
- pa_log(_("You have to specify a source output index and a source\n"));
+ pa_log(_("You have to specify a source output index and a source"));
goto quit;
}
@@ -1004,7 +1057,7 @@ int main(int argc, char *argv[]) {
action = LOAD_MODULE;
if (argc <= optind+1) {
- pa_log(_("You have to specify a module name and arguments.\n"));
+ pa_log(_("You have to specify a module name and arguments."));
goto quit;
}
@@ -1024,7 +1077,7 @@ int main(int argc, char *argv[]) {
action = UNLOAD_MODULE;
if (argc != optind+2) {
- pa_log(_("You have to specify a module index\n"));
+ pa_log(_("You have to specify a module index"));
goto quit;
}
@@ -1034,7 +1087,7 @@ int main(int argc, char *argv[]) {
action = SUSPEND_SINK;
if (argc > optind+3 || optind+1 >= argc) {
- pa_log(_("You may not specify more than one sink. You have to specify a boolean value.\n"));
+ pa_log(_("You may not specify more than one sink. You have to specify a boolean value."));
goto quit;
}
@@ -1047,7 +1100,7 @@ int main(int argc, char *argv[]) {
action = SUSPEND_SOURCE;
if (argc > optind+3 || optind+1 >= argc) {
- pa_log(_("You may not specify more than one source. You have to specify a boolean value.\n"));
+ pa_log(_("You may not specify more than one source. You have to specify a boolean value."));
goto quit;
}
@@ -1059,7 +1112,7 @@ int main(int argc, char *argv[]) {
action = SET_CARD_PROFILE;
if (argc != optind+3) {
- pa_log(_("You have to specify a card name/index and a profile name\n"));
+ pa_log(_("You have to specify a card name/index and a profile name"));
goto quit;
}
@@ -1070,7 +1123,7 @@ int main(int argc, char *argv[]) {
action = SET_SINK_PORT;
if (argc != optind+3) {
- pa_log(_("You have to specify a sink name/index and a port name\n"));
+ pa_log(_("You have to specify a sink name/index and a port name"));
goto quit;
}
@@ -1081,13 +1134,123 @@ int main(int argc, char *argv[]) {
action = SET_SOURCE_PORT;
if (argc != optind+3) {
- pa_log(_("You have to specify a source name/index and a port name\n"));
+ pa_log(_("You have to specify a source name/index and a port name"));
goto quit;
}
source_name = pa_xstrdup(argv[optind+1]);
port_name = pa_xstrdup(argv[optind+2]);
+ } else if (pa_streq(argv[optind], "set-sink-volume")) {
+ uint32_t v;
+ action = SET_SINK_VOLUME;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink name/index and a volume"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+2], &v) < 0) {
+ pa_log(_("Invalid volume specification"));
+ goto quit;
+ }
+
+ sink_name = pa_xstrdup(argv[optind+1]);
+ volume = (pa_volume_t) v;
+
+ } else if (pa_streq(argv[optind], "set-source-volume")) {
+ uint32_t v;
+ action = SET_SOURCE_VOLUME;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source name/index and a volume"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+2], &v) < 0) {
+ pa_log(_("Invalid volume specification"));
+ goto quit;
+ }
+
+ source_name = pa_xstrdup(argv[optind+1]);
+ volume = (pa_volume_t) v;
+
+ } else if (pa_streq(argv[optind], "set-sink-input-volume")) {
+ uint32_t v;
+ action = SET_SINK_INPUT_VOLUME;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink input index and a volume"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+1], &sink_input_idx) < 0) {
+ pa_log(_("Invalid sink input index"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+2], &v) < 0) {
+ pa_log(_("Invalid volume specification"));
+ goto quit;
+ }
+
+ volume = (pa_volume_t) v;
+
+ } else if (pa_streq(argv[optind], "set-sink-mute")) {
+ int b;
+ action = SET_SINK_MUTE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink name/index and a mute boolean"));
+ goto quit;
+ }
+
+ if ((b = pa_parse_boolean(argv[optind+2])) < 0) {
+ pa_log(_("Invalid volume specification"));
+ goto quit;
+ }
+
+ sink_name = pa_xstrdup(argv[optind+1]);
+ mute = b;
+
+ } else if (pa_streq(argv[optind], "set-source-mute")) {
+ int b;
+ action = SET_SOURCE_MUTE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source name/index and a mute boolean"));
+ goto quit;
+ }
+
+ if ((b = pa_parse_boolean(argv[optind+2])) < 0) {
+ pa_log(_("Invalid volume specification"));
+ goto quit;
+ }
+
+ source_name = pa_xstrdup(argv[optind+1]);
+ mute = b;
+
+ } else if (pa_streq(argv[optind], "set-sink-input-mute")) {
+ int b;
+ action = SET_SINK_INPUT_MUTE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink input index and a mute boolean"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+1], &sink_input_idx) < 0) {
+ pa_log(_("Invalid sink input index specification"));
+ goto quit;
+ }
+
+ if ((b = pa_parse_boolean(argv[optind+2])) < 0) {
+ pa_log(_("Invalid volume specification"));
+ goto quit;
+ }
+
+ mute = b;
+
} else if (pa_streq(argv[optind], "help")) {
help(bn);
ret = 0;
@@ -1096,12 +1259,12 @@ int main(int argc, char *argv[]) {
}
if (action == NONE) {
- pa_log(_("No valid command specified.\n"));
+ pa_log(_("No valid command specified."));
goto quit;
}
if (!(m = pa_mainloop_new())) {
- pa_log(_("pa_mainloop_new() failed.\n"));
+ pa_log(_("pa_mainloop_new() failed."));
goto quit;
}
@@ -1113,7 +1276,7 @@ int main(int argc, char *argv[]) {
pa_disable_sigpipe();
if (!(context = pa_context_new_with_proplist(mainloop_api, NULL, proplist))) {
- pa_log(_("pa_context_new() failed.\n"));
+ pa_log(_("pa_context_new() failed."));
goto quit;
}
@@ -1124,7 +1287,7 @@ int main(int argc, char *argv[]) {
}
if (pa_mainloop_run(m, &ret) < 0) {
- pa_log(_("pa_mainloop_run() failed.\n"));
+ pa_log(_("pa_mainloop_run() failed."));
goto quit;
}
@@ -1141,7 +1304,6 @@ quit:
}
pa_xfree(server);
- pa_xfree(device);
pa_xfree(sample_name);
pa_xfree(sink_name);
pa_xfree(source_name);
diff --git a/src/utils/padsp.c b/src/utils/padsp.c
index dfa5aac2..41bfd741 100644
--- a/src/utils/padsp.c
+++ b/src/utils/padsp.c
@@ -53,6 +53,7 @@
#include <pulse/pulseaudio.h>
#include <pulse/gccmacro.h>
#include <pulsecore/llist.h>
+#include <pulsecore/core-util.h>
/* On some systems SIOCINQ isn't defined, but FIONREAD is just an alias */
#if !defined(SIOCINQ) && defined(FIONREAD)
@@ -459,15 +460,16 @@ static void reset_params(fd_info *i) {
}
static const char *client_name(char *buf, size_t n) {
- char p[PATH_MAX];
+ char *p;
const char *e;
if ((e = getenv("PADSP_CLIENT_NAME")))
return e;
- if (pa_get_binary_name(p, sizeof(p)))
+ if ((p = pa_get_binary_name_malloc())) {
snprintf(buf, n, "OSS Emulation[%s]", p);
- else
+ pa_xfree(p);
+ } else
snprintf(buf, n, "OSS");
return buf;
@@ -1819,7 +1821,7 @@ fail:
pa_threaded_mainloop_unlock(i->mainloop);
- return 0;
+ return r;
}
static int dsp_trigger(fd_info *i) {
@@ -1862,7 +1864,7 @@ fail:
pa_threaded_mainloop_unlock(i->mainloop);
- return 0;
+ return r;
}
static int dsp_cork(fd_info *i, pa_stream *s, int b) {
@@ -1900,7 +1902,7 @@ fail:
pa_threaded_mainloop_unlock(i->mainloop);
- return 0;
+ return r;
}
static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) {