[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master-tx, updated. v0.9.15-181-g12d5382
Lennart Poettering
gitmailer-noreply at 0pointer.de
Sun Jun 7 15:35:39 PDT 2009
This is an automated email from the git hooks/post-receive script. It was
generated because of a push to the "PulseAudio Sound Server" repository.
The master-tx branch has been updated
from 00cc1683734f0b51e0b2a82d819b8f34b774257c (commit)
- Log -----------------------------------------------------------------
12d5382 i18n: update po data
983aa5d Merge commit 'origin/master-tx'
e7a6d53 core: replace tabs by spaces
587fc2a core: make sure soft mute status stays in sync with hw mute status
ab5adce rtstutter: increase log level by default
8eaea3a optimization: Optimized pa_sink_render_full.
8adf1d5 man: document that tsched doesn't use fragment settings
3aefc45 man: document 24bit sample types in man page
5be1cc5 man: document log related daemon.conf options
78bccde conf: remove obsolete module-idle-time directive from default config file/man page
a9b38b3 daemon: optionally call mlockall() on startup
71ce195 udev: properly initialize userdata to 0
3a118f2 build-sys: bump libsndfile dependency
bab4b94 udev: try to unsuspend devices whenever they are closed by other processes
d1646f7 core: monitor sources need to inherit the suspend cause from their sinks
69eab1e core: suppress suspending/resume when we are already in the right state
496be21 hashmap: introduce PA_HASHMAP_FOREACH macro
e84644a hal,udev: deprecate HAL support in favour of udev
8080ab1 udev: add module-udev-detect for discovering and configuring devices
e5dd9df rtp: remove gcc warning
f398407 augment: try to deduce the media role from the menu category
561c0af alsa: monitor device reservation status and resume automatically when device becomes unused
00797b8 core: add a suspend cause flags field
3af5f8c reserve: wrap device reservation monitor reference implementation
1748fd2 reserve: update reserve.[ch] from upstream git
3e10f3f tdb: include signal.h before tdb.h for compat reasons
4d87475 utils: use pa_path_get_filename() where applicable
8bada74 Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
c224aac modules: introduce PA_MODULE_DEPRECATED() macro for marking modules deprecated
1c4393a modules: add {sink|source|card}_properties argument to all modules
6044aab Merge commit 'flameeyes/master'
2088626 null: introduce sink_properties= argument
6601e09 simple: set ADJUST_LATENCY by default
19d7ced modargs: introduce pa_modargs_get_proplist()
699bd54 libpulse: introduce PA_CHECK_VERSION macro
e8f7eb6 oss: don't deadlock when we try to resume an OSS device that lacks a mixer
d2198c9 alsa: fix wording, we are speaking of card profiles, not output profiles
5c10b84 sndfile: big rework of libsndfile interfacing code
759a9d0 core-util: introduce pa_disable_sigpipe()
ebce318 cli: allow easy repeating of commands with '/'
8b180b6 volume: implement pa_cvolume_{scale|max|avg}_mask()
5f2d848 map-file: add missing channel map/cvolume position functions
8f23a2e proplist: add two new generic properties, media.copyright and media.software
01fa34b channelmap: introduce pa_channel_map_mask() and pa_channel_position_mask_t
261a483 sample: introduce pa_proplist_setp()
346a708 sample: introduce pa_sample_format_is_{le,be,ne,re}()
3533599 upnp: s/org.Rygel./org.gnome.UPnP/ following the newest version of the spec
f809284 channelmap: document how apple's/microsoft's channel names map to ours
e2aba15 core-util: fall back to sysconf(_SC_OPEN_MAX) to find maximum file descriptor
ce3fbb5 tests: show dB in volume-ui.py
000bdb8 volume: change pa_volume_t mapping to cubic
e7bca90 upnp: s/url/URL/ in GetAll() D-Bus call
ce6643e Use the _ONCE variation of AC_CHECKs where applicable.
ff5b7fb Add missing headers' include to build on FreeBSD 7.1.
99f2541 Add missing include directory path for OSS modules.
d45c909 When MAP_ANONYMOUS is missing, fallback to MAP_ANON.
0de6877 Don't use == for comparison in tests. Fix build with non-bash shells.
862a05f upnp: update to newest spec
0921b1b shm: rework alignment when punching memory
763954c upnp: convert all property names to CamelCase to follow D-Bus spec
1a39acc rescue: make we don't end up in an endless loop when we can't move a sink input
234c61b upnp: implement item-count/container-count properties
0cb3837 alsa: be a bit more verbose when a hwparam call fails
b7e2223 database: port restore modules to new database API
003e03d macro: include string.h because we need it for memset
6df14e0 database: add tdb backend
46bceed database: add gdbm backend
c69ed91 database: add abstracted database API
905c800 volume: introduce pa_cvolume_{get|set}_position()
28069ef core: automatically add icons for headsets/headphones/speakers for devices
dfd6b61 alsa: include mixer name in sink/source properties
21ab720 http: fix segfault on connection termination
86caf45 context: don't fail if session bus is not there
4c3aef3 suspend-on-idle: add per-device timeout property
a7a7358 git: activate default commit hook
37c3620 upnp: rework property handling
35b7ce5 upnp: use new rygel @HOSTNAME@ wildcard for server name
dc5dce5 upnp: properly issue method not found exception when we don't now it
98a6454 upnp: update to newest spec, generate 'Updated' signal
6c4c61d upnp: fix URL of MediaServer spec
eb20564 mime: drop additional whitespace from mime types
35faedb core: Take samples from silence cache rather than write zeros
d7b8947 core: optimize pa_sink_render_full()
a714861 channelmap: add pa_channel_map_has_position()
44e566a bluetooth-device: Add safe guard against BT streaming irregularities.
7f767e5 core: liberalize 99a6a4 a bit
8d9c26e core: cache requested latency only when we are running, not while we are still constructing
99a6a47 core: make sure we fix up flags/monitor flags already in pa_sink_new() instead of pa_sink_put()
3766850 core: introduce pa_{sink,source}_set_fixed_latency()
92a6141 macro: add macros for initializing memory
e0f0821 sconv: fix a few minor conversion issues
5caf09d resampler-test: add tests for 24bit sample formats
76caa27 resampler-test: use global PA_FLOAT32_SWAP implementation
4bffc78 alsa: initialize buffer size before number of periods to improve compat with some backends
d2b5ae5 sample-util: fix iteration loop when adjusting volume of s24 samples
3a7b287 sample-util: properly allocate silence block for s24-32 formats
076830a endian: fix LE/BE order for 24 bit accessor functions
947bf5d zeroconf: properly unref native protocol object
d4b10d8 sample: correctly pass s24-32 formats
4129f51 alsa: don't hit an assert when invalid module arguments are passed
5a2898d zeroconf: use pa_get_{user|host}_name_malloc() where applicable
3522b7d zeroconf: copy more sink/source properties into DNS-SD TXT data
407a810 zeroconf: computer native protocol port automatically
d696416 headers: minor cleanups
5326f5f rygel: get rid of forgotten debug trap
93db3cb rygel: instead of always handing out wildcard address find out the actual address we are listening on
8dfdfd4 http: export information about currently active server strings
23a798c strlist: add new calls pa_strlist_{next|data}()
9208b86 parseaddr: add new call pa_is_ip_address()
d5f9057 rygel: make server name configurable
c95cc9e rygel: add module that interfaces with Rygel UPnP
390fe02 http: split out mime type handling calls
84a92f2 protocol-http: allow listening into sinks/sources via HTTP
c215011 ioline: add new calls pa_ioline_detach_iochannel() and pa_ioline_is_drained()
a64097a ioline: add callback that can be called when the ioline object is fully drained
4cb6ea2 simple-protocol: don't hit an assert when we call connection_unlink() early
0b2d96d protocol-http: substantial modernizations
d871071 alsa: allow configuration of fallback device strings in profiles
ad5a1f3 protocol-native,proplist-util: port to pa_get_{user|host}_name_malloc()
a8f0d7e core-util: introduce pa_get_host_name_malloc() and pa_get_user_name_malloc()
4abd5fa memtrap: implicitly page align memory areas
bd0e4ce macro: make pa_page_align roung up instead of down
68f3ca9 macro: add new macro pa_align_ptr()
8247e45 shm: minor modernizations
595c22a shm: page align shm size when mmap()ing it
9745483 strbuf: add new call pa_strbuf_putc()
5d39b8d idxset: add enumeration macro PA_IDXSET_FOREACH
0368d6e build-system: move x11 and jack modules into subdirectories
908b0e6 build-system: hide .version from git
af8f058 build-system: run make update-shave
35382d6 build: there is no such thing as SHAVE_OUTPUT anymore
ebe22ad build: generate git tarball using git describe
edba78c start-pulseaudio-x11: don't start a local sound server if a remote sound server is configured
ad12d7d memtrap,aupdate: split atomic update from memtrap into seperate aupdate framework
-----------------------------------------------------------------------
Summary of changes:
.gitignore | 1 +
Makefile.am | 8 +-
bootstrap.sh | 6 +
configure.ac | 126 ++-
git-version-gen | 152 +++
m4/shave.m4 | 4 +
man/pulse-daemon.conf.5.xml.in | 49 +-
po/LINGUAS | 7 +-
po/POTFILES.in | 11 +-
po/as.po | 793 +++++++-------
po/bn_IN.po | 792 +++++++-------
po/ca.po | 844 ++++++++-------
po/cs.po | 1005 ++++++++++--------
po/de.po | 788 +++++++-------
po/de_CH.po | 788 +++++++-------
po/el.po | 688 ++++++------
po/es.po | 798 +++++++-------
po/fi.po | 796 +++++++-------
po/fr.po | 942 +++++++++--------
po/gu.po | 788 +++++++-------
po/it.po | 798 +++++++-------
po/kn.po | 790 +++++++-------
po/mr.po | 793 +++++++-------
po/nl.po | 689 ++++++------
po/or.po | 786 +++++++-------
po/pa.po | 836 ++++++++-------
po/pl.po | 790 +++++++-------
po/pt.po | 1136 +++++++++++---------
po/pt_BR.po | 794 +++++++-------
po/sr.po | 790 +++++++-------
po/sr at latin.po | 790 +++++++-------
po/sv.po | 712 ++++++-------
po/ta.po | 793 +++++++-------
po/te.po | 793 +++++++-------
po/uk.po | 793 +++++++-------
po/zh_CN.po | 786 +++++++-------
shave.in | 3 +
src/Makefile.am | 107 ++-
src/daemon/cmdline.c | 11 +-
src/daemon/daemon-conf.c | 19 +-
src/daemon/daemon-conf.h | 3 +-
src/daemon/daemon.conf.in | 5 +-
src/daemon/default.pa.in | 6 +-
src/daemon/dumpmodules.c | 2 +
src/daemon/main.c | 19 +-
src/daemon/start-pulseaudio-x11.in | 2 +
src/map-file | 10 +
src/modules/alsa/alsa-sink.c | 90 ++-
src/modules/alsa/alsa-source.c | 90 ++-
src/modules/alsa/alsa-util.c | 261 ++++--
src/modules/alsa/alsa-util.h | 5 +-
src/modules/alsa/module-alsa-card.c | 20 +-
src/modules/alsa/module-alsa-sink.c | 2 +
src/modules/alsa/module-alsa-source.c | 2 +
src/modules/bluetooth/module-bluetooth-device.c | 76 ++-
src/modules/{ => jack}/module-jack-sink.c | 16 +-
src/modules/{ => jack}/module-jack-source.c | 16 +-
src/modules/module-augment-properties.c | 73 ++-
src/modules/module-card-restore.c | 65 +-
src/modules/module-combine.c | 16 +-
src/modules/module-defs.h.m4 | 2 +
src/modules/module-detect.c | 1 +
src/modules/module-device-restore.c | 65 +-
src/modules/module-esound-sink.c | 16 +-
src/modules/module-hal-detect.c | 15 +-
src/modules/module-ladspa-sink.c | 12 +-
src/modules/module-null-sink.c | 21 +-
src/modules/module-pipe-sink.c | 16 +-
src/modules/module-pipe-source.c | 16 +-
src/modules/module-protocol-stub.c | 38 +-
src/modules/module-raop-sink.c | 19 +-
src/modules/module-remap-sink.c | 10 +-
src/modules/module-rescue-streams.c | 38 +-
src/modules/module-rygel-media-server.c | 847 +++++++++++++++
src/modules/module-sine-source.c | 15 +-
src/modules/module-solaris.c | 20 +-
src/modules/module-stream-restore.c | 138 +--
src/modules/module-suspend-on-idle.c | 28 +-
src/modules/module-tunnel.c | 20 +-
src/modules/module-udev-detect.c | 457 ++++++++
src/modules/module-volume-restore.c | 3 +-
src/modules/module-zeroconf-publish.c | 111 ++-
src/modules/oss/module-oss.c | 38 +-
src/modules/reserve-monitor.c | 259 +++++
src/modules/reserve-monitor.h | 62 ++
src/modules/reserve-wrap.c | 149 +++-
src/modules/reserve-wrap.h | 9 +-
src/modules/reserve.c | 22 +-
src/modules/reserve.h | 2 +-
src/modules/rtp/module-rtp-send.c | 4 +-
src/modules/rtp/rtsp_client.c | 1 +
src/modules/{ => x11}/module-x11-bell.c | 0
src/modules/{ => x11}/module-x11-cork-request.c | 0
src/modules/{ => x11}/module-x11-publish.c | 0
src/modules/{ => x11}/module-x11-xsmp.c | 0
src/pulse/channelmap.c | 25 +
src/pulse/channelmap.h | 59 +-
src/pulse/context.c | 6 +-
src/pulse/proplist.c | 15 +
src/pulse/proplist.h | 14 +
src/pulse/sample.c | 41 +-
src/pulse/sample.h | 20 +
src/pulse/simple.c | 71 +-
src/pulse/version.h.in | 7 +
src/pulse/volume.c | 175 +++-
src/pulse/volume.h | 39 +-
src/pulsecore/aupdate.c | 129 +++
src/pulsecore/aupdate.h | 98 ++
src/pulsecore/card.c | 7 +-
src/pulsecore/card.h | 2 +-
src/pulsecore/cli-command.c | 10 +-
src/pulsecore/cli-text.c | 10 +
src/pulsecore/cli.c | 13 +
src/pulsecore/core-scache.c | 30 +-
src/pulsecore/core-util.c | 96 ++-
src/pulsecore/core-util.h | 5 +
src/pulsecore/core.h | 10 +
src/pulsecore/database-gdbm.c | 246 +++++
src/pulsecore/database-tdb.c | 227 ++++
src/pulsecore/database.h | 61 ++
src/pulsecore/endianmacros.h | 8 +-
src/pulsecore/hashmap.h | 4 +
src/pulsecore/idxset.h | 4 +
src/pulsecore/ioline.c | 48 +-
src/pulsecore/ioline.h | 11 +
src/pulsecore/ipacl.h | 4 +-
src/pulsecore/ltdl-helper.h | 1 -
src/pulsecore/macro.h | 15 +-
src/pulsecore/memtrap.c | 129 +--
src/pulsecore/memtrap.h | 2 +-
src/pulsecore/mime-type.c | 182 ++++
.../sig2str-test.c => pulsecore/mime-type.h} | 22 +-
src/pulsecore/modargs.c | 73 ++-
src/pulsecore/modargs.h | 2 +
src/pulsecore/modinfo.c | 5 +
src/pulsecore/modinfo.h | 1 +
src/pulsecore/module.c | 9 +
src/pulsecore/module.h | 4 +
src/pulsecore/parseaddr.c | 16 +
src/pulsecore/parseaddr.h | 8 +-
src/pulsecore/proplist-util.c | 20 +-
src/pulsecore/protocol-esound.c | 4 +-
src/pulsecore/protocol-http.c | 681 ++++++++++--
src/pulsecore/protocol-http.h | 6 +-
src/pulsecore/protocol-native.c | 20 +-
src/pulsecore/protocol-simple.c | 2 +-
src/pulsecore/sample-util.c | 12 +-
src/pulsecore/sconv-s16le.c | 10 +-
src/pulsecore/sconv.c | 2 +-
src/pulsecore/shm.c | 52 +-
src/pulsecore/sink-input.c | 2 +-
src/pulsecore/sink.c | 204 +++-
src/pulsecore/sink.h | 6 +-
src/pulsecore/sndfile-util.c | 462 ++++++++
src/pulsecore/sndfile-util.h | 52 +
src/pulsecore/sound-file-stream.c | 51 +-
src/pulsecore/sound-file.c | 102 +--
src/pulsecore/sound-file.h | 2 +-
src/pulsecore/source.c | 68 +-
src/pulsecore/source.h | 6 +-
src/pulsecore/strbuf.c | 7 +
src/pulsecore/strbuf.h | 1 +
src/pulsecore/strlist.c | 12 +
src/pulsecore/strlist.h | 6 +
src/tests/proplist-test.c | 14 +
src/tests/resampler-test.c | 75 ++-
src/tests/rtstutter.c | 2 +
src/tests/volume-ui.py | 29 +-
src/utils/pabrowse.c | 4 +-
src/utils/pacat.c | 717 +++++++++----
src/utils/pacmd.c | 26 +-
src/utils/pactl.c | 262 +++---
src/utils/paplay.c | 435 --------
src/utils/pasuspender.c | 5 +-
174 files changed, 18544 insertions(+), 12407 deletions(-)
create mode 100755 git-version-gen
rename src/modules/{ => jack}/module-jack-sink.c (97%)
rename src/modules/{ => jack}/module-jack-source.c (96%)
create mode 100644 src/modules/module-rygel-media-server.c
create mode 100644 src/modules/module-udev-detect.c
create mode 100644 src/modules/reserve-monitor.c
create mode 100644 src/modules/reserve-monitor.h
rename src/modules/{ => x11}/module-x11-bell.c (100%)
rename src/modules/{ => x11}/module-x11-cork-request.c (100%)
rename src/modules/{ => x11}/module-x11-publish.c (100%)
rename src/modules/{ => x11}/module-x11-xsmp.c (100%)
create mode 100644 src/pulsecore/aupdate.c
create mode 100644 src/pulsecore/aupdate.h
create mode 100644 src/pulsecore/database-gdbm.c
create mode 100644 src/pulsecore/database-tdb.c
create mode 100644 src/pulsecore/database.h
create mode 100644 src/pulsecore/mime-type.c
copy src/{tests/sig2str-test.c => pulsecore/mime-type.h} (62%)
create mode 100644 src/pulsecore/sndfile-util.c
create mode 100644 src/pulsecore/sndfile-util.h
delete mode 100644 src/utils/paplay.c
-----------------------------------------------------------------------
commit ad12d7d4b020e6be225a8d6494de69d051ec7f81
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 22 19:10:09 2009 +0200
memtrap,aupdate: split atomic update from memtrap into seperate aupdate framework
diff --git a/src/Makefile.am b/src/Makefile.am
index b6db815..68b42df 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -583,6 +583,7 @@ libpulsecommon_ at PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/poll.c pulsecore/poll.h \
pulsecore/prioq.c pulsecore/prioq.h \
pulsecore/memtrap.c pulsecore/memtrap.h \
+ pulsecore/aupdate.c pulsecore/aupdate.h \
pulsecore/proplist-util.c pulsecore/proplist-util.h \
pulsecore/pstream-util.c pulsecore/pstream-util.h \
pulsecore/pstream.c pulsecore/pstream.h \
diff --git a/src/pulsecore/aupdate.c b/src/pulsecore/aupdate.c
new file mode 100644
index 0000000..56ebb8e
--- /dev/null
+++ b/src/pulsecore/aupdate.c
@@ -0,0 +1,129 @@
+/***
+ 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/semaphore.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/mutex.h>
+
+#include "aupdate.h"
+
+#define MSB (1U << (sizeof(unsigned)*8U-1))
+#define WHICH(n) (!!((n) & MSB))
+#define COUNTER(n) ((n) & ~MSB)
+
+struct pa_aupdate {
+ pa_atomic_t read_lock;
+ pa_mutex *write_lock;
+ pa_semaphore *semaphore;
+};
+
+pa_aupdate *pa_aupdate_new(void) {
+ pa_aupdate *a;
+
+ a = pa_xnew(pa_aupdate, 1);
+ pa_atomic_store(&a->read_lock, 0);
+ a->write_lock = pa_mutex_new(FALSE, FALSE);
+ a->semaphore = pa_semaphore_new(0);
+
+ return a;
+}
+
+void pa_aupdate_free(pa_aupdate *a) {
+ pa_assert(a);
+
+ pa_mutex_free(a->write_lock);
+ pa_semaphore_free(a->semaphore);
+
+ pa_xfree(a);
+}
+
+unsigned pa_aupdate_read_begin(pa_aupdate *a) {
+ unsigned n;
+
+ pa_assert(a);
+
+ /* Increase the lock counter */
+ n = (unsigned) pa_atomic_inc(&a->read_lock);
+
+ /* When n is 0 we have about 2^31 threads running that all try to
+ * access the data at the same time, oh my! */
+ pa_assert(COUNTER(n)+1 > 0);
+
+ /* The uppermost bit tells us which data to look at */
+ return WHICH(n);
+}
+
+void pa_aupdate_read_end(pa_aupdate *a) {
+ unsigned n;
+
+ pa_assert(a);
+
+ /* Decrease the lock counter */
+ n = (unsigned) pa_atomic_dec(&a->read_lock);
+
+ /* Make sure the counter was valid */
+ pa_assert(COUNTER(n) > 0);
+
+ /* Post the semaphore */
+ pa_semaphore_post(a->semaphore);
+}
+
+unsigned pa_aupdate_write_begin(pa_aupdate *a) {
+ unsigned n;
+
+ pa_assert(a);
+
+ pa_mutex_lock(a->write_lock);
+
+ n = (unsigned) pa_atomic_load(&a->read_lock);
+
+ return !WHICH(n);
+}
+
+unsigned pa_aupdate_write_swap(pa_aupdate *a) {
+ unsigned n;
+
+ pa_assert(a);
+
+ for (;;) {
+ n = (unsigned) pa_atomic_load(&a->read_lock);
+
+ /* If the read counter is > 0 wait; if it is 0 try to swap the lists */
+ if (COUNTER(n) > 0)
+ pa_semaphore_wait(a->semaphore);
+ else if (pa_atomic_cmpxchg(&a->read_lock, (int) n, (int) (n ^ MSB)))
+ break;
+ }
+
+ return WHICH(n);
+}
+
+void pa_aupdate_write_end(pa_aupdate *a) {
+ pa_assert(a);
+
+ pa_mutex_unlock(a->write_lock);
+}
diff --git a/src/pulsecore/aupdate.h b/src/pulsecore/aupdate.h
new file mode 100644
index 0000000..072e382
--- /dev/null
+++ b/src/pulsecore/aupdate.h
@@ -0,0 +1,98 @@
+#ifndef foopulsecoreaupdatehfoo
+#define foopulsecoreaupdatehfoo
+
+/***
+ 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.
+***/
+
+typedef struct pa_aupdate pa_aupdate;
+
+pa_aupdate *pa_aupdate_new(void);
+void pa_aupdate_free(pa_aupdate *a);
+
+/* Will return 0, or 1, depending on which copy of the data the caller
+ * should look at */
+unsigned pa_aupdate_read_begin(pa_aupdate *a);
+void pa_aupdate_read_end(pa_aupdate *a);
+
+/* Will return 0, or 1, depending which copy of the data the caller
+ * should modify */
+unsigned pa_aupdate_write_begin(pa_aupdate *a);
+void pa_aupdate_write_end(pa_aupdate *a);
+
+/* Will return 0, or 1, depending which copy of the data the caller
+ * should modify. Each time called this will return the opposite of
+ * the previous pa_aupdate_write_begin()/pa_aupdate_write_swap()
+ * call. Should only be called between pa_aupdate_write_begin() and
+ * pa_aupdate_write_end() */
+unsigned pa_aupdate_write_swap(pa_aupdate *a);
+
+/*
+ * This infrastructure allows lock-free updates of arbitrary data
+ * structures in an rcu'ish way: two copies of the data structure
+ * should be exisiting. One side ('the reader') has read access to one
+ * of the two data structure at a time. It does not have to lock it,
+ * however it needs to signal that it is using it/stopped using
+ * it. The other side ('the writer') modifes the second data structure,
+ * and then atomically swaps the two data structures, followed by a
+ * modification of the other one.
+ *
+ * This is intended to be used for cases where the reader side needs
+ * to be fast while the writer side can be slow.
+ *
+ * The reader side is signal handler safe.
+ *
+ * The writer side lock is not recursive. The reader side is.
+ *
+ * There may be multiple readers and multiple writers at the same
+ * time.
+ *
+ * Usage is like this:
+ *
+ * static struct foo bar[2];
+ * static pa_aupdate *a;
+ *
+ * reader() {
+ * unsigned j;
+ *
+ * j = pa_update_read_begin(a);
+ *
+ * ... read the data structure bar[j] ...
+ *
+ * pa_update_read_end(a);
+ * }
+ *
+ * writer() {
+ * unsigned j;
+ *
+ * j = pa_update_write_begin(a);
+ *
+ * ... update the data structure bar[j] ...
+ *
+ * j = pa_update_write_swap(a);
+ *
+ * ... update the data structure bar[j], the same way as above ...
+ *
+ * pa_update_write_end(a)
+ * }
+ *
+ */
+
+#endif
diff --git a/src/pulsecore/memtrap.c b/src/pulsecore/memtrap.c
index e04e838..bd0243e 100644
--- a/src/pulsecore/memtrap.c
+++ b/src/pulsecore/memtrap.c
@@ -28,10 +28,10 @@
#include <pulse/xmalloc.h>
-#include <pulsecore/semaphore.h>
-#include <pulsecore/macro.h>
-#include <pulsecore/mutex.h>
#include <pulsecore/core-util.h>
+#include <pulsecore/aupdate.h>
+#include <pulsecore/atomic.h>
+#include <pulsecore/once.h>
#include "memtrap.h"
@@ -43,13 +43,13 @@ struct pa_memtrap {
};
static pa_memtrap *memtraps[2] = { NULL, NULL };
-static pa_atomic_t read_lock = PA_ATOMIC_INIT(0);
-static pa_static_semaphore semaphore = PA_STATIC_SEMAPHORE_INIT;
-static pa_static_mutex write_lock = PA_STATIC_MUTEX_INIT;
+static pa_aupdate *aupdate;
-#define MSB (1U << (sizeof(unsigned)*8U-1))
-#define WHICH(n) (!!((n) & MSB))
-#define COUNTER(n) ((n) & ~MSB)
+static void allocate_aupdate(void) {
+ PA_ONCE_BEGIN {
+ aupdate = pa_aupdate_new();
+ } PA_ONCE_END;
+}
pa_bool_t pa_memtrap_is_good(pa_memtrap *m) {
pa_assert(m);
@@ -62,19 +62,11 @@ static void sigsafe_error(const char *s) {
}
static void signal_handler(int sig, siginfo_t* si, void *data) {
- unsigned n, j;
+ unsigned j;
pa_memtrap *m;
void *r;
- /* Increase the lock counter */
- n = (unsigned) pa_atomic_inc(&read_lock);
-
- /* The uppermost bit tells us which list to look at */
- j = WHICH(n);
-
- /* When n is 0 we have about 2^31 threads running that
- * all got a sigbus at the same time, oh my! */
- pa_assert(COUNTER(n)+1 > 0);
+ j = pa_aupdate_read_begin(aupdate);
for (m = memtraps[j]; m; m = m->next[j])
if (si->si_addr >= m->start &&
@@ -94,33 +86,16 @@ static void signal_handler(int sig, siginfo_t* si, void *data) {
pa_assert(r == m->start);
- pa_atomic_dec(&read_lock);
-
- /* Post the semaphore */
- pa_semaphore_post(pa_static_semaphore_get(&semaphore, 0));
-
+ pa_aupdate_read_end(aupdate);
return;
fail:
+ pa_aupdate_read_end(aupdate);
+
sigsafe_error("Failed to handle SIGBUS.\n");
- pa_atomic_dec(&read_lock);
abort();
}
-static void memtrap_swap(unsigned n) {
-
- for (;;) {
-
- /* If the read counter is > 0 wait; if it is 0 try to swap the lists */
- if (COUNTER(n) > 0)
- pa_semaphore_wait(pa_static_semaphore_get(&semaphore, 0));
- else if (pa_atomic_cmpxchg(&read_lock, (int) n, (int) (n ^ MSB)))
- break;
-
- n = (unsigned) pa_atomic_load(&read_lock);
- }
-}
-
static void memtrap_link(pa_memtrap *m, unsigned j) {
pa_assert(m);
@@ -143,58 +118,47 @@ static void memtrap_unlink(pa_memtrap *m, unsigned j) {
pa_memtrap* pa_memtrap_add(const void *start, size_t size) {
pa_memtrap *m = NULL;
- pa_mutex *lock;
- unsigned n, j;
+ unsigned j;
pa_assert(start);
pa_assert(size > 0);
pa_assert(PA_PAGE_ALIGN_PTR(start) == start);
pa_assert(PA_PAGE_ALIGN(size) == size);
- lock = pa_static_mutex_get(&write_lock, FALSE, FALSE);
- pa_mutex_lock(lock);
-
- n = (unsigned) pa_atomic_load(&read_lock);
- j = WHICH(n);
-
m = pa_xnew(pa_memtrap, 1);
m->start = (void*) start;
m->size = size;
pa_atomic_store(&m->bad, 0);
- memtrap_link(m, !j);
- memtrap_swap(n);
- memtrap_link(m, j);
+ allocate_aupdate();
- pa_mutex_unlock(lock);
+ j = pa_aupdate_write_begin(aupdate);
+ memtrap_link(m, j);
+ j = pa_aupdate_write_swap(aupdate);
+ memtrap_link(m, j);
+ pa_aupdate_write_end(aupdate);
return m;
}
void pa_memtrap_remove(pa_memtrap *m) {
- unsigned n, j;
- pa_mutex *lock;
+ unsigned j;
pa_assert(m);
- lock = pa_static_mutex_get(&write_lock, FALSE, FALSE);
- pa_mutex_lock(lock);
+ allocate_aupdate();
- n = (unsigned) pa_atomic_load(&read_lock);
- j = WHICH(n);
-
- memtrap_unlink(m, !j);
- memtrap_swap(n);
+ j = pa_aupdate_write_begin(aupdate);
+ memtrap_unlink(m, j);
+ j = pa_aupdate_write_swap(aupdate);
memtrap_unlink(m, j);
+ pa_aupdate_write_end(aupdate);
pa_xfree(m);
-
- pa_mutex_unlock(lock);
}
pa_memtrap *pa_memtrap_update(pa_memtrap *m, const void *start, size_t size) {
- unsigned n, j;
- pa_mutex *lock;
+ unsigned j;
pa_assert(m);
@@ -203,32 +167,25 @@ pa_memtrap *pa_memtrap_update(pa_memtrap *m, const void *start, size_t size) {
pa_assert(PA_PAGE_ALIGN_PTR(start) == start);
pa_assert(PA_PAGE_ALIGN(size) == size);
- lock = pa_static_mutex_get(&write_lock, FALSE, FALSE);
- pa_mutex_lock(lock);
+ allocate_aupdate();
+
+ j = pa_aupdate_write_begin(aupdate);
if (m->start == start && m->size == size)
goto unlock;
- n = (unsigned) pa_atomic_load(&read_lock);
- j = WHICH(n);
-
- memtrap_unlink(m, !j);
- memtrap_swap(n);
memtrap_unlink(m, j);
+ j = pa_aupdate_write_swap(aupdate);
m->start = (void*) start;
m->size = size;
pa_atomic_store(&m->bad, 0);
- n = (unsigned) pa_atomic_load(&read_lock);
- j = WHICH(n);
-
- memtrap_link(m, !j);
- memtrap_swap(n);
+ j = pa_aupdate_write_swap(aupdate);
memtrap_link(m, j);
unlock:
- pa_mutex_unlock(lock);
+ pa_aupdate_write_end(aupdate);
return m;
}
@@ -236,10 +193,7 @@ unlock:
void pa_memtrap_install(void) {
struct sigaction sa;
- /* Before we install the signal handler, make sure the semaphore
- * is valid so that the initialization of the semaphore
- * doesn't have to happen from the signal handler */
- pa_static_semaphore_get(&semaphore, 0);
+ allocate_aupdate();
memset(&sa, 0, sizeof(sa));
sa.sa_sigaction = signal_handler;
diff --git a/src/pulsecore/memtrap.h b/src/pulsecore/memtrap.h
index f7da708..fa38da5 100644
--- a/src/pulsecore/memtrap.h
+++ b/src/pulsecore/memtrap.h
@@ -34,7 +34,7 @@
* still 'good' i.e. no SIGBUS has happened yet for it.
*
* Intended usage is to handle memory mapped in which is controlled by
- * other processes that might execute ftruncate() or when mapping in
+ * other processes that might execute ftruncate() or when mapping inb
* hardware resources that might get invalidated when unplugged. */
typedef struct pa_memtrap pa_memtrap;
commit edba78c8e07bd6794c366dfb2b513a6aaaf26aa3
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 22 22:05:20 2009 +0200
start-pulseaudio-x11: don't start a local sound server if a remote sound server is configured
diff --git a/src/daemon/start-pulseaudio-x11.in b/src/daemon/start-pulseaudio-x11.in
index 391a6d3..c57c489 100755
--- a/src/daemon/start-pulseaudio-x11.in
+++ b/src/daemon/start-pulseaudio-x11.in
@@ -19,6 +19,8 @@
set -e
+[ -z "$PULSE_SERVER" ]
+
@PA_BINARY@ --start "$@"
if [ x"$DISPLAY" != x ] ; then
commit ebe22ad0c3f95345427c35ec17c37f45e0ebbb5b
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Thu Apr 23 19:23:11 2009 +0300
build: generate git tarball using git describe
diff --git a/Makefile.am b/Makefile.am
index 9a3ca7b..2448e74 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -52,7 +52,7 @@ untabify:
find \( -name '*.c' -o -name '*.h' \) -exec perl -i -pe 's/\t/ /g;' \{\} \;
fedora-snapshot: dist
- cp $(distdir).tar.gz $$HOME/cvs.fedora/pulseaudio/devel/$(distdir).git`date +%Y%m%d`.tar.gz
+ cp $(distdir).tar.gz $$HOME/cvs.fedora/pulseaudio/devel/$(distdir).tar.gz
dist-hook:
if test -d .git ; then \
@@ -60,6 +60,7 @@ dist-hook:
chmod u+w ${distdir}/ChangeLog || true ; \
( git-changelog.perl || echo "git-changelog.perl failed." ) > ${distdir}/ChangeLog 2>&1 ; \
fi
+ echo $(VERSION) > $(distdir)/.tarball-version
update-shave:
for i in shave.in shave.m4 shave-libtool.in; do \
@@ -69,5 +70,10 @@ update-shave:
.PHONY: homepage distcleancheck doxygen
+# see git-version-gen
+BUILT_SOURCES = $(top_srcdir)/.version
+$(top_srcdir)/.version:
+ echo $(VERSION) > $@-t && mv $@-t $@
+
DISTCLEANFILES = \
po/.intltool-merge-cache
diff --git a/configure.ac b/configure.ac
index 25cee57..0444714 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,16 +22,17 @@
AC_PREREQ(2.63)
-m4_define(pa_major, [0])
-m4_define(pa_minor, [9])
-m4_define(pa_micro, [15])
-
-AC_INIT([pulseaudio],[pa_major.pa_minor.pa_micro],[mzchyfrnhqvb (at) 0pointer (dot) net])
+AC_INIT([pulseaudio], m4_esyscmd([./git-version-gen .tarball-version]),
+ [mzchyfrnhqvb (at) 0pointer (dot) net])
AC_CONFIG_SRCDIR([src/daemon/main.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign 1.10 -Wall -Wno-portability])
+m4_define(pa_major, `echo $VERSION | cut -d. -f 1`)
+m4_define(pa_minor, `echo $VERSION | cut -d. -f 2`)
+m4_define(pa_micro, `echo $VERSION | cut -d. -f 3`)
+
AC_SUBST(PA_MAJOR, pa_major)
AC_SUBST(PA_MINOR, pa_minor)
AC_SUBST(PA_MICRO, pa_micro)
diff --git a/git-version-gen b/git-version-gen
new file mode 100755
index 0000000..710870c
--- /dev/null
+++ b/git-version-gen
@@ -0,0 +1,152 @@
+#!/bin/sh
+# Print a version string.
+scriptversion=2008-04-08.07
+
+# Copyright (C) 2007-2008 Free Software Foundation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program 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 General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
+# It may be run two ways:
+# - from a git repository in which the "git describe" command below
+# produces useful output (thus requiring at least one signed tag)
+# - from a non-git-repo directory containing a .tarball-version file, which
+# presumes this script is invoked like "./git-version-gen .tarball-version".
+
+# In order to use intra-version strings in your project, you will need two
+# separate generated version string files:
+#
+# .tarball-version - present only in a distribution tarball, and not in
+# a checked-out repository. Created with contents that were learned at
+# the last time autoconf was run, and used by git-version-gen. Must not
+# be present in either $(srcdir) or $(builddir) for git-version-gen to
+# give accurate answers during normal development with a checked out tree,
+# but must be present in a tarball when there is no version control system.
+# Therefore, it cannot be used in any dependencies. GNUmakefile has
+# hooks to force a reconfigure at distribution time to get the value
+# correct, without penalizing normal development with extra reconfigures.
+#
+# .version - present in a checked-out repository and in a distribution
+# tarball. Usable in dependencies, particularly for files that don't
+# want to depend on config.h but do want to track version changes.
+# Delete this file prior to any autoconf run where you want to rebuild
+# files to pick up a version string change; and leave it stale to
+# minimize rebuild time after unrelated changes to configure sources.
+#
+# It is probably wise to add these two files to .gitignore, so that you
+# don't accidentally commit either generated file.
+#
+# Use the following line in your configure.ac, so that $(VERSION) will
+# automatically be up-to-date each time configure is run (and note that
+# since configure.ac no longer includes a version string, Makefile rules
+# should not depend on configure.ac for version updates).
+#
+# AC_INIT([GNU project],
+# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
+# [bug-project at example])
+#
+# Then use the following lines in your Makefile.am, so that .version
+# will be present for dependencies, and so that .tarball-version will
+# exist in distribution tarballs.
+#
+# BUILT_SOURCES = $(top_srcdir)/.version
+# $(top_srcdir)/.version:
+# echo $(VERSION) > $@-t && mv $@-t $@
+# dist-hook:
+# echo $(VERSION) > $(distdir)/.tarball-version
+
+case $# in
+ 1) ;;
+ *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
+esac
+
+tarball_version_file=$1
+nl='
+'
+
+# First see if there is a tarball-only version file.
+# then try "git describe", then default.
+if test -f $tarball_version_file
+then
+ v=`cat $tarball_version_file` || exit 1
+ case $v in
+ *$nl*) v= ;; # reject multi-line output
+ [0-9]*) ;;
+ *) v= ;;
+ esac
+ test -z "$v" \
+ && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
+fi
+
+if test -n "$v"
+then
+ : # use $v
+elif test -d .git \
+ && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
+ || git describe --abbrev=4 HEAD 2>/dev/null` \
+ && case $v in
+ v[0-9]*) ;;
+ *) (exit 1) ;;
+ esac
+then
+ # Is this a new git that lists number of commits since the last
+ # tag or the previous older version that did not?
+ # Newer: v6.10-77-g0f8faeb
+ # Older: v6.10-g0f8faeb
+ case $v in
+ *-*-*) : git describe is okay three part flavor ;;
+ *-*)
+ : git describe is older two part flavor
+ # Recreate the number of commits and rewrite such that the
+ # result is the same as if we were using the newer version
+ # of git describe.
+ vtag=`echo "$v" | sed 's/-.*//'`
+ numcommits=`git rev-list "$vtag"..HEAD | wc -l`
+ v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
+ ;;
+ esac
+
+ # Change the first '-' to a '.', so version-comparing tools work properly.
+ # Remove the "g" in git describe's output string, to save a byte.
+ v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
+else
+ v=UNKNOWN
+fi
+
+v=`echo "$v" |sed 's/^v//'`
+
+# Don't declare a version "dirty" merely because a time stamp has changed.
+git status > /dev/null 2>&1
+
+dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
+case "$dirty" in
+ '') ;;
+ *) # Append the suffix only if there isn't one already.
+ case $v in
+ *-dirty) ;;
+ *) v="$v-dirty" ;;
+ esac ;;
+esac
+
+# Omit the trailing newline, so that m4_esyscmd can use the result directly.
+echo "$v" | tr -d '\012'
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
commit 35382d6d303307ba04fa0153acd8e8cb89086454
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Thu Apr 23 18:09:07 2009 +0300
build: there is no such thing as SHAVE_OUTPUT anymore
diff --git a/configure.ac b/configure.ac
index 0444714..6031ebd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1323,7 +1323,6 @@ po/Makefile.in
SHAVE_INIT
AC_OUTPUT
-SHAVE_OUTPUT
# ==========================================================================
ENABLE_X11=no
commit af8f0583a3f371f937979fefe986c31cf6568a17
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Apr 24 17:51:00 2009 +0200
build-system: run make update-shave
diff --git a/m4/shave.m4 b/m4/shave.m4
index 0c2c9f5..0a3509e 100644
--- a/m4/shave.m4
+++ b/m4/shave.m4
@@ -1,4 +1,5 @@
dnl Make automake/libtool output more friendly to humans
+dnl Damien Lespiau <damien.lespiau at gmail.com>
dnl
dnl SHAVE_INIT([shavedir],[default_mode])
dnl
@@ -53,14 +54,17 @@ AC_DEFUN([SHAVE_INIT],
SHAVE_SAVED_CXX=$CXX
SHAVE_SAVED_FC=$FC
SHAVE_SAVED_F77=$F77
+ SHAVE_SAVED_OBJC=$OBJC
CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}"
CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}"
FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}"
F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}"
+ OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}"
AC_SUBST(CC)
AC_SUBST(CXX)
AC_SUBST(FC)
AC_SUBST(F77)
+ AC_SUBST(OBJC)
V=@
else
diff --git a/shave.in b/shave.in
index 174641e..5c16f27 100644
--- a/shave.in
+++ b/shave.in
@@ -56,6 +56,9 @@ link,*)
*,f77)
Q=" F77 "
;;
+*,objc)
+ Q=" OBJC "
+ ;;
*,*)
# should not happen
Q=" CC "
commit 908b0e6738778d4e7244391bcccecb8a0db542aa
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Apr 24 17:51:43 2009 +0200
build-system: hide .version from git
diff --git a/.gitignore b/.gitignore
index e2a5091..fae5b47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.version
shave
shave-libtool
.*.swp
commit 0368d6e22b9d7e6fec2474d158eaec16c90054f5
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Apr 28 02:29:01 2009 +0200
build-system: move x11 and jack modules into subdirectories
diff --git a/src/Makefile.am b/src/Makefile.am
index 68b42df..719f9dd 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1115,10 +1115,10 @@ SYMDEF_FILES = \
modules/module-mmkbd-evdev-symdef.h \
modules/module-http-protocol-tcp-symdef.h \
modules/module-http-protocol-unix-symdef.h \
- modules/module-x11-bell-symdef.h \
- modules/module-x11-publish-symdef.h \
- modules/module-x11-xsmp-symdef.h \
- modules/module-x11-cork-request-symdef.h \
+ modules/x11/module-x11-bell-symdef.h \
+ modules/x11/module-x11-publish-symdef.h \
+ modules/x11/module-x11-xsmp-symdef.h \
+ modules/x11/module-x11-cork-request-symdef.h \
modules/oss/module-oss-symdef.h \
modules/alsa/module-alsa-sink-symdef.h \
modules/alsa/module-alsa-source-symdef.h \
@@ -1128,8 +1128,8 @@ SYMDEF_FILES = \
modules/module-detect-symdef.h \
modules/rtp/module-rtp-send-symdef.h \
modules/rtp/module-rtp-recv-symdef.h \
- modules/module-jack-sink-symdef.h \
- modules/module-jack-source-symdef.h \
+ modules/jack/module-jack-sink-symdef.h \
+ modules/jack/module-jack-source-symdef.h \
modules/module-volume-restore-symdef.h \
modules/module-device-restore-symdef.h \
modules/module-stream-restore-symdef.h \
@@ -1292,22 +1292,22 @@ module_tunnel_source_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.
# X11
-module_x11_bell_la_SOURCES = modules/module-x11-bell.c
+module_x11_bell_la_SOURCES = modules/x11/module-x11-bell.c
module_x11_bell_la_CFLAGS = $(AM_CFLAGS) $(X11_CFLAGS)
module_x11_bell_la_LDFLAGS = $(MODULE_LDFLAGS)
module_x11_bell_la_LIBADD = $(AM_LIBADD) $(X11_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
-module_x11_publish_la_SOURCES = modules/module-x11-publish.c
+module_x11_publish_la_SOURCES = modules/x11/module-x11-publish.c
module_x11_publish_la_CFLAGS = $(AM_CFLAGS) $(X11_CFLAGS)
module_x11_publish_la_LDFLAGS = $(MODULE_LDFLAGS)
module_x11_publish_la_LIBADD = $(AM_LIBADD) $(X11_LIBS) libprotocol-native.la libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
-module_x11_xsmp_la_SOURCES = modules/module-x11-xsmp.c
+module_x11_xsmp_la_SOURCES = modules/x11/module-x11-xsmp.c
module_x11_xsmp_la_CFLAGS = $(AM_CFLAGS) $(X11_CFLAGS)
module_x11_xsmp_la_LDFLAGS = $(MODULE_LDFLAGS)
module_x11_xsmp_la_LIBADD = $(AM_LIBADD) $(X11_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
-module_x11_cork_request_la_SOURCES = modules/module-x11-cork-request.c
+module_x11_cork_request_la_SOURCES = modules/x11/module-x11-cork-request.c
module_x11_cork_request_la_CFLAGS = $(AM_CFLAGS) $(X11_CFLAGS)
module_x11_cork_request_la_LDFLAGS = $(MODULE_LDFLAGS)
module_x11_cork_request_la_LIBADD = $(AM_LIBADD) $(X11_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
@@ -1487,12 +1487,12 @@ module_rtp_recv_la_CFLAGS = $(AM_CFLAGS)
# JACK
-module_jack_sink_la_SOURCES = modules/module-jack-sink.c
+module_jack_sink_la_SOURCES = modules/jack/module-jack-sink.c
module_jack_sink_la_LDFLAGS = $(MODULE_LDFLAGS)
module_jack_sink_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_jack_sink_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS)
-module_jack_source_la_SOURCES = modules/module-jack-source.c
+module_jack_source_la_SOURCES = modules/jack/module-jack-source.c
module_jack_source_la_LDFLAGS = $(MODULE_LDFLAGS)
module_jack_source_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_jack_source_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS)
diff --git a/src/modules/module-jack-sink.c b/src/modules/jack/module-jack-sink.c
similarity index 100%
rename from src/modules/module-jack-sink.c
rename to src/modules/jack/module-jack-sink.c
diff --git a/src/modules/module-jack-source.c b/src/modules/jack/module-jack-source.c
similarity index 100%
rename from src/modules/module-jack-source.c
rename to src/modules/jack/module-jack-source.c
diff --git a/src/modules/module-x11-bell.c b/src/modules/x11/module-x11-bell.c
similarity index 100%
rename from src/modules/module-x11-bell.c
rename to src/modules/x11/module-x11-bell.c
diff --git a/src/modules/module-x11-cork-request.c b/src/modules/x11/module-x11-cork-request.c
similarity index 100%
rename from src/modules/module-x11-cork-request.c
rename to src/modules/x11/module-x11-cork-request.c
diff --git a/src/modules/module-x11-publish.c b/src/modules/x11/module-x11-publish.c
similarity index 100%
rename from src/modules/module-x11-publish.c
rename to src/modules/x11/module-x11-publish.c
diff --git a/src/modules/module-x11-xsmp.c b/src/modules/x11/module-x11-xsmp.c
similarity index 100%
rename from src/modules/module-x11-xsmp.c
rename to src/modules/x11/module-x11-xsmp.c
commit 5d39b8d22d4cce197778d8ef554a88c4be116f92
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:46:12 2009 +0200
idxset: add enumeration macro PA_IDXSET_FOREACH
diff --git a/src/pulsecore/idxset.h b/src/pulsecore/idxset.h
index 7531ea3..6b9ff47 100644
--- a/src/pulsecore/idxset.h
+++ b/src/pulsecore/idxset.h
@@ -103,4 +103,8 @@ unsigned pa_idxset_size(pa_idxset*s);
/* Return TRUE of the idxset is empty */
pa_bool_t pa_idxset_isempty(pa_idxset *s);
+
+#define PA_IDXSET_FOREACH(e, s, idx) \
+ for ((e) = pa_idxset_first((s), &(idx)); (e); (e) = pa_idxset_next((s), &(idx)))
+
#endif
commit 9745483cddb70c6414c8b548f712df4ff9317f43
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:46:51 2009 +0200
strbuf: add new call pa_strbuf_putc()
diff --git a/src/pulsecore/strbuf.c b/src/pulsecore/strbuf.c
index 9f5a84b..4fc82de 100644
--- a/src/pulsecore/strbuf.c
+++ b/src/pulsecore/strbuf.c
@@ -113,6 +113,13 @@ void pa_strbuf_puts(pa_strbuf *sb, const char *t) {
pa_strbuf_putsn(sb, t, strlen(t));
}
+/* Append a character to the string buffer */
+void pa_strbuf_putc(pa_strbuf *sb, char c) {
+ pa_assert(sb);
+
+ pa_strbuf_putsn(sb, &c, 1);
+}
+
/* Append a new chunk to the linked list */
static void append(pa_strbuf *sb, struct chunk *c) {
pa_assert(sb);
diff --git a/src/pulsecore/strbuf.h b/src/pulsecore/strbuf.h
index 05e69e0..d71ecb9 100644
--- a/src/pulsecore/strbuf.h
+++ b/src/pulsecore/strbuf.h
@@ -35,6 +35,7 @@ char *pa_strbuf_tostring_free(pa_strbuf *sb);
size_t pa_strbuf_printf(pa_strbuf *sb, const char *format, ...) PA_GCC_PRINTF_ATTR(2,3);
void pa_strbuf_puts(pa_strbuf *sb, const char *t);
void pa_strbuf_putsn(pa_strbuf *sb, const char *t, size_t m);
+void pa_strbuf_putc(pa_strbuf *sb, char c);
pa_bool_t pa_strbuf_isempty(pa_strbuf *sb);
commit 595c22a3ad2ac55e141959ada634d4cd0aa86aad
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:49:02 2009 +0200
shm: page align shm size when mmap()ing it
diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c
index b8c5f78..fe556da 100644
--- a/src/pulsecore/shm.c
+++ b/src/pulsecore/shm.c
@@ -105,7 +105,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) {
m->size = size;
#ifdef MAP_ANONYMOUS
- if ((m->ptr = mmap(NULL, m->size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, (off_t) 0)) == MAP_FAILED) {
+ if ((m->ptr = mmap(NULL, PA_PAGE_ALIGN(m->size), PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, (off_t) 0)) == MAP_FAILED) {
pa_log("mmap() failed: %s", pa_cstrerror(errno));
goto fail;
}
@@ -143,7 +143,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) {
goto fail;
}
- if ((m->ptr = mmap(NULL, m->size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, (off_t) 0)) == MAP_FAILED) {
+ if ((m->ptr = mmap(NULL, PA_PAGE_ALIGN(m->size), PROT_READ|PROT_WRITE, MAP_SHARED, fd, (off_t) 0)) == MAP_FAILED) {
pa_log("mmap() failed: %s", pa_cstrerror(errno));
goto fail;
}
@@ -291,7 +291,7 @@ int pa_shm_attach_ro(pa_shm *m, unsigned id) {
m->size = (size_t) st.st_size;
- if ((m->ptr = mmap(NULL, m->size, PROT_READ, MAP_SHARED, fd, (off_t) 0)) == MAP_FAILED) {
+ if ((m->ptr = mmap(NULL, PA_PAGE_ALIGN(m->size), PROT_READ, MAP_SHARED, fd, (off_t) 0)) == MAP_FAILED) {
pa_log("mmap() failed: %s", pa_cstrerror(errno));
goto fail;
}
commit 8247e4555b267ff85a386712633427dd689d2aa1
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:49:22 2009 +0200
shm: minor modernizations
diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c
index fe556da..5b9e960 100644
--- a/src/pulsecore/shm.c
+++ b/src/pulsecore/shm.c
@@ -154,7 +154,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) {
pa_atomic_store(&marker->pid, (int) getpid());
pa_atomic_store(&marker->marker, SHM_MARKER);
- pa_assert_se(close(fd) == 0);
+ pa_assert_se(pa_close(fd) == 0);
m->do_unlink = TRUE;
#else
return -1;
@@ -296,8 +296,8 @@ int pa_shm_attach_ro(pa_shm *m, unsigned id) {
goto fail;
}
- m->do_unlink = 0;
- m->shared = 1;
+ m->do_unlink = FALSE;
+ m->shared = TRUE;
pa_assert_se(pa_close(fd) == 0);
commit 68f3ca9831a0ede7439348d0cd952f7730305bca
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:52:11 2009 +0200
macro: add new macro pa_align_ptr()
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index a5ca696..2f6ee90 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -57,11 +57,19 @@
#define PA_PAGE_SIZE ((size_t) 4096)
#endif
+/* Rounds down */
+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*));
}
#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));
}
commit bd0e4ceb857f3e7891e0d5aeebaa6e2144986ccb
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:52:28 2009 +0200
macro: make pa_page_align roung up instead of down
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index 2f6ee90..73438e6 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -75,8 +75,9 @@ static inline void* pa_page_align_ptr(const void *p) {
}
#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);
+ return ((l + PA_PAGE_SIZE - 1) / PA_PAGE_SIZE) * PA_PAGE_SIZE;
}
#define PA_PAGE_ALIGN(x) (pa_page_align(x))
commit 4abd5fae1431d47398d3b007fdceac5fda7607a8
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:53:28 2009 +0200
memtrap: implicitly page align memory areas
diff --git a/src/pulsecore/memtrap.c b/src/pulsecore/memtrap.c
index bd0243e..601fef4 100644
--- a/src/pulsecore/memtrap.c
+++ b/src/pulsecore/memtrap.c
@@ -122,8 +122,9 @@ pa_memtrap* pa_memtrap_add(const void *start, size_t size) {
pa_assert(start);
pa_assert(size > 0);
- pa_assert(PA_PAGE_ALIGN_PTR(start) == start);
- pa_assert(PA_PAGE_ALIGN(size) == size);
+
+ start = PA_PAGE_ALIGN_PTR(start);
+ size = PA_PAGE_ALIGN(size);
m = pa_xnew(pa_memtrap, 1);
m->start = (void*) start;
@@ -164,8 +165,9 @@ pa_memtrap *pa_memtrap_update(pa_memtrap *m, const void *start, size_t size) {
pa_assert(start);
pa_assert(size > 0);
- pa_assert(PA_PAGE_ALIGN_PTR(start) == start);
- pa_assert(PA_PAGE_ALIGN(size) == size);
+
+ start = PA_PAGE_ALIGN_PTR(start);
+ size = PA_PAGE_ALIGN(size);
allocate_aupdate();
commit a8f0d7ec1e5cb3f52c4b1abfce1016ed6d9b00f8
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:54:44 2009 +0200
core-util: introduce pa_get_host_name_malloc() and pa_get_user_name_malloc()
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 294f63c..4658eb5 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -2467,31 +2467,29 @@ pa_bool_t pa_in_system_mode(void) {
return !!atoi(e);
}
-char *pa_machine_id(void) {
- FILE *f;
- size_t l;
-
- /* The returned value is supposed be some kind of ascii identifier
- * that is unique and stable across reboots. */
+char *pa_get_user_name_malloc(void) {
+ ssize_t k;
+ char *u;
- /* First we try the D-Bus UUID, which is the best option we have,
- * since it fits perfectly our needs and is not as volatile as the
- * hostname which might be set from dhcp. */
-
- if ((f = fopen(PA_MACHINE_ID, "r"))) {
- char ln[34] = "", *r;
+#ifdef _SC_LOGIN_NAME_MAX
+ k = (ssize_t) sysconf(_SC_LOGIN_NAME_MAX);
- r = fgets(ln, sizeof(ln)-1, f);
- fclose(f);
+ if (k <= 0)
+#endif
+ k = 32;
- pa_strip_nl(ln);
+ u = pa_xnew(char, k+1);
- if (r && ln[0])
- return pa_utf8_filter(ln);
+ if (!(pa_get_user_name(u, k))) {
+ pa_xfree(u);
+ return NULL;
}
- /* The we fall back to the host name. It supposed to be somewhat
- * unique, at least in a network, but may change. */
+ return u;
+}
+
+char *pa_get_host_name_malloc(void) {
+ size_t l;
l = 100;
for (;;) {
@@ -2525,6 +2523,35 @@ char *pa_machine_id(void) {
l *= 2;
}
+ return NULL;
+}
+
+char *pa_machine_id(void) {
+ FILE *f;
+ char *h;
+
+ /* The returned value is supposed be some kind of ascii identifier
+ * that is unique and stable across reboots. */
+
+ /* First we try the D-Bus UUID, which is the best option we have,
+ * since it fits perfectly our needs and is not as volatile as the
+ * hostname which might be set from dhcp. */
+
+ if ((f = fopen(PA_MACHINE_ID, "r"))) {
+ char ln[34] = "", *r;
+
+ r = fgets(ln, sizeof(ln)-1, f);
+ fclose(f);
+
+ pa_strip_nl(ln);
+
+ if (r && ln[0])
+ return pa_utf8_filter(ln);
+ }
+
+ if ((h = pa_get_host_name_malloc()))
+ return h;
+
/* If no hostname was set we use the POSIX hostid. It's usually
* the IPv4 address. Might not be that stable. */
return pa_sprintf_malloc("%08lx", (unsigned long) gethostid);
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index f96fa44..91a4c55 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -201,6 +201,9 @@ pa_bool_t pa_in_system_mode(void);
#define pa_streq(a,b) (!strcmp((a),(b)))
+char *pa_get_host_name_malloc(void);
+char *pa_get_user_name_malloc(void);
+
char *pa_machine_id(void);
char *pa_session_id(void);
char *pa_uname_string(void);
commit ad5a1f312aaa5511863ad4c9341f735b9ac4b6a3
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:56:02 2009 +0200
protocol-native,proplist-util: port to pa_get_{user|host}_name_malloc()
diff --git a/src/pulsecore/proplist-util.c b/src/pulsecore/proplist-util.c
index eac8927..d9769bc 100644
--- a/src/pulsecore/proplist-util.c
+++ b/src/pulsecore/proplist-util.c
@@ -168,20 +168,20 @@ void pa_init_proplist(pa_proplist *p) {
}
if (!pa_proplist_contains(p, PA_PROP_APPLICATION_PROCESS_USER)) {
- char t[64];
- if (pa_get_user_name(t, sizeof(t))) {
- char *c = pa_utf8_filter(t);
- pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_USER, c);
- pa_xfree(c);
+ char *u;
+
+ if ((u = pa_get_user_name_malloc())) {
+ pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_USER, u);
+ pa_xfree(u);
}
}
if (!pa_proplist_contains(p, PA_PROP_APPLICATION_PROCESS_HOST)) {
- char t[64];
- if (pa_get_host_name(t, sizeof(t))) {
- char *c = pa_utf8_filter(t);
- pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_HOST, c);
- pa_xfree(c);
+ char *h;
+
+ if ((h = pa_get_host_name_malloc())) {
+ pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_HOST, h);
+ pa_xfree(h);
}
}
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index aecaf71..d4a9952 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -3182,10 +3182,10 @@ static void command_get_info_list(pa_pdispatch *pd, uint32_t command, uint32_t t
static void command_get_server_info(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_native_connection *c = PA_NATIVE_CONNECTION(userdata);
pa_tagstruct *reply;
- char txt[256];
pa_sink *def_sink;
pa_source *def_source;
pa_sample_spec fixed_ss;
+ char *h, *u;
pa_native_connection_assert_ref(c);
pa_assert(t);
@@ -3200,8 +3200,14 @@ static void command_get_server_info(pa_pdispatch *pd, uint32_t command, uint32_t
reply = reply_new(tag);
pa_tagstruct_puts(reply, PACKAGE_NAME);
pa_tagstruct_puts(reply, PACKAGE_VERSION);
- pa_tagstruct_puts(reply, pa_get_user_name(txt, sizeof(txt)));
- pa_tagstruct_puts(reply, pa_get_host_name(txt, sizeof(txt)));
+
+ u = pa_get_user_name_malloc();
+ pa_tagstruct_puts(reply, u);
+ pa_xfree(u);
+
+ h = pa_get_host_name_malloc();
+ pa_tagstruct_puts(reply, h);
+ pa_xfree(h);
fixup_sample_spec(c, &fixed_ss, &c->protocol->core->default_sample_spec);
pa_tagstruct_put_sample_spec(reply, &fixed_ss);
commit d8710711fb0c74b4ad83ac99c2501218155b502b
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 01:58:18 2009 +0200
alsa: allow configuration of fallback device strings in profiles
This has the benefit that we can properly support ALSA devices where
only the raw 'hw' device exists but no 'front' although it's a proper
2ch stereo device.
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 18d6880..a3a0450 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -528,7 +528,7 @@ int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min) {
static const struct pa_alsa_profile_info device_table[] = {
{{ 1, { PA_CHANNEL_POSITION_MONO }},
- "hw",
+ "hw", NULL,
N_("Analog Mono"),
"analog-mono",
1,
@@ -536,7 +536,7 @@ static const struct pa_alsa_profile_info device_table[] = {
"Capture", "Mic" },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
- "front",
+ "front", "hw",
N_("Analog Stereo"),
"analog-stereo",
10,
@@ -544,7 +544,7 @@ static const struct pa_alsa_profile_info device_table[] = {
"Capture", "Mic" },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
- "iec958",
+ "iec958", NULL,
N_("Digital Stereo (IEC958)"),
"iec958-stereo",
5,
@@ -552,7 +552,7 @@ static const struct pa_alsa_profile_info device_table[] = {
"IEC958 In", NULL },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
- "hdmi",
+ "hdmi", NULL,
N_("Digital Stereo (HDMI)"),
"hdmi-stereo",
4,
@@ -561,7 +561,7 @@ static const struct pa_alsa_profile_info device_table[] = {
{{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
- "surround40",
+ "surround40", NULL,
N_("Analog Surround 4.0"),
"analog-surround-40",
7,
@@ -570,7 +570,7 @@ static const struct pa_alsa_profile_info device_table[] = {
{{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
- "a52",
+ "a52", NULL,
N_("Digital Surround 4.0 (IEC958/AC3)"),
"iec958-ac3-surround-40",
2,
@@ -580,7 +580,7 @@ static const struct pa_alsa_profile_info device_table[] = {
{{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_LFE }},
- "surround41",
+ "surround41", NULL,
N_("Analog Surround 4.1"),
"analog-surround-41",
7,
@@ -590,7 +590,7 @@ static const struct pa_alsa_profile_info device_table[] = {
{{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_CENTER }},
- "surround50",
+ "surround50", NULL,
N_("Analog Surround 5.0"),
"analog-surround-50",
7,
@@ -600,7 +600,7 @@ static const struct pa_alsa_profile_info device_table[] = {
{{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE }},
- "surround51",
+ "surround51", NULL,
N_("Analog Surround 5.1"),
"analog-surround-51",
8,
@@ -610,7 +610,7 @@ static const struct pa_alsa_profile_info device_table[] = {
{{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_FRONT_CENTER, PA_CHANNEL_POSITION_LFE}},
- "a52",
+ "a52", NULL,
N_("Digital Surround 5.1 (IEC958/AC3)"),
"iec958-ac3-surround-51",
3,
@@ -621,16 +621,72 @@ static const struct pa_alsa_profile_info device_table[] = {
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE,
PA_CHANNEL_POSITION_SIDE_LEFT, PA_CHANNEL_POSITION_SIDE_RIGHT }},
- "surround71",
+ "surround71", NULL,
N_("Analog Surround 7.1"),
"analog-surround-71",
7,
"Master", "PCM",
"Capture", "Mic" },
- {{ 0, { 0 }}, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL }
+ {{ 0, { 0 }}, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL }
};
+static snd_pcm_t *open_by_device_string_with_fallback(
+ const char *prefix,
+ const char *prefix_fallback,
+ const char *dev_id,
+ char **dev,
+ pa_sample_spec *ss,
+ pa_channel_map* map,
+ int mode,
+ uint32_t *nfrags,
+ snd_pcm_uframes_t *period_size,
+ snd_pcm_uframes_t tsched_size,
+ pa_bool_t *use_mmap,
+ pa_bool_t *use_tsched,
+ pa_bool_t require_exact_channel_number) {
+
+ snd_pcm_t *pcm_handle;
+ char *d;
+
+ d = pa_sprintf_malloc("%s:%s", prefix, dev_id);
+
+ pcm_handle = pa_alsa_open_by_device_string(
+ d,
+ dev,
+ ss,
+ map,
+ mode,
+ nfrags,
+ period_size,
+ tsched_size,
+ use_mmap,
+ use_tsched,
+ require_exact_channel_number);
+ pa_xfree(d);
+
+ if (!pcm_handle && prefix_fallback) {
+
+ d = pa_sprintf_malloc("%s:%s", prefix_fallback, dev_id);
+
+ pcm_handle = pa_alsa_open_by_device_string(
+ d,
+ dev,
+ ss,
+ map,
+ mode,
+ nfrags,
+ period_size,
+ tsched_size,
+ use_mmap,
+ use_tsched,
+ require_exact_channel_number);
+ pa_xfree(d);
+ }
+
+ return pcm_handle;
+}
+
snd_pcm_t *pa_alsa_open_by_device_id_auto(
const char *dev_id,
char **dev,
@@ -671,14 +727,14 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
pa_log_debug("Checking for %s (%s)", device_table[i].name, device_table[i].alsa_name);
- d = pa_sprintf_malloc("%s:%s", device_table[i].alsa_name, dev_id);
-
try_ss.channels = device_table[i].map.channels;
try_ss.rate = ss->rate;
try_ss.format = ss->format;
- pcm_handle = pa_alsa_open_by_device_string(
- d,
+ pcm_handle = open_by_device_string_with_fallback(
+ device_table[i].alsa_name,
+ device_table[i].alsa_name_fallback,
+ dev_id,
dev,
&try_ss,
map,
@@ -690,8 +746,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
use_tsched,
TRUE);
- pa_xfree(d);
-
if (pcm_handle) {
*ss = try_ss;
@@ -703,6 +757,7 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
return pcm_handle;
}
+
}
if (direction > 0) {
@@ -775,7 +830,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
pa_bool_t *use_tsched,
const pa_alsa_profile_info *profile) {
- char *d;
snd_pcm_t *pcm_handle;
pa_sample_spec try_ss;
@@ -787,14 +841,14 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
pa_assert(period_size);
pa_assert(profile);
- d = pa_sprintf_malloc("%s:%s", profile->alsa_name, dev_id);
-
try_ss.channels = profile->map.channels;
try_ss.rate = ss->rate;
try_ss.format = ss->format;
- pcm_handle = pa_alsa_open_by_device_string(
- d,
+ pcm_handle = open_by_device_string_with_fallback(
+ profile->alsa_name,
+ profile->alsa_name_fallback,
+ dev_id,
dev,
&try_ss,
map,
@@ -806,8 +860,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
use_tsched,
TRUE);
- pa_xfree(d);
-
if (!pcm_handle)
return NULL;
@@ -860,6 +912,8 @@ snd_pcm_t *pa_alsa_open_by_device_string(
goto fail;
}
+ 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 (!reformat) {
@@ -928,26 +982,25 @@ int pa_alsa_probe_profiles(
snd_pcm_t *pcm_i = NULL;
if (i->alsa_name) {
- char *id;
pa_sample_spec try_ss;
pa_channel_map try_map;
pa_log_debug("Checking for playback on %s (%s)", i->name, i->alsa_name);
- id = pa_sprintf_malloc("%s:%s", i->alsa_name, dev_id);
try_ss = *ss;
try_ss.channels = i->map.channels;
try_map = i->map;
- pcm_i = pa_alsa_open_by_device_string(
- id, NULL,
+ pcm_i = open_by_device_string_with_fallback(
+ i->alsa_name,
+ i->alsa_name_fallback,
+ dev_id,
+ NULL,
&try_ss, &try_map,
SND_PCM_STREAM_PLAYBACK,
NULL, NULL, 0, NULL, NULL,
TRUE);
- pa_xfree(id);
-
if (!pcm_i)
continue;
}
@@ -956,26 +1009,25 @@ int pa_alsa_probe_profiles(
snd_pcm_t *pcm_j = NULL;
if (j->alsa_name) {
- char *jd;
pa_sample_spec try_ss;
pa_channel_map try_map;
pa_log_debug("Checking for capture on %s (%s)", j->name, j->alsa_name);
- jd = pa_sprintf_malloc("%s:%s", j->alsa_name, dev_id);
try_ss = *ss;
try_ss.channels = j->map.channels;
try_map = j->map;
- pcm_j = pa_alsa_open_by_device_string(
- jd, NULL,
+ pcm_j = open_by_device_string_with_fallback(
+ j->alsa_name,
+ j->alsa_name_fallback,
+ dev_id,
+ NULL,
&try_ss, &try_map,
SND_PCM_STREAM_CAPTURE,
NULL, NULL, 0, NULL, NULL,
TRUE);
- pa_xfree(jd);
-
if (!pcm_j)
continue;
}
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 77ac8a7..4c5d336 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -56,6 +56,7 @@ int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min);
typedef struct pa_alsa_profile_info {
pa_channel_map map;
const char *alsa_name;
+ const char *alsa_name_fallback;
const char *description; /* internationalized */
const char *name;
unsigned priority;
commit 0b2d96d6c0f586bb8436950080eda11daa170ba3
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 02:00:19 2009 +0200
protocol-http: substantial modernizations
diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c
index f3b9381..08a70e5 100644
--- a/src/pulsecore/protocol-http.c
+++ b/src/pulsecore/protocol-http.c
@@ -42,20 +42,39 @@
/* Don't allow more than this many concurrent connections */
#define MAX_CONNECTIONS 10
-#define internal_server_error(c) http_message((c), 500, "Internal Server Error", NULL)
-
#define URL_ROOT "/"
#define URL_CSS "/style"
#define URL_STATUS "/status"
+#define URL_LISTEN "/listen"
+#define URL_LISTEN_PREFIX "/listen/"
+
+#define MIME_HTML "text/html; charset=utf-8"
+#define MIME_TEXT "text/plain; charset=utf-8"
+#define MIME_CSS "text/css"
+
+#define HTML_HEADER(t) \
+ "<?xml version=\"1.0\"?>\n" \
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n" \
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n" \
+ " <head>\n" \
+ " <title>"t"</title>\n" \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style\"/>\n" \
+ " </head>\n" \
+ " <body>\n"
+
+#define HTML_FOOTER \
+ " </body>\n" \
+ "</html>\n"
+enum state {
+ STATE_REQUEST_LINE,
+ STATE_MIME_HEADER,
+ STATE_DATA
+};
struct connection {
pa_http_protocol *protocol;
pa_ioline *line;
- enum {
- REQUEST_LINE,
- MIME_HEADER,
- DATA
- } state;
+ enum state state;
char *url;
pa_module *module;
};
@@ -67,45 +86,242 @@ struct pa_http_protocol {
pa_idxset *connections;
};
-static void http_response(struct connection *c, int code, const char *msg, const char *mime) {
- char s[256];
+
+static pa_bool_t is_mime_sample_spec(const pa_sample_spec *ss, const pa_channel_map *cm) {
+
+ pa_assert(pa_channel_map_compatible(cm, ss));
+
+ switch (ss->format) {
+ case PA_SAMPLE_S16BE:
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_U8:
+
+ if (ss->rate != 8000 &&
+ ss->rate != 11025 &&
+ ss->rate != 16000 &&
+ ss->rate != 22050 &&
+ ss->rate != 24000 &&
+ ss->rate != 32000 &&
+ ss->rate != 44100 &&
+ ss->rate != 48000)
+ return FALSE;
+
+ if (ss->channels != 1 &&
+ ss->channels != 2)
+ return FALSE;
+
+ if ((cm->channels == 1 && cm->map[0] != PA_CHANNEL_POSITION_MONO) ||
+ (cm->channels == 2 && (cm->map[0] != PA_CHANNEL_POSITION_LEFT || cm->map[1] != PA_CHANNEL_POSITION_RIGHT)))
+ return FALSE;
+
+ return TRUE;
+
+ case PA_SAMPLE_ULAW:
+
+ if (ss->rate != 8000)
+ return FALSE;
+
+ if (ss->channels != 1)
+ return FALSE;
+
+ if (cm->map[0] != PA_CHANNEL_POSITION_MONO)
+ return FALSE;
+
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+}
+
+static void mimefy_sample_spec(pa_sample_spec *ss, pa_channel_map *cm) {
+
+ pa_assert(pa_channel_map_compatible(cm, ss));
+
+ /* Turns the sample type passed in into the next 'better' one that
+ * can be encoded for HTTP. If there is no 'better' one we pick
+ * the 'best' one that is 'worse'. */
+
+ if (ss->channels > 2)
+ ss->channels = 2;
+
+ if (ss->rate > 44100)
+ ss->rate = 48000;
+ else if (ss->rate > 32000)
+ ss->rate = 44100;
+ else if (ss->rate > 24000)
+ ss->rate = 32000;
+ else if (ss->rate > 22050)
+ ss->rate = 24000;
+ else if (ss->rate > 16000)
+ ss->rate = 22050;
+ else if (ss->rate > 11025)
+ ss->rate = 16000;
+ else if (ss->rate > 8000)
+ ss->rate = 11025;
+ else
+ ss->rate = 8000;
+
+ switch (ss->format) {
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_S24LE:
+ case PA_SAMPLE_S24_32LE:
+ case PA_SAMPLE_S24_32BE:
+ case PA_SAMPLE_S32LE:
+ case PA_SAMPLE_S32BE:
+ case PA_SAMPLE_FLOAT32LE:
+ case PA_SAMPLE_FLOAT32BE:
+ ss->format = PA_SAMPLE_S24BE;
+ break;
+
+ case PA_SAMPLE_S16BE:
+ case PA_SAMPLE_S16LE:
+ ss->format = PA_SAMPLE_S16BE;
+ break;
+
+ case PA_SAMPLE_ULAW:
+ case PA_SAMPLE_ALAW:
+
+ if (ss->rate == 8000 && ss->channels == 1)
+ ss->format = PA_SAMPLE_ULAW;
+ else
+ ss->format = PA_SAMPLE_S16BE;
+ break;
+
+ case PA_SAMPLE_U8:
+ ss->format = PA_SAMPLE_U8;
+ break;
+
+ case PA_SAMPLE_MAX:
+ case PA_SAMPLE_INVALID:
+ pa_assert_not_reached();
+ }
+
+ pa_channel_map_init_auto(cm, ss->channels, PA_CHANNEL_MAP_DEFAULT);
+
+ pa_assert(is_mime_sample_spec(ss, cm));
+}
+
+static char *sample_spec_to_mime_type(const pa_sample_spec *ss, const pa_channel_map *cm) {
+ pa_assert(pa_channel_map_compatible(cm, ss));
+
+ if (!is_mime_sample_spec(ss, cm))
+ return NULL;
+
+ switch (ss->format) {
+
+ case PA_SAMPLE_S16BE:
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_U8:
+ return pa_sprintf_malloc("audio/%s; rate=%u; channels=%u",
+ ss->format == PA_SAMPLE_S16BE ? "L16" :
+ (ss->format == PA_SAMPLE_S24BE ? "L24" : "L8"),
+ ss->rate, ss->channels);
+
+ case PA_SAMPLE_ULAW:
+ return pa_xstrdup("audio/basic");
+
+ default:
+ pa_assert_not_reached();
+ }
+
+ pa_assert(pa_sample_spec_valid(ss));
+}
+
+static char *mimefy_and_stringify_sample_spec(const pa_sample_spec *_ss, const pa_channel_map *_cm) {
+ pa_sample_spec ss = *_ss;
+ pa_channel_map cm = *_cm;
+
+ mimefy_sample_spec(&ss, &cm);
+
+ return sample_spec_to_mime_type(&ss, &cm);
+}
+
+static char *escape_html(const char *t) {
+ pa_strbuf *sb;
+ const char *p, *e;
+
+ sb = pa_strbuf_new();
+
+ for (e = p = t; *p; p++) {
+
+ if (*p == '>' || *p == '<' || *p == '&') {
+
+ if (p > e) {
+ pa_strbuf_putsn(sb, e, p-e);
+ e = p + 1;
+ }
+
+ if (*p == '>')
+ pa_strbuf_puts(sb, ">");
+ else if (*p == '<')
+ pa_strbuf_puts(sb, "<");
+ else
+ pa_strbuf_puts(sb, "&");
+ }
+ }
+
+ if (p > e)
+ pa_strbuf_putsn(sb, e, p-e);
+
+ return pa_strbuf_tostring_free(sb);
+}
+
+static void http_response(
+ struct connection *c,
+ int code,
+ const char *msg,
+ const char *mime) {
+
+ char *s;
pa_assert(c);
pa_assert(msg);
pa_assert(mime);
- pa_snprintf(s, sizeof(s),
- "HTTP/1.0 %i %s\n"
- "Connection: close\n"
- "Content-Type: %s\n"
- "Cache-Control: no-cache\n"
- "Expires: 0\n"
- "Server: "PACKAGE_NAME"/"PACKAGE_VERSION"\n"
- "\n", code, msg, mime);
-
+ s = pa_sprintf_malloc(
+ "HTTP/1.0 %i %s\n"
+ "Connection: close\n"
+ "Content-Type: %s\n"
+ "Cache-Control: no-cache\n"
+ "Expires: 0\n"
+ "Server: "PACKAGE_NAME"/"PACKAGE_VERSION"\n"
+ "\n", code, msg, mime);
pa_ioline_puts(c->line, s);
+ pa_xfree(s);
}
-static void http_message(struct connection *c, int code, const char *msg, const char *text) {
- char s[256];
+static void html_response(
+ struct connection *c,
+ int code,
+ const char *msg,
+ const char *text) {
+
+ char *s;
pa_assert(c);
- http_response(c, code, msg, "text/html");
+ http_response(c, code, msg, MIME_HTML);
if (!text)
text = msg;
- pa_snprintf(s, sizeof(s),
- "<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
- "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>%s</title></head>\n"
- "<body>%s</body></html>\n",
- text, text);
+ s = pa_sprintf_malloc(
+ HTML_HEADER("%s")
+ "%s"
+ HTML_FOOTER,
+ text, text);
pa_ioline_puts(c->line, s);
+ pa_xfree(s);
+
pa_ioline_defer_close(c->line);
}
+static void internal_server_error(struct connection *c) {
+ pa_assert(c);
+
+ html_response(c, 500, "Internal Server Error", NULL);
+}
static void connection_unlink(struct connection *c) {
pa_assert(c);
@@ -113,12 +329,153 @@ static void connection_unlink(struct connection *c) {
if (c->url)
pa_xfree(c->url);
+ if (c->line)
+ pa_ioline_unref(c->line);
+
pa_idxset_remove_by_data(c->protocol->connections, c, NULL);
- pa_ioline_unref(c->line);
pa_xfree(c);
}
+static void html_print_field(pa_ioline *line, const char *left, const char *right) {
+ char *eleft, *eright;
+
+ eleft = escape_html(left);
+ eright = escape_html(right);
+
+ pa_ioline_printf(line,
+ "<tr><td><b>%s</b></td>"
+ "<td>%s</td></tr>\n", eleft, eright);
+
+ pa_xfree(eleft);
+ pa_xfree(eright);
+}
+
+static void handle_url(struct connection *c) {
+ pa_assert(c);
+
+ pa_log_debug("Request for %s", c->url);
+
+ if (pa_streq(c->url, URL_ROOT)) {
+ char *t;
+
+ http_response(c, 200, "OK", MIME_HTML);
+
+ pa_ioline_puts(c->line,
+ HTML_HEADER(PACKAGE_NAME" "PACKAGE_VERSION)
+ "<h1>"PACKAGE_NAME" "PACKAGE_VERSION"</h1>\n"
+ "<table>\n");
+
+ t = pa_get_user_name_malloc();
+ html_print_field(c->line, "User Name:", t);
+ pa_xfree(t);
+
+ t = pa_get_host_name_malloc();
+ html_print_field(c->line, "Host name:", t);
+ pa_xfree(t);
+
+ t = pa_machine_id();
+ html_print_field(c->line, "Machine ID:", t);
+ pa_xfree(t);
+
+ t = pa_uname_string();
+ html_print_field(c->line, "System:", t);
+ pa_xfree(t);
+
+ t = pa_sprintf_malloc("%lu", (unsigned long) getpid());
+ html_print_field(c->line, "Process ID:", t);
+ pa_xfree(t);
+
+ pa_ioline_puts(c->line,
+ "</table>\n"
+ "<p><a href=\"/status\">Show an extensive server status report</a></p>\n"
+ "<p><a href=\"/listen\">Monitor sinks and sources</a></p>\n"
+ HTML_FOOTER);
+
+ pa_ioline_defer_close(c->line);
+
+ } else if (pa_streq(c->url, URL_CSS)) {
+ http_response(c, 200, "OK", MIME_CSS);
+
+ pa_ioline_puts(c->line,
+ "body { color: black; background-color: white; }\n"
+ "a:link, a:visited { color: #900000; }\n"
+ "div.news-date { font-size: 80%; font-style: italic; }\n"
+ "pre { background-color: #f0f0f0; padding: 0.4cm; }\n"
+ ".grey { color: #8f8f8f; font-size: 80%; }"
+ "table { margin-left: 1cm; border:1px solid lightgrey; padding: 0.2cm; }\n"
+ "td { padding-left:10px; padding-right:10px; }\n");
+
+ pa_ioline_defer_close(c->line);
+
+ } else if (pa_streq(c->url, URL_STATUS)) {
+ char *r;
+
+ http_response(c, 200, "OK", MIME_TEXT);
+ r = pa_full_status_string(c->protocol->core);
+ pa_ioline_puts(c->line, r);
+ pa_xfree(r);
+
+ pa_ioline_defer_close(c->line);
+
+ } else if (pa_streq(c->url, URL_LISTEN)) {
+ pa_source *source;
+ pa_sink *sink;
+ uint32_t idx;
+
+ http_response(c, 200, "OK", MIME_HTML);
+
+ pa_ioline_puts(c->line,
+ HTML_HEADER("Listen")
+ "<h2>Sinks</h2>\n"
+ "<p>\n");
+
+ PA_IDXSET_FOREACH(sink, c->protocol->core->sinks, idx) {
+ char *t, *m;
+
+ t = escape_html(pa_strna(pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ m = mimefy_and_stringify_sample_spec(&sink->sample_spec, &sink->channel_map);
+
+ pa_ioline_printf(c->line,
+ "<a href=\"/listen/%s\" title=\"%s\">%s</a><br/>\n",
+ sink->monitor_source->name, m, t);
+
+ pa_xfree(t);
+ pa_xfree(m);
+ }
+
+ pa_ioline_puts(c->line,
+ "</p>\n"
+ "<h2>Sources</h2>\n"
+ "<p>\n");
+
+ PA_IDXSET_FOREACH(source, c->protocol->core->sources, idx) {
+ char *t, *m;
+
+ if (source->monitor_of)
+ continue;
+
+ t = escape_html(pa_strna(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ m = mimefy_and_stringify_sample_spec(&source->sample_spec, &source->channel_map);
+
+ pa_ioline_printf(c->line,
+ "<a href=\"/listen/%s\" title=\"%s\">%s</a><br/>\n",
+ source->name, m, t);
+
+ pa_xfree(m);
+ pa_xfree(t);
+
+ }
+
+ pa_ioline_puts(c->line,
+ "</p>\n"
+ HTML_FOOTER);
+
+ pa_ioline_defer_close(c->line);
+ } else
+ html_response(c, 404, "Not Found", NULL);
+}
+
static void line_callback(pa_ioline *line, const char *s, void *userdata) {
struct connection *c = userdata;
pa_assert(line);
@@ -131,93 +488,27 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
}
switch (c->state) {
- case REQUEST_LINE: {
- if (memcmp(s, "GET ", 4))
+ case STATE_REQUEST_LINE: {
+ if (!pa_startswith(s, "GET "))
goto fail;
s +=4;
c->url = pa_xstrndup(s, strcspn(s, " \r\n\t?"));
- c->state = MIME_HEADER;
+ c->state = STATE_MIME_HEADER;
break;
-
}
- case MIME_HEADER: {
+ case STATE_MIME_HEADER: {
/* Ignore MIME headers */
if (strcspn(s, " \r\n") != 0)
break;
/* We're done */
- c->state = DATA;
-
- pa_log_info("request for %s", c->url);
-
- if (!strcmp(c->url, URL_ROOT)) {
- char txt[256];
- pa_sink *def_sink;
- pa_source *def_source;
- http_response(c, 200, "OK", "text/html");
-
- pa_ioline_puts(c->line,
- "<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
- "<html xmlns=\"http://www.w3.org/1999/xhtml\"><title>"PACKAGE_NAME" "PACKAGE_VERSION"</title>\n"
- "<link rel=\"stylesheet\" type=\"text/css\" href=\"style\"/></head><body>\n");
-
- pa_ioline_puts(c->line,
- "<h1>"PACKAGE_NAME" "PACKAGE_VERSION"</h1>\n"
- "<table>");
-
-#define PRINTF_FIELD(a,b) pa_ioline_printf(c->line, "<tr><td><b>%s</b></td><td>%s</td></tr>\n",(a),(b))
-
- PRINTF_FIELD("User Name:", pa_get_user_name(txt, sizeof(txt)));
- PRINTF_FIELD("Host name:", pa_get_host_name(txt, sizeof(txt)));
- PRINTF_FIELD("Default Sample Specification:", pa_sample_spec_snprint(txt, sizeof(txt), &c->protocol->core->default_sample_spec));
-
- def_sink = pa_namereg_get_default_sink(c->protocol->core);
- def_source = pa_namereg_get_default_source(c->protocol->core);
-
- PRINTF_FIELD("Default Sink:", def_sink ? def_sink->name : "n/a");
- PRINTF_FIELD("Default Source:", def_source ? def_source->name : "n/a");
-
- pa_ioline_puts(c->line, "</table>");
-
- pa_ioline_puts(c->line, "<p><a href=\"/status\">Click here</a> for an extensive server status report.</p>");
-
- pa_ioline_puts(c->line, "</body></html>\n");
-
- pa_ioline_defer_close(c->line);
- } else if (!strcmp(c->url, URL_CSS)) {
- http_response(c, 200, "OK", "text/css");
-
- pa_ioline_puts(c->line,
- "body { color: black; background-color: white; margin: 0.5cm; }\n"
- "a:link, a:visited { color: #900000; }\n"
- "p { margin-left: 0.5cm; margin-right: 0.5cm; }\n"
- "h1 { color: #00009F; }\n"
- "h2 { color: #00009F; }\n"
- "ul { margin-left: .5cm; }\n"
- "ol { margin-left: .5cm; }\n"
- "pre { margin-left: .5cm; background-color: #f0f0f0; padding: 0.4cm;}\n"
- ".grey { color: #afafaf; }\n"
- "table { margin-left: 1cm; border:1px solid lightgrey; padding: 0.2cm; }\n"
- "td { padding-left:10px; padding-right:10px; }\n");
-
- pa_ioline_defer_close(c->line);
- } else if (!strcmp(c->url, URL_STATUS)) {
- char *r;
-
- http_response(c, 200, "OK", "text/plain");
- r = pa_full_status_string(c->protocol->core);
- pa_ioline_puts(c->line, r);
- pa_xfree(r);
-
- pa_ioline_defer_close(c->line);
- } else
- http_message(c, 404, "Not Found", NULL);
+ c->state = STATE_DATA;
+ handle_url(c);
break;
}
@@ -247,7 +538,7 @@ void pa_http_protocol_connect(pa_http_protocol *p, pa_iochannel *io, pa_module *
c = pa_xnew(struct connection, 1);
c->protocol = p;
c->line = pa_ioline_new(io);
- c->state = REQUEST_LINE;
+ c->state = STATE_REQUEST_LINE;
c->url = NULL;
c->module = m;
@@ -258,12 +549,12 @@ void pa_http_protocol_connect(pa_http_protocol *p, pa_iochannel *io, pa_module *
void pa_http_protocol_disconnect(pa_http_protocol *p, pa_module *m) {
struct connection *c;
- void *state = NULL;
+ uint32_t idx;
pa_assert(p);
pa_assert(m);
- while ((c = pa_idxset_iterate(p->connections, &state, NULL)))
+ PA_IDXSET_FOREACH(c, p->connections, idx)
if (c->module == m)
connection_unlink(c);
}
commit 4cb6ea2d96d40aaebc2015957cef297315bcdec4
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 04:13:07 2009 +0200
simple-protocol: don't hit an assert when we call connection_unlink() early
diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c
index 44fe597..776d74b 100644
--- a/src/pulsecore/protocol-simple.c
+++ b/src/pulsecore/protocol-simple.c
@@ -130,7 +130,7 @@ static void connection_unlink(connection *c) {
c->io = NULL;
}
- pa_assert_se(pa_idxset_remove_by_data(c->protocol->connections, c, NULL) == c);
+ pa_idxset_remove_by_data(c->protocol->connections, c, NULL);
c->protocol = NULL;
connection_unref(c);
}
commit a64097ab1f3be781aae36f8e66a3ce03987629c3
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 04:14:23 2009 +0200
ioline: add callback that can be called when the ioline object is fully drained
diff --git a/src/pulsecore/ioline.c b/src/pulsecore/ioline.c
index 5c38d6e..7f252bc 100644
--- a/src/pulsecore/ioline.c
+++ b/src/pulsecore/ioline.c
@@ -57,6 +57,9 @@ struct pa_ioline {
pa_ioline_cb_t callback;
void *userdata;
+ pa_ioline_drain_cb_t drain_callback;
+ void *drain_userdata;
+
pa_bool_t dead:1;
pa_bool_t defer_close:1;
};
@@ -81,6 +84,9 @@ pa_ioline* pa_ioline_new(pa_iochannel *io) {
l->callback = NULL;
l->userdata = NULL;
+ l->drain_callback = NULL;
+ l->drain_userdata = NULL;
+
l->mainloop = pa_iochannel_get_mainloop_api(io);
l->defer_event = l->mainloop->defer_new(l->mainloop, defer_callback, l);
@@ -202,6 +208,17 @@ void pa_ioline_set_callback(pa_ioline*l, pa_ioline_cb_t callback, void *userdata
l->userdata = userdata;
}
+void pa_ioline_set_drain_callback(pa_ioline*l, pa_ioline_drain_cb_t callback, void *userdata) {
+ pa_assert(l);
+ pa_assert(PA_REFCNT_VALUE(l) >= 1);
+
+ if (l->dead)
+ return;
+
+ l->drain_callback = callback;
+ l->drain_userdata = userdata;
+}
+
static void failure(pa_ioline *l, pa_bool_t process_leftover) {
pa_assert(l);
pa_assert(PA_REFCNT_VALUE(l) >= 1);
@@ -336,7 +353,7 @@ static int do_write(pa_ioline *l) {
if ((r = pa_iochannel_write(l->io, l->wbuf+l->wbuf_index, l->wbuf_valid_length)) <= 0) {
if (r < 0 && errno == EAGAIN)
- return 0;
+ break;
if (r < 0 && errno != EPIPE)
pa_log("write(): %s", pa_cstrerror(errno));
@@ -354,6 +371,9 @@ static int do_write(pa_ioline *l) {
l->wbuf_index = 0;
}
+ if (l->wbuf_valid_length <= 0 && l->drain_callback)
+ l->drain_callback(l, l->drain_userdata);
+
return 0;
}
diff --git a/src/pulsecore/ioline.h b/src/pulsecore/ioline.h
index 9f32d60..26e2a22 100644
--- a/src/pulsecore/ioline.h
+++ b/src/pulsecore/ioline.h
@@ -32,6 +32,7 @@
typedef struct pa_ioline pa_ioline;
typedef void (*pa_ioline_cb_t)(pa_ioline*io, const char *s, void *userdata);
+typedef void (*pa_ioline_drain_cb_t)(pa_ioline *io, void *userdata);
pa_ioline* pa_ioline_new(pa_iochannel *io);
void pa_ioline_unref(pa_ioline *l);
@@ -47,6 +48,9 @@ void pa_ioline_printf(pa_ioline *s, const char *format, ...) PA_GCC_PRINTF_ATTR(
/* Set the callback function that is called for every recieved line */
void pa_ioline_set_callback(pa_ioline*io, pa_ioline_cb_t callback, void *userdata);
+/* Set the callback function that is called when everything has been written */
+void pa_ioline_set_drain_callback(pa_ioline*io, pa_ioline_drain_cb_t callback, void *userdata);
+
/* Make sure to close the ioline object as soon as the send buffer is emptied */
void pa_ioline_defer_close(pa_ioline *io);
commit c2150118bfded6dab8c3023ee5b21f87204b8228
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 04:14:52 2009 +0200
ioline: add new calls pa_ioline_detach_iochannel() and pa_ioline_is_drained()
diff --git a/src/pulsecore/ioline.c b/src/pulsecore/ioline.c
index 7f252bc..7afdb08 100644
--- a/src/pulsecore/ioline.c
+++ b/src/pulsecore/ioline.c
@@ -283,7 +283,7 @@ static int do_read(pa_ioline *l) {
pa_assert(l);
pa_assert(PA_REFCNT_VALUE(l) >= 1);
- while (!l->dead && pa_iochannel_is_readable(l->io)) {
+ while (l->io && !l->dead && pa_iochannel_is_readable(l->io)) {
ssize_t r;
size_t len;
@@ -348,7 +348,7 @@ static int do_write(pa_ioline *l) {
pa_assert(l);
pa_assert(PA_REFCNT_VALUE(l) >= 1);
- while (!l->dead && pa_iochannel_is_writable(l->io) && l->wbuf_valid_length) {
+ while (l->io && !l->dead && pa_iochannel_is_writable(l->io) && l->wbuf_valid_length > 0) {
if ((r = pa_iochannel_write(l->io, l->wbuf+l->wbuf_index, l->wbuf_valid_length)) <= 0) {
@@ -443,3 +443,25 @@ void pa_ioline_printf(pa_ioline *l, const char *format, ...) {
pa_ioline_puts(l, t);
pa_xfree(t);
}
+
+pa_iochannel* pa_ioline_detach_iochannel(pa_ioline *l) {
+ pa_iochannel *r;
+
+ pa_assert(l);
+
+ if (!l->io)
+ return NULL;
+
+ r = l->io;
+ l->io = NULL;
+
+ pa_iochannel_set_callback(r, NULL, NULL);
+
+ return r;
+}
+
+pa_bool_t pa_ioline_is_drained(pa_ioline *l) {
+ pa_assert(l);
+
+ return l->wbuf_valid_length <= 0;
+}
diff --git a/src/pulsecore/ioline.h b/src/pulsecore/ioline.h
index 26e2a22..d973a3c 100644
--- a/src/pulsecore/ioline.h
+++ b/src/pulsecore/ioline.h
@@ -54,4 +54,11 @@ void pa_ioline_set_drain_callback(pa_ioline*io, pa_ioline_drain_cb_t callback, v
/* Make sure to close the ioline object as soon as the send buffer is emptied */
void pa_ioline_defer_close(pa_ioline *io);
+/* Returns TRUE when everything was written */
+pa_bool_t pa_ioline_is_drained(pa_ioline *io);
+
+/* Detaches from the iochannel and returns it. Data that has already
+ * been read will not be available in the detached iochannel */
+pa_iochannel* pa_ioline_detach_iochannel(pa_ioline *l);
+
#endif
commit 84a92f2a88e9655a4d54410b37d9ca1d741646b9
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 04:15:24 2009 +0200
protocol-http: allow listening into sinks/sources via HTTP
diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c
index 08a70e5..6467024 100644
--- a/src/pulsecore/protocol-http.c
+++ b/src/pulsecore/protocol-http.c
@@ -1,7 +1,7 @@
/***
This file is part of PulseAudio.
- Copyright 2005-2006 Lennart Poettering
+ Copyright 2005-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
@@ -26,16 +26,20 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+#include <errno.h>
#include <pulse/util.h>
#include <pulse/xmalloc.h>
+#include <pulse/timeval.h>
#include <pulsecore/ioline.h>
+#include <pulsecore/thread-mq.h>
#include <pulsecore/macro.h>
#include <pulsecore/log.h>
#include <pulsecore/namereg.h>
#include <pulsecore/cli-text.h>
#include <pulsecore/shared.h>
+#include <pulsecore/core-error.h>
#include "protocol-http.h"
@@ -46,7 +50,7 @@
#define URL_CSS "/style"
#define URL_STATUS "/status"
#define URL_LISTEN "/listen"
-#define URL_LISTEN_PREFIX "/listen/"
+#define URL_LISTEN_SOURCE "/listen/source/"
#define MIME_HTML "text/html; charset=utf-8"
#define MIME_TEXT "text/plain; charset=utf-8"
@@ -65,6 +69,10 @@
#define HTML_FOOTER \
" </body>\n" \
"</html>\n"
+
+#define RECORD_BUFFER_SECONDS (5)
+#define DEFAULT_SOURCE_LATENCY (300*PA_USEC_PER_MSEC)
+
enum state {
STATE_REQUEST_LINE,
STATE_MIME_HEADER,
@@ -73,7 +81,11 @@ enum state {
struct connection {
pa_http_protocol *protocol;
+ pa_iochannel *io;
pa_ioline *line;
+ pa_memblockq *output_memblockq;
+ pa_source_output *source_output;
+ pa_client *client;
enum state state;
char *url;
pa_module *module;
@@ -86,6 +98,163 @@ struct pa_http_protocol {
pa_idxset *connections;
};
+enum {
+ SOURCE_OUTPUT_MESSAGE_POST_DATA = PA_SOURCE_OUTPUT_MESSAGE_MAX
+};
+
+/* Called from main context */
+static void connection_unlink(struct connection *c) {
+ pa_assert(c);
+
+ if (c->source_output) {
+ pa_source_output_unlink(c->source_output);
+ pa_source_output_unref(c->source_output);
+ }
+
+ if (c->client)
+ pa_client_free(c->client);
+
+ pa_xfree(c->url);
+
+ if (c->line)
+ pa_ioline_unref(c->line);
+
+ if (c->io)
+ pa_iochannel_free(c->io);
+
+ if (c->output_memblockq)
+ pa_memblockq_free(c->output_memblockq);
+
+ pa_idxset_remove_by_data(c->protocol->connections, c, NULL);
+
+ pa_xfree(c);
+}
+
+/* Called from main context */
+static int do_write(struct connection *c) {
+ pa_memchunk chunk;
+ ssize_t r;
+ void *p;
+
+ pa_assert(c);
+
+ if (pa_memblockq_peek(c->output_memblockq, &chunk) < 0)
+ return 0;
+
+ pa_assert(chunk.memblock);
+ pa_assert(chunk.length > 0);
+
+ p = pa_memblock_acquire(chunk.memblock);
+ r = pa_iochannel_write(c->io, (uint8_t*) p+chunk.index, chunk.length);
+ pa_memblock_release(chunk.memblock);
+
+ pa_memblock_unref(chunk.memblock);
+
+ if (r < 0) {
+
+ if (errno == EINTR || errno == EAGAIN)
+ return 0;
+
+ pa_log("write(): %s", pa_cstrerror(errno));
+ return -1;
+ }
+
+ pa_memblockq_drop(c->output_memblockq, (size_t) r);
+
+ return 0;
+}
+
+/* Called from main context */
+static void do_work(struct connection *c) {
+ pa_assert(c);
+
+ if (pa_iochannel_is_hungup(c->io))
+ goto fail;
+
+ if (pa_iochannel_is_writable(c->io))
+ if (do_write(c) < 0)
+ goto fail;
+
+ return;
+
+fail:
+ connection_unlink(c);
+}
+
+/* Called from thread context, except when it is not */
+static int source_output_process_msg(pa_msgobject *m, int code, void *userdata, int64_t offset, pa_memchunk *chunk) {
+ pa_source_output *o = PA_SOURCE_OUTPUT(m);
+ struct connection *c;
+
+ pa_source_output_assert_ref(o);
+ pa_assert_se(c = o->userdata);
+
+ switch (code) {
+
+ case SOURCE_OUTPUT_MESSAGE_POST_DATA:
+ /* While this function is usually called from IO thread
+ * context, this specific command is not! */
+ pa_memblockq_push_align(c->output_memblockq, chunk);
+ do_work(c);
+ break;
+
+ default:
+ return pa_source_output_process_msg(m, code, userdata, offset, chunk);
+ }
+
+ return 0;
+}
+
+/* Called from thread context */
+static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk) {
+ struct connection *c;
+
+ pa_source_output_assert_ref(o);
+ pa_assert_se(c = o->userdata);
+ pa_assert(chunk);
+
+ pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(o), SOURCE_OUTPUT_MESSAGE_POST_DATA, NULL, 0, chunk, NULL);
+}
+
+/* Called from main context */
+static void source_output_kill_cb(pa_source_output *o) {
+ struct connection*c;
+
+ pa_source_output_assert_ref(o);
+ pa_assert_se(c = o->userdata);
+
+ connection_unlink(c);
+}
+
+/* Called from main context */
+static pa_usec_t source_output_get_latency_cb(pa_source_output *o) {
+ struct connection*c;
+
+ pa_source_output_assert_ref(o);
+ pa_assert_se(c = o->userdata);
+
+ return pa_bytes_to_usec(pa_memblockq_get_length(c->output_memblockq), &c->source_output->sample_spec);
+}
+
+/*** client callbacks ***/
+static void client_kill_cb(pa_client *client) {
+ struct connection*c;
+
+ pa_assert(client);
+ pa_assert_se(c = client->userdata);
+
+ connection_unlink(c);
+}
+
+/*** pa_iochannel callbacks ***/
+static void io_callback(pa_iochannel*io, void *userdata) {
+ struct connection *c = userdata;
+
+ pa_assert(c);
+ pa_assert(io);
+
+ do_work(c);
+}
static pa_bool_t is_mime_sample_spec(const pa_sample_spec *ss, const pa_channel_map *cm) {
@@ -317,162 +486,254 @@ static void html_response(
pa_ioline_defer_close(c->line);
}
-static void internal_server_error(struct connection *c) {
- pa_assert(c);
+static void html_print_field(pa_ioline *line, const char *left, const char *right) {
+ char *eleft, *eright;
- html_response(c, 500, "Internal Server Error", NULL);
+ eleft = escape_html(left);
+ eright = escape_html(right);
+
+ pa_ioline_printf(line,
+ "<tr><td><b>%s</b></td>"
+ "<td>%s</td></tr>\n", eleft, eright);
+
+ pa_xfree(eleft);
+ pa_xfree(eright);
}
-static void connection_unlink(struct connection *c) {
+static void handle_root(struct connection *c) {
+ char *t;
+
pa_assert(c);
- if (c->url)
- pa_xfree(c->url);
+ http_response(c, 200, "OK", MIME_HTML);
- if (c->line)
- pa_ioline_unref(c->line);
+ pa_ioline_puts(c->line,
+ HTML_HEADER(PACKAGE_NAME" "PACKAGE_VERSION)
+ "<h1>"PACKAGE_NAME" "PACKAGE_VERSION"</h1>\n"
+ "<table>\n");
- pa_idxset_remove_by_data(c->protocol->connections, c, NULL);
+ t = pa_get_user_name_malloc();
+ html_print_field(c->line, "User Name:", t);
+ pa_xfree(t);
- pa_xfree(c);
+ t = pa_get_host_name_malloc();
+ html_print_field(c->line, "Host name:", t);
+ pa_xfree(t);
+
+ t = pa_machine_id();
+ html_print_field(c->line, "Machine ID:", t);
+ pa_xfree(t);
+
+ t = pa_uname_string();
+ html_print_field(c->line, "System:", t);
+ pa_xfree(t);
+
+ t = pa_sprintf_malloc("%lu", (unsigned long) getpid());
+ html_print_field(c->line, "Process ID:", t);
+ pa_xfree(t);
+
+ pa_ioline_puts(c->line,
+ "</table>\n"
+ "<p><a href=\"" URL_STATUS "\">Show an extensive server status report</a></p>\n"
+ "<p><a href=\"" URL_LISTEN "\">Monitor sinks and sources</a></p>\n"
+ HTML_FOOTER);
+
+ pa_ioline_defer_close(c->line);
}
-static void html_print_field(pa_ioline *line, const char *left, const char *right) {
- char *eleft, *eright;
+static void handle_css(struct connection *c) {
+ pa_assert(c);
- eleft = escape_html(left);
- eright = escape_html(right);
+ http_response(c, 200, "OK", MIME_CSS);
- pa_ioline_printf(line,
- "<tr><td><b>%s</b></td>"
- "<td>%s</td></tr>\n", eleft, eright);
+ pa_ioline_puts(c->line,
+ "body { color: black; background-color: white; }\n"
+ "a:link, a:visited { color: #900000; }\n"
+ "div.news-date { font-size: 80%; font-style: italic; }\n"
+ "pre { background-color: #f0f0f0; padding: 0.4cm; }\n"
+ ".grey { color: #8f8f8f; font-size: 80%; }"
+ "table { margin-left: 1cm; border:1px solid lightgrey; padding: 0.2cm; }\n"
+ "td { padding-left:10px; padding-right:10px; }\n");
- pa_xfree(eleft);
- pa_xfree(eright);
+ pa_ioline_defer_close(c->line);
}
-static void handle_url(struct connection *c) {
+static void handle_status(struct connection *c) {
+ char *r;
+
pa_assert(c);
- pa_log_debug("Request for %s", c->url);
+ http_response(c, 200, "OK", MIME_TEXT);
+ r = pa_full_status_string(c->protocol->core);
+ pa_ioline_puts(c->line, r);
+ pa_xfree(r);
- if (pa_streq(c->url, URL_ROOT)) {
- char *t;
+ pa_ioline_defer_close(c->line);
+}
- http_response(c, 200, "OK", MIME_HTML);
+static void handle_listen(struct connection *c) {
+ pa_source *source;
+ pa_sink *sink;
+ uint32_t idx;
- pa_ioline_puts(c->line,
- HTML_HEADER(PACKAGE_NAME" "PACKAGE_VERSION)
- "<h1>"PACKAGE_NAME" "PACKAGE_VERSION"</h1>\n"
- "<table>\n");
+ http_response(c, 200, "OK", MIME_HTML);
- t = pa_get_user_name_malloc();
- html_print_field(c->line, "User Name:", t);
- pa_xfree(t);
+ pa_ioline_puts(c->line,
+ HTML_HEADER("Listen")
+ "<h2>Sinks</h2>\n"
+ "<p>\n");
- t = pa_get_host_name_malloc();
- html_print_field(c->line, "Host name:", t);
- pa_xfree(t);
+ PA_IDXSET_FOREACH(sink, c->protocol->core->sinks, idx) {
+ char *t, *m;
- t = pa_machine_id();
- html_print_field(c->line, "Machine ID:", t);
- pa_xfree(t);
+ t = escape_html(pa_strna(pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ m = mimefy_and_stringify_sample_spec(&sink->sample_spec, &sink->channel_map);
+
+ pa_ioline_printf(c->line,
+ "<a href=\"" URL_LISTEN_SOURCE "%s\" title=\"%s\">%s</a><br/>\n",
+ sink->monitor_source->name, m, t);
- t = pa_uname_string();
- html_print_field(c->line, "System:", t);
pa_xfree(t);
+ pa_xfree(m);
+ }
+
+ pa_ioline_puts(c->line,
+ "</p>\n"
+ "<h2>Sources</h2>\n"
+ "<p>\n");
+
+ PA_IDXSET_FOREACH(source, c->protocol->core->sources, idx) {
+ char *t, *m;
+
+ if (source->monitor_of)
+ continue;
- t = pa_sprintf_malloc("%lu", (unsigned long) getpid());
- html_print_field(c->line, "Process ID:", t);
+ t = escape_html(pa_strna(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ m = mimefy_and_stringify_sample_spec(&source->sample_spec, &source->channel_map);
+
+ pa_ioline_printf(c->line,
+ "<a href=\"" URL_LISTEN_SOURCE "%s\" title=\"%s\">%s</a><br/>\n",
+ source->name, m, t);
+
+ pa_xfree(m);
pa_xfree(t);
- pa_ioline_puts(c->line,
- "</table>\n"
- "<p><a href=\"/status\">Show an extensive server status report</a></p>\n"
- "<p><a href=\"/listen\">Monitor sinks and sources</a></p>\n"
- HTML_FOOTER);
+ }
- pa_ioline_defer_close(c->line);
+ pa_ioline_puts(c->line,
+ "</p>\n"
+ HTML_FOOTER);
- } else if (pa_streq(c->url, URL_CSS)) {
- http_response(c, 200, "OK", MIME_CSS);
+ pa_ioline_defer_close(c->line);
+}
- pa_ioline_puts(c->line,
- "body { color: black; background-color: white; }\n"
- "a:link, a:visited { color: #900000; }\n"
- "div.news-date { font-size: 80%; font-style: italic; }\n"
- "pre { background-color: #f0f0f0; padding: 0.4cm; }\n"
- ".grey { color: #8f8f8f; font-size: 80%; }"
- "table { margin-left: 1cm; border:1px solid lightgrey; padding: 0.2cm; }\n"
- "td { padding-left:10px; padding-right:10px; }\n");
+static void line_drain_callback(pa_ioline *l, void *userdata) {
+ struct connection *c;
- pa_ioline_defer_close(c->line);
+ pa_assert(l);
+ pa_assert_se(c = userdata);
- } else if (pa_streq(c->url, URL_STATUS)) {
- char *r;
+ /* We don't need the line reader anymore, instead we need a real
+ * binary io channel */
+ pa_assert_se(c->io = pa_ioline_detach_iochannel(c->line));
+ pa_iochannel_set_callback(c->io, io_callback, c);
- http_response(c, 200, "OK", MIME_TEXT);
- r = pa_full_status_string(c->protocol->core);
- pa_ioline_puts(c->line, r);
- pa_xfree(r);
+ pa_iochannel_socket_set_sndbuf(c->io, pa_memblockq_get_length(c->output_memblockq));
- pa_ioline_defer_close(c->line);
+ pa_ioline_unref(c->line);
+ c->line = NULL;
+}
- } else if (pa_streq(c->url, URL_LISTEN)) {
- pa_source *source;
- pa_sink *sink;
- uint32_t idx;
+static void handle_listen_prefix(struct connection *c, const char *source_name) {
+ pa_source *source;
+ pa_source_output_new_data data;
+ pa_sample_spec ss;
+ pa_channel_map cm;
+ char *t;
+ size_t l;
- http_response(c, 200, "OK", MIME_HTML);
+ pa_assert(c);
+ pa_assert(source_name);
- pa_ioline_puts(c->line,
- HTML_HEADER("Listen")
- "<h2>Sinks</h2>\n"
- "<p>\n");
+ pa_assert(c->line);
+ pa_assert(!c->io);
- PA_IDXSET_FOREACH(sink, c->protocol->core->sinks, idx) {
- char *t, *m;
+ if (!(source = pa_namereg_get(c->protocol->core, source_name, PA_NAMEREG_SOURCE))) {
+ html_response(c, 404, "Source not found", NULL);
+ return;
+ }
- t = escape_html(pa_strna(pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- m = mimefy_and_stringify_sample_spec(&sink->sample_spec, &sink->channel_map);
+ ss = source->sample_spec;
+ cm = source->channel_map;
- pa_ioline_printf(c->line,
- "<a href=\"/listen/%s\" title=\"%s\">%s</a><br/>\n",
- sink->monitor_source->name, m, t);
+ mimefy_sample_spec(&ss, &cm);
- pa_xfree(t);
- pa_xfree(m);
- }
+ pa_source_output_new_data_init(&data);
+ data.driver = __FILE__;
+ data.module = c->module;
+ data.client = c->client;
+ data.source = source;
+ pa_proplist_update(data.proplist, PA_UPDATE_MERGE, c->client->proplist);
+ pa_source_output_new_data_set_sample_spec(&data, &ss);
+ pa_source_output_new_data_set_channel_map(&data, &cm);
- pa_ioline_puts(c->line,
- "</p>\n"
- "<h2>Sources</h2>\n"
- "<p>\n");
+ pa_source_output_new(&c->source_output, c->protocol->core, &data, 0);
+ pa_source_output_new_data_done(&data);
- PA_IDXSET_FOREACH(source, c->protocol->core->sources, idx) {
- char *t, *m;
+ if (!c->source_output) {
+ html_response(c, 403, "Cannot create source output", NULL);
+ return;
+ }
- if (source->monitor_of)
- continue;
+ c->source_output->parent.process_msg = source_output_process_msg;
+ c->source_output->push = source_output_push_cb;
+ c->source_output->kill = source_output_kill_cb;
+ c->source_output->get_latency = source_output_get_latency_cb;
+ c->source_output->userdata = c;
- t = escape_html(pa_strna(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- m = mimefy_and_stringify_sample_spec(&source->sample_spec, &source->channel_map);
+ pa_source_output_set_requested_latency(c->source_output, DEFAULT_SOURCE_LATENCY);
- pa_ioline_printf(c->line,
- "<a href=\"/listen/%s\" title=\"%s\">%s</a><br/>\n",
- source->name, m, t);
+ l = (size_t) (pa_bytes_per_second(&ss)*RECORD_BUFFER_SECONDS);
+ c->output_memblockq = pa_memblockq_new(
+ 0,
+ l,
+ 0,
+ pa_frame_size(&ss),
+ 1,
+ 0,
+ 0,
+ NULL);
- pa_xfree(m);
- pa_xfree(t);
+ pa_source_output_put(c->source_output);
- }
+ t = sample_spec_to_mime_type(&ss, &cm);
+ http_response(c, 200, "OK", t);
+ pa_xfree(t);
- pa_ioline_puts(c->line,
- "</p>\n"
- HTML_FOOTER);
+ pa_ioline_set_callback(c->line, NULL, NULL);
- pa_ioline_defer_close(c->line);
- } else
+ if (pa_ioline_is_drained(c->line))
+ line_drain_callback(c->line, c);
+ else
+ pa_ioline_set_drain_callback(c->line, line_drain_callback, c);
+}
+
+static void handle_url(struct connection *c) {
+ pa_assert(c);
+
+ pa_log_debug("Request for %s", c->url);
+
+ if (pa_streq(c->url, URL_ROOT))
+ handle_root(c);
+ else if (pa_streq(c->url, URL_CSS))
+ handle_css(c);
+ else if (pa_streq(c->url, URL_STATUS))
+ handle_status(c);
+ else if (pa_streq(c->url, URL_LISTEN))
+ handle_listen(c);
+ else if (pa_startswith(c->url, URL_LISTEN_SOURCE))
+ handle_listen_prefix(c, c->url + sizeof(URL_LISTEN_SOURCE)-1);
+ else
html_response(c, 404, "Not Found", NULL);
}
@@ -519,11 +780,13 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
return;
fail:
- internal_server_error(c);
+ html_response(c, 500, "Internal Server Error", NULL);
}
void pa_http_protocol_connect(pa_http_protocol *p, pa_iochannel *io, pa_module *m) {
struct connection *c;
+ pa_client_new_data client_data;
+ char pname[128];
pa_assert(p);
pa_assert(io);
@@ -535,16 +798,36 @@ void pa_http_protocol_connect(pa_http_protocol *p, pa_iochannel *io, pa_module *
return;
}
- c = pa_xnew(struct connection, 1);
+ c = pa_xnew0(struct connection, 1);
c->protocol = p;
- c->line = pa_ioline_new(io);
c->state = STATE_REQUEST_LINE;
- c->url = NULL;
c->module = m;
+ c->line = pa_ioline_new(io);
pa_ioline_set_callback(c->line, line_callback, c);
+ pa_client_new_data_init(&client_data);
+ client_data.module = c->module;
+ client_data.driver = __FILE__;
+ pa_iochannel_socket_peer_to_string(io, pname, sizeof(pname));
+ pa_proplist_setf(client_data.proplist, PA_PROP_APPLICATION_NAME, "HTTP client (%s)", pname);
+ pa_proplist_sets(client_data.proplist, "http-protocol.peer", pname);
+ c->client = pa_client_new(p->core, &client_data);
+ pa_client_new_data_done(&client_data);
+
+ if (!c->client)
+ goto fail;
+
+ c->client->kill = client_kill_cb;
+ c->client->userdata = c;
+
pa_idxset_put(p->connections, c, NULL);
+
+ return;
+
+fail:
+ if (c)
+ connection_unlink(c);
}
void pa_http_protocol_disconnect(pa_http_protocol *p, pa_module *m) {
commit 390fe02aa9215692c385e90028df1acdf6a73f77
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 23:22:08 2009 +0200
http: split out mime type handling calls
diff --git a/src/Makefile.am b/src/Makefile.am
index 719f9dd..c3c6945 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -883,7 +883,7 @@ libprotocol_cli_la_SOURCES = pulsecore/protocol-cli.c pulsecore/protocol-cli.h
libprotocol_cli_la_LDFLAGS = -avoid-version
libprotocol_cli_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la libcli.la
-libprotocol_http_la_SOURCES = pulsecore/protocol-http.c pulsecore/protocol-http.h
+libprotocol_http_la_SOURCES = pulsecore/protocol-http.c pulsecore/protocol-http.h pulsecore/mime-type.c pulsecore/mime-type.h
libprotocol_http_la_LDFLAGS = -avoid-version
libprotocol_http_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
diff --git a/src/pulsecore/mime-type.c b/src/pulsecore/mime-type.c
new file mode 100644
index 0000000..55b8ffd
--- /dev/null
+++ b/src/pulsecore/mime-type.c
@@ -0,0 +1,179 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2005-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/core-util.h>
+
+#include "mime-type.h"
+
+pa_bool_t pa_sample_spec_is_mime(const pa_sample_spec *ss, const pa_channel_map *cm) {
+
+ pa_assert(pa_channel_map_compatible(cm, ss));
+
+ switch (ss->format) {
+ case PA_SAMPLE_S16BE:
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_U8:
+
+ if (ss->rate != 8000 &&
+ ss->rate != 11025 &&
+ ss->rate != 16000 &&
+ ss->rate != 22050 &&
+ ss->rate != 24000 &&
+ ss->rate != 32000 &&
+ ss->rate != 44100 &&
+ ss->rate != 48000)
+ return FALSE;
+
+ if (ss->channels != 1 &&
+ ss->channels != 2)
+ return FALSE;
+
+ if ((cm->channels == 1 && cm->map[0] != PA_CHANNEL_POSITION_MONO) ||
+ (cm->channels == 2 && (cm->map[0] != PA_CHANNEL_POSITION_LEFT || cm->map[1] != PA_CHANNEL_POSITION_RIGHT)))
+ return FALSE;
+
+ return TRUE;
+
+ case PA_SAMPLE_ULAW:
+
+ if (ss->rate != 8000)
+ return FALSE;
+
+ if (ss->channels != 1)
+ return FALSE;
+
+ if (cm->map[0] != PA_CHANNEL_POSITION_MONO)
+ return FALSE;
+
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+}
+
+void pa_sample_spec_mimefy(pa_sample_spec *ss, pa_channel_map *cm) {
+
+ pa_assert(pa_channel_map_compatible(cm, ss));
+
+ /* Turns the sample type passed in into the next 'better' one that
+ * can be encoded for HTTP. If there is no 'better' one we pick
+ * the 'best' one that is 'worse'. */
+
+ if (ss->channels > 2)
+ ss->channels = 2;
+
+ if (ss->rate > 44100)
+ ss->rate = 48000;
+ else if (ss->rate > 32000)
+ ss->rate = 44100;
+ else if (ss->rate > 24000)
+ ss->rate = 32000;
+ else if (ss->rate > 22050)
+ ss->rate = 24000;
+ else if (ss->rate > 16000)
+ ss->rate = 22050;
+ else if (ss->rate > 11025)
+ ss->rate = 16000;
+ else if (ss->rate > 8000)
+ ss->rate = 11025;
+ else
+ ss->rate = 8000;
+
+ switch (ss->format) {
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_S24LE:
+ case PA_SAMPLE_S24_32LE:
+ case PA_SAMPLE_S24_32BE:
+ case PA_SAMPLE_S32LE:
+ case PA_SAMPLE_S32BE:
+ case PA_SAMPLE_FLOAT32LE:
+ case PA_SAMPLE_FLOAT32BE:
+ ss->format = PA_SAMPLE_S24BE;
+ break;
+
+ case PA_SAMPLE_S16BE:
+ case PA_SAMPLE_S16LE:
+ ss->format = PA_SAMPLE_S16BE;
+ break;
+
+ case PA_SAMPLE_ULAW:
+ case PA_SAMPLE_ALAW:
+
+ if (ss->rate == 8000 && ss->channels == 1)
+ ss->format = PA_SAMPLE_ULAW;
+ else
+ ss->format = PA_SAMPLE_S16BE;
+ break;
+
+ case PA_SAMPLE_U8:
+ ss->format = PA_SAMPLE_U8;
+ break;
+
+ case PA_SAMPLE_MAX:
+ case PA_SAMPLE_INVALID:
+ pa_assert_not_reached();
+ }
+
+ pa_channel_map_init_auto(cm, ss->channels, PA_CHANNEL_MAP_DEFAULT);
+
+ pa_assert(pa_sample_spec_is_mime(ss, cm));
+}
+
+char *pa_sample_spec_to_mime_type(const pa_sample_spec *ss, const pa_channel_map *cm) {
+ pa_assert(pa_channel_map_compatible(cm, ss));
+
+ if (!pa_sample_spec_is_mime(ss, cm))
+ return NULL;
+
+ switch (ss->format) {
+
+ case PA_SAMPLE_S16BE:
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_U8:
+ return pa_sprintf_malloc("audio/%s; rate=%u; channels=%u",
+ ss->format == PA_SAMPLE_S16BE ? "L16" :
+ (ss->format == PA_SAMPLE_S24BE ? "L24" : "L8"),
+ ss->rate, ss->channels);
+
+ case PA_SAMPLE_ULAW:
+ return pa_xstrdup("audio/basic");
+
+ default:
+ pa_assert_not_reached();
+ }
+
+ pa_assert(pa_sample_spec_valid(ss));
+}
+
+char *pa_sample_spec_to_mime_type_mimefy(const pa_sample_spec *_ss, const pa_channel_map *_cm) {
+ pa_sample_spec ss = *_ss;
+ pa_channel_map cm = *_cm;
+
+ pa_sample_spec_mimefy(&ss, &cm);
+
+ return pa_sample_spec_to_mime_type(&ss, &cm);
+}
diff --git a/src/pulsecore/mime-type.h b/src/pulsecore/mime-type.h
new file mode 100644
index 0000000..db77379
--- /dev/null
+++ b/src/pulsecore/mime-type.h
@@ -0,0 +1,37 @@
+#ifndef foopulsecoremimetypehfoo
+#define foopulsecoremimetypehfoo
+/***
+ 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 <pulsecore/macro.h>
+#include <pulse/sample.h>
+#include <pulse/channelmap.h>
+
+pa_bool_t pa_sample_spec_is_mime(const pa_sample_spec *ss, const pa_channel_map *cm);
+void pa_sample_spec_mimefy(pa_sample_spec *ss, pa_channel_map *cm);
+char *pa_sample_spec_to_mime_type(const pa_sample_spec *ss, const pa_channel_map *cm);
+char *pa_sample_spec_to_mime_type_mimefy(const pa_sample_spec *_ss, const pa_channel_map *_cm);
+
+#endif
diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c
index 6467024..46850b2 100644
--- a/src/pulsecore/protocol-http.c
+++ b/src/pulsecore/protocol-http.c
@@ -40,6 +40,7 @@
#include <pulsecore/cli-text.h>
#include <pulsecore/shared.h>
#include <pulsecore/core-error.h>
+#include <pulsecore/mime-type.h>
#include "protocol-http.h"
@@ -256,156 +257,6 @@ static void io_callback(pa_iochannel*io, void *userdata) {
do_work(c);
}
-static pa_bool_t is_mime_sample_spec(const pa_sample_spec *ss, const pa_channel_map *cm) {
-
- pa_assert(pa_channel_map_compatible(cm, ss));
-
- switch (ss->format) {
- case PA_SAMPLE_S16BE:
- case PA_SAMPLE_S24BE:
- case PA_SAMPLE_U8:
-
- if (ss->rate != 8000 &&
- ss->rate != 11025 &&
- ss->rate != 16000 &&
- ss->rate != 22050 &&
- ss->rate != 24000 &&
- ss->rate != 32000 &&
- ss->rate != 44100 &&
- ss->rate != 48000)
- return FALSE;
-
- if (ss->channels != 1 &&
- ss->channels != 2)
- return FALSE;
-
- if ((cm->channels == 1 && cm->map[0] != PA_CHANNEL_POSITION_MONO) ||
- (cm->channels == 2 && (cm->map[0] != PA_CHANNEL_POSITION_LEFT || cm->map[1] != PA_CHANNEL_POSITION_RIGHT)))
- return FALSE;
-
- return TRUE;
-
- case PA_SAMPLE_ULAW:
-
- if (ss->rate != 8000)
- return FALSE;
-
- if (ss->channels != 1)
- return FALSE;
-
- if (cm->map[0] != PA_CHANNEL_POSITION_MONO)
- return FALSE;
-
- return TRUE;
-
- default:
- return FALSE;
- }
-}
-
-static void mimefy_sample_spec(pa_sample_spec *ss, pa_channel_map *cm) {
-
- pa_assert(pa_channel_map_compatible(cm, ss));
-
- /* Turns the sample type passed in into the next 'better' one that
- * can be encoded for HTTP. If there is no 'better' one we pick
- * the 'best' one that is 'worse'. */
-
- if (ss->channels > 2)
- ss->channels = 2;
-
- if (ss->rate > 44100)
- ss->rate = 48000;
- else if (ss->rate > 32000)
- ss->rate = 44100;
- else if (ss->rate > 24000)
- ss->rate = 32000;
- else if (ss->rate > 22050)
- ss->rate = 24000;
- else if (ss->rate > 16000)
- ss->rate = 22050;
- else if (ss->rate > 11025)
- ss->rate = 16000;
- else if (ss->rate > 8000)
- ss->rate = 11025;
- else
- ss->rate = 8000;
-
- switch (ss->format) {
- case PA_SAMPLE_S24BE:
- case PA_SAMPLE_S24LE:
- case PA_SAMPLE_S24_32LE:
- case PA_SAMPLE_S24_32BE:
- case PA_SAMPLE_S32LE:
- case PA_SAMPLE_S32BE:
- case PA_SAMPLE_FLOAT32LE:
- case PA_SAMPLE_FLOAT32BE:
- ss->format = PA_SAMPLE_S24BE;
- break;
-
- case PA_SAMPLE_S16BE:
- case PA_SAMPLE_S16LE:
- ss->format = PA_SAMPLE_S16BE;
- break;
-
- case PA_SAMPLE_ULAW:
- case PA_SAMPLE_ALAW:
-
- if (ss->rate == 8000 && ss->channels == 1)
- ss->format = PA_SAMPLE_ULAW;
- else
- ss->format = PA_SAMPLE_S16BE;
- break;
-
- case PA_SAMPLE_U8:
- ss->format = PA_SAMPLE_U8;
- break;
-
- case PA_SAMPLE_MAX:
- case PA_SAMPLE_INVALID:
- pa_assert_not_reached();
- }
-
- pa_channel_map_init_auto(cm, ss->channels, PA_CHANNEL_MAP_DEFAULT);
-
- pa_assert(is_mime_sample_spec(ss, cm));
-}
-
-static char *sample_spec_to_mime_type(const pa_sample_spec *ss, const pa_channel_map *cm) {
- pa_assert(pa_channel_map_compatible(cm, ss));
-
- if (!is_mime_sample_spec(ss, cm))
- return NULL;
-
- switch (ss->format) {
-
- case PA_SAMPLE_S16BE:
- case PA_SAMPLE_S24BE:
- case PA_SAMPLE_U8:
- return pa_sprintf_malloc("audio/%s; rate=%u; channels=%u",
- ss->format == PA_SAMPLE_S16BE ? "L16" :
- (ss->format == PA_SAMPLE_S24BE ? "L24" : "L8"),
- ss->rate, ss->channels);
-
- case PA_SAMPLE_ULAW:
- return pa_xstrdup("audio/basic");
-
- default:
- pa_assert_not_reached();
- }
-
- pa_assert(pa_sample_spec_valid(ss));
-}
-
-static char *mimefy_and_stringify_sample_spec(const pa_sample_spec *_ss, const pa_channel_map *_cm) {
- pa_sample_spec ss = *_ss;
- pa_channel_map cm = *_cm;
-
- mimefy_sample_spec(&ss, &cm);
-
- return sample_spec_to_mime_type(&ss, &cm);
-}
-
static char *escape_html(const char *t) {
pa_strbuf *sb;
const char *p, *e;
@@ -587,7 +438,7 @@ static void handle_listen(struct connection *c) {
char *t, *m;
t = escape_html(pa_strna(pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- m = mimefy_and_stringify_sample_spec(&sink->sample_spec, &sink->channel_map);
+ m = pa_sample_spec_to_mime_type_mimefy(&sink->sample_spec, &sink->channel_map);
pa_ioline_printf(c->line,
"<a href=\"" URL_LISTEN_SOURCE "%s\" title=\"%s\">%s</a><br/>\n",
@@ -609,7 +460,7 @@ static void handle_listen(struct connection *c) {
continue;
t = escape_html(pa_strna(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- m = mimefy_and_stringify_sample_spec(&source->sample_spec, &source->channel_map);
+ m = pa_sample_spec_to_mime_type_mimefy(&source->sample_spec, &source->channel_map);
pa_ioline_printf(c->line,
"<a href=\"" URL_LISTEN_SOURCE "%s\" title=\"%s\">%s</a><br/>\n",
@@ -666,7 +517,7 @@ static void handle_listen_prefix(struct connection *c, const char *source_name)
ss = source->sample_spec;
cm = source->channel_map;
- mimefy_sample_spec(&ss, &cm);
+ pa_sample_spec_mimefy(&ss, &cm);
pa_source_output_new_data_init(&data);
data.driver = __FILE__;
@@ -706,7 +557,7 @@ static void handle_listen_prefix(struct connection *c, const char *source_name)
pa_source_output_put(c->source_output);
- t = sample_spec_to_mime_type(&ss, &cm);
+ t = pa_sample_spec_to_mime_type(&ss, &cm);
http_response(c, 200, "OK", t);
pa_xfree(t);
commit c95cc9e55f02ea7cf4e86e40c6d9ee390c112d9f
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 23:23:25 2009 +0200
rygel: add module that interfaces with Rygel UPnP
diff --git a/src/Makefile.am b/src/Makefile.am
index c3c6945..b41ae39 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1060,6 +1060,11 @@ modlibexec_LTLIBRARIES += \
module-hal-detect.la
endif
+if HAVE_DBUS
+modlibexec_LTLIBRARIES += \
+ module-rygel-media-server.la
+endif
+
if HAVE_BLUEZ
modlibexec_LTLIBRARIES += \
libbluetooth-util.la \
@@ -1115,6 +1120,7 @@ SYMDEF_FILES = \
modules/module-mmkbd-evdev-symdef.h \
modules/module-http-protocol-tcp-symdef.h \
modules/module-http-protocol-unix-symdef.h \
+ modules/module-rygel-media-server-symdef.h \
modules/x11/module-x11-bell-symdef.h \
modules/x11/module-x11-publish-symdef.h \
modules/x11/module-x11-xsmp-symdef.h \
@@ -1567,6 +1573,11 @@ module_raop_discover_la_LDFLAGS = $(MODULE_LDFLAGS)
module_raop_discover_la_LIBADD = $(AM_LIBADD) $(AVAHI_LIBS) libavahi-wrap.la libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_raop_discover_la_CFLAGS = $(AM_CFLAGS) $(AVAHI_CFLAGS)
+# Rygel
+module_rygel_media_server_la_SOURCES = modules/module-rygel-media-server.c
+module_rygel_media_server_la_LDFLAGS = $(MODULE_LDFLAGS)
+module_rygel_media_server_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la libprotocol-http.la
+module_rygel_media_server_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
###################################
# Some minor stuff #
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
new file mode 100644
index 0000000..b851612
--- /dev/null
+++ b/src/modules/module-rygel-media-server.c
@@ -0,0 +1,549 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2005-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
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <pulse/xmalloc.h>
+#include <pulse/util.h>
+#include <pulse/i18n.h>
+
+#include <pulsecore/sink.h>
+#include <pulsecore/source.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/log.h>
+#include <pulsecore/modargs.h>
+#include <pulsecore/dbus-shared.h>
+#include <pulsecore/endianmacros.h>
+#include <pulsecore/namereg.h>
+#include <pulsecore/mime-type.h>
+#include <pulsecore/strbuf.h>
+
+#include "module-rygel-media-server-symdef.h"
+
+PA_MODULE_AUTHOR("Lennart Poettering");
+PA_MODULE_DESCRIPTION("UPnP MediaServer Plugin for Rygel");
+PA_MODULE_VERSION(PACKAGE_VERSION);
+PA_MODULE_LOAD_ONCE(TRUE);
+
+/* This implements http://live.gnome.org/action/edit/Rygel/MediaProviderSpec */
+
+#define SERVICE_NAME "org.Rygel.MediaServer1.PulseAudio"
+
+#define OBJECT_ROOT "/org/Rygel/MediaServer1/PulseAudio"
+#define OBJECT_SINKS "/org/Rygel/MediaServer1/PulseAudio/Sinks"
+#define OBJECT_SOURCES "/org/Rygel/MediaServer1/PulseAudio/Sources"
+
+#define CONTAINER_INTROSPECT_XML_PREFIX \
+ DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
+ "<node>" \
+ " <!-- If you are looking for documentation make sure to check out" \
+ " http://live.gnome.org/Rygel/MediaProviderSpec -->" \
+ " <interface name=\"org.Rygel.MediaContainer1\">" \
+ " <method name=\"GetContainers\">" \
+ " <arg name=\"children\" type=\"ao\" direction=\"out\"/>" \
+ " </method>" \
+ " <method name=\"GetItems\">" \
+ " <arg name=\"children\" type=\"ao\" direction=\"out\"/>" \
+ " </method>" \
+ " <signal name=\"ItemAdded\">" \
+ " <arg name=\"path\" type=\"o\"/>" \
+ " </signal>" \
+ " <signal name=\"ItemRemoved\">" \
+ " <arg name=\"path\" type=\"o\"/>" \
+ " </signal>" \
+ " <signal name=\"ContainerAdded\">" \
+ " <arg name=\"path\" type=\"o\"/>" \
+ " </signal>" \
+ " <signal name=\"ContainerRemoved\">" \
+ " <arg name=\"path\" type=\"o\"/>" \
+ " </signal>" \
+ " </interface>" \
+ " <interface name=\"org.Rygel.MediaObject1\">" \
+ " <property name=\"display-name\" type=\"s\" access=\"read\"/>" \
+ " </interface>" \
+ " <interface name=\"org.freedesktop.DBus.Properties\">" \
+ " <method name=\"Get\">" \
+ " <arg name=\"interface\" direction=\"in\" type=\"s\"/>" \
+ " <arg name=\"property\" direction=\"in\" type=\"s\"/>" \
+ " <arg name=\"value\" direction=\"out\" type=\"v\"/>" \
+ " </method>" \
+ " </interface>" \
+ " <interface name=\"org.freedesktop.DBus.Introspectable\">" \
+ " <method name=\"Introspect\">" \
+ " <arg name=\"data\" type=\"s\" direction=\"out\"/>" \
+ " </method>" \
+ " </interface>"
+
+#define CONTAINER_INTROSPECT_XML_POSTFIX \
+ "</node>"
+
+#define ROOT_INTROSPECT_XML \
+ CONTAINER_INTROSPECT_XML_PREFIX \
+ "<node name=\"Sinks\"/>" \
+ "<node name=\"Sources\"/>" \
+ CONTAINER_INTROSPECT_XML_POSTFIX
+
+#define ITEM_INTROSPECT_XML \
+ DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
+ "<node>" \
+ " <!-- If you are looking for documentation make sure to check out" \
+ " http://live.gnome.org/Rygel/MediaProviderSpec -->" \
+ " <interface name=\"org.Rygel.MediaItem1\">" \
+ " <property name=\"urls\" type=\"as\" access=\"read\"/>" \
+ " <property name=\"mime-type\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"type\" type=\"s\" access=\"read\"/>" \
+ " </interface>" \
+ " <interface name=\"org.Rygel.MediaObject1\">" \
+ " <property name=\"display-name\" type=\"s\" access=\"read\"/>" \
+ " </interface>" \
+ " <interface name=\"org.freedesktop.DBus.Properties\">" \
+ " <method name=\"Get\">" \
+ " <arg name=\"interface\" direction=\"in\" type=\"s\"/>" \
+ " <arg name=\"property\" direction=\"in\" type=\"s\"/>" \
+ " <arg name=\"value\" direction=\"out\" type=\"v\"/>" \
+ " </method>" \
+ " </interface>" \
+ " <interface name=\"org.freedesktop.DBus.Introspectable\">" \
+ " <method name=\"Introspect\">" \
+ " <arg name=\"data\" type=\"s\" direction=\"out\"/>" \
+ " </method>" \
+ " </interface>" \
+ "</node>"
+
+
+static const char* const valid_modargs[] = {
+ NULL
+};
+
+struct userdata {
+ pa_core *core;
+ pa_module *module;
+
+ pa_dbus_connection *bus;
+ pa_bool_t got_name:1;
+
+ pa_hook_slot *source_new_slot, *source_unlink_slot;
+};
+
+static void send_signal(struct userdata *u, pa_source *s, const char *name) {
+ DBusMessage *m;
+ char *child;
+ const char *parent;
+
+ pa_assert(u);
+ pa_source_assert_ref(s);
+
+ if (u->core->state == PA_CORE_SHUTDOWN)
+ return;
+
+ if (s->monitor_of) {
+ parent = OBJECT_SINKS;
+ child = pa_sprintf_malloc(OBJECT_SINKS "/%s", s->monitor_of->name);
+ } else {
+ parent = OBJECT_SOURCES;
+ child = pa_sprintf_malloc(OBJECT_SOURCES "/%s", s->name);
+ }
+
+ pa_assert_se(m = dbus_message_new_signal(parent, "org.Rygel.MediaContainer1", name));
+ pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_OBJECT_PATH, &child, DBUS_TYPE_INVALID));
+ pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->bus), m, NULL));
+
+ pa_xfree(child);
+
+ dbus_message_unref(m);
+}
+
+static pa_hook_result_t source_new_cb(pa_core *c, pa_source *s, struct userdata *u) {
+ pa_assert(c);
+ pa_source_assert_ref(s);
+
+ send_signal(u, s, "ItemAdded");
+
+ return PA_HOOK_OK;
+}
+
+
+static pa_hook_result_t source_unlink_cb(pa_core *c, pa_source *s, struct userdata *u) {
+ pa_assert(c);
+ pa_source_assert_ref(s);
+
+ send_signal(u, s, "ItemRemoved");
+
+ return PA_HOOK_OK;
+}
+
+static pa_bool_t message_is_property_get(DBusMessage *m, const char *interface, const char *property) {
+ char *i, *p;
+ DBusError error;
+
+ dbus_error_init(&error);
+
+ pa_assert(m);
+
+ if (!dbus_message_is_method_call(m, "org.freedesktop.DBus.Properties", "Get"))
+ return FALSE;
+
+ if (!dbus_message_get_args(m, &error, DBUS_TYPE_STRING, &i, DBUS_TYPE_STRING, &p, DBUS_TYPE_INVALID) || dbus_error_is_set(&error)) {
+ dbus_error_free(&error);
+ return FALSE;
+ }
+
+ return pa_streq(i, interface) && pa_streq(p, property);
+}
+
+static void append_variant_string(DBusMessage *m, const char *s) {
+ DBusMessageIter iter, sub;
+
+ pa_assert(m);
+ pa_assert(s);
+
+ dbus_message_iter_init_append(m, &iter);
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, "s", &sub));
+ pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s));
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+}
+
+static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
+ struct userdata *u = userdata;
+ DBusMessage *r = NULL;
+
+ pa_assert(u);
+
+ if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetContainers")) {
+ const char * array[] = { OBJECT_SINKS, OBJECT_SOURCES };
+ const char ** parray = array;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &parray, 2,
+ DBUS_TYPE_INVALID));
+
+ } else if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetItems")) {
+ const char * array[] = { };
+ const char ** parray = array;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &parray, 0,
+ DBUS_TYPE_INVALID));
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_string(r, "PulseAudio");
+ } else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
+ const char *xml = ROOT_INTROSPECT_XML;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_STRING, &xml,
+ DBUS_TYPE_INVALID));
+
+ } else
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ if (r) {
+ pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->bus), r, NULL));
+ dbus_message_unref(r);
+ }
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
+ struct userdata *u = userdata;
+ DBusMessage *r = NULL;
+ const char *path;
+
+ pa_assert(u);
+
+ path = dbus_message_get_path(m);
+
+ if (pa_streq(path, OBJECT_SINKS) || pa_streq(path, OBJECT_SOURCES)) {
+
+ /* Container nodes */
+
+ if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetContainers")) {
+
+ const char * array[] = { };
+ const char ** parray = array;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &parray, 0,
+ DBUS_TYPE_INVALID));
+
+ } else if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetItems")) {
+ unsigned n, i = 0;
+ char ** array;
+ uint32_t idx;
+
+ if (pa_streq(path, OBJECT_SINKS))
+ n = pa_idxset_size(u->core->sinks);
+ else
+ n = pa_idxset_size(u->core->sources);
+
+ array = pa_xnew(char*, n);
+
+ if (pa_streq(path, OBJECT_SINKS)) {
+ pa_sink *sink;
+
+ PA_IDXSET_FOREACH(sink, u->core->sinks, idx)
+ array[i++] = pa_sprintf_malloc(OBJECT_SINKS "/%u", sink->index);
+ } else {
+ pa_source *source;
+
+ PA_IDXSET_FOREACH(source, u->core->sources, idx)
+ if (!source->monitor_of)
+ array[i++] = pa_sprintf_malloc(OBJECT_SOURCES "/%u", source->index);
+ }
+
+ pa_assert(i <= n);
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &array, i,
+ DBUS_TYPE_INVALID));
+
+ for (; i >= 1; i--)
+ pa_xfree(array[i-1]);
+
+ pa_xfree(array);
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
+
+ if (pa_streq(path, OBJECT_SINKS)) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_string(r, _("Output Devices"));
+ } else {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_string(r, _("Input Devices"));
+ }
+
+ } else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
+ pa_strbuf *sb;
+ char *xml;
+ uint32_t idx;
+
+ sb = pa_strbuf_new();
+ pa_strbuf_puts(sb, CONTAINER_INTROSPECT_XML_PREFIX);
+
+ if (pa_streq(path, OBJECT_SINKS)) {
+ pa_sink *sink;
+
+ PA_IDXSET_FOREACH(sink, u->core->sinks, idx)
+ pa_strbuf_printf(sb, "<node name=\"%u\"/>", sink->index);
+ } else {
+ pa_source *source;
+
+ PA_IDXSET_FOREACH(source, u->core->sources, idx)
+ if (!source->monitor_of)
+ pa_strbuf_printf(sb, "<node name=\"%u\"/>", source->index);
+ }
+
+ pa_strbuf_puts(sb, CONTAINER_INTROSPECT_XML_POSTFIX);
+ xml = pa_strbuf_tostring_free(sb);
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_STRING, &xml,
+ DBUS_TYPE_INVALID));
+
+ pa_xfree(xml);
+ }
+
+ } else {
+ pa_sink *sink = NULL;
+ pa_source *source = NULL;
+
+ /* Child nodes */
+
+ if (pa_startswith(path, OBJECT_SINKS "/"))
+ sink = pa_namereg_get(u->core, path + sizeof(OBJECT_SINKS), PA_NAMEREG_SINK);
+ else if (pa_startswith(path, OBJECT_SOURCES "/"))
+ source = pa_namereg_get(u->core, path + sizeof(OBJECT_SOURCES), PA_NAMEREG_SOURCE);
+
+ if (!sink && !source)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_string(r, pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "type")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_string(r, "audio");
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "mime-type")) {
+ char *t;
+
+ if (sink)
+ t = pa_sample_spec_to_mime_type_mimefy(&sink->sample_spec, &sink->channel_map);
+ else
+ t = pa_sample_spec_to_mime_type_mimefy(&source->sample_spec, &source->channel_map);
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_string(r, t);
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "urls")) {
+ char * array[1];
+ char ** parray = array;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+
+ array[0] = pa_sprintf_malloc("http://@ADDRESS@:4714/listen/source/%s",
+ sink ? sink->monitor_source->name : source->name);
+
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &parray, 1,
+ DBUS_TYPE_INVALID));
+
+ pa_xfree(array[0]);
+
+ } else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
+ const char *xml =
+ ITEM_INTROSPECT_XML;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ pa_assert_se(dbus_message_append_args(
+ r,
+ DBUS_TYPE_STRING, &xml,
+ DBUS_TYPE_INVALID));
+
+ } else
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+
+ if (r) {
+ pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->bus), r, NULL));
+ dbus_message_unref(r);
+ }
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+int pa__init(pa_module *m) {
+
+ struct userdata *u;
+ pa_modargs *ma = NULL;
+ DBusError error;
+ static const DBusObjectPathVTable vtable_root = {
+ .message_function = root_handler,
+ };
+ static const DBusObjectPathVTable vtable_sinks_and_sources = {
+ .message_function = sinks_and_sources_handler,
+ };
+
+ dbus_error_init(&error);
+
+ if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
+ pa_log("Failed to parse module arguments.");
+ goto fail;
+ }
+
+ m->userdata = u = pa_xnew0(struct userdata, 1);
+ u->core = m->core;
+ u->module = m;
+
+ u->source_new_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_PUT], PA_HOOK_LATE, (pa_hook_cb_t) source_new_cb, u);
+ u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) source_unlink_cb, u);
+
+ if (!(u->bus = pa_dbus_bus_get(m->core, DBUS_BUS_SESSION, &error))) {
+ pa_log("Failed to get session bus connection: %s", error.message);
+ goto fail;
+ }
+
+ pa_assert_se(dbus_connection_register_object_path(pa_dbus_connection_get(u->bus), OBJECT_ROOT, &vtable_root, u));
+ pa_assert_se(dbus_connection_register_fallback(pa_dbus_connection_get(u->bus), OBJECT_SINKS, &vtable_sinks_and_sources, u));
+ pa_assert_se(dbus_connection_register_fallback(pa_dbus_connection_get(u->bus), OBJECT_SOURCES, &vtable_sinks_and_sources, u));
+
+ if (dbus_bus_request_name(pa_dbus_connection_get(u->bus), SERVICE_NAME, DBUS_NAME_FLAG_DO_NOT_QUEUE, &error) != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+ pa_log("Failed to request service name " SERVICE_NAME ": %s", error.message);
+ goto fail;
+ }
+
+ u->got_name = TRUE;
+
+ pa_modargs_free(ma);
+
+ return 0;
+
+fail:
+ pa__done(m);
+
+ if (ma)
+ pa_modargs_free(ma);
+
+ dbus_error_free(&error);
+
+ return -1;
+}
+
+void pa__done(pa_module*m) {
+ struct userdata*u;
+ pa_assert(m);
+
+ if (!(u = m->userdata))
+ return;
+
+ if (u->source_new_slot)
+ pa_hook_slot_free(u->source_new_slot);
+ if (u->source_unlink_slot)
+ pa_hook_slot_free(u->source_unlink_slot);
+
+ if (u->bus) {
+ DBusError error;
+
+ dbus_error_init(&error);
+
+ dbus_connection_unregister_object_path(pa_dbus_connection_get(u->bus), OBJECT_ROOT);
+ dbus_connection_unregister_object_path(pa_dbus_connection_get(u->bus), OBJECT_SINKS);
+ dbus_connection_unregister_object_path(pa_dbus_connection_get(u->bus), OBJECT_SOURCES);
+
+ if (u->got_name) {
+ if (dbus_bus_release_name(pa_dbus_connection_get(u->bus), SERVICE_NAME, &error) != DBUS_RELEASE_NAME_REPLY_RELEASED) {
+ pa_log("Failed to release service name " SERVICE_NAME ": %s", error.message);
+ dbus_error_free(&error);
+ }
+ }
+
+ pa_dbus_connection_unref(u->bus);
+ }
+
+ pa_xfree(u);
+}
commit d5f90575581b90417082d44968f579ea02d3c662
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Apr 29 23:48:40 2009 +0200
rygel: make server name configurable
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index b851612..7136cbe 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -35,6 +35,7 @@
#include <pulse/xmalloc.h>
#include <pulse/util.h>
#include <pulse/i18n.h>
+#include <pulse/utf8.h>
#include <pulsecore/sink.h>
#include <pulsecore/source.h>
@@ -53,6 +54,8 @@ PA_MODULE_AUTHOR("Lennart Poettering");
PA_MODULE_DESCRIPTION("UPnP MediaServer Plugin for Rygel");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
+PA_MODULE_USAGE(
+ "display_name=<UPnP Media Server name>");
/* This implements http://live.gnome.org/action/edit/Rygel/MediaProviderSpec */
@@ -141,6 +144,7 @@ PA_MODULE_LOAD_ONCE(TRUE);
static const char* const valid_modargs[] = {
+ "display_name",
NULL
};
@@ -151,6 +155,8 @@ struct userdata {
pa_dbus_connection *bus;
pa_bool_t got_name:1;
+ char *display_name;
+
pa_hook_slot *source_new_slot, *source_unlink_slot;
};
@@ -260,7 +266,7 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
} else if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, "PulseAudio");
+ append_variant_string(r, u->display_name);
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
const char *xml = ROOT_INTROSPECT_XML;
@@ -462,6 +468,8 @@ int pa__init(pa_module *m) {
struct userdata *u;
pa_modargs *ma = NULL;
DBusError error;
+ const char *t;
+
static const DBusObjectPathVTable vtable_root = {
.message_function = root_handler,
};
@@ -480,6 +488,16 @@ int pa__init(pa_module *m) {
u->core = m->core;
u->module = m;
+ if ((t = pa_modargs_get_value(ma, "display_name", NULL)))
+ u->display_name = pa_utf8_filter(t);
+ else {
+ char *h;
+
+ h = pa_get_host_name_malloc();
+ u->display_name = pa_sprintf_malloc(_("Audio on %s"), h);
+ pa_xfree(h);
+ }
+
u->source_new_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_PUT], PA_HOOK_LATE, (pa_hook_cb_t) source_new_cb, u);
u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) source_unlink_cb, u);
@@ -545,5 +563,7 @@ void pa__done(pa_module*m) {
pa_dbus_connection_unref(u->bus);
}
+ pa_xfree(u->display_name);
+
pa_xfree(u);
}
commit 9208b86b5ecf72b69743a09cd0c8a99078c0fc0f
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 01:33:21 2009 +0200
parseaddr: add new call pa_is_ip_address()
diff --git a/src/pulsecore/parseaddr.c b/src/pulsecore/parseaddr.c
index 5b53122..1cd010b 100644
--- a/src/pulsecore/parseaddr.c
+++ b/src/pulsecore/parseaddr.c
@@ -25,6 +25,7 @@
#include <string.h>
#include <stdlib.h>
+#include <arpa/inet.h>
#include <pulse/xmalloc.h>
#include <pulse/util.h>
@@ -131,3 +132,17 @@ int pa_parse_address(const char *name, pa_parsed_address *ret_p) {
return 0;
}
+
+pa_bool_t pa_is_ip_address(const char *a) {
+ char buf[INET6_ADDRSTRLEN];
+
+ pa_assert(a);
+
+ if (inet_pton(AF_INET6, a, buf) >= 1)
+ return TRUE;
+
+ if (inet_pton(AF_INET, a, buf) >= 1)
+ return TRUE;
+
+ return FALSE;
+}
diff --git a/src/pulsecore/parseaddr.h b/src/pulsecore/parseaddr.h
index 5fbcb9a..0728b5e 100644
--- a/src/pulsecore/parseaddr.h
+++ b/src/pulsecore/parseaddr.h
@@ -39,4 +39,6 @@ typedef struct pa_parsed_address {
int pa_parse_address(const char *a, pa_parsed_address *ret_p);
+pa_bool_t pa_is_ip_address(const char *a);
+
#endif
commit 23a798caf6aa70bbff3fcbe9bbdb50d602bd1bb3
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 01:33:56 2009 +0200
strlist: add new calls pa_strlist_{next|data}()
diff --git a/src/pulsecore/strlist.c b/src/pulsecore/strlist.c
index cbafbba..0f4ca86 100644
--- a/src/pulsecore/strlist.c
+++ b/src/pulsecore/strlist.c
@@ -159,3 +159,15 @@ pa_strlist *pa_strlist_reverse(pa_strlist *l) {
return r;
}
+
+pa_strlist *pa_strlist_next(pa_strlist *s) {
+ pa_assert(s);
+
+ return s->next;
+}
+
+const char *pa_strlist_data(pa_strlist *s) {
+ pa_assert(s);
+
+ return ITEM_TO_TEXT(s);
+}
diff --git a/src/pulsecore/strlist.h b/src/pulsecore/strlist.h
index 2584e86..e57203c 100644
--- a/src/pulsecore/strlist.h
+++ b/src/pulsecore/strlist.h
@@ -47,4 +47,10 @@ pa_strlist* pa_strlist_parse(const char *s);
/* Reverse string list */
pa_strlist *pa_strlist_reverse(pa_strlist *l);
+/* Return the next item in the list */
+pa_strlist *pa_strlist_next(pa_strlist *s);
+
+/* Return the string associated to the current item */
+const char *pa_strlist_data(pa_strlist *s);
+
#endif
commit 8dfdfd4e1be6359dc49a44539699c1383ff2b46a
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 01:35:18 2009 +0200
http: export information about currently active server strings
diff --git a/src/modules/module-protocol-stub.c b/src/modules/module-protocol-stub.c
index ce3dcd0..5b351d1 100644
--- a/src/modules/module-protocol-stub.c
+++ b/src/modules/module-protocol-stub.c
@@ -251,7 +251,7 @@ int pa__init(pa_module*m) {
int r;
#endif
-#if defined(USE_PROTOCOL_NATIVE)
+#if defined(USE_PROTOCOL_NATIVE) || defined(USE_PROTOCOL_HTTP)
char t[256];
#endif
@@ -382,6 +382,24 @@ int pa__init(pa_module*m) {
# endif
#endif
+#if defined(USE_PROTOCOL_HTTP)
+#if defined(USE_TCP_SOCKETS)
+ if (u->socket_server_ipv4)
+ if (pa_socket_server_get_address(u->socket_server_ipv4, t, sizeof(t)))
+ pa_http_protocol_add_server_string(u->http_protocol, t);
+
+#ifdef HAVE_IPV6
+ if (u->socket_server_ipv6)
+ if (pa_socket_server_get_address(u->socket_server_ipv6, t, sizeof(t)))
+ pa_http_protocol_add_server_string(u->http_protocol, t);
+#endif /* HAVE_IPV6 */
+#else /* USE_TCP_SOCKETS */
+ if (pa_socket_server_get_address(u->socket_server_unix, t, sizeof(t)))
+ pa_http_protocol_add_server_string(u->http_protocol, t);
+
+#endif /* USE_TCP_SOCKETS */
+#endif /* USE_PROTOCOL_HTTP */
+
if (ma)
pa_modargs_free(ma);
@@ -419,6 +437,24 @@ void pa__done(pa_module*m) {
}
#elif defined(USE_PROTOCOL_HTTP)
if (u->http_protocol) {
+ char t[256];
+
+#if defined(USE_TCP_SOCKETS)
+ if (u->socket_server_ipv4)
+ if (pa_socket_server_get_address(u->socket_server_ipv4, t, sizeof(t)))
+ pa_http_protocol_remove_server_string(u->http_protocol, t);
+
+#ifdef HAVE_IPV6
+ if (u->socket_server_ipv6)
+ if (pa_socket_server_get_address(u->socket_server_ipv6, t, sizeof(t)))
+ pa_http_protocol_remove_server_string(u->http_protocol, t);
+#endif /* HAVE_IPV6 */
+#else /* USE_TCP_SOCKETS */
+ if (u->socket_server_unix)
+ if (pa_socket_server_get_address(u->socket_server_unix, t, sizeof(t)))
+ pa_http_protocol_remove_server_string(u->http_protocol, t);
+#endif /* USE_PROTOCOL_HTTP */
+
pa_http_protocol_disconnect(u->http_protocol, u->module);
pa_http_protocol_unref(u->http_protocol);
}
diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c
index 46850b2..b5d7530 100644
--- a/src/pulsecore/protocol-http.c
+++ b/src/pulsecore/protocol-http.c
@@ -97,6 +97,8 @@ struct pa_http_protocol {
pa_core *core;
pa_idxset *connections;
+
+ pa_strlist *servers;
};
enum {
@@ -698,7 +700,7 @@ static pa_http_protocol* http_protocol_new(pa_core *c) {
pa_assert(c);
- p = pa_xnew(pa_http_protocol, 1);
+ p = pa_xnew0(pa_http_protocol, 1);
PA_REFCNT_INIT(p);
p->core = c;
p->connections = pa_idxset_new(NULL, NULL);
@@ -740,7 +742,32 @@ void pa_http_protocol_unref(pa_http_protocol *p) {
pa_idxset_free(p->connections, NULL, NULL);
+ pa_strlist_free(p->servers);
+
pa_assert_se(pa_shared_remove(p->core, "http-protocol") >= 0);
pa_xfree(p);
}
+
+void pa_http_protocol_add_server_string(pa_http_protocol *p, const char *name) {
+ pa_assert(p);
+ pa_assert(PA_REFCNT_VALUE(p) >= 1);
+ pa_assert(name);
+
+ p->servers = pa_strlist_prepend(p->servers, name);
+}
+
+void pa_http_protocol_remove_server_string(pa_http_protocol *p, const char *name) {
+ pa_assert(p);
+ pa_assert(PA_REFCNT_VALUE(p) >= 1);
+ pa_assert(name);
+
+ p->servers = pa_strlist_remove(p->servers, name);
+}
+
+pa_strlist *pa_http_protocol_servers(pa_http_protocol *p) {
+ pa_assert(p);
+ pa_assert(PA_REFCNT_VALUE(p) >= 1);
+
+ return p->servers;
+}
diff --git a/src/pulsecore/protocol-http.h b/src/pulsecore/protocol-http.h
index 40b3d82..f7517e8 100644
--- a/src/pulsecore/protocol-http.h
+++ b/src/pulsecore/protocol-http.h
@@ -26,7 +26,7 @@
#include <pulsecore/module.h>
#include <pulsecore/modargs.h>
#include <pulsecore/iochannel.h>
-
+#include <pulsecore/strlist.h>
typedef struct pa_http_protocol pa_http_protocol;
@@ -36,4 +36,8 @@ void pa_http_protocol_unref(pa_http_protocol *p);
void pa_http_protocol_connect(pa_http_protocol *p, pa_iochannel *io, pa_module *m);
void pa_http_protocol_disconnect(pa_http_protocol *p, pa_module *m);
+void pa_http_protocol_add_server_string(pa_http_protocol *p, const char *name);
+void pa_http_protocol_remove_server_string(pa_http_protocol *p, const char *name);
+pa_strlist *pa_http_protocol_servers(pa_http_protocol *p);
+
#endif
commit 93db3cba60f437fc97abcceceadcc2d7f4ce8479
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 01:36:05 2009 +0200
rygel: instead of always handing out wildcard address find out the actual address we are listening on
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 7136cbe..da6bc7a 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -47,6 +47,8 @@
#include <pulsecore/namereg.h>
#include <pulsecore/mime-type.h>
#include <pulsecore/strbuf.h>
+#include <pulsecore/protocol-http.h>
+#include <pulsecore/parseaddr.h>
#include "module-rygel-media-server-symdef.h"
@@ -158,6 +160,8 @@ struct userdata {
char *display_name;
pa_hook_slot *source_new_slot, *source_unlink_slot;
+
+ pa_http_protocol *http;
};
static void send_signal(struct userdata *u, pa_source *s, const char *name) {
@@ -287,6 +291,45 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
return DBUS_HANDLER_RESULT_HANDLED;
}
+static char *compute_url(struct userdata *u, const char *name) {
+ pa_strlist *i;
+
+ pa_assert(u);
+ pa_assert(name);
+
+ for (i = pa_http_protocol_servers(u->http); i; i = pa_strlist_next(i)) {
+ pa_parsed_address a;
+
+ PA_DEBUG_TRAP;
+
+ if (pa_parse_address(pa_strlist_data(i), &a) >= 0 &&
+ (a.type == PA_PARSED_ADDRESS_TCP4 ||
+ a.type == PA_PARSED_ADDRESS_TCP6 ||
+ a.type == PA_PARSED_ADDRESS_TCP_AUTO)) {
+
+ const char *address;
+ char *s;
+
+ if (pa_is_ip_address(a.path_or_host))
+ address = a.path_or_host;
+ else
+ address = "@ADDRESS@";
+
+ if (a.port <= 0)
+ a.port = 4714;
+
+ s = pa_sprintf_malloc("http://%s:%u/listen/source/%s", address, a.port, name);
+
+ pa_xfree(a.path_or_host);
+ return s;
+ }
+
+ pa_xfree(a.path_or_host);
+ }
+
+ return pa_sprintf_malloc("http://@ADDRESS@:4714/listen/source/%s", name);
+}
+
static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
struct userdata *u = userdata;
DBusMessage *r = NULL;
@@ -431,8 +474,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_assert_se(r = dbus_message_new_method_return(m));
- array[0] = pa_sprintf_malloc("http://@ADDRESS@:4714/listen/source/%s",
- sink ? sink->monitor_source->name : source->name);
+ array[0] = compute_url(u, sink ? sink->monitor_source->name : source->name);
pa_assert_se(dbus_message_append_args(
r,
@@ -487,6 +529,7 @@ int pa__init(pa_module *m) {
m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
+ u->http = pa_http_protocol_get(u->core);
if ((t = pa_modargs_get_value(ma, "display_name", NULL)))
u->display_name = pa_utf8_filter(t);
@@ -565,5 +608,8 @@ void pa__done(pa_module*m) {
pa_xfree(u->display_name);
+ if (u->http)
+ pa_http_protocol_unref(u->http);
+
pa_xfree(u);
}
commit 5326f5f3bdbba97b63f0b5ef4497e81e44cb9abc
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 01:39:02 2009 +0200
rygel: get rid of forgotten debug trap
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index da6bc7a..8ea134b 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -300,8 +300,6 @@ static char *compute_url(struct userdata *u, const char *name) {
for (i = pa_http_protocol_servers(u->http); i; i = pa_strlist_next(i)) {
pa_parsed_address a;
- PA_DEBUG_TRAP;
-
if (pa_parse_address(pa_strlist_data(i), &a) >= 0 &&
(a.type == PA_PARSED_ADDRESS_TCP4 ||
a.type == PA_PARSED_ADDRESS_TCP6 ||
commit d6964160d5606e6130b905ce9b86d55be5a00179
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 02:33:49 2009 +0200
headers: minor cleanups
diff --git a/src/pulsecore/ipacl.h b/src/pulsecore/ipacl.h
index 7b7ffa6..a366139 100644
--- a/src/pulsecore/ipacl.h
+++ b/src/pulsecore/ipacl.h
@@ -1,5 +1,5 @@
-#ifndef fooparseaddrhfoo
-#define fooparseaddrhfoo
+#ifndef foopulsecoreipaclhfoo
+#define foopulsecoreipaclhfoo
/***
This file is part of PulseAudio.
diff --git a/src/pulsecore/parseaddr.h b/src/pulsecore/parseaddr.h
index 0728b5e..a1071b0 100644
--- a/src/pulsecore/parseaddr.h
+++ b/src/pulsecore/parseaddr.h
@@ -1,5 +1,5 @@
-#ifndef fooparseaddrhfoo
-#define fooparseaddrhfoo
+#ifndef foopulsecoreparseaddrhfoo
+#define foopulsecoreparseaddrhfoo
/***
This file is part of PulseAudio.
@@ -24,6 +24,8 @@
#include <inttypes.h>
+#include <pulsecore/macro.h>
+
typedef enum pa_parsed_address_type {
PA_PARSED_ADDRESS_UNIX,
PA_PARSED_ADDRESS_TCP4,
commit 407a8105d0a51293df2c70873a916302cc839e9f
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 02:36:02 2009 +0200
zeroconf: computer native protocol port automatically
diff --git a/src/modules/module-zeroconf-publish.c b/src/modules/module-zeroconf-publish.c
index 692ffe9..d9a0401 100644
--- a/src/modules/module-zeroconf-publish.c
+++ b/src/modules/module-zeroconf-publish.c
@@ -37,6 +37,7 @@
#include <pulse/xmalloc.h>
#include <pulse/util.h>
+#include <pulsecore/parseaddr.h>
#include <pulsecore/sink.h>
#include <pulsecore/source.h>
#include <pulsecore/native-common.h>
@@ -47,6 +48,7 @@
#include <pulsecore/modargs.h>
#include <pulsecore/avahi-wrap.h>
#include <pulsecore/endianmacros.h>
+#include <pulsecore/protocol-native.h>
#include "module-zeroconf-publish-symdef.h"
@@ -54,7 +56,6 @@ PA_MODULE_AUTHOR("Lennart Poettering");
PA_MODULE_DESCRIPTION("mDNS/DNS-SD Service Publisher");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
-PA_MODULE_USAGE("port=<IP port number>");
#define SERVICE_TYPE_SINK "_pulse-sink._tcp"
#define SERVICE_TYPE_SOURCE "_pulse-source._tcp"
@@ -67,7 +68,6 @@ PA_MODULE_USAGE("port=<IP port number>");
#define SERVICE_SUBTYPE_SOURCE_NON_MONITOR "_non-monitor._sub."SERVICE_TYPE_SOURCE
static const char* const valid_modargs[] = {
- "port",
NULL
};
@@ -88,6 +88,7 @@ struct service {
struct userdata {
pa_core *core;
pa_module *module;
+
AvahiPoll *avahi_poll;
AvahiClient *client;
@@ -96,9 +97,9 @@ struct userdata {
AvahiEntryGroup *main_entry_group;
- uint16_t port;
-
pa_hook_slot *sink_new_slot, *source_new_slot, *sink_unlink_slot, *source_unlink_slot, *sink_changed_slot, *source_changed_slot;
+
+ pa_native_protocol *native;
};
static void get_service_data(struct service *s, pa_sample_spec *ret_ss, pa_channel_map *ret_map, const char **ret_name, const char **ret_description, enum service_subtype *ret_subtype) {
@@ -184,6 +185,30 @@ static void service_entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupStat
static void service_free(struct service *s);
+static uint16_t compute_port(struct userdata *u) {
+ pa_strlist *i;
+
+ pa_assert(u);
+
+ for (i = pa_native_protocol_servers(u->native); i; i = pa_strlist_next(i)) {
+ pa_parsed_address a;
+
+ if (pa_parse_address(pa_strlist_data(i), &a) >= 0 &&
+ (a.type == PA_PARSED_ADDRESS_TCP4 ||
+ a.type == PA_PARSED_ADDRESS_TCP6 ||
+ a.type == PA_PARSED_ADDRESS_TCP_AUTO) &&
+ a.port > 0) {
+
+ pa_xfree(a.path_or_host);
+ return a.port;
+ }
+
+ pa_xfree(a.path_or_host);
+ }
+
+ return PA_NATIVE_DEFAULT_PORT;
+}
+
static int publish_service(struct service *s) {
int r = -1;
AvahiStringList *txt = NULL;
@@ -230,7 +255,7 @@ static int publish_service(struct service *s) {
pa_sink_isinstance(s->device) ? SERVICE_TYPE_SINK : SERVICE_TYPE_SOURCE,
NULL,
NULL,
- s->userdata->port,
+ compute_port(s->userdata),
txt) < 0) {
pa_log("avahi_entry_group_add_service_strlst(): %s", avahi_strerror(avahi_client_errno(s->userdata->client)));
@@ -430,7 +455,7 @@ static int publish_main_service(struct userdata *u) {
SERVICE_TYPE_SERVER,
NULL,
NULL,
- u->port,
+ compute_port(u),
txt) < 0) {
pa_log("avahi_entry_group_add_service_strlst() failed: %s", avahi_strerror(avahi_client_errno(u->client)));
@@ -552,7 +577,6 @@ static void client_callback(AvahiClient *c, AvahiClientState state, void *userda
int pa__init(pa_module*m) {
struct userdata *u;
- uint32_t port = PA_NATIVE_DEFAULT_PORT;
pa_modargs *ma = NULL;
char hn[256], un[256];
int error;
@@ -562,15 +586,10 @@ int pa__init(pa_module*m) {
goto fail;
}
- if (pa_modargs_get_value_u32(ma, "port", &port) < 0 || port <= 0 || port > 0xFFFF) {
- pa_log("Invalid port specified.");
- goto fail;
- }
-
m->userdata = u = pa_xnew(struct userdata, 1);
u->core = m->core;
u->module = m;
- u->port = (uint16_t) port;
+ u->native = pa_native_protocol_get(u->core);
u->avahi_poll = pa_avahi_poll_new(m->core->mainloop);
commit 3522b7d150c2ab53630fa6409acbfe66b37d6ac2
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 02:36:40 2009 +0200
zeroconf: copy more sink/source properties into DNS-SD TXT data
diff --git a/src/modules/module-zeroconf-publish.c b/src/modules/module-zeroconf-publish.c
index d9a0401..a5bc620 100644
--- a/src/modules/module-zeroconf-publish.c
+++ b/src/modules/module-zeroconf-publish.c
@@ -102,10 +102,10 @@ struct userdata {
pa_native_protocol *native;
};
-static void get_service_data(struct service *s, pa_sample_spec *ret_ss, pa_channel_map *ret_map, const char **ret_name, const char **ret_description, enum service_subtype *ret_subtype) {
+static void get_service_data(struct service *s, pa_sample_spec *ret_ss, pa_channel_map *ret_map, const char **ret_name, pa_proplist **ret_proplist, enum service_subtype *ret_subtype) {
pa_assert(s);
pa_assert(ret_ss);
- pa_assert(ret_description);
+ pa_assert(ret_proplist);
pa_assert(ret_subtype);
if (pa_sink_isinstance(s->device)) {
@@ -114,7 +114,7 @@ static void get_service_data(struct service *s, pa_sample_spec *ret_ss, pa_chann
*ret_ss = sink->sample_spec;
*ret_map = sink->channel_map;
*ret_name = sink->name;
- *ret_description = pa_strnull(pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_DESCRIPTION));
+ *ret_proplist = sink->proplist;
*ret_subtype = sink->flags & PA_SINK_HARDWARE ? SUBTYPE_HARDWARE : SUBTYPE_VIRTUAL;
} else if (pa_source_isinstance(s->device)) {
@@ -123,7 +123,7 @@ static void get_service_data(struct service *s, pa_sample_spec *ret_ss, pa_chann
*ret_ss = source->sample_spec;
*ret_map = source->channel_map;
*ret_name = source->name;
- *ret_description = pa_strnull(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION));
+ *ret_proplist = source->proplist;
*ret_subtype = source->monitor_of ? SUBTYPE_MONITOR : (source->flags & PA_SOURCE_HARDWARE ? SUBTYPE_HARDWARE : SUBTYPE_VIRTUAL);
} else
@@ -132,11 +132,24 @@ static void get_service_data(struct service *s, pa_sample_spec *ret_ss, pa_chann
static AvahiStringList* txt_record_server_data(pa_core *c, AvahiStringList *l) {
char s[128];
+ char *t;
pa_assert(c);
l = avahi_string_list_add_pair(l, "server-version", PACKAGE_NAME" "PACKAGE_VERSION);
- l = avahi_string_list_add_pair(l, "user-name", pa_get_user_name(s, sizeof(s)));
+
+ t = pa_get_user_name_malloc();
+ l = avahi_string_list_add_pair(l, "user-name", t);
+ pa_xfree(t);
+
+ t = pa_machine_id();
+ l = avahi_string_list_add_pair(l, "machine-id", t);
+ pa_xfree(t);
+
+ t = pa_uname_string();
+ l = avahi_string_list_add_pair(l, "uname", t);
+ pa_xfree(t);
+
l = avahi_string_list_add_pair(l, "fqdn", pa_get_fqdn(s, sizeof(s)));
l = avahi_string_list_add_printf(l, "cookie=0x%08x", c->cookie);
@@ -212,7 +225,8 @@ static uint16_t compute_port(struct userdata *u) {
static int publish_service(struct service *s) {
int r = -1;
AvahiStringList *txt = NULL;
- const char *description = NULL, *name = NULL;
+ const char *name = NULL, *t;
+ pa_proplist *proplist = NULL;
pa_sample_spec ss;
pa_channel_map map;
char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
@@ -239,7 +253,7 @@ static int publish_service(struct service *s) {
txt = txt_record_server_data(s->userdata->core, txt);
- get_service_data(s, &ss, &map, &name, &description, &subtype);
+ get_service_data(s, &ss, &map, &name, &proplist, &subtype);
txt = avahi_string_list_add_pair(txt, "device", name);
txt = avahi_string_list_add_printf(txt, "rate=%u", ss.rate);
txt = avahi_string_list_add_printf(txt, "channels=%u", ss.channels);
@@ -247,6 +261,19 @@ static int publish_service(struct service *s) {
txt = avahi_string_list_add_pair(txt, "channel_map", pa_channel_map_snprint(cm, sizeof(cm), &map));
txt = avahi_string_list_add_pair(txt, "subtype", subtype_text[subtype]);
+ if ((t = pa_proplist_gets(proplist, PA_PROP_DEVICE_DESCRIPTION)))
+ txt = avahi_string_list_add_pair(txt, "description", t);
+ if ((t = pa_proplist_gets(proplist, PA_PROP_DEVICE_ICON_NAME)))
+ txt = avahi_string_list_add_pair(txt, "icon-name", t);
+ if ((t = pa_proplist_gets(proplist, PA_PROP_DEVICE_VENDOR_NAME)))
+ txt = avahi_string_list_add_pair(txt, "vendor-name", t);
+ if ((t = pa_proplist_gets(proplist, PA_PROP_DEVICE_PRODUCT_NAME)))
+ txt = avahi_string_list_add_pair(txt, "product-name", t);
+ if ((t = pa_proplist_gets(proplist, PA_PROP_DEVICE_CLASS)))
+ txt = avahi_string_list_add_pair(txt, "class", t);
+ if ((t = pa_proplist_gets(proplist, PA_PROP_DEVICE_FORM_FACTOR)))
+ txt = avahi_string_list_add_pair(txt, "form-factor", t);
+
if (avahi_entry_group_add_service_strlst(
s->entry_group,
AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC,
commit 5a2898db8a532481c024c41bf0b94e39b34ac29e
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Apr 30 02:37:05 2009 +0200
zeroconf: use pa_get_{user|host}_name_malloc() where applicable
diff --git a/src/modules/module-zeroconf-publish.c b/src/modules/module-zeroconf-publish.c
index a5bc620..4f382c8 100644
--- a/src/modules/module-zeroconf-publish.c
+++ b/src/modules/module-zeroconf-publish.c
@@ -339,7 +339,7 @@ finish:
static struct service *get_service(struct userdata *u, pa_object *device) {
struct service *s;
- char hn[64], un[64];
+ char *hn, *un;
const char *n;
pa_assert(u);
@@ -361,11 +361,13 @@ static struct service *get_service(struct userdata *u, pa_object *device) {
n = PA_SOURCE(device)->name;
}
- s->service_name = pa_truncate_utf8(pa_sprintf_malloc("%s@%s: %s",
- pa_get_user_name(un, sizeof(un)),
- pa_get_host_name(hn, sizeof(hn)),
- n),
- AVAHI_LABEL_MAX-1);
+ hn = pa_get_host_name_malloc();
+ un = pa_get_user_name_malloc();
+
+ s->service_name = pa_truncate_utf8(pa_sprintf_malloc("%s@%s: %s", un, hn, n), AVAHI_LABEL_MAX-1);
+
+ pa_xfree(un);
+ pa_xfree(hn);
pa_hashmap_put(u->services, s->device, s);
@@ -605,7 +607,7 @@ int pa__init(pa_module*m) {
struct userdata *u;
pa_modargs *ma = NULL;
- char hn[256], un[256];
+ char *hn, *un;
int error;
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
@@ -631,7 +633,11 @@ int pa__init(pa_module*m) {
u->main_entry_group = NULL;
- u->service_name = pa_truncate_utf8(pa_sprintf_malloc("%s@%s", pa_get_user_name(un, sizeof(un)), pa_get_host_name(hn, sizeof(hn))), AVAHI_LABEL_MAX);
+ un = pa_get_user_name_malloc();
+ hn = pa_get_host_name_malloc();
+ u->service_name = pa_truncate_utf8(pa_sprintf_malloc("%s@%s", un, hn), AVAHI_LABEL_MAX-1);
+ pa_xfree(un);
+ pa_xfree(hn);
if (!(u->client = avahi_client_new(u->avahi_poll, AVAHI_CLIENT_NO_FAIL, client_callback, u, &error))) {
pa_log("avahi_client_new() failed: %s", avahi_strerror(error));
commit 4129f5119407da54708d1504c0ffa2d0888fa804
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:11:30 2009 +0200
alsa: don't hit an assert when invalid module arguments are passed
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 41e8b47..4d8dade 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1770,7 +1770,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
fail:
- userdata_free(u);
+ if (u)
+ userdata_free(u);
return NULL;
}
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 843f70b..d49035c 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1621,7 +1621,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
fail:
- userdata_free(u);
+ if (u)
+ userdata_free(u);
return NULL;
}
commit d4b10d838a79a46f18876dbb4a3206b5e1c7bc09
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:12:24 2009 +0200
sample: correctly pass s24-32 formats
diff --git a/src/pulse/sample.c b/src/pulse/sample.c
index 1e67b03..ed7b1b0 100644
--- a/src/pulse/sample.c
+++ b/src/pulse/sample.c
@@ -231,13 +231,13 @@ pa_sample_format_t pa_parse_sample_format(const char *format) {
else if (strcasecmp(format, "s24re") == 0)
return PA_SAMPLE_S24RE;
else if (strcasecmp(format, "s24-32le") == 0)
- return PA_SAMPLE_S24LE;
+ return PA_SAMPLE_S24_32LE;
else if (strcasecmp(format, "s24-32be") == 0)
- return PA_SAMPLE_S24BE;
+ return PA_SAMPLE_S24_32BE;
else if (strcasecmp(format, "s24-32ne") == 0 || strcasecmp(format, "s24-32") == 0)
- return PA_SAMPLE_S24NE;
+ return PA_SAMPLE_S24_32NE;
else if (strcasecmp(format, "s24-32re") == 0)
- return PA_SAMPLE_S24RE;
+ return PA_SAMPLE_S24_32RE;
return -1;
}
commit 947bf5de6c7eaa1edc701f3f959dc16e091082dc
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:12:45 2009 +0200
zeroconf: properly unref native protocol object
diff --git a/src/modules/module-zeroconf-publish.c b/src/modules/module-zeroconf-publish.c
index 4f382c8..d72d264 100644
--- a/src/modules/module-zeroconf-publish.c
+++ b/src/modules/module-zeroconf-publish.c
@@ -695,6 +695,9 @@ void pa__done(pa_module*m) {
if (u->avahi_poll)
pa_avahi_poll_free(u->avahi_poll);
+ if (u->native)
+ pa_native_protocol_unref(u->native);
+
pa_xfree(u->service_name);
pa_xfree(u);
}
commit 076830af191306e0f6e5c6c783042345fcbca2be
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:13:15 2009 +0200
endian: fix LE/BE order for 24 bit accessor functions
diff --git a/src/pulsecore/endianmacros.h b/src/pulsecore/endianmacros.h
index 2257937..2b18cf8 100644
--- a/src/pulsecore/endianmacros.h
+++ b/src/pulsecore/endianmacros.h
@@ -45,27 +45,27 @@
#define PA_UINT32_SWAP(x) ( (uint32_t) ( ((uint32_t) (x) >> 24) | ((uint32_t) (x) << 24) | (((uint32_t) (x) & 0xFF00) << 8) | ((((uint32_t) (x)) >> 8) & 0xFF00) ) )
#endif
-static inline uint32_t PA_READ24LE(const uint8_t *p) {
+static inline uint32_t PA_READ24BE(const uint8_t *p) {
return
((uint32_t) p[0] << 16) |
((uint32_t) p[1] << 8) |
((uint32_t) p[2]);
}
-static inline uint32_t PA_READ24BE(const uint8_t *p) {
+static inline uint32_t PA_READ24LE(const uint8_t *p) {
return
((uint32_t) p[2] << 16) |
((uint32_t) p[1] << 8) |
((uint32_t) p[0]);
}
-static inline void PA_WRITE24LE(uint8_t *p, uint32_t u) {
+static inline void PA_WRITE24BE(uint8_t *p, uint32_t u) {
p[0] = (uint8_t) (u >> 16);
p[1] = (uint8_t) (u >> 8);
p[2] = (uint8_t) u;
}
-static inline void PA_WRITE24BE(uint8_t *p, uint32_t u) {
+static inline void PA_WRITE24LE(uint8_t *p, uint32_t u) {
p[2] = (uint8_t) (u >> 16);
p[1] = (uint8_t) (u >> 8);
p[0] = (uint8_t) u;
commit 3a7b287c7ebd4e1b23ab076700201d0acb5a00c2
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:14:02 2009 +0200
sample-util: properly allocate silence block for s24-32 formats
diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
index 3a9b384..007a2f0 100644
--- a/src/pulsecore/sample-util.c
+++ b/src/pulsecore/sample-util.c
@@ -1181,6 +1181,8 @@ pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool,
case PA_SAMPLE_S32BE:
case PA_SAMPLE_S24LE:
case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_S24_32LE:
+ case PA_SAMPLE_S24_32RE:
case PA_SAMPLE_FLOAT32LE:
case PA_SAMPLE_FLOAT32BE:
cache->blocks[PA_SAMPLE_S16LE] = b = silence_memblock_new(pool, 0);
@@ -1189,6 +1191,8 @@ pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool,
cache->blocks[PA_SAMPLE_S32BE] = pa_memblock_ref(b);
cache->blocks[PA_SAMPLE_S24LE] = pa_memblock_ref(b);
cache->blocks[PA_SAMPLE_S24BE] = pa_memblock_ref(b);
+ cache->blocks[PA_SAMPLE_S24_32LE] = pa_memblock_ref(b);
+ cache->blocks[PA_SAMPLE_S24_32BE] = pa_memblock_ref(b);
cache->blocks[PA_SAMPLE_FLOAT32LE] = pa_memblock_ref(b);
cache->blocks[PA_SAMPLE_FLOAT32BE] = pa_memblock_ref(b);
break;
commit d2b5ae5525e9036c4f91b1615879a5a07aac5bf2
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:14:40 2009 +0200
sample-util: fix iteration loop when adjusting volume of s24 samples
diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
index 007a2f0..dda3883 100644
--- a/src/pulsecore/sample-util.c
+++ b/src/pulsecore/sample-util.c
@@ -831,9 +831,9 @@ void pa_volume_memchunk(
calc_linear_integer_volume(linear, volume);
- e = (uint8_t*) ptr + c->length/3;
+ e = (uint8_t*) ptr + c->length;
- for (channel = 0, d = ptr; d < e; d++) {
+ for (channel = 0, d = ptr; d < e; d += 3) {
int64_t t;
t = (int64_t)((int32_t) (PA_READ24NE(d) << 8));
@@ -854,9 +854,9 @@ void pa_volume_memchunk(
calc_linear_integer_volume(linear, volume);
- e = (uint8_t*) ptr + c->length/3;
+ e = (uint8_t*) ptr + c->length;
- for (channel = 0, d = ptr; d < e; d++) {
+ for (channel = 0, d = ptr; d < e; d += 3) {
int64_t t;
t = (int64_t)((int32_t) (PA_READ24RE(d) << 8));
commit 4bffc7849f7898fa85dd6ac8e735db86b57814b3
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:16:17 2009 +0200
alsa: initialize buffer size before number of periods to improve compat with some backends
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index a3a0450..107bec3 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -334,7 +334,6 @@ int pa_alsa_set_hw_params(
int ret = -1;
snd_pcm_uframes_t _period_size = period_size ? *period_size : 0;
unsigned int _periods = periods ? *periods : 0;
- snd_pcm_uframes_t buffer_size;
unsigned int r = ss->rate;
unsigned int c = ss->channels;
pa_sample_format_t f = ss->format;
@@ -390,39 +389,47 @@ int pa_alsa_set_hw_params(
goto finish;
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) {
- _period_size = tsched_size;
- _periods = 1;
+ snd_pcm_uframes_t buffer_size;
pa_assert_se(snd_pcm_hw_params_get_buffer_size_max(hwparams, &buffer_size) == 0);
pa_log_debug("Maximum hw buffer size is %u ms", (unsigned) buffer_size * 1000 / r);
+
+ _period_size = tsched_size;
+ _periods = 1;
}
- buffer_size = _periods * _period_size;
+ if (_period_size > 0 && _periods > 0) {
+ snd_pcm_uframes_t buffer_size;
+
+ 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));
+ }
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 */
+ /* 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 ((ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir)) < 0) {
+ 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) {
+ 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)
- goto finish;
+ pa_log_info("snd_pcm_hw_params_set_periods_near() failed: %s", pa_alsa_strerror(ret));
}
}
}
-
- if (_period_size > 0)
- if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &buffer_size)) < 0)
- goto finish;
}
if ((ret = snd_pcm_hw_params(pcm_handle, hwparams)) < 0)
commit 76caa270cecd15d046969888f55f09101df7fc27
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:17:34 2009 +0200
resampler-test: use global PA_FLOAT32_SWAP implementation
diff --git a/src/tests/resampler-test.c b/src/tests/resampler-test.c
index 6b4a64c..596070f 100644
--- a/src/tests/resampler-test.c
+++ b/src/tests/resampler-test.c
@@ -34,12 +34,6 @@
#include <liboil/liboil.h>
-static float swap_float(float a) {
- uint32_t *b = (uint32_t*) &a;
- *b = PA_UINT32_SWAP(*b);
- return a;
-}
-
static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
void *d;
unsigned i;
@@ -84,7 +78,7 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
float *u = d;
for (i = 0; i < chunk->length / pa_frame_size(ss); i++) {
- printf("%1.3g ", ss->format == PA_SAMPLE_FLOAT32NE ? *u : swap_float(*u));
+ printf("%4.3g ", ss->format == PA_SAMPLE_FLOAT32NE ? *u : PA_FLOAT32_SWAP(*u));
u++;
}
@@ -179,7 +173,7 @@ static pa_memblock* generate_block(pa_mempool *pool, const pa_sample_spec *ss) {
if (ss->format == PA_SAMPLE_FLOAT32RE)
for (i = 0; i < 10; i++)
- u[i] = swap_float(u[i]);
+ u[i] = PA_FLOAT32_SWAP(u[i]);
break;
}
commit 5caf09d4ea5ec8f40f56adf965fc4a0011b8b97c
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:18:21 2009 +0200
resampler-test: add tests for 24bit sample formats
diff --git a/src/tests/resampler-test.c b/src/tests/resampler-test.c
index 596070f..7236265 100644
--- a/src/tests/resampler-test.c
+++ b/src/tests/resampler-test.c
@@ -48,7 +48,7 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
uint8_t *u = d;
for (i = 0; i < chunk->length / pa_frame_size(ss); i++)
- printf("0x%02x ", *(u++));
+ printf(" 0x%02x ", *(u++));
break;
}
@@ -58,7 +58,7 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
uint16_t *u = d;
for (i = 0; i < chunk->length / pa_frame_size(ss); i++)
- printf("0x%04x ", *(u++));
+ printf(" 0x%04x ", *(u++));
break;
}
@@ -73,6 +73,16 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
break;
}
+ case PA_SAMPLE_S24_32NE:
+ case PA_SAMPLE_S24_32RE: {
+ uint32_t *u = d;
+
+ for (i = 0; i < chunk->length / pa_frame_size(ss); i++)
+ printf("0x%08x ", *(u++));
+
+ break;
+ }
+
case PA_SAMPLE_FLOAT32NE:
case PA_SAMPLE_FLOAT32RE: {
float *u = d;
@@ -85,6 +95,18 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
break;
}
+ case PA_SAMPLE_S24LE:
+ case PA_SAMPLE_S24BE: {
+ uint8_t *u = d;
+
+ for (i = 0; i < chunk->length / pa_frame_size(ss); i++) {
+ printf(" 0x%06x ", PA_READ24NE(u));
+ u += pa_frame_size(ss);
+ }
+
+ break;
+ }
+
default:
pa_assert_not_reached();
}
@@ -156,6 +178,23 @@ static pa_memblock* generate_block(pa_mempool *pool, const pa_sample_spec *ss) {
break;
}
+ case PA_SAMPLE_S24_32NE:
+ case PA_SAMPLE_S24_32RE: {
+ uint32_t *u = d;
+
+ u[0] = 0x000001;
+ u[1] = 0xFF0002;
+ u[2] = 0x7F0003;
+ u[3] = 0x800004;
+ u[4] = 0x9f0005;
+ u[5] = 0x3f0006;
+ u[6] = 0x107;
+ u[7] = 0xF00008;
+ u[8] = 0x2009;
+ u[9] = 0x210A;
+ break;
+ }
+
case PA_SAMPLE_FLOAT32NE:
case PA_SAMPLE_FLOAT32RE: {
float *u = d;
@@ -178,6 +217,23 @@ static pa_memblock* generate_block(pa_mempool *pool, const pa_sample_spec *ss) {
break;
}
+ case PA_SAMPLE_S24NE:
+ case PA_SAMPLE_S24RE: {
+ uint8_t *u = d;
+
+ PA_WRITE24NE(u, 0x000001);
+ PA_WRITE24NE(u+3, 0xFF0002);
+ PA_WRITE24NE(u+6, 0x7F0003);
+ PA_WRITE24NE(u+9, 0x800004);
+ PA_WRITE24NE(u+12, 0x9f0005);
+ PA_WRITE24NE(u+15, 0x3f0006);
+ PA_WRITE24NE(u+18, 0x107);
+ PA_WRITE24NE(u+21, 0xF00008);
+ PA_WRITE24NE(u+24, 0x2009);
+ PA_WRITE24NE(u+27, 0x210A);
+ break;
+ }
+
default:
pa_assert_not_reached();
}
@@ -205,7 +261,6 @@ int main(int argc, char *argv[]) {
for (a.format = 0; a.format < PA_SAMPLE_MAX; a.format ++) {
for (b.format = 0; b.format < PA_SAMPLE_MAX; b.format ++) {
-
pa_resampler *forth, *back;
pa_memchunk i, j, k;
@@ -223,14 +278,18 @@ int main(int argc, char *argv[]) {
pa_resampler_run(forth, &i, &j);
pa_resampler_run(back, &j, &k);
+ printf("before: ");
dump_block(&a, &i);
+ printf("after : ");
dump_block(&b, &j);
+ printf("reverse: ");
dump_block(&a, &k);
pa_memblock_unref(j.memblock);
pa_memblock_unref(k.memblock);
pa_volume_memchunk(&i, &a, &v);
+ printf("volume: ");
dump_block(&a, &i);
pa_memblock_unref(i.memblock);
commit e0f08219bb6b5ed9fd92623997074410051ed671
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 1 04:22:08 2009 +0200
sconv: fix a few minor conversion issues
diff --git a/src/pulsecore/sconv-s16le.c b/src/pulsecore/sconv-s16le.c
index 307ce7b..43b8cb3 100644
--- a/src/pulsecore/sconv-s16le.c
+++ b/src/pulsecore/sconv-s16le.c
@@ -370,7 +370,7 @@ void pa_sconv_s24_32le_to_s16ne(unsigned n, const uint32_t *a, int16_t *b) {
pa_assert(b);
for (; n > 0; n--) {
- *b = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8) >> 16);
+ *b = (int16_t) (((int32_t) (UINT32_FROM(*a) << 8)) >> 16);
a++;
b++;
}
@@ -416,8 +416,8 @@ void pa_sconv_s24_32le_to_float32ne(unsigned n, const uint32_t *a, float *b) {
pa_assert(b);
for (; n > 0; n--) {
- int32_t s = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8));
- *b = ((float) s) / 0x7FFFFFFF;
+ int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
+ *b = (float) s / (float) 0x7FFFFFFF;
a ++;
b ++;
}
@@ -428,8 +428,8 @@ void pa_sconv_s24_32le_to_float32re(unsigned n, const uint32_t *a, float *b) {
pa_assert(b);
for (; n > 0; n--) {
- int32_t s = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8));
- float k = ((float) s) / 0x7FFFFFFF;
+ int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
+ float k = (float) s / (float) 0x7FFFFFFF;
*b = PA_FLOAT32_SWAP(k);
a ++;
b ++;
diff --git a/src/pulsecore/sconv.c b/src/pulsecore/sconv.c
index 29a9a45..d89f428 100644
--- a/src/pulsecore/sconv.c
+++ b/src/pulsecore/sconv.c
@@ -75,7 +75,7 @@ static void u8_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) {
pa_assert(b);
for (; n > 0; n--, a++, b++)
- *b = (uint8_t) (*a / 0x100 + 0x80);
+ *b = (uint8_t) ((uint16_t) *a >> 8) + (uint8_t) 0x80U;
}
/* float32 */
commit 92a61418882a68e913d2a40ae28e815a68c456f8
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 7 22:03:04 2009 +0200
macro: add macros for initializing memory
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index 73438e6..e9888c3 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -261,6 +261,9 @@ typedef int pa_bool_t;
#define PA_DEBUG_TRAP raise(SIGTRAP)
#endif
+#define pa_memzero(x,l) (memset((x), 0, (l)))
+#define pa_zero(x) (pa_memzero(&(x), sizeof(x)))
+
/* We include this at the very last place */
#include <pulsecore/log.h>
commit 3766850c8b98b3fe8abb3b5634d4801cbdb95377
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 8 01:56:21 2009 +0200
core: introduce pa_{sink,source}_set_fixed_latency()
This allows us to forward the fixed latency directly from the sink to
the monitor source withut having to wait for pa_sink_put().
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 4d8dade..2745a14 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -473,7 +473,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
u->since_start += frames * u->frame_size;
#ifdef DEBUG_TIMING
- pa_log_debug("Wrote %lu bytes", (unsigned long) (frames * u->frame_size));
+ pa_log_debug("Wrote %lu bytes (of possible %lu bytes)", (unsigned long) (frames * u->frame_size), (unsigned long) n_bytes);
#endif
if ((size_t) frames * u->frame_size >= n_bytes)
@@ -1730,7 +1730,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_log_info("Time scheduling watermark is %0.2fms",
(double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
} else
- u->sink->fixed_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
+ pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
reserve_update(u);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index d49035c..af567c9 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -455,7 +455,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
u->read_count += frames * u->frame_size;
#ifdef DEBUG_TIMING
- pa_log_debug("Read %lu bytes", (unsigned long) (frames * u->frame_size));
+ pa_log_debug("Read %lu bytes (of possible %lu bytes)", (unsigned long) (frames * u->frame_size), (unsigned long) n_bytes);
#endif
if ((size_t) frames * u->frame_size >= n_bytes)
@@ -1582,7 +1582,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_log_info("Time scheduling watermark is %0.2fms",
(double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
} else
- u->source->fixed_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
+ pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(u->hwbuf_size, &ss));
reserve_update(u);
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index ecb5e83..c5c55a1 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1608,9 +1608,9 @@ static int add_sink(struct userdata *u) {
u->sink->parent.process_msg = sink_process_msg;
pa_sink_set_max_request(u->sink, u->block_size);
- u->sink->fixed_latency =
- (u->profile == PROFILE_A2DP ? FIXED_LATENCY_PLAYBACK_A2DP : FIXED_LATENCY_PLAYBACK_HSP) +
- pa_bytes_to_usec(u->block_size, &u->sample_spec);
+ pa_sink_set_fixed_latency(u->sink,
+ (u->profile == PROFILE_A2DP ? FIXED_LATENCY_PLAYBACK_A2DP : FIXED_LATENCY_PLAYBACK_HSP) +
+ pa_bytes_to_usec(u->block_size, &u->sample_spec));
}
if (u->profile == PROFILE_HSP) {
@@ -1659,9 +1659,9 @@ static int add_source(struct userdata *u) {
u->source->userdata = u;
u->source->parent.process_msg = source_process_msg;
- u->source->fixed_latency =
- (/* u->profile == PROFILE_A2DP ? FIXED_LATENCY_RECORD_A2DP : */ FIXED_LATENCY_RECORD_HSP) +
- pa_bytes_to_usec(u->block_size, &u->sample_spec);
+ pa_source_set_fixed_latency(u->source,
+ (/* u->profile == PROFILE_A2DP ? FIXED_LATENCY_RECORD_A2DP : */ FIXED_LATENCY_RECORD_HSP) +
+ pa_bytes_to_usec(u->block_size, &u->sample_spec));
}
if (u->profile == PROFILE_HSP) {
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index 9d3e55d..304d01c 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -293,7 +293,7 @@ int pa__init(pa_module*m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
pa_sink_set_max_request(u->sink, PIPE_BUF);
- u->sink->fixed_latency = pa_bytes_to_usec(PIPE_BUF, &u->sink->sample_spec);
+ pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(PIPE_BUF, &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 df72d79..6ed4fbf 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -277,7 +277,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);
- u->source->fixed_latency = pa_bytes_to_usec(PIPE_BUF, &u->source->sample_spec);
+ pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(PIPE_BUF, &u->source->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-sine-source.c b/src/modules/module-sine-source.c
index a5f1ce7..a6e15d8 100644
--- a/src/modules/module-sine-source.c
+++ b/src/modules/module-sine-source.c
@@ -264,8 +264,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);
- u->source->fixed_latency = u->block_usec;
-
+ pa_source_set_fixed_latency(u->source, u->block_usec);
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index 9f7863f..ab26137 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -1325,8 +1325,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);
+ pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(u->in_hwbuf_size, &u->source->sample_spec));
u->source->refresh_volume = TRUE;
- u->source->fixed_latency = pa_bytes_to_usec(u->in_hwbuf_size, &u->source->sample_spec);
if (use_mmap)
u->in_mmap_memblocks = pa_xnew0(pa_memblock*, u->in_nfrags);
@@ -1387,8 +1387,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_fixed_latency(u->sink, pa_bytes_to_usec(u->out_hwbuf_size, &u->sink->sample_spec));
u->sink->refresh_volume = TRUE;
- u->sink->fixed_latency = pa_bytes_to_usec(u->out_hwbuf_size, &u->sink->sample_spec);
pa_sink_set_max_request(u->sink, u->out_hwbuf_size);
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 30fa557..06c8b52 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -2050,6 +2050,22 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
pa_source_set_latency_range_within_thread(s->monitor_source, min_latency, max_latency);
}
+/* Called from main thread, before the sink is put */
+void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
+ pa_sink_assert_ref(s);
+
+ pa_assert(pa_sink_get_state(s) == PA_SINK_INIT);
+
+ if (latency < ABSOLUTE_MIN_LATENCY)
+ latency = ABSOLUTE_MIN_LATENCY;
+
+ if (latency > ABSOLUTE_MAX_LATENCY)
+ latency = ABSOLUTE_MAX_LATENCY;
+
+ s->fixed_latency = latency;
+ pa_source_set_fixed_latency(s->monitor_source, latency);
+}
+
/* Called from main context */
size_t pa_sink_get_max_rewind(pa_sink *s) {
size_t r;
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 352282b..e33b3cf 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -229,6 +229,7 @@ void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p);
void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind);
void pa_sink_set_max_request(pa_sink *s, size_t max_request);
void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency);
void pa_sink_detach(pa_sink *s);
void pa_sink_attach(pa_sink *s);
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 2190250..a772dc6 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -1276,6 +1276,21 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten
pa_source_invalidate_requested_latency(s);
}
+/* 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(pa_source_get_state(s) == PA_SOURCE_INIT);
+
+ if (latency < ABSOLUTE_MIN_LATENCY)
+ latency = ABSOLUTE_MIN_LATENCY;
+
+ if (latency > ABSOLUTE_MAX_LATENCY)
+ latency = ABSOLUTE_MAX_LATENCY;
+
+ s->fixed_latency = latency;
+}
+
/* Called from main thread */
size_t pa_source_get_max_rewind(pa_source *s) {
size_t r;
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index b502c22..2978f57 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -210,6 +210,7 @@ void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p);
void pa_source_set_max_rewind(pa_source *s, size_t max_rewind);
void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency);
void pa_source_detach(pa_source *s);
void pa_source_attach(pa_source *s);
commit 99a6a4742f01fc62e5d6b56ec18ee36b7905456a
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 8 02:02:06 2009 +0200
core: make sure we fix up flags/monitor flags already in pa_sink_new() instead of pa_sink_put()
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 0229918..0d05b00 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -819,7 +819,7 @@ pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa
usec = i->sink->fixed_latency;
if (usec != (pa_usec_t) -1)
- usec = PA_CLAMP(usec, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
+ 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);
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 06c8b52..3eb759c 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -184,6 +184,12 @@ pa_sink* pa_sink_new(
return NULL;
}
+ if (!(flags & PA_SINK_HW_VOLUME_CTRL))
+ flags |= PA_SINK_DECIBEL_VOLUME;
+
+ if ((flags & PA_SINK_DECIBEL_VOLUME) && core->flat_volumes)
+ flags |= PA_SINK_FLAT_VOLUME;
+
s->parent.parent.free = sink_free;
s->parent.process_msg = pa_sink_process_msg;
@@ -263,7 +269,9 @@ pa_sink* pa_sink_new(
pa_proplist_setf(source_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Monitor of %s", dn ? dn : s->name);
pa_proplist_sets(source_data.proplist, PA_PROP_DEVICE_CLASS, "monitor");
- s->monitor_source = pa_source_new(core, &source_data, 0);
+ s->monitor_source = pa_source_new(core, &source_data,
+ ((flags & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) |
+ ((flags & PA_SINK_DYNAMIC_LATENCY) ? PA_SOURCE_DYNAMIC_LATENCY : 0));
pa_source_new_data_done(&source_data);
@@ -349,31 +357,18 @@ void pa_sink_put(pa_sink* s) {
pa_assert(s->rtpoll);
pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency);
- if (!(s->flags & PA_SINK_HW_VOLUME_CTRL)) {
- s->flags |= PA_SINK_DECIBEL_VOLUME;
- s->base_volume = PA_VOLUME_NORM;
- }
-
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
- if (s->flags & PA_SINK_DECIBEL_VOLUME)
- s->n_volume_steps = PA_VOLUME_NORM+1;
-
- if (s->core->flat_volumes)
- if (s->flags & PA_SINK_DECIBEL_VOLUME)
- s->flags |= PA_SINK_FLAT_VOLUME;
-
- if (s->flags & PA_SINK_LATENCY)
- s->monitor_source->flags |= PA_SOURCE_LATENCY;
-
- if (s->flags & PA_SINK_DYNAMIC_LATENCY) {
- s->monitor_source->flags |= PA_SOURCE_DYNAMIC_LATENCY;
- s->fixed_latency = 0;
- } else if (s->fixed_latency <= 0)
- s->fixed_latency = DEFAULT_FIXED_LATENCY;
+ 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_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_LATENCY));
+ pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_DYNAMIC_LATENCY));
- s->monitor_source->fixed_latency = s->fixed_latency;
+ pa_assert(s->monitor_source->fixed_latency == s->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);
pa_assert_se(sink_set_state(s, PA_SINK_IDLE) == 0);
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index a772dc6..92387f6 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -174,6 +174,9 @@ pa_source* pa_source_new(
return NULL;
}
+ if (!(flags & PA_SOURCE_HW_VOLUME_CTRL))
+ flags |= PA_SOURCE_DECIBEL_VOLUME;
+
s->parent.parent.free = source_free;
s->parent.process_msg = pa_source_process_msg;
@@ -308,20 +311,12 @@ void pa_source_put(pa_source *s) {
pa_assert(s->rtpoll);
pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency);
- if (!(s->flags & PA_SOURCE_HW_VOLUME_CTRL)) {
- s->flags |= PA_SOURCE_DECIBEL_VOLUME;
-
- s->thread_info.soft_volume = s->soft_volume;
- s->thread_info.soft_muted = s->muted;
- }
-
- if (s->flags & PA_SOURCE_DECIBEL_VOLUME)
- s->n_volume_steps = PA_VOLUME_NORM+1;
+ s->thread_info.soft_volume = s->soft_volume;
+ s->thread_info.soft_muted = s->muted;
- if (s->flags & PA_SOURCE_DYNAMIC_LATENCY)
- s->fixed_latency = 0;
- else if (s->fixed_latency <= 0)
- s->fixed_latency = DEFAULT_FIXED_LATENCY;
+ 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_se(source_set_state(s, PA_SOURCE_IDLE) == 0);
commit 8d9c26e3b6d29d3922a7cc740f273e34ea97498e
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 8 02:02:36 2009 +0200
core: cache requested latency only when we are running, not while we are still constructing
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 3eb759c..0f594da 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1858,8 +1858,11 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) {
if (result != (pa_usec_t) -1)
result = PA_CLAMP(result, s->thread_info.min_latency, s->thread_info.max_latency);
- s->thread_info.requested_latency = result;
- s->thread_info.requested_latency_valid = TRUE;
+ if (PA_SINK_IS_LINKED(s->thread_info.state)) {
+ /* Only cache if properly initialized */
+ s->thread_info.requested_latency = result;
+ s->thread_info.requested_latency_valid = TRUE;
+ }
return result;
}
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 92387f6..47bc5fb 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -1113,8 +1113,11 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
if (result != (pa_usec_t) -1)
result = PA_CLAMP(result, s->thread_info.min_latency, s->thread_info.max_latency);
- s->thread_info.requested_latency = result;
- s->thread_info.requested_latency_valid = TRUE;
+ if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
+ /* Only cache this if we are fully set up */
+ s->thread_info.requested_latency = result;
+ s->thread_info.requested_latency_valid = TRUE;
+ }
return result;
}
commit 7f767e5fe660ced7e1cb0207ef0477818152d833
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 8 02:16:10 2009 +0200
core: liberalize 99a6a4 a bit
While flags should generally be initialized by passing them to
pa_{sink|source}_new() we make an exception for the volume related flags
which may be initilized afterwards, but before _put().
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 0f594da..67bdbb6 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -184,12 +184,6 @@ pa_sink* pa_sink_new(
return NULL;
}
- if (!(flags & PA_SINK_HW_VOLUME_CTRL))
- flags |= PA_SINK_DECIBEL_VOLUME;
-
- if ((flags & PA_SINK_DECIBEL_VOLUME) && core->flat_volumes)
- flags |= PA_SINK_FLAT_VOLUME;
-
s->parent.parent.free = sink_free;
s->parent.process_msg = pa_sink_process_msg;
@@ -357,6 +351,16 @@ void pa_sink_put(pa_sink* s) {
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
+ * special exception we allow volume related flags to be set
+ * between _new() and _put(). */
+
+ if (!(s->flags & PA_SINK_HW_VOLUME_CTRL))
+ s->flags |= PA_SINK_DECIBEL_VOLUME;
+
+ if ((s->flags & PA_SINK_DECIBEL_VOLUME) && s->core->flat_volumes)
+ s->flags |= PA_SINK_FLAT_VOLUME;
+
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 47bc5fb..8aeb560 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -174,9 +174,6 @@ pa_source* pa_source_new(
return NULL;
}
- if (!(flags & PA_SOURCE_HW_VOLUME_CTRL))
- flags |= PA_SOURCE_DECIBEL_VOLUME;
-
s->parent.parent.free = source_free;
s->parent.process_msg = pa_source_process_msg;
@@ -311,6 +308,13 @@ void pa_source_put(pa_source *s) {
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
+ * a special exception we allow volume related flags to be set
+ * between _new() and _put(). */
+
+ if (!(s->flags & PA_SOURCE_HW_VOLUME_CTRL))
+ s->flags |= PA_SOURCE_DECIBEL_VOLUME;
+
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
commit 44e566ade8a62163007780f7f81b514705e3233b
Author: Jyri Sarha <jyri.sarha at nokia.com>
Date: Fri May 8 13:25:21 2009 +0300
bluetooth-device: Add safe guard against BT streaming irregularities.
Some bad quality BT-headsets block bluez socket sometimes for hundreds
of milliseconds, especially when changing mode. When the module tries
catch up the lost time it may SBC encode up to half a second of audio
without yielding. On slow machine this may cause maximum RT time slice
to be exceeded. Cleaned out the minor fix that slipped into first version
of the patch.
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index c5c55a1..812b0ba 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -174,6 +174,8 @@ struct userdata {
#define FIXED_LATENCY_PLAYBACK_HSP (125*PA_USEC_PER_MSEC)
#define FIXED_LATENCY_RECORD_HSP (25*PA_USEC_PER_MSEC)
+#define MAX_PLAYBACK_CATCH_UP_USEC (100*PA_USEC_PER_MSEC)
+
#ifdef NOKIA
#define USE_SCO_OVER_PCM(u) (u->profile == PROFILE_HSP && (u->hsp.sco_sink && u->hsp.sco_source))
#endif
@@ -1296,15 +1298,37 @@ static void thread_func(void *userdata) {
if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && do_write <= 0 && writable) {
pa_usec_t time_passed;
- uint64_t should_have_written;
+ pa_usec_t audio_sent;
/* Hmm, there is no input stream we could synchronize
* to. So let's do things by time */
time_passed = pa_rtclock_usec() - u->started_at;
- should_have_written = pa_usec_to_bytes(time_passed, &u->sample_spec);
+ audio_sent = pa_bytes_to_usec(u->write_index, &u->sample_spec);
+
+ if (audio_sent <= time_passed) {
+ pa_usec_t audio_to_send = time_passed - audio_sent;
+
+ /* Never try to catch up for more than 100ms */
+ 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);
- do_write = u->write_index <= should_have_written;
+ 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;
+ }
}
if (writable && do_write > 0) {
commit a714861cc1fa2e06c5f5509880fcbfbc334c2812
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 8 22:45:24 2009 +0200
channelmap: add pa_channel_map_has_position()
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index ce7dadc..fe14df2 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -839,3 +839,16 @@ const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) {
return NULL;
}
+
+int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) {
+ unsigned c;
+
+ pa_return_val_if_fail(pa_channel_map_valid(map), 0);
+ pa_return_val_if_fail(p < PA_CHANNEL_POSITION_MAX, 0);
+
+ for (c = 0; c < map->channels; c++)
+ if (map->map[c] == p)
+ return 1;
+
+ return 0;
+}
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index d4db45b..a2925c1 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -325,6 +325,10 @@ mapping. I.e. "Stereo", "Surround 7.1" and so on. If the channel
mapping is unknown NULL will be returned. \since 0.9.15 */
const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) PA_GCC_PURE;
+/** Returns TRUE if the specified channel position is available at
+ * least once in the channel map. \since 0.9.16 */
+int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) PA_GCC_PURE;
+
PA_C_DECL_END
#endif
commit d7b8947a5e428857ff96f5deead3dea180f69130
Author: Jyri Sarha <jyri.sarha at nokia.com>
Date: Thu May 7 19:55:56 2009 +0300
core: optimize pa_sink_render_full()
I have used this fix for quite a while and I am pretty confident about
it. However, the performance gain was not what I expected.
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 67bdbb6..a7e9529 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -932,22 +932,90 @@ 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_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);
- /*** This needs optimization ***/
+ 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)) {
+ pa_memchunk_make_writable(result, length);
+ if (s->thread_info.soft_muted || pa_cvolume_is_muted(&volume))
+ pa_silence_memchunk(result, &s->sample_spec);
+ else
+ 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->index = 0;
- result->length = length;
- result->memblock = pa_memblock_new(s->core->mempool, length);
+ 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_sink_render_into_full(s, result);
+ pa_memblock_release(result->memblock);
+ }
+
+ inputs_drop(s, info, n, result);
+
+ if (result->length < length) {
+ pa_memchunk chunk;
+ size_t l, d;
+ pa_memchunk_make_writable(result, length);
+ result->length = length;
+
+ l = length - result->length;
+ d = result->index + result->length;
+ while (l > 0) {
+ chunk = *result;
+ chunk.index += d;
+ chunk.length -= d - result->index;
+
+ pa_sink_render_into(s, &chunk);
+
+ d += chunk.length;
+ l -= chunk.length;
+ }
+ result->length = length;
+ }
+
+ pa_sink_unref(s);
}
/* Called from main thread */
commit 35faedb6e836a4dbc32403dc9688c3bbbd377cb3
Author: Jyri Sarha <jyri.sarha at nokia.com>
Date: Thu May 7 19:55:57 2009 +0300
core: Take samples from silence cache rather than write zeros
If the only stream to render from is muted take samples from the
silence cache. This should shrink memory/cache bandwidth. Again the
gain was not what I hoped for.
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index a7e9529..5ac5086 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -787,11 +787,17 @@ void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result) {
pa_sw_cvolume_multiply(&volume, &s->thread_info.soft_volume, &info[0].volume);
if (s->thread_info.soft_muted || !pa_cvolume_is_norm(&volume)) {
- pa_memchunk_make_writable(result, 0);
- if (s->thread_info.soft_muted || pa_cvolume_is_muted(&volume))
- pa_silence_memchunk(result, &s->sample_spec);
- else
+ 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, 0);
pa_volume_memchunk(result, &s->sample_spec, &volume);
+ }
}
} else {
void *ptr;
@@ -968,13 +974,19 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
pa_sw_cvolume_multiply(&volume, &s->thread_info.soft_volume, &info[0].volume);
- if (s->thread_info.soft_muted || !pa_cvolume_is_norm(&volume)) {
- pa_memchunk_make_writable(result, length);
- if (s->thread_info.soft_muted || pa_cvolume_is_muted(&volume))
- pa_silence_memchunk(result, &s->sample_spec);
- else
+ 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;
commit eb205646aeffd60cecf3e35b0bd99a98a4e11dc5
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 11 19:56:13 2009 +0200
mime: drop additional whitespace from mime types
diff --git a/src/pulsecore/mime-type.c b/src/pulsecore/mime-type.c
index 55b8ffd..b9fe944 100644
--- a/src/pulsecore/mime-type.c
+++ b/src/pulsecore/mime-type.c
@@ -154,7 +154,10 @@ char *pa_sample_spec_to_mime_type(const pa_sample_spec *ss, const pa_channel_map
case PA_SAMPLE_S16BE:
case PA_SAMPLE_S24BE:
case PA_SAMPLE_U8:
- return pa_sprintf_malloc("audio/%s; rate=%u; channels=%u",
+ /* Stupid UPnP implementations (PS3...) choke on spaces in
+ * the mime type, that's why we write only ';' here,
+ * instead of '; '. */
+ return pa_sprintf_malloc("audio/%s;rate=%u;channels=%u",
ss->format == PA_SAMPLE_S16BE ? "L16" :
(ss->format == PA_SAMPLE_S24BE ? "L24" : "L8"),
ss->rate, ss->channels);
commit 6c4c61de2c84223fc2c13e11135caa388235221f
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 11 19:57:00 2009 +0200
upnp: fix URL of MediaServer spec
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 8ea134b..cde411f 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -59,7 +59,7 @@ PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_USAGE(
"display_name=<UPnP Media Server name>");
-/* This implements http://live.gnome.org/action/edit/Rygel/MediaProviderSpec */
+/* This implements http://live.gnome.org/action/edit/Rygel/MediaServerSpec */
#define SERVICE_NAME "org.Rygel.MediaServer1.PulseAudio"
@@ -71,7 +71,7 @@ PA_MODULE_USAGE(
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
"<node>" \
" <!-- If you are looking for documentation make sure to check out" \
- " http://live.gnome.org/Rygel/MediaProviderSpec -->" \
+ " http://live.gnome.org/Rygel/MediaServerSpec -->" \
" <interface name=\"org.Rygel.MediaContainer1\">" \
" <method name=\"GetContainers\">" \
" <arg name=\"children\" type=\"ao\" direction=\"out\"/>" \
commit 98a645416695a2f235b5ed92f0f9085e01cdaf60
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 11 19:59:14 2009 +0200
upnp: update to newest spec, generate 'Updated' signal
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index cde411f..1565a2e 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -79,16 +79,7 @@ PA_MODULE_USAGE(
" <method name=\"GetItems\">" \
" <arg name=\"children\" type=\"ao\" direction=\"out\"/>" \
" </method>" \
- " <signal name=\"ItemAdded\">" \
- " <arg name=\"path\" type=\"o\"/>" \
- " </signal>" \
- " <signal name=\"ItemRemoved\">" \
- " <arg name=\"path\" type=\"o\"/>" \
- " </signal>" \
- " <signal name=\"ContainerAdded\">" \
- " <arg name=\"path\" type=\"o\"/>" \
- " </signal>" \
- " <signal name=\"ContainerRemoved\">" \
+ " <signal name=\"Updated\">" \
" <arg name=\"path\" type=\"o\"/>" \
" </signal>" \
" </interface>" \
@@ -164,9 +155,8 @@ struct userdata {
pa_http_protocol *http;
};
-static void send_signal(struct userdata *u, pa_source *s, const char *name) {
+static void send_signal(struct userdata *u, pa_source *s) {
DBusMessage *m;
- char *child;
const char *parent;
pa_assert(u);
@@ -175,28 +165,22 @@ static void send_signal(struct userdata *u, pa_source *s, const char *name) {
if (u->core->state == PA_CORE_SHUTDOWN)
return;
- if (s->monitor_of) {
+ if (s->monitor_of)
parent = OBJECT_SINKS;
- child = pa_sprintf_malloc(OBJECT_SINKS "/%s", s->monitor_of->name);
- } else {
+ else
parent = OBJECT_SOURCES;
- child = pa_sprintf_malloc(OBJECT_SOURCES "/%s", s->name);
- }
- pa_assert_se(m = dbus_message_new_signal(parent, "org.Rygel.MediaContainer1", name));
- pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_OBJECT_PATH, &child, DBUS_TYPE_INVALID));
+ pa_assert_se(m = dbus_message_new_signal(parent, "org.Rygel.MediaContainer1", "Updated"));
pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->bus), m, NULL));
- pa_xfree(child);
-
dbus_message_unref(m);
}
-static pa_hook_result_t source_new_cb(pa_core *c, pa_source *s, struct userdata *u) {
+static pa_hook_result_t source_new_or_unlink_cb(pa_core *c, pa_source *s, struct userdata *u) {
pa_assert(c);
pa_source_assert_ref(s);
- send_signal(u, s, "ItemAdded");
+ send_signal(u, s);
return PA_HOOK_OK;
}
@@ -539,8 +523,8 @@ int pa__init(pa_module *m) {
pa_xfree(h);
}
- u->source_new_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_PUT], PA_HOOK_LATE, (pa_hook_cb_t) source_new_cb, u);
- u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) source_unlink_cb, u);
+ u->source_new_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_PUT], PA_HOOK_LATE, (pa_hook_cb_t) source_new_or_unlink_cb, u);
+ u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) source_new_or_unlink_cb, u);
if (!(u->bus = pa_dbus_bus_get(m->core, DBUS_BUS_SESSION, &error))) {
pa_log("Failed to get session bus connection: %s", error.message);
commit dc5dce50ea9290817d5c74ba6f0a4ec8d985fa31
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 11 20:00:02 2009 +0200
upnp: properly issue method not found exception when we don't now it
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 1565a2e..63ac8bd 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -415,7 +415,8 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
DBUS_TYPE_INVALID));
pa_xfree(xml);
- }
+ } else
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
} else {
pa_sink *sink = NULL;
commit 35b7ce56edcc0a0a0c228959c490d4654fab213e
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 11 20:00:43 2009 +0200
upnp: use new rygel @HOSTNAME@ wildcard for server name
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 63ac8bd..b0c06ed 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -516,13 +516,8 @@ int pa__init(pa_module *m) {
if ((t = pa_modargs_get_value(ma, "display_name", NULL)))
u->display_name = pa_utf8_filter(t);
- else {
- char *h;
-
- h = pa_get_host_name_malloc();
- u->display_name = pa_sprintf_malloc(_("Audio on %s"), h);
- pa_xfree(h);
- }
+ else
+ u->display_name = pa_xstrdup(_("Audio on @HOSTNAME@"));
u->source_new_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_PUT], PA_HOOK_LATE, (pa_hook_cb_t) source_new_or_unlink_cb, u);
u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE, (pa_hook_cb_t) source_new_or_unlink_cb, u);
commit 37c36202c6f98faabe5fdbc3efe3174997b2466e
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 11 20:01:05 2009 +0200
upnp: rework property handling
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index b0c06ed..f004f46 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -84,6 +84,7 @@ PA_MODULE_USAGE(
" </signal>" \
" </interface>" \
" <interface name=\"org.Rygel.MediaObject1\">" \
+ " <property name=\"icon-name\" type=\"s\" access=\"read\"/>" \
" <property name=\"display-name\" type=\"s\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.freedesktop.DBus.Properties\">" \
@@ -92,6 +93,10 @@ PA_MODULE_USAGE(
" <arg name=\"property\" direction=\"in\" type=\"s\"/>" \
" <arg name=\"value\" direction=\"out\" type=\"v\"/>" \
" </method>" \
+ " <method name=\"GetAll\">" \
+ " <arg name=\"interface\" direction=\"in\" type=\"s\"/>" \
+ " <arg name=\"properties\" direction=\"out\" type=\"a{sv}\"/>" \
+ " </method>" \
" </interface>" \
" <interface name=\"org.freedesktop.DBus.Introspectable\">" \
" <method name=\"Introspect\">" \
@@ -127,6 +132,10 @@ PA_MODULE_USAGE(
" <arg name=\"property\" direction=\"in\" type=\"s\"/>" \
" <arg name=\"value\" direction=\"out\" type=\"v\"/>" \
" </method>" \
+ " <method name=\"GetAll\">" \
+ " <arg name=\"interface\" direction=\"in\" type=\"s\"/>" \
+ " <arg name=\"properties\" direction=\"out\" type=\"a{sv}\"/>" \
+ " </method>" \
" </interface>" \
" <interface name=\"org.freedesktop.DBus.Introspectable\">" \
" <method name=\"Introspect\">" \
@@ -185,45 +194,69 @@ static pa_hook_result_t source_new_or_unlink_cb(pa_core *c, pa_source *s, struct
return PA_HOOK_OK;
}
+static pa_bool_t message_is_property_get(DBusMessage *m, const char *interface, const char *property) {
+ const char *i, *p;
+ DBusError error;
-static pa_hook_result_t source_unlink_cb(pa_core *c, pa_source *s, struct userdata *u) {
- pa_assert(c);
- pa_source_assert_ref(s);
+ dbus_error_init(&error);
- send_signal(u, s, "ItemRemoved");
+ pa_assert(m);
- return PA_HOOK_OK;
+ if (!dbus_message_is_method_call(m, "org.freedesktop.DBus.Properties", "Get"))
+ return FALSE;
+
+ if (!dbus_message_get_args(m, &error, DBUS_TYPE_STRING, &i, DBUS_TYPE_STRING, &p, DBUS_TYPE_INVALID) || dbus_error_is_set(&error)) {
+ dbus_error_free(&error);
+ return FALSE;
+ }
+
+ return pa_streq(i, interface) && pa_streq(p, property);
}
-static pa_bool_t message_is_property_get(DBusMessage *m, const char *interface, const char *property) {
- char *i, *p;
+static pa_bool_t message_is_property_get_all(DBusMessage *m, const char *interface) {
+ const char *i;
DBusError error;
dbus_error_init(&error);
pa_assert(m);
- if (!dbus_message_is_method_call(m, "org.freedesktop.DBus.Properties", "Get"))
+ if (!dbus_message_is_method_call(m, "org.freedesktop.DBus.Properties", "GetAll"))
return FALSE;
- if (!dbus_message_get_args(m, &error, DBUS_TYPE_STRING, &i, DBUS_TYPE_STRING, &p, DBUS_TYPE_INVALID) || dbus_error_is_set(&error)) {
+ if (!dbus_message_get_args(m, &error, DBUS_TYPE_STRING, &i, DBUS_TYPE_INVALID) || dbus_error_is_set(&error)) {
dbus_error_free(&error);
return FALSE;
}
- return pa_streq(i, interface) && pa_streq(p, property);
+ return pa_streq(i, interface);
}
-static void append_variant_string(DBusMessage *m, const char *s) {
- DBusMessageIter iter, sub;
+static void append_variant_string(DBusMessage *m, DBusMessageIter *iter, const char *s) {
+ DBusMessageIter _iter, sub;
pa_assert(m);
pa_assert(s);
- dbus_message_iter_init_append(m, &iter);
- pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, "s", &sub));
+ if (!iter) {
+ dbus_message_iter_init_append(m, &_iter);
+ iter = &_iter;
+ }
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, "s", &sub));
pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s));
- pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+ pa_assert_se(dbus_message_iter_close_container(iter, &sub));
+}
+
+static void append_property_dict_entry(DBusMessage *m, DBusMessageIter *iter, const char *name, const char *value) {
+ DBusMessageIter sub;
+
+ pa_assert(iter);
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &sub));
+ pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &name));
+ append_variant_string(m, &sub, value);
+ pa_assert_se(dbus_message_iter_close_container(iter, &sub));
}
static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
@@ -254,7 +287,23 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
} else if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, u->display_name);
+ append_variant_string(r, NULL, u->display_name);
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "icon-name")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_string(r, NULL, "audio-card");
+
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ DBusMessageIter iter, sub;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ dbus_message_iter_init_append(r, &iter);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry(r, &sub, "display-name", u->display_name);
+ append_property_dict_entry(r, &sub, "icon-name", "audio-card");
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
const char *xml = ROOT_INTROSPECT_XML;
@@ -376,13 +425,27 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
} else if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
- if (pa_streq(path, OBJECT_SINKS)) {
- pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, _("Output Devices"));
- } else {
- pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, _("Input Devices"));
- }
+ pa_assert_se(r = dbus_message_new_method_return(m));
+
+ append_variant_string(r,
+ NULL,
+ pa_streq(path, OBJECT_SINKS) ?
+ _("Output Devices") :
+ _("Input Devices"));
+
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ DBusMessageIter iter, sub;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+
+ dbus_message_iter_init_append(r, &iter);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry(m, &sub, "display-name",
+ pa_streq(path, OBJECT_SINKS) ?
+ _("Output Devices") :
+ _("Input Devices"));
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
pa_strbuf *sb;
@@ -434,11 +497,11 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ append_variant_string(r, NULL, pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
} else if (message_is_property_get(m, "org.Rygel.MediaItem1", "type")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, "audio");
+ append_variant_string(r, NULL, "audio");
} else if (message_is_property_get(m, "org.Rygel.MediaItem1", "mime-type")) {
char *t;
@@ -449,22 +512,71 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
t = pa_sample_spec_to_mime_type_mimefy(&source->sample_spec, &source->channel_map);
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, t);
+ append_variant_string(r, NULL, t);
+ pa_xfree(t);
} else if (message_is_property_get(m, "org.Rygel.MediaItem1", "urls")) {
- char * array[1];
- char ** parray = array;
+ DBusMessageIter iter, sub, array;
+ char *url;
pa_assert_se(r = dbus_message_new_method_return(m));
- array[0] = compute_url(u, sink ? sink->monitor_source->name : source->name);
+ dbus_message_iter_init_append(r, &iter);
- pa_assert_se(dbus_message_append_args(
- r,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &parray, 1,
- DBUS_TYPE_INVALID));
+ url = compute_url(u, sink ? sink->monitor_source->name : source->name);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, "as", &sub));
+ pa_assert_se(dbus_message_iter_open_container(&sub, DBUS_TYPE_ARRAY, "s", &array));
+ pa_assert_se(dbus_message_iter_append_basic(&array, DBUS_TYPE_STRING, &url));
+ pa_assert_se(dbus_message_iter_close_container(&sub, &array));
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+
+ pa_xfree(url);
+
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ DBusMessageIter iter, sub;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ dbus_message_iter_init_append(r, &iter);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry(r, &sub, "display-name", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaItem1")) {
+ DBusMessageIter iter, sub, dict, variant, array;
+ char *url, *t;
+ const char *un = "urls";
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ dbus_message_iter_init_append(r, &iter);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry(r, &sub, "type", "audio");
+
+ if (sink)
+ t = pa_sample_spec_to_mime_type_mimefy(&sink->sample_spec, &sink->channel_map);
+ else
+ t = pa_sample_spec_to_mime_type_mimefy(&source->sample_spec, &source->channel_map);
+
+ append_property_dict_entry(r, &sub, "mime-type", t);
+ pa_xfree(t);
+
+ pa_assert_se(dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, NULL, &dict));
+ pa_assert_se(dbus_message_iter_append_basic(&dict, DBUS_TYPE_STRING, &un));
+
+ url = compute_url(u, sink ? sink->monitor_source->name : source->name);
+
+ pa_assert_se(dbus_message_iter_open_container(&dict, DBUS_TYPE_VARIANT, "as", &variant));
+ pa_assert_se(dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, "s", &array));
+ pa_assert_se(dbus_message_iter_append_basic(&array, DBUS_TYPE_STRING, &url));
+ pa_assert_se(dbus_message_iter_close_container(&variant, &array));
+ pa_assert_se(dbus_message_iter_close_container(&dict, &variant));
+ pa_assert_se(dbus_message_iter_close_container(&sub, &dict));
+
+ pa_xfree(url);
- pa_xfree(array[0]);
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
const char *xml =
commit a7a7358fb32e0e2b7c21dfa76ff993253994d488
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 11 21:18:32 2009 +0200
git: activate default commit hook
diff --git a/bootstrap.sh b/bootstrap.sh
index cb74121..c7737a6 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -40,6 +40,12 @@ run_versioned() {
set -ex
+if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
+ echo "Activating pre-commit hook."
+ cp -av .git/hooks/pre-commit.sample .git/hooks/pre-commit
+ chmod -c +x .git/hooks/pre-commit
+fi
+
# We check for this here, because if pkg-config is not found in the
# system, it's likely that the pkg.m4 macro file is also not present,
# which will make PKG_PROG_PKG_CONFIG be undefined and the generated
commit 4c3aef367ba344eccdab5f7f25ec656816c78403
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Tue May 12 01:48:05 2009 +0300
suspend-on-idle: add per-device timeout property
diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
index 7e17f8f..cc69d74 100644
--- a/src/modules/module-suspend-on-idle.c
+++ b/src/modules/module-suspend-on-idle.c
@@ -27,6 +27,7 @@
#include <pulse/timeval.h>
#include <pulsecore/core.h>
+#include <pulsecore/core-util.h>
#include <pulsecore/sink-input.h>
#include <pulsecore/source-output.h>
#include <pulsecore/modargs.h>
@@ -98,17 +99,26 @@ static void timeout_cb(pa_mainloop_api*a, pa_time_event* e, const struct timeval
static void restart(struct device_info *d) {
struct timeval tv;
+ const char *s;
+ uint32_t timeout;
pa_assert(d);
+ pa_assert(d->sink || d->source);
pa_gettimeofday(&tv);
d->last_use = tv;
- pa_timeval_add(&tv, d->userdata->timeout*1000000);
+
+ s = pa_proplist_gets(d->sink ? d->sink->proplist : d->source->proplist, "module-suspend-on-idle.timeout");
+ if (!s || pa_atou(s, &timeout) < 0)
+ timeout = d->userdata->timeout;
+
+ pa_timeval_add(&tv, timeout * PA_USEC_PER_SEC);
+
d->userdata->core->mainloop->time_restart(d->time_event, &tv);
if (d->sink)
- pa_log_debug("Sink %s becomes idle.", d->sink->name);
+ pa_log_debug("Sink %s becomes idle, timeout in %u seconds.", d->sink->name, timeout);
if (d->source)
- pa_log_debug("Source %s becomes idle.", d->source->name);
+ pa_log_debug("Source %s becomes idle, timeout in %u seconds.", d->source->name, timeout);
}
static void resume(struct device_info *d) {
commit 86caf4520fe3ffb899110711ff0d8a8b8122368e
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Tue May 12 01:39:55 2009 +0300
context: don't fail if session bus is not there
Also invert the order of bus tracking since we expect session_bus to
be present when we check for it. Although that should not change
anything in practise.
diff --git a/src/pulse/context.c b/src/pulse/context.c
index bfff0e1..3b7bf08 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -811,10 +811,10 @@ static int try_next_connection(pa_context *c) {
#ifdef HAVE_DBUS
if (c->no_fail && !c->server_specified) {
- if (!c->system_bus)
- track_pulseaudio_on_dbus(c, DBUS_BUS_SYSTEM, &c->system_bus);
if (!c->session_bus)
track_pulseaudio_on_dbus(c, DBUS_BUS_SESSION, &c->session_bus);
+ if (!c->system_bus)
+ track_pulseaudio_on_dbus(c, DBUS_BUS_SYSTEM, &c->system_bus);
} else
#endif
pa_context_fail(c, PA_ERR_CONNECTIONREFUSED);
@@ -892,7 +892,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
/* FIXME: We probably should check if this is actually the NameOwnerChanged we were looking for */
- is_session = bus == pa_dbus_wrap_connection_get(c->session_bus);
+ is_session = c->session_bus && bus == pa_dbus_wrap_connection_get(c->session_bus);
pa_log_debug("Rock!! PulseAudio is back on %s bus", is_session ? "session" : "system");
if (is_session)
commit 21ab720dd1d7373264e40d160c7ac9bcfe614ae7
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue May 12 17:08:34 2009 +0200
http: fix segfault on connection termination
diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c
index b5d7530..5220cc9 100644
--- a/src/pulsecore/protocol-http.c
+++ b/src/pulsecore/protocol-http.c
@@ -111,6 +111,7 @@ static void connection_unlink(struct connection *c) {
if (c->source_output) {
pa_source_output_unlink(c->source_output);
+ c->source_output->userdata = NULL;
pa_source_output_unref(c->source_output);
}
@@ -190,7 +191,9 @@ static int source_output_process_msg(pa_msgobject *m, int code, void *userdata,
struct connection *c;
pa_source_output_assert_ref(o);
- pa_assert_se(c = o->userdata);
+
+ if (!(c = o->userdata))
+ return -1;
switch (code) {
commit dfd6b61cd1805c9695964003f5f52a8f98920099
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue May 12 22:55:50 2009 +0200
alsa: include mixer name in sink/source properties
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 2745a14..784a8dd 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1508,6 +1508,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
size_t frame_size;
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
pa_sink_new_data data;
+ char *control_device = NULL;
pa_assert(m);
pa_assert(ma);
@@ -1664,7 +1665,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
/* ALSA might tweak the sample spec, so recalculate the frame size */
frame_size = pa_frame_size(&ss);
- pa_alsa_find_mixer_and_elem(u->pcm_handle, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
+ pa_alsa_find_mixer_and_elem(u->pcm_handle, &control_device, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
pa_sink_new_data_init(&data);
data.driver = driver;
@@ -1687,6 +1688,11 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_alsa_init_description(data.proplist);
+ if (control_device) {
+ pa_alsa_init_proplist_ctl(data.proplist, control_device);
+ pa_xfree(control_device);
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY|(u->use_tsched ? PA_SINK_DYNAMIC_LATENCY : 0));
pa_sink_new_data_done(&data);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index af567c9..780da83 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1366,6 +1366,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
size_t frame_size;
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
pa_source_new_data data;
+ char *control_device = NULL;
pa_assert(m);
pa_assert(ma);
@@ -1519,7 +1520,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
/* ALSA might tweak the sample spec, so recalculate the frame size */
frame_size = pa_frame_size(&ss);
- pa_alsa_find_mixer_and_elem(u->pcm_handle, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
+ pa_alsa_find_mixer_and_elem(u->pcm_handle, &control_device, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
pa_source_new_data_init(&data);
data.driver = driver;
@@ -1542,6 +1543,11 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_alsa_init_description(data.proplist);
+ if (control_device) {
+ pa_alsa_init_proplist_ctl(data.proplist, control_device);
+ pa_xfree(control_device);
+ }
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|(u->use_tsched ? PA_SOURCE_DYNAMIC_LATENCY : 0));
pa_source_new_data_done(&data);
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 107bec3..17c7c80 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -189,15 +189,6 @@ struct pa_alsa_fdlist *pa_alsa_fdlist_new(void) {
fdl = pa_xnew0(struct pa_alsa_fdlist, 1);
- fdl->num_fds = 0;
- fdl->fds = NULL;
- fdl->work_fds = NULL;
- fdl->mixer = NULL;
- fdl->m = NULL;
- fdl->defer = NULL;
- fdl->ios = NULL;
- fdl->polled = FALSE;
-
return fdl;
}
@@ -1176,6 +1167,7 @@ success:
int pa_alsa_find_mixer_and_elem(
snd_pcm_t *pcm,
+ char **ctl_device,
snd_mixer_t **_m,
snd_mixer_elem_t **_e,
const char *control_name,
@@ -1203,9 +1195,13 @@ int pa_alsa_find_mixer_and_elem(
/* First, try by name */
if ((dev = snd_pcm_name(pcm)))
- if (pa_alsa_prepare_mixer(m, dev) >= 0)
+ if (pa_alsa_prepare_mixer(m, dev) >= 0) {
found = TRUE;
+ if (ctl_device)
+ *ctl_device = pa_xstrdup(dev);
+ }
+
/* Then, try by card index */
if (!found) {
snd_pcm_info_t* info;
@@ -1220,9 +1216,15 @@ int pa_alsa_find_mixer_and_elem(
md = pa_sprintf_malloc("hw:%i", card_idx);
if (!dev || !pa_streq(dev, md))
- if (pa_alsa_prepare_mixer(m, md) >= 0)
+ if (pa_alsa_prepare_mixer(m, md) >= 0) {
found = TRUE;
+ if (ctl_device) {
+ *ctl_device = md;
+ md = NULL;
+ }
+ }
+
pa_xfree(md);
}
}
@@ -1258,6 +1260,9 @@ int pa_alsa_find_mixer_and_elem(
}
if (!e) {
+ if (ctl_device)
+ pa_xfree(*ctl_device);
+
snd_mixer_close(m);
return -1;
}
@@ -1601,6 +1606,36 @@ void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_m
pa_alsa_init_proplist_pcm_info(c, p, info);
}
+void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name) {
+ int err;
+ snd_ctl_t *ctl;
+ snd_ctl_card_info_t *info;
+ const char *t;
+
+ pa_assert(p);
+
+ 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);
+ return;
+ }
+
+ if ((err = snd_ctl_card_info(ctl, info)) < 0) {
+ pa_log_warn("Control device %s card info: %s", name, snd_strerror(err));
+ snd_ctl_close(ctl);
+ return;
+ }
+
+ if ((t = snd_ctl_card_info_get_mixername(info)))
+ pa_proplist_sets(p, "alsa.mixer_name", t);
+
+ if ((t = snd_ctl_card_info_get_components(info)))
+ pa_proplist_sets(p, "alsa.components", t);
+
+ snd_ctl_close(ctl);
+}
+
int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents) {
snd_pcm_state_t state;
int err;
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 4c5d336..27f4371 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -66,7 +66,9 @@ typedef struct pa_alsa_profile_info {
int pa_alsa_prepare_mixer(snd_mixer_t *mixer, const char *dev);
snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name, const char *fallback, pa_bool_t playback);
-int pa_alsa_find_mixer_and_elem(snd_pcm_t *pcm, snd_mixer_t **_m, snd_mixer_elem_t **_e, const char *control_name, const pa_alsa_profile_info*profile);
+int pa_alsa_find_mixer_and_elem(snd_pcm_t *pcm, char **ctl_device, snd_mixer_t **_m, snd_mixer_elem_t **_e, const char *control_name, const pa_alsa_profile_info*profile);
+
+void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name);
/* Picks a working profile based on the specified ss/map */
snd_pcm_t *pa_alsa_open_by_device_id_auto(
commit 28069ef0f74089ae18cefbe7e97d2b920d7ba0cc
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed May 13 01:00:39 2009 +0200
core: automatically add icons for headsets/headphones/speakers for devices
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 5ac5086..28b3440 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -2197,6 +2197,21 @@ pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
t = "multimedia-player";
else if (pa_streq(ff, "tv"))
t = "video-display";
+
+ /*
+ * The following icons are not part of the icon naming spec,
+ * because Rodney Dawes sucks as the maintainer of that spec.
+ *
+ * http://lists.freedesktop.org/archives/xdg/2009-May/010397.html
+ */
+ else if (pa_streq(ff, "headset"))
+ t = "audio-headset";
+ else if (pa_streq(ff, "headphone"))
+ t = "audio-headphones";
+ else if (pa_streq(ff, "speaker"))
+ t = "audio-speakers";
+ else if (pa_streq(ff, "hands-free"))
+ t = "audio-handsfree";
}
if (!t)
commit 905c8004a0b77ad4303f64b1dc8b1b29e3795a63
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed May 13 15:20:45 2009 +0200
volume: introduce pa_cvolume_{get|set}_position()
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 6848771..a9622e7 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -685,3 +685,49 @@ pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float
return v;
}
+
+pa_cvolume* pa_cvolume_set_position(
+ pa_cvolume *cv,
+ const pa_channel_map *map,
+ pa_channel_position_t t,
+ pa_volume_t v) {
+
+ unsigned c;
+ pa_bool_t good = FALSE;
+
+ pa_assert(cv);
+ pa_assert(map);
+
+ 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);
+
+ for (c = 0; c < map->channels; c++)
+ if (map->map[c] == t) {
+ cv->values[c] = v;
+ good = TRUE;
+ }
+
+ return good ? cv : NULL;
+}
+
+pa_volume_t pa_cvolume_get_position(
+ pa_cvolume *cv,
+ const pa_channel_map *map,
+ pa_channel_position_t t) {
+
+ unsigned c;
+ pa_volume_t v = PA_VOLUME_MUTED;
+
+ pa_assert(cv);
+ pa_assert(map);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), PA_VOLUME_MUTED);
+ pa_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, PA_VOLUME_MUTED);
+
+ for (c = 0; c < map->channels; c++)
+ if (map->map[c] == t)
+ if (cv->values[c] > v)
+ v = cv->values[c];
+
+ return v;
+}
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index 5b7e121..ddedca7 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -283,6 +283,19 @@ pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float
* volumes are kept. \since 0.9.15 */
pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max);
+/** Set the passed volume to all channels at the specified channel
+ * position. Will return the updated volume struct, or NULL if there
+ * is no channel at the position specified. You can check if a channel
+ * map includes a specific position by calling
+ * pa_channel_map_has_position(). \since 0.9.16 */
+pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t, pa_volume_t v);
+
+/** Get the maximum volume of all channels at the specified channel
+ * position. Will return 0 if there is no channel at the position
+ * specified. You can check if a channel map includes a specific
+ * 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_C_DECL_END
#endif
commit c69ed91239d64ffd22798aa9a485f62e9ec5ee93
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 01:21:56 2009 +0200
database: add abstracted database API
diff --git a/src/pulsecore/database.h b/src/pulsecore/database.h
new file mode 100644
index 0000000..17455d4
--- /dev/null
+++ b/src/pulsecore/database.h
@@ -0,0 +1,61 @@
+#ifndef foopulsecoredatabasehfoo
+#define foopulsecoredatabasehfoo
+
+/***
+ 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
+ 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>
+
+#include <pulsecore/macro.h>
+
+/* A little abstraction over simple databases, such as gdbm, tdb, and
+ * so on. We only make minimal assumptions about the supported
+ * backend: it does not need to support locking, it does not have to
+ * be arch independant. */
+
+typedef struct pa_database pa_database;
+
+typedef struct pa_datum {
+ void *data;
+ size_t size;
+} pa_datum;
+
+void pa_datum_free(pa_datum *d);
+
+/* This will append a suffix to the filename */
+pa_database* pa_database_open(const char *fn, pa_bool_t for_write);
+void pa_database_close(pa_database *db);
+
+pa_datum* pa_database_get(pa_database *db, const pa_datum *key, pa_datum* data);
+
+int pa_database_set(pa_database *db, const pa_datum *key, const pa_datum* data, pa_bool_t overwrite);
+int pa_database_unset(pa_database *db, const pa_datum *key);
+
+int pa_database_clear(pa_database *db);
+
+signed pa_database_size(pa_database *db);
+
+pa_datum* pa_database_first(pa_database *db, pa_datum *key, pa_datum *data /* may be NULL */);
+pa_datum* pa_database_next(pa_database *db, const pa_datum *key, pa_datum *next, pa_datum *data /* may be NULL */);
+
+int pa_database_sync(pa_database *db);
+
+#endif
commit 46bceedc9813cfa51738adb5abef43edc06252a3
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 01:22:36 2009 +0200
database: add gdbm backend
diff --git a/src/pulsecore/database-gdbm.c b/src/pulsecore/database-gdbm.c
new file mode 100644
index 0000000..aeaac64
--- /dev/null
+++ b/src/pulsecore/database-gdbm.c
@@ -0,0 +1,246 @@
+/***
+ 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
+ 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 <gdbm.h>
+
+#include <pulse/xmalloc.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/log.h>
+
+#include "database.h"
+
+#define MAKE_GDBM_FILE(x) ((GDBM_FILE) (x))
+
+static inline datum* datum_to_gdbm(datum *to, const pa_datum *from) {
+ pa_assert(from);
+ pa_assert(to);
+
+ to->dptr = from->data;
+ to->dsize = from->size;
+
+ return to;
+}
+
+static inline pa_datum* datum_from_gdbm(pa_datum *to, const datum *from) {
+ pa_assert(from);
+ pa_assert(to);
+
+ to->data = from->dptr;
+ to->size = from->dsize;
+
+ return to;
+}
+
+void pa_datum_free(pa_datum *d) {
+ pa_assert(d);
+
+ free(d->data); /* gdbm uses raw malloc/free hence we should do that here, too */
+ pa_zero(d);
+}
+
+pa_database* pa_database_open(const char *fn, pa_bool_t for_write) {
+ GDBM_FILE f;
+ int gdbm_cache_size;
+ char *path;
+
+ pa_assert(fn);
+
+ /* We include the host identifier in the file name because gdbm
+ * files are CPU dependant, and we don't want things to go wrong
+ * if we are on a multiarch system. */
+
+ path = pa_sprintf_malloc("%s."CANONICAL_HOST".gdbm", fn);
+ errno = 0;
+ f = gdbm_open((char*) path, 0, GDBM_NOLOCK | (for_write ? GDBM_WRCREAT : GDBM_READER), 0644, NULL);
+
+ if (f)
+ pa_log_debug("Opened GDBM database '%s'", path);
+
+ pa_xfree(path);
+
+ if (!f) {
+ if (errno == 0)
+ errno = EIO;
+ return NULL;
+ }
+
+ /* By default the cache of gdbm is rather large, let's reduce it a bit to save memory */
+ gdbm_cache_size = 10;
+ gdbm_setopt(f, GDBM_CACHESIZE, &gdbm_cache_size, sizeof(gdbm_cache_size));
+
+ return (pa_database*) f;
+}
+
+void pa_database_close(pa_database *db) {
+ pa_assert(db);
+
+ gdbm_close(MAKE_GDBM_FILE(db));
+}
+
+pa_datum* pa_database_get(pa_database *db, const pa_datum *key, pa_datum* data) {
+ datum gdbm_key, gdbm_data;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ gdbm_data = gdbm_fetch(MAKE_GDBM_FILE(db), *datum_to_gdbm(&gdbm_key, key));
+
+ return gdbm_data.dptr ?
+ datum_from_gdbm(data, &gdbm_data) :
+ NULL;
+}
+
+int pa_database_set(pa_database *db, const pa_datum *key, const pa_datum* data, pa_bool_t overwrite) {
+ datum gdbm_key, gdbm_data;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ return gdbm_store(MAKE_GDBM_FILE(db),
+ *datum_to_gdbm(&gdbm_key, key),
+ *datum_to_gdbm(&gdbm_data, data),
+ overwrite ? GDBM_REPLACE : GDBM_INSERT) != 0 ? -1 : 0;
+}
+
+int pa_database_unset(pa_database *db, const pa_datum *key) {
+ datum gdbm_key;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ return gdbm_delete(MAKE_GDBM_FILE(db), *datum_to_gdbm(&gdbm_key, key)) != 0 ? -1 : 0;
+}
+
+int pa_database_clear(pa_database *db) {
+ datum gdbm_key;
+
+ pa_assert(db);
+
+ gdbm_key = gdbm_firstkey(MAKE_GDBM_FILE(db));
+
+ while (gdbm_key.dptr) {
+ datum next;
+
+ next = gdbm_nextkey(MAKE_GDBM_FILE(db), gdbm_key);
+
+ gdbm_delete(MAKE_GDBM_FILE(db), gdbm_key);
+
+ free(gdbm_key.dptr);
+ gdbm_key = next;
+ }
+
+ return gdbm_reorganize(MAKE_GDBM_FILE(db)) == 0 ? 0 : -1;
+}
+
+signed pa_database_size(pa_database *db) {
+ datum gdbm_key;
+ unsigned n = 0;
+
+ pa_assert(db);
+
+ /* This sucks */
+
+ gdbm_key = gdbm_firstkey(MAKE_GDBM_FILE(db));
+
+ while (gdbm_key.dptr) {
+ datum next;
+
+ n++;
+
+ next = gdbm_nextkey(MAKE_GDBM_FILE(db), gdbm_key);
+ free(gdbm_key.dptr);
+ gdbm_key = next;
+ }
+
+ return (signed) n;
+}
+
+pa_datum* pa_database_first(pa_database *db, pa_datum *key, pa_datum *data) {
+ datum gdbm_key, gdbm_data;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ gdbm_key = gdbm_firstkey(MAKE_GDBM_FILE(db));
+
+ if (!gdbm_key.dptr)
+ return NULL;
+
+ if (data) {
+ gdbm_data = gdbm_fetch(MAKE_GDBM_FILE(db), gdbm_key);
+
+ if (!gdbm_data.dptr) {
+ free(gdbm_key.dptr);
+ return NULL;
+ }
+
+ datum_from_gdbm(data, &gdbm_data);
+ }
+
+ datum_from_gdbm(key, &gdbm_key);
+
+ return key;
+}
+
+pa_datum* pa_database_next(pa_database *db, const pa_datum *key, pa_datum *next, pa_datum *data) {
+ datum gdbm_key, gdbm_data;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(next);
+
+ if (!key)
+ return pa_database_first(db, next, data);
+
+ gdbm_key = gdbm_nextkey(MAKE_GDBM_FILE(db), *datum_to_gdbm(&gdbm_key, key));
+
+ if (!gdbm_key.dptr)
+ return NULL;
+
+ if (data) {
+ gdbm_data = gdbm_fetch(MAKE_GDBM_FILE(db), gdbm_key);
+
+ if (!gdbm_data.dptr) {
+ free(gdbm_key.dptr);
+ return NULL;
+ }
+
+ datum_from_gdbm(data, &gdbm_data);
+ }
+
+ datum_from_gdbm(next, &gdbm_key);
+
+ return next;
+}
+
+int pa_database_sync(pa_database *db) {
+ pa_assert(db);
+
+ gdbm_sync(MAKE_GDBM_FILE(db));
+ return 0;
+}
commit 6df14e016148cc50e92911fda8c641cc35482198
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 01:22:49 2009 +0200
database: add tdb backend
diff --git a/src/pulsecore/database-tdb.c b/src/pulsecore/database-tdb.c
new file mode 100644
index 0000000..c35fd81
--- /dev/null
+++ b/src/pulsecore/database-tdb.c
@@ -0,0 +1,224 @@
+/***
+ 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
+ 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 <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+#include <tdb.h>
+
+#include <pulse/xmalloc.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/log.h>
+
+#include "database.h"
+
+#define MAKE_TDB_CONTEXT(x) ((struct tdb_context*) (x))
+
+static inline TDB_DATA* datum_to_tdb(TDB_DATA *to, const pa_datum *from) {
+ pa_assert(from);
+ pa_assert(to);
+
+ to->dptr = from->data;
+ to->dsize = from->size;
+
+ return to;
+}
+
+static inline pa_datum* datum_from_tdb(pa_datum *to, const TDB_DATA *from) {
+ pa_assert(from);
+ pa_assert(to);
+
+ to->data = from->dptr;
+ to->size = from->dsize;
+
+ return to;
+}
+
+void pa_datum_free(pa_datum *d) {
+ pa_assert(d);
+
+ free(d->data); /* tdb uses raw malloc/free hence we should do that here, too */
+ pa_zero(d);
+}
+
+pa_database* pa_database_open(const char *fn, pa_bool_t for_write) {
+ struct tdb_context *c;
+ char *path;
+
+ pa_assert(fn);
+
+ path = pa_sprintf_malloc("%s.tdb", fn);
+ errno = 0;
+ c = tdb_open(path, 0, TDB_NOSYNC|TDB_NOLOCK,
+ (for_write ? O_RDWR|O_CREAT : O_RDONLY)|O_NOCTTY
+#ifdef O_CLOEXEC
+ |O_CLOEXEC
+#endif
+ , 0644);
+
+ if (c)
+ pa_log_debug("Opened TDB database '%s'", path);
+
+ pa_xfree(path);
+
+ if (!c) {
+ if (errno == 0)
+ errno = EIO;
+ return NULL;
+ }
+
+ return (pa_database*) c;
+}
+
+void pa_database_close(pa_database *db) {
+ pa_assert(db);
+
+ tdb_close(MAKE_TDB_CONTEXT(db));
+}
+
+pa_datum* pa_database_get(pa_database *db, const pa_datum *key, pa_datum* data) {
+ TDB_DATA tdb_key, tdb_data;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ tdb_data = tdb_fetch(MAKE_TDB_CONTEXT(db), *datum_to_tdb(&tdb_key, key));
+
+ return tdb_data.dptr ?
+ datum_from_tdb(data, &tdb_data) :
+ NULL;
+}
+
+int pa_database_set(pa_database *db, const pa_datum *key, const pa_datum* data, pa_bool_t overwrite) {
+ TDB_DATA tdb_key, tdb_data;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ return tdb_store(MAKE_TDB_CONTEXT(db),
+ *datum_to_tdb(&tdb_key, key),
+ *datum_to_tdb(&tdb_data, data),
+ overwrite ? TDB_REPLACE : TDB_INSERT) != 0 ? -1 : 0;
+}
+
+int pa_database_unset(pa_database *db, const pa_datum *key) {
+ TDB_DATA tdb_key;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ return tdb_delete(MAKE_TDB_CONTEXT(db), *datum_to_tdb(&tdb_key, key)) != 0 ? -1 : 0;
+}
+
+int pa_database_clear(pa_database *db) {
+ pa_assert(db);
+
+ return tdb_wipe_all(MAKE_TDB_CONTEXT(db)) != 0 ? -1 : 0;
+}
+
+signed pa_database_size(pa_database *db) {
+ TDB_DATA tdb_key;
+ unsigned n = 0;
+
+ pa_assert(db);
+
+ /* This sucks */
+
+ tdb_key = tdb_firstkey(MAKE_TDB_CONTEXT(db));
+
+ while (tdb_key.dptr) {
+ TDB_DATA next;
+
+ n++;
+
+ next = tdb_nextkey(MAKE_TDB_CONTEXT(db), tdb_key);
+ free(tdb_key.dptr);
+ tdb_key = next;
+ }
+
+ return (signed) n;
+}
+
+pa_datum* pa_database_first(pa_database *db, pa_datum *key, pa_datum *data) {
+ TDB_DATA tdb_key, tdb_data;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ tdb_key = tdb_firstkey(MAKE_TDB_CONTEXT(db));
+
+ if (!tdb_key.dptr)
+ return NULL;
+
+ if (data) {
+ tdb_data = tdb_fetch(MAKE_TDB_CONTEXT(db), tdb_key);
+
+ if (!tdb_data.dptr) {
+ free(tdb_key.dptr);
+ return NULL;
+ }
+
+ datum_from_tdb(data, &tdb_data);
+ }
+
+ datum_from_tdb(key, &tdb_key);
+
+ return key;
+}
+
+pa_datum* pa_database_next(pa_database *db, const pa_datum *key, pa_datum *next, pa_datum *data) {
+ TDB_DATA tdb_key, tdb_data;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ tdb_key = tdb_nextkey(MAKE_TDB_CONTEXT(db), *datum_to_tdb(&tdb_key, key));
+
+ if (!tdb_key.dptr)
+ return NULL;
+
+ if (data) {
+ tdb_data = tdb_fetch(MAKE_TDB_CONTEXT(db), tdb_key);
+
+ if (!tdb_data.dptr) {
+ free(tdb_key.dptr);
+ return NULL;
+ }
+
+ datum_from_tdb(data, &tdb_data);
+ }
+
+ datum_from_tdb(next, &tdb_key);
+
+ return next;
+}
+
+int pa_database_sync(pa_database *db) {
+ pa_assert(db);
+
+ return 0;
+}
commit 003e03d233b7eef7ca1d69ac2978280adb0520c0
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 01:23:12 2009 +0200
macro: include string.h because we need it for memset
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index e9888c3..cf66251 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -29,6 +29,7 @@
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <pulse/gccmacro.h>
commit b7e222318652b660391de9f96ea47f3ba164630b
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 01:24:26 2009 +0200
database: port restore modules to new database API
diff --git a/configure.ac b/configure.ac
index 6031ebd..16e6648 100644
--- a/configure.ac
+++ b/configure.ac
@@ -392,9 +392,6 @@ AC_SEARCH_LIBS([connect], [socket])
# build, disabling its ability to make dlls.
AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])])
-AC_CHECK_LIB(gdbm, gdbm_open)
-AC_CHECK_HEADERS(gdbm.h, [], [AC_MSG_ERROR([gdbm.h not found])])
-
#### Check for functions ####
# ISO
@@ -602,6 +599,65 @@ AC_SUBST(LIBSAMPLERATE_LIBS)
AC_SUBST(HAVE_LIBSAMPLERATE)
AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1])
+#### Database support ####
+
+HAVE_TDB=0
+HAVE_GDBM=0
+
+AC_ARG_WITH(
+ [database],
+ AS_HELP_STRING([--with-database=auto|tdb|gdbm],[Choose database backend.]),[],[with_database=auto])
+
+if test "x${with_database}" == "xauto" -o "x${with_database}" == "xtdb" ; then
+ PKG_CHECK_MODULES(TDB, [ tdb ],
+ [
+ HAVE_TDB=1
+ with_database=tdb
+ ], [
+ if test "x${with_database}" == "xtdb" ; then
+ AC_MSG_ERROR([*** tdb not found])
+ fi
+ ])
+fi
+
+if test "x${with_database}" == "xauto" -o "x${with_database}" == "xgdbm" ; then
+ have_gdbm=yes
+
+ AC_CHECK_LIB(gdbm, gdbm_open, [], [have_gdbm=no])
+ AC_CHECK_HEADERS(gdbm.h, [], [have_gdbm=no])
+
+ if test "x${have_gdbm}" == "xyes" ; then
+ HAVE_GDBM=1
+ GDBM_CFLAGS=
+ GDBM_LIBS=-lgdbm
+ with_database=gdbm
+ elif test "x${with_database}" == "xgdbm"; then
+ AC_MSG_ERROR([*** gdbm not found])
+ fi
+fi
+
+if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1; then
+ AC_MSG_ERROR([*** missing database backend])
+fi
+
+if test "x${HAVE_TDB}" = x1 ; then
+ AC_DEFINE([HAVE_TDB], 1, [Have tdb?])
+fi
+
+if test "x${HAVE_GDBM}" = x1 ; then
+ AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?])
+fi
+
+AC_SUBST(TDB_CFLAGS)
+AC_SUBST(TDB_LIBS)
+AC_SUBST(HAVE_TDB)
+AM_CONDITIONAL([HAVE_TDB], [test "x$HAVE_TDB" = x1])
+
+AC_SUBST(GDBM_CFLAGS)
+AC_SUBST(GDBM_LIBS)
+AC_SUBST(HAVE_GDBM)
+AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1])
+
#### OSS support (optional) ####
AC_ARG_ENABLE([oss],
@@ -1410,6 +1466,16 @@ if test "x${HAVE_POLKIT}" = "x1" ; then
ENABLE_POLKIT=yes
fi
+ENABLE_GDBM=no
+if test "x${HAVE_GDBM}" = "x1" ; then
+ ENABLE_GDBM=yes
+fi
+
+ENABLE_TDB=no
+if test "x${HAVE_TDB}" = "x1" ; then
+ ENABLE_TDB=yes
+fi
+
ENABLE_OPENSSL=no
if test "x${HAVE_OPENSSL}" = "x1" ; then
ENABLE_OPENSSL=yes
@@ -1456,6 +1522,8 @@ echo "
Enable PolicyKit: ${ENABLE_POLKIT}
Enable IPv6: ${ENABLE_IPV6}
Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
+ Enable tdb: ${ENABLE_TDB}
+ Enable gdbm: ${ENABLE_GDBM}
System User: ${PA_SYSTEM_USER}
System Group: ${PA_SYSTEM_GROUP}
diff --git a/src/Makefile.am b/src/Makefile.am
index b41ae39..49a0c69 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -816,7 +816,8 @@ libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/source.c pulsecore/source.h \
pulsecore/start-child.c pulsecore/start-child.h \
pulsecore/thread-mq.c pulsecore/thread-mq.h \
- pulsecore/time-smoother.c pulsecore/time-smoother.h
+ pulsecore/time-smoother.c pulsecore/time-smoother.h \
+ pulsecore/database.h
libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
libpulsecore_ at PA_MAJORMINORMICRO@_la_LDFLAGS = -avoid-version
@@ -828,13 +829,25 @@ libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS += $(X11_CFLAGS)
libpulsecore_ at PA_MAJORMINORMICRO@_la_LDFLAGS += $(X11_LIBS)
endif
-
if HAVE_DBUS
libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/dbus-shared.c pulsecore/dbus-shared.h
libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS += $(DBUS_CFLAGS)
libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD += $(DBUS_LIBS)
endif
+if HAVE_GDBM
+libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/database-gdbm.c
+libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS += $(GDBM_CFLAGS)
+libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD += $(GDBM_LIBS)
+endif
+
+if HAVE_TDB
+libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/database-tdb.c
+libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS += $(TDB_CFLAGS)
+libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD += $(TDB_LIBS)
+endif
+
+
# We split the foreign code off to not be annoyed by warnings we don't care about
noinst_LTLIBRARIES = libpulsecore-foreign.la
@@ -1441,19 +1454,19 @@ module_cork_music_on_phone_la_CFLAGS = $(AM_CFLAGS)
# Device volume/muted restore module
module_device_restore_la_SOURCES = modules/module-device-restore.c
module_device_restore_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_device_restore_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la -lgdbm libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
+module_device_restore_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_device_restore_la_CFLAGS = $(AM_CFLAGS)
# Stream volume/muted/device restore module
module_stream_restore_la_SOURCES = modules/module-stream-restore.c
module_stream_restore_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_stream_restore_la_LIBADD = $(AM_LIBADD) libprotocol-native.la libpulsecore- at PA_MAJORMINORMICRO@.la -lgdbm libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
+module_stream_restore_la_LIBADD = $(AM_LIBADD) libprotocol-native.la libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_stream_restore_la_CFLAGS = $(AM_CFLAGS)
# Card profile restore module
module_card_restore_la_SOURCES = modules/module-card-restore.c
module_card_restore_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_card_restore_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la -lgdbm libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
+module_card_restore_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_card_restore_la_CFLAGS = $(AM_CFLAGS)
# Default sink/source restore module
diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c
index 17f1f8c..85478d1 100644
--- a/src/modules/module-card-restore.c
+++ b/src/modules/module-card-restore.c
@@ -30,7 +30,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
-#include <gdbm.h>
#include <pulse/xmalloc.h>
#include <pulse/volume.h>
@@ -45,6 +44,7 @@
#include <pulsecore/core-subscribe.h>
#include <pulsecore/card.h>
#include <pulsecore/namereg.h>
+#include <pulsecore/database.h>
#include "module-card-restore-symdef.h"
@@ -65,7 +65,7 @@ struct userdata {
pa_subscription *subscription;
pa_hook_slot *card_new_hook_slot;
pa_time_event *save_time_event;
- GDBM_FILE gdbm_file;
+ pa_database *database;
};
#define ENTRY_VERSION 1
@@ -87,31 +87,31 @@ static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct
u->core->mainloop->time_free(u->save_time_event);
u->save_time_event = NULL;
- gdbm_sync(u->gdbm_file);
+ pa_database_sync(u->database);
pa_log_info("Synced.");
}
static struct entry* read_entry(struct userdata *u, const char *name) {
- datum key, data;
+ pa_datum key, data;
struct entry *e;
pa_assert(u);
pa_assert(name);
- key.dptr = (char*) name;
- key.dsize = (int) strlen(name);
+ key.data = (char*) name;
+ key.size = strlen(name);
- data = gdbm_fetch(u->gdbm_file, key);
+ pa_zero(data);
- if (!data.dptr)
+ if (!pa_database_get(u->database, &key, &data))
goto fail;
- if (data.dsize != sizeof(struct entry)) {
- pa_log_debug("Database contains entry for card %s of wrong size %lu != %lu. Probably due to upgrade, ignoring.", name, (unsigned long) data.dsize, (unsigned long) sizeof(struct entry));
+ if (data.size != sizeof(struct entry)) {
+ pa_log_debug("Database contains entry for card %s of wrong size %lu != %lu. Probably due to upgrade, ignoring.", name, (unsigned long) data.size, (unsigned long) sizeof(struct entry));
goto fail;
}
- e = (struct entry*) data.dptr;
+ e = (struct entry*) data.data;
if (e->version != ENTRY_VERSION) {
pa_log_debug("Version of database entry for card %s doesn't match our version. Probably due to upgrade, ignoring.", name);
@@ -127,7 +127,7 @@ static struct entry* read_entry(struct userdata *u, const char *name) {
fail:
- pa_xfree(data.dptr);
+ pa_datum_free(&data);
return NULL;
}
@@ -145,7 +145,7 @@ static void trigger_save(struct userdata *u) {
static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, void *userdata) {
struct userdata *u = userdata;
struct entry entry, *old;
- datum key, data;
+ pa_datum key, data;
pa_card *card;
pa_assert(c);
@@ -155,7 +155,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
t != (PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE))
return;
- memset(&entry, 0, sizeof(entry));
+ pa_zero(entry);
entry.version = ENTRY_VERSION;
if (!(card = pa_idxset_get_by_index(c->cards, idx)))
@@ -176,15 +176,15 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
pa_xfree(old);
}
- key.dptr = card->name;
- key.dsize = (int) strlen(card->name);
+ key.data = card->name;
+ key.size = strlen(card->name);
- data.dptr = (void*) &entry;
- data.dsize = sizeof(entry);
+ data.data = &entry;
+ data.size = sizeof(entry);
pa_log_info("Storing profile for card %s.", card->name);
- gdbm_store(u->gdbm_file, key, data, GDBM_REPLACE);
+ pa_database_set(u->database, &key, &data, TRUE);
trigger_save(u);
}
@@ -211,10 +211,9 @@ static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new
int pa__init(pa_module*m) {
pa_modargs *ma = NULL;
struct userdata *u;
- char *fname, *fn;
+ char *fname;
pa_card *card;
uint32_t idx;
- int gdbm_cache_size;
pa_assert(m);
@@ -227,33 +226,21 @@ int pa__init(pa_module*m) {
u->core = m->core;
u->module = m;
u->save_time_event = NULL;
- u->gdbm_file = NULL;
+ u->database = NULL;
u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_CARD, subscribe_callback, u);
u->card_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_CARD_NEW], PA_HOOK_EARLY, (pa_hook_cb_t) card_new_hook_callback, u);
- /* We include the host identifier in the file name because gdbm
- * files are CPU dependant, and we don't want things to go wrong
- * if we are on a multiarch system. */
-
- fn = pa_sprintf_malloc("card-database."CANONICAL_HOST".gdbm");
- fname = pa_state_path(fn, TRUE);
- pa_xfree(fn);
-
- if (!fname)
+ if (!(fname = pa_state_path("card-database", TRUE)))
goto fail;
- if (!(u->gdbm_file = gdbm_open(fname, 0, GDBM_WRCREAT|GDBM_NOLOCK, 0600, NULL))) {
- pa_log("Failed to open volume database '%s': %s", fname, gdbm_strerror(gdbm_errno));
+ if (!(u->database = pa_database_open(fname, TRUE))) {
+ pa_log("Failed to open volume database '%s': %s", fname, pa_cstrerror(errno));
pa_xfree(fname);
goto fail;
}
- /* By default the cache of gdbm is rather large, let's reduce it a bit to save memory */
- gdbm_cache_size = 10;
- gdbm_setopt(u->gdbm_file, GDBM_CACHESIZE, &gdbm_cache_size, sizeof(gdbm_cache_size));
-
pa_log_info("Sucessfully opened database file '%s'.", fname);
pa_xfree(fname);
@@ -289,8 +276,8 @@ void pa__done(pa_module*m) {
if (u->save_time_event)
u->core->mainloop->time_free(u->save_time_event);
- if (u->gdbm_file)
- gdbm_close(u->gdbm_file);
+ if (u->database)
+ pa_database_close(u->database);
pa_xfree(u);
}
diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c
index 7d87ca0..ae21acd 100644
--- a/src/modules/module-device-restore.c
+++ b/src/modules/module-device-restore.c
@@ -30,7 +30,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
-#include <gdbm.h>
#include <pulse/xmalloc.h>
#include <pulse/volume.h>
@@ -46,6 +45,7 @@
#include <pulsecore/sink-input.h>
#include <pulsecore/source-output.h>
#include <pulsecore/namereg.h>
+#include <pulsecore/database.h>
#include "module-device-restore-symdef.h"
@@ -73,7 +73,7 @@ struct userdata {
*sink_fixate_hook_slot,
*source_fixate_hook_slot;
pa_time_event *save_time_event;
- GDBM_FILE gdbm_file;
+ pa_database *database;
pa_bool_t restore_volume:1;
pa_bool_t restore_muted:1;
@@ -100,31 +100,31 @@ static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct
u->core->mainloop->time_free(u->save_time_event);
u->save_time_event = NULL;
- gdbm_sync(u->gdbm_file);
+ pa_database_sync(u->database);
pa_log_info("Synced.");
}
static struct entry* read_entry(struct userdata *u, const char *name) {
- datum key, data;
+ pa_datum key, data;
struct entry *e;
pa_assert(u);
pa_assert(name);
- key.dptr = (char*) name;
- key.dsize = (int) strlen(name);
+ key.data = (char*) name;
+ key.size = strlen(name);
- data = gdbm_fetch(u->gdbm_file, key);
+ pa_zero(data);
- if (!data.dptr)
+ if (!pa_database_get(u->database, &key, &data))
goto fail;
- if (data.dsize != sizeof(struct entry)) {
- pa_log_debug("Database contains entry for device %s of wrong size %lu != %lu. Probably due to upgrade, ignoring.", name, (unsigned long) data.dsize, (unsigned long) sizeof(struct entry));
+ if (data.size != sizeof(struct entry)) {
+ pa_log_debug("Database contains entry for device %s of wrong size %lu != %lu. Probably due to upgrade, ignoring.", name, (unsigned long) data.size, (unsigned long) sizeof(struct entry));
goto fail;
}
- e = (struct entry*) data.dptr;
+ e = (struct entry*) data.data;
if (e->version != ENTRY_VERSION) {
pa_log_debug("Version of database entry for device %s doesn't match our version. Probably due to upgrade, ignoring.", name);
@@ -150,7 +150,7 @@ static struct entry* read_entry(struct userdata *u, const char *name) {
fail:
- pa_xfree(data.dptr);
+ pa_datum_free(&data);
return NULL;
}
@@ -169,7 +169,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
struct userdata *u = userdata;
struct entry entry, *old;
char *name;
- datum key, data;
+ pa_datum key, data;
pa_assert(c);
pa_assert(u);
@@ -180,7 +180,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
t != (PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE))
return;
- memset(&entry, 0, sizeof(entry));
+ pa_zero(entry);
entry.version = ENTRY_VERSION;
if ((t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) == PA_SUBSCRIPTION_EVENT_SINK) {
@@ -221,15 +221,15 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
pa_xfree(old);
}
- key.dptr = name;
- key.dsize = (int) strlen(name);
+ key.data = name;
+ key.size = strlen(name);
- data.dptr = (void*) &entry;
- data.dsize = sizeof(entry);
+ data.data = &entry;
+ data.size = sizeof(entry);
pa_log_info("Storing volume/mute for device %s.", name);
- gdbm_store(u->gdbm_file, key, data, GDBM_REPLACE);
+ pa_database_set(u->database, &key, &data, TRUE);
pa_xfree(name);
@@ -312,12 +312,11 @@ static pa_hook_result_t source_fixate_hook_callback(pa_core *c, pa_source_new_da
int pa__init(pa_module*m) {
pa_modargs *ma = NULL;
struct userdata *u;
- char *fname, *fn;
+ char *fname;
pa_sink *sink;
pa_source *source;
uint32_t idx;
pa_bool_t restore_volume = TRUE, restore_muted = TRUE;
- int gdbm_cache_size;
pa_assert(m);
@@ -341,7 +340,7 @@ int pa__init(pa_module*m) {
u->save_time_event = NULL;
u->restore_volume = restore_volume;
u->restore_muted = restore_muted;
- u->gdbm_file = NULL;
+ u->database = NULL;
u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_SINK|PA_SUBSCRIPTION_MASK_SOURCE, subscribe_callback, u);
@@ -350,27 +349,15 @@ int pa__init(pa_module*m) {
u->source_fixate_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_FIXATE], PA_HOOK_EARLY, (pa_hook_cb_t) source_fixate_hook_callback, u);
}
- /* We include the host identifier in the file name because gdbm
- * files are CPU dependant, and we don't want things to go wrong
- * if we are on a multiarch system. */
-
- fn = pa_sprintf_malloc("device-volumes."CANONICAL_HOST".gdbm");
- fname = pa_state_path(fn, TRUE);
- pa_xfree(fn);
-
- if (!fname)
+ if (!(fname = pa_state_path("device-volumes", TRUE)))
goto fail;
- if (!(u->gdbm_file = gdbm_open(fname, 0, GDBM_WRCREAT|GDBM_NOLOCK, 0600, NULL))) {
- pa_log("Failed to open volume database '%s': %s", fname, gdbm_strerror(gdbm_errno));
+ if (!(u->database = pa_database_open(fname, TRUE))) {
+ pa_log("Failed to open volume database '%s': %s", fname, pa_cstrerror(errno));
pa_xfree(fname);
goto fail;
}
- /* By default the cache of gdbm is rather large, let's reduce it a bit to save memory */
- gdbm_cache_size = 10;
- gdbm_setopt(u->gdbm_file, GDBM_CACHESIZE, &gdbm_cache_size, sizeof(gdbm_cache_size));
-
pa_log_info("Sucessfully opened database file '%s'.", fname);
pa_xfree(fname);
@@ -411,8 +398,8 @@ void pa__done(pa_module*m) {
if (u->save_time_event)
u->core->mainloop->time_free(u->save_time_event);
- if (u->gdbm_file)
- gdbm_close(u->gdbm_file);
+ if (u->database)
+ pa_database_close(u->database);
pa_xfree(u);
}
diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c
index 70cd89a..2de98f4 100644
--- a/src/modules/module-stream-restore.c
+++ b/src/modules/module-stream-restore.c
@@ -30,7 +30,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
-#include <gdbm.h>
#include <pulse/xmalloc.h>
#include <pulse/volume.h>
@@ -49,6 +48,7 @@
#include <pulsecore/protocol-native.h>
#include <pulsecore/pstream.h>
#include <pulsecore/pstream-util.h>
+#include <pulsecore/database.h>
#include "module-stream-restore-symdef.h"
@@ -81,7 +81,7 @@ struct userdata {
*source_output_new_hook_slot,
*connection_unlink_hook_slot;
pa_time_event *save_time_event;
- GDBM_FILE gdbm_file;
+ pa_database* database;
pa_bool_t restore_device:1;
pa_bool_t restore_volume:1;
@@ -123,7 +123,7 @@ static void save_time_callback(pa_mainloop_api*a, pa_time_event* e, const struct
u->core->mainloop->time_free(u->save_time_event);
u->save_time_event = NULL;
- gdbm_sync(u->gdbm_file);
+ pa_database_sync(u->database);
pa_log_info("Synced.");
}
@@ -153,28 +153,28 @@ static char *get_name(pa_proplist *p, const char *prefix) {
}
static struct entry* read_entry(struct userdata *u, const char *name) {
- datum key, data;
+ pa_datum key, data;
struct entry *e;
pa_assert(u);
pa_assert(name);
- key.dptr = (char*) name;
- key.dsize = (int) strlen(name);
+ key.data = (char*) name;
+ key.size = strlen(name);
- data = gdbm_fetch(u->gdbm_file, key);
+ pa_zero(data);
- if (!data.dptr)
+ if (!pa_database_get(u->database, &key, &data))
goto fail;
- if (data.dsize != sizeof(struct entry)) {
+ if (data.size != sizeof(struct entry)) {
/* This is probably just a database upgrade, hence let's not
* consider this more than a debug message */
- pa_log_debug("Database contains entry for stream %s of wrong size %lu != %lu. Probably due to uprade, ignoring.", name, (unsigned long) data.dsize, (unsigned long) sizeof(struct entry));
+ pa_log_debug("Database contains entry for stream %s of wrong size %lu != %lu. Probably due to uprade, ignoring.", name, (unsigned long) data.size, (unsigned long) sizeof(struct entry));
goto fail;
}
- e = (struct entry*) data.dptr;
+ e = (struct entry*) data.data;
if (e->version != ENTRY_VERSION) {
pa_log_debug("Version of database entry for stream %s doesn't match our version. Probably due to upgrade, ignoring.", name);
@@ -205,7 +205,7 @@ static struct entry* read_entry(struct userdata *u, const char *name) {
fail:
- pa_xfree(data.dptr);
+ pa_datum_free(&data);
return NULL;
}
@@ -261,7 +261,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
struct userdata *u = userdata;
struct entry entry, *old;
char *name;
- datum key, data;
+ pa_datum key, data;
pa_assert(c);
pa_assert(u);
@@ -272,7 +272,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
t != (PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_CHANGE))
return;
- memset(&entry, 0, sizeof(entry));
+ pa_zero(entry);
entry.version = ENTRY_VERSION;
if ((t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) == PA_SUBSCRIPTION_EVENT_SINK_INPUT) {
@@ -334,15 +334,15 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
pa_xfree(old);
}
- key.dptr = name;
- key.dsize = (int) strlen(name);
+ key.data = name;
+ key.size = strlen(name);
- data.dptr = (void*) &entry;
- data.dsize = sizeof(entry);
+ data.data = &entry;
+ data.size = sizeof(entry);
pa_log_info("Storing volume/mute/device for stream %s.", name);
- gdbm_store(u->gdbm_file, key, data, GDBM_REPLACE);
+ pa_database_set(u->database, &key, &data, TRUE);
pa_xfree(name);
@@ -471,25 +471,6 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
#define EXT_VERSION 1
-static void clear_db(struct userdata *u) {
- datum key;
-
- pa_assert(u);
-
- key = gdbm_firstkey(u->gdbm_file);
- while (key.dptr) {
- datum next_key;
- next_key = gdbm_nextkey(u->gdbm_file, key);
-
- gdbm_delete(u->gdbm_file, key);
- pa_xfree(key.dptr);
-
- key = next_key;
- }
-
- gdbm_reorganize(u->gdbm_file);
-}
-
static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
pa_sink_input *si;
pa_source_output *so;
@@ -559,18 +540,20 @@ static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
#if 0
static void dump_database(struct userdata *u) {
- datum key;
+ pa_datum key;
+ pa_bool_t done;
- key = gdbm_firstkey(u->gdbm_file);
- while (key.dptr) {
- datum next_key;
+ done = !pa_database_first(u->database, &key, NULL);
+
+ while (!done) {
+ pa_datum next_key;
struct entry *e;
char *name;
- next_key = gdbm_nextkey(u->gdbm_file, key);
+ done = !pa_database_next(u->database, &key, &next_key, NULL);
- name = pa_xstrndup(key.dptr, key.dsize);
- pa_xfree(key.dptr);
+ name = pa_xstrndup(key.data, key.size);
+ pa_datum_free(&key);
if ((e = read_entry(u, name))) {
char t[256];
@@ -618,21 +601,23 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
}
case SUBCOMMAND_READ: {
- datum key;
+ pa_datum key;
+ pa_bool_t done;
if (!pa_tagstruct_eof(t))
goto fail;
- key = gdbm_firstkey(u->gdbm_file);
- while (key.dptr) {
- datum next_key;
+ done = !pa_database_first(u->database, &key, NULL);
+
+ while (!done) {
+ pa_datum next_key;
struct entry *e;
char *name;
- next_key = gdbm_nextkey(u->gdbm_file, key);
+ done = !pa_database_next(u->database, &key, &next_key, NULL);
- name = pa_xstrndup(key.dptr, (size_t) key.dsize);
- pa_xfree(key.dptr);
+ name = pa_xstrndup(key.data, key.size);
+ pa_datum_free(&key);
if ((e = read_entry(u, name))) {
pa_cvolume r;
@@ -669,16 +654,15 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
goto fail;
if (mode == PA_UPDATE_SET)
- clear_db(u);
+ pa_database_clear(u->database);
while (!pa_tagstruct_eof(t)) {
const char *name, *device;
pa_bool_t muted;
struct entry entry;
- datum key, data;
- int k;
+ pa_datum key, data;
- memset(&entry, 0, sizeof(entry));
+ pa_zero(entry);
entry.version = ENTRY_VERSION;
if (pa_tagstruct_gets(t, &name) < 0 ||
@@ -708,13 +692,13 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
!pa_namereg_is_valid_name(entry.device))
goto fail;
- key.dptr = (void*) name;
- key.dsize = (int) strlen(name);
+ key.data = (char*) name;
+ key.size = strlen(name);
- data.dptr = (void*) &entry;
- data.dsize = sizeof(entry);
+ data.data = &entry;
+ data.size = sizeof(entry);
- if ((k = gdbm_store(u->gdbm_file, key, data, mode == PA_UPDATE_REPLACE ? GDBM_REPLACE : GDBM_INSERT)) == 0)
+ if (pa_database_set(u->database, &key, &data, mode == PA_UPDATE_REPLACE) == 0)
if (apply_immediately)
apply_entry(u, name, &entry);
}
@@ -728,15 +712,15 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
while (!pa_tagstruct_eof(t)) {
const char *name;
- datum key;
+ pa_datum key;
if (pa_tagstruct_gets(t, &name) < 0)
goto fail;
- key.dptr = (void*) name;
- key.dsize = (int) strlen(name);
+ key.data = (char*) name;
+ key.size = strlen(name);
- gdbm_delete(u->gdbm_file, key);
+ pa_database_unset(u->database, &key);
}
trigger_save(u);
@@ -786,12 +770,11 @@ static pa_hook_result_t connection_unlink_hook_cb(pa_native_protocol *p, pa_nati
int pa__init(pa_module*m) {
pa_modargs *ma = NULL;
struct userdata *u;
- char *fname, *fn;
+ char *fname;
pa_sink_input *si;
pa_source_output *so;
uint32_t idx;
pa_bool_t restore_device = TRUE, restore_volume = TRUE, restore_muted = TRUE;
- int gdbm_cache_size;
pa_assert(m);
@@ -817,7 +800,7 @@ int pa__init(pa_module*m) {
u->restore_device = restore_device;
u->restore_volume = restore_volume;
u->restore_muted = restore_muted;
- u->gdbm_file = NULL;
+ u->database = NULL;
u->subscribed = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
u->protocol = pa_native_protocol_get(m->core);
@@ -835,27 +818,18 @@ int pa__init(pa_module*m) {
if (restore_volume || restore_muted)
u->sink_input_fixate_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_FIXATE], PA_HOOK_EARLY, (pa_hook_cb_t) sink_input_fixate_hook_callback, u);
- /* We include the host identifier in the file name because gdbm
- * files are CPU dependant, and we don't want things to go wrong
- * if we are on a multiarch system. */
- fn = pa_sprintf_malloc("stream-volumes."CANONICAL_HOST".gdbm");
- fname = pa_state_path(fn, TRUE);
- pa_xfree(fn);
+ fname = pa_state_path("stream-volumes", TRUE);
if (!fname)
goto fail;
- if (!(u->gdbm_file = gdbm_open(fname, 0, GDBM_WRCREAT|GDBM_NOLOCK, 0600, NULL))) {
- pa_log("Failed to open volume database '%s': %s", fname, gdbm_strerror(gdbm_errno));
+ if (!(u->database = pa_database_open(fname, TRUE))) {
+ pa_log("Failed to open volume database '%s': %s", fname, pa_cstrerror(errno));
pa_xfree(fname);
goto fail;
}
- /* By default the cache of gdbm is rather large, let's reduce it a bit to save memory */
- gdbm_cache_size = 10;
- gdbm_setopt(u->gdbm_file, GDBM_CACHESIZE, &gdbm_cache_size, sizeof(gdbm_cache_size));
-
pa_log_info("Sucessfully opened database file '%s'.", fname);
pa_xfree(fname);
@@ -901,8 +875,8 @@ void pa__done(pa_module*m) {
if (u->save_time_event)
u->core->mainloop->time_free(u->save_time_event);
- if (u->gdbm_file)
- gdbm_close(u->gdbm_file);
+ if (u->database)
+ pa_database_close(u->database);
if (u->protocol) {
pa_native_protocol_remove_ext(u->protocol, m);
commit 0cb383717e1e65847f3ede7f3c904caff9129c93
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 01:25:07 2009 +0200
alsa: be a bit more verbose when a hwparam call fails
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 17c7c80..c03866c 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -272,6 +272,11 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
return ret;
+ pa_log_debug("snd_pcm_hw_params_set_format(%s) failed: %s",
+ snd_pcm_format_description(format_trans[*f]),
+ pa_alsa_strerror(ret));
+
+
if (*f == PA_SAMPLE_FLOAT32BE)
*f = PA_SAMPLE_FLOAT32LE;
else if (*f == PA_SAMPLE_FLOAT32LE)
@@ -298,6 +303,10 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
return ret;
+ pa_log_debug("snd_pcm_hw_params_set_format(%s) failed: %s",
+ snd_pcm_format_description(format_trans[*f]),
+ pa_alsa_strerror(ret));
+
try_auto:
for (i = 0; try_order[i] != PA_SAMPLE_INVALID; i++) {
@@ -305,6 +314,10 @@ try_auto:
if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
return ret;
+
+ pa_log_debug("snd_pcm_hw_params_set_format(%s) failed: %s",
+ snd_pcm_format_description(format_trans[*f]),
+ pa_alsa_strerror(ret));
}
return -1;
@@ -338,11 +351,15 @@ int pa_alsa_set_hw_params(
snd_pcm_hw_params_alloca(&hwparams);
- if ((ret = snd_pcm_hw_params_any(pcm_handle, hwparams)) < 0)
+ 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));
goto finish;
+ }
- if ((ret = snd_pcm_hw_params_set_rate_resample(pcm_handle, hwparams, 0)) < 0)
+ if ((ret = snd_pcm_hw_params_set_rate_resample(pcm_handle, hwparams, 0)) < 0) {
+ pa_log_debug("snd_pcm_hw_params_set_rate_resample() failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
if (_use_mmap) {
@@ -350,14 +367,18 @@ int pa_alsa_set_hw_params(
/* mmap() didn't work, fall back to interleaved */
- if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
+ if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
+ pa_log_debug("snd_pcm_hw_params_set_access() failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
_use_mmap = FALSE;
}
- } else if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
+ } else if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
+ pa_log_debug("snd_pcm_hw_params_set_access() failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
if (!_use_mmap)
_use_tsched = FALSE;
@@ -365,19 +386,27 @@ int pa_alsa_set_hw_params(
if ((ret = set_format(pcm_handle, hwparams, &f)) < 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, &r, 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)
+ if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, c)) < 0) {
+ pa_log_debug("snd_pcm_hw_params_set_channels() failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
} else {
- if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0)
+ if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0) {
+ pa_log_debug("snd_pcm_hw_params_set_channels_near() failed: %s", pa_alsa_strerror(ret));
goto finish;
+ }
}
- if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, hwparams)) < 0)
+ 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;
+ }
if (_period_size && tsched_size && _periods) {
commit 234c61b638a3de248df3a0f0f0930c92325d53b5
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 01:43:12 2009 +0200
upnp: implement item-count/container-count properties
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index f004f46..96c1b41 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -82,6 +82,8 @@ PA_MODULE_USAGE(
" <signal name=\"Updated\">" \
" <arg name=\"path\" type=\"o\"/>" \
" </signal>" \
+ " <property name=\"item-count\" type=\"u\" access=\"read\"/>" \
+ " <property name=\"container-count\" type=\"u\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.Rygel.MediaObject1\">" \
" <property name=\"icon-name\" type=\"s\" access=\"read\"/>" \
@@ -248,7 +250,22 @@ static void append_variant_string(DBusMessage *m, DBusMessageIter *iter, const c
pa_assert_se(dbus_message_iter_close_container(iter, &sub));
}
-static void append_property_dict_entry(DBusMessage *m, DBusMessageIter *iter, const char *name, const char *value) {
+static void append_variant_unsigned(DBusMessage *m, DBusMessageIter *iter, unsigned u) {
+ DBusMessageIter _iter, sub;
+
+ pa_assert(m);
+
+ if (!iter) {
+ dbus_message_iter_init_append(m, &_iter);
+ iter = &_iter;
+ }
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, "u", &sub));
+ pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_UINT32, &u));
+ pa_assert_se(dbus_message_iter_close_container(iter, &sub));
+}
+
+static void append_property_dict_entry_string(DBusMessage *m, DBusMessageIter *iter, const char *name, const char *value) {
DBusMessageIter sub;
pa_assert(iter);
@@ -259,6 +276,17 @@ static void append_property_dict_entry(DBusMessage *m, DBusMessageIter *iter, co
pa_assert_se(dbus_message_iter_close_container(iter, &sub));
}
+static void append_property_dict_entry_unsigned(DBusMessage *m, DBusMessageIter *iter, const char *name, unsigned u) {
+ DBusMessageIter sub;
+
+ pa_assert(iter);
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &sub));
+ pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &name));
+ append_variant_unsigned(m, &sub, u);
+ pa_assert_se(dbus_message_iter_close_container(iter, &sub));
+}
+
static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
struct userdata *u = userdata;
DBusMessage *r = NULL;
@@ -300,8 +328,27 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry(r, &sub, "display-name", u->display_name);
- append_property_dict_entry(r, &sub, "icon-name", "audio-card");
+ append_property_dict_entry_string(r, &sub, "display-name", u->display_name);
+ append_property_dict_entry_string(r, &sub, "icon-name", "audio-card");
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "item-count")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_unsigned(r, NULL, 0);
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "container-count")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_unsigned(r, NULL, 2);
+
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ DBusMessageIter iter, sub;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ dbus_message_iter_init_append(r, &iter);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry_unsigned(r, &sub, "item-count", 0);
+ append_property_dict_entry_unsigned(r, &sub, "container-count", 2);
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
@@ -441,12 +488,37 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry(m, &sub, "display-name",
- pa_streq(path, OBJECT_SINKS) ?
- _("Output Devices") :
- _("Input Devices"));
+ append_property_dict_entry_string(m, &sub, "display-name",
+ pa_streq(path, OBJECT_SINKS) ?
+ _("Output Devices") :
+ _("Input Devices"));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "item-count")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+
+ append_variant_unsigned(r, NULL,
+ pa_streq(path, OBJECT_SINKS) ?
+ pa_idxset_size(u->core->sinks) :
+ pa_idxset_size(u->core->sources));
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "container-count")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_unsigned(r, NULL, 0);
+
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ DBusMessageIter iter, sub;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ dbus_message_iter_init_append(r, &iter);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry_unsigned(r, &sub, "item-count",
+ pa_streq(path, OBJECT_SINKS) ?
+ pa_idxset_size(u->core->sinks) :
+ pa_idxset_size(u->core->sources));
+ append_property_dict_entry_unsigned(r, &sub, "container-count", 0);
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
pa_strbuf *sb;
char *xml;
@@ -540,7 +612,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry(r, &sub, "display-name", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ append_property_dict_entry_string(r, &sub, "display-name", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (message_is_property_get_all(m, "org.Rygel.MediaItem1")) {
@@ -552,14 +624,14 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry(r, &sub, "type", "audio");
+ append_property_dict_entry_string(r, &sub, "type", "audio");
if (sink)
t = pa_sample_spec_to_mime_type_mimefy(&sink->sample_spec, &sink->channel_map);
else
t = pa_sample_spec_to_mime_type_mimefy(&source->sample_spec, &source->channel_map);
- append_property_dict_entry(r, &sub, "mime-type", t);
+ append_property_dict_entry_string(r, &sub, "mime-type", t);
pa_xfree(t);
pa_assert_se(dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, NULL, &dict));
commit 1a39acce41e1725867458b69ca7844e75b62431c
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 03:52:13 2009 +0200
rescue: make we don't end up in an endless loop when we can't move a sink input
diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
index 7c99a9b..c22711a 100644
--- a/src/modules/module-rescue-streams.c
+++ b/src/modules/module-rescue-streams.c
@@ -31,6 +31,7 @@
#include <pulsecore/modargs.h>
#include <pulsecore/log.h>
#include <pulsecore/namereg.h>
+#include <pulsecore/core-util.h>
#include "module-rescue-streams-symdef.h"
@@ -49,6 +50,7 @@ struct userdata {
static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) {
pa_sink_input *i;
+ uint32_t idx;
pa_sink *target;
pa_assert(c);
@@ -58,15 +60,14 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
if (c->state == PA_CORE_SHUTDOWN)
return PA_HOOK_OK;
- if (!pa_idxset_size(sink->inputs)) {
+ if (pa_idxset_size(sink->inputs) <= 0) {
pa_log_debug("No sink inputs to move away.");
return PA_HOOK_OK;
}
if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SINK)) || target == sink) {
- uint32_t idx;
- for (target = pa_idxset_first(c->sinks, &idx); target; target = pa_idxset_next(c->sinks, &idx))
+ PA_IDXSET_FOREACH(target, c->sinks, idx)
if (target != sink)
break;
@@ -76,20 +77,24 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
}
}
- while ((i = pa_idxset_first(sink->inputs, NULL))) {
+ pa_assert(target != sink);
+
+ PA_IDXSET_FOREACH(i, sink->inputs, idx) {
if (pa_sink_input_move_to(i, target, FALSE) < 0)
- pa_log_warn("Failed to move sink input %u \"%s\" to %s.", i->index, pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME), target->name);
+ 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);
else
- pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index, pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME), target->name);
+ 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_OK;
}
static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void* userdata) {
pa_source_output *o;
pa_source *target;
+ uint32_t idx;
pa_assert(c);
pa_assert(source);
@@ -98,15 +103,14 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
if (c->state == PA_CORE_SHUTDOWN)
return PA_HOOK_OK;
- if (!pa_idxset_size(source->outputs)) {
+ if (pa_idxset_size(source->outputs) <= 0) {
pa_log_debug("No source outputs to move away.");
return PA_HOOK_OK;
}
if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SOURCE)) || target == source) {
- uint32_t idx;
- for (target = pa_idxset_first(c->sources, &idx); target; target = pa_idxset_next(c->sources, &idx))
+ PA_IDXSET_FOREACH(target, c->sources, idx)
if (target != source && !target->monitor_of == !source->monitor_of)
break;
@@ -118,19 +122,20 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
pa_assert(target != source);
- while ((o = pa_idxset_first(source->outputs, NULL))) {
+ PA_IDXSET_FOREACH(o, source->outputs, idx) {
if (pa_source_output_move_to(o, target, FALSE) < 0)
- pa_log_warn("Failed to move source output %u \"%s\" to %s.", o->index, pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME), target->name);
+ 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);
else
- pa_log_info("Sucessfully moved source output %u \"%s\" to %s.", o->index, pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME), target->name);
+ pa_log_info("Sucessfully moved source output %u \"%s\" to %s.", o->index,
+ pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME)), target->name);
}
-
return PA_HOOK_OK;
}
int pa__init(pa_module*m) {
- pa_modargs *ma = NULL;
+ pa_modargs *ma;
struct userdata *u;
pa_assert(m);
@@ -153,10 +158,9 @@ void pa__done(pa_module*m) {
pa_assert(m);
- if (!m->userdata)
+ if (!(u = m->userdata))
return;
- u = m->userdata;
if (u->sink_slot)
pa_hook_slot_free(u->sink_slot);
if (u->source_slot)
commit 763954c467d3f8f9ec1d454b7292d3f1bc155c59
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 19:50:36 2009 +0200
upnp: convert all property names to CamelCase to follow D-Bus spec
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 96c1b41..2c0de58 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -82,12 +82,12 @@ PA_MODULE_USAGE(
" <signal name=\"Updated\">" \
" <arg name=\"path\" type=\"o\"/>" \
" </signal>" \
- " <property name=\"item-count\" type=\"u\" access=\"read\"/>" \
- " <property name=\"container-count\" type=\"u\" access=\"read\"/>" \
+ " <property name=\"ItemCount\" type=\"u\" access=\"read\"/>" \
+ " <property name=\"ContainerCount\" type=\"u\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.Rygel.MediaObject1\">" \
- " <property name=\"icon-name\" type=\"s\" access=\"read\"/>" \
- " <property name=\"display-name\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"IconName\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.freedesktop.DBus.Properties\">" \
" <method name=\"Get\">" \
@@ -121,12 +121,12 @@ PA_MODULE_USAGE(
" <!-- If you are looking for documentation make sure to check out" \
" http://live.gnome.org/Rygel/MediaProviderSpec -->" \
" <interface name=\"org.Rygel.MediaItem1\">" \
- " <property name=\"urls\" type=\"as\" access=\"read\"/>" \
- " <property name=\"mime-type\" type=\"s\" access=\"read\"/>" \
- " <property name=\"type\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"Urls\" type=\"as\" access=\"read\"/>" \
+ " <property name=\"MimeType\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"Type\" type=\"s\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.Rygel.MediaObject1\">" \
- " <property name=\"display-name\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.freedesktop.DBus.Properties\">" \
" <method name=\"Get\">" \
@@ -313,11 +313,11 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &parray, 0,
DBUS_TYPE_INVALID));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, u->display_name);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "icon-name")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "IconName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, "audio-card");
@@ -328,15 +328,15 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_string(r, &sub, "display-name", u->display_name);
- append_property_dict_entry_string(r, &sub, "icon-name", "audio-card");
+ append_property_dict_entry_string(r, &sub, "DisplayName", u->display_name);
+ append_property_dict_entry_string(r, &sub, "IconName", "audio-card");
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "item-count")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, 0);
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "container-count")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, 2);
@@ -347,8 +347,8 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_unsigned(r, &sub, "item-count", 0);
- append_property_dict_entry_unsigned(r, &sub, "container-count", 2);
+ append_property_dict_entry_unsigned(r, &sub, "ItemCount", 0);
+ append_property_dict_entry_unsigned(r, &sub, "ContainerCount", 2);
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
@@ -470,7 +470,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_xfree(array);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -488,13 +488,13 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_string(m, &sub, "display-name",
+ append_property_dict_entry_string(m, &sub, "DisplayName",
pa_streq(path, OBJECT_SINKS) ?
_("Output Devices") :
_("Input Devices"));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "item-count")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL,
@@ -502,7 +502,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_idxset_size(u->core->sinks) :
pa_idxset_size(u->core->sources));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "container-count")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, 0);
@@ -513,11 +513,11 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_unsigned(r, &sub, "item-count",
+ append_property_dict_entry_unsigned(r, &sub, "ItemCount",
pa_streq(path, OBJECT_SINKS) ?
pa_idxset_size(u->core->sinks) :
pa_idxset_size(u->core->sources));
- append_property_dict_entry_unsigned(r, &sub, "container-count", 0);
+ append_property_dict_entry_unsigned(r, &sub, "ContainerCount", 0);
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
pa_strbuf *sb;
@@ -567,15 +567,15 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
if (!sink && !source)
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- if (message_is_property_get(m, "org.Rygel.MediaObject1", "display-name")) {
+ if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "type")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "Type")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, "audio");
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "mime-type")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "MimeType")) {
char *t;
if (sink)
@@ -587,7 +587,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
append_variant_string(r, NULL, t);
pa_xfree(t);
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "urls")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "Urls")) {
DBusMessageIter iter, sub, array;
char *url;
@@ -612,7 +612,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_string(r, &sub, "display-name", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ append_property_dict_entry_string(r, &sub, "DisplayName", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (message_is_property_get_all(m, "org.Rygel.MediaItem1")) {
@@ -624,14 +624,14 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_string(r, &sub, "type", "audio");
+ append_property_dict_entry_string(r, &sub, "Type", "audio");
if (sink)
t = pa_sample_spec_to_mime_type_mimefy(&sink->sample_spec, &sink->channel_map);
else
t = pa_sample_spec_to_mime_type_mimefy(&source->sample_spec, &source->channel_map);
- append_property_dict_entry_string(r, &sub, "mime-type", t);
+ append_property_dict_entry_string(r, &sub, "MimeType", t);
pa_xfree(t);
pa_assert_se(dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, NULL, &dict));
commit 0921b1b4a30cb21da0009e07a4b18c5443e60001
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 14 19:51:05 2009 +0200
shm: rework alignment when punching memory
diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c
index 5b9e960..fab2b3b 100644
--- a/src/pulsecore/shm.c
+++ b/src/pulsecore/shm.c
@@ -69,7 +69,10 @@
#define SHM_MARKER ((int) 0xbeefcafe)
/* We now put this SHM marker at the end of each segment. It's
- * optional, to not require a reboot when upgrading, though */
+ * optional, to not require a reboot when upgrading, though. Note that
+ * on multiarch systems 32bit and 64bit processes might access this
+ * region simultaneously. The header fields need to be independant
+ * from the process' word with */
struct shm_marker {
pa_atomic_t marker; /* 0xbeefcafe */
pa_atomic_t pid;
@@ -79,6 +82,8 @@ struct shm_marker {
uint64_t _reserved4;
} PA_GCC_PACKED;
+#define SHM_MARKER_SIZE PA_ALIGN(sizeof(struct shm_marker))
+
static char *segment_name(char *fn, size_t l, unsigned id) {
pa_snprintf(fn, l, "/pulse-shm-%u", id);
return fn;
@@ -97,15 +102,15 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) {
* ones */
pa_shm_cleanup();
- /* Round up to make it aligned */
- size = PA_ALIGN(size);
+ /* Round up to make it page aligned */
+ size = PA_PAGE_ALIGN(size);
if (!shared) {
m->id = 0;
m->size = size;
#ifdef MAP_ANONYMOUS
- if ((m->ptr = mmap(NULL, PA_PAGE_ALIGN(m->size), PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, (off_t) 0)) == MAP_FAILED) {
+ if ((m->ptr = mmap(NULL, m->size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, (off_t) 0)) == MAP_FAILED) {
pa_log("mmap() failed: %s", pa_cstrerror(errno));
goto fail;
}
@@ -136,7 +141,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) {
goto fail;
}
- m->size = size + PA_ALIGN(sizeof(struct shm_marker));
+ m->size = size + SHM_MARKER_SIZE;
if (ftruncate(fd, (off_t) m->size) < 0) {
pa_log("ftruncate() failed: %s", pa_cstrerror(errno));
@@ -150,7 +155,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) {
/* We store our PID at the end of the shm block, so that we
* can check for dead shm segments later */
- marker = (struct shm_marker*) ((uint8_t*) m->ptr + m->size - PA_ALIGN(sizeof(struct shm_marker)));
+ marker = (struct shm_marker*) ((uint8_t*) m->ptr + m->size - SHM_MARKER_SIZE);
pa_atomic_store(&marker->pid, (int) getpid());
pa_atomic_store(&marker->marker, SHM_MARKER);
@@ -197,7 +202,7 @@ void pa_shm_free(pa_shm *m) {
#endif
} else {
#ifdef HAVE_SHM_OPEN
- if (munmap(m->ptr, m->size) < 0)
+ if (munmap(m->ptr, PA_PAGE_ALIGN(m->size)) < 0)
pa_log("munmap() failed: %s", pa_cstrerror(errno));
if (m->do_unlink) {
@@ -214,12 +219,12 @@ void pa_shm_free(pa_shm *m) {
#endif
}
- memset(m, 0, sizeof(*m));
+ pa_zero(*m);
}
void pa_shm_punch(pa_shm *m, size_t offset, size_t size) {
void *ptr;
- size_t o, ps;
+ size_t o;
pa_assert(m);
pa_assert(m->ptr);
@@ -233,16 +238,19 @@ void pa_shm_punch(pa_shm *m, size_t offset, size_t size) {
/* You're welcome to implement this as NOOP on systems that don't
* support it */
- /* Align this to multiples of the page size */
+ /* Align the pointer up to multiples of the page size */
ptr = (uint8_t*) m->ptr + offset;
o = (size_t) ((uint8_t*) ptr - (uint8_t*) PA_PAGE_ALIGN_PTR(ptr));
if (o > 0) {
- ps = PA_PAGE_SIZE;
- ptr = (uint8_t*) ptr + (ps - o);
- size -= ps - o;
+ size_t delta = PA_PAGE_SIZE - o;
+ ptr = (uint8_t*) ptr + delta;
+ size -= delta;
}
+ /* Align the size down to multiples of page size */
+ size = (size / PA_PAGE_SIZE) * PA_PAGE_SIZE;
+
#ifdef MADV_REMOVE
if (madvise(ptr, size, MADV_REMOVE) >= 0)
return;
@@ -254,9 +262,9 @@ void pa_shm_punch(pa_shm *m, size_t offset, size_t size) {
#endif
#ifdef MADV_DONTNEED
- pa_assert_se(madvise(ptr, size, MADV_DONTNEED) == 0);
+ madvise(ptr, size, MADV_DONTNEED);
#elif defined(POSIX_MADV_DONTNEED)
- pa_assert_se(posix_madvise(ptr, size, POSIX_MADV_DONTNEED) == 0);
+ posix_madvise(ptr, size, POSIX_MADV_DONTNEED);
#endif
}
@@ -283,7 +291,7 @@ int pa_shm_attach_ro(pa_shm *m, unsigned id) {
}
if (st.st_size <= 0 ||
- st.st_size > (off_t) (MAX_SHM_SIZE+PA_ALIGN(sizeof(struct shm_marker))) ||
+ st.st_size > (off_t) (MAX_SHM_SIZE+SHM_MARKER_SIZE) ||
PA_ALIGN((size_t) st.st_size) != (size_t) st.st_size) {
pa_log("Invalid shared memory segment size");
goto fail;
@@ -346,12 +354,12 @@ int pa_shm_cleanup(void) {
if (pa_shm_attach_ro(&seg, id) < 0)
continue;
- if (seg.size < PA_ALIGN(sizeof(struct shm_marker))) {
+ if (seg.size < SHM_MARKER_SIZE) {
pa_shm_free(&seg);
continue;
}
- m = (struct shm_marker*) ((uint8_t*) seg.ptr + seg.size - PA_ALIGN(sizeof(struct shm_marker)));
+ m = (struct shm_marker*) ((uint8_t*) seg.ptr + seg.size - SHM_MARKER_SIZE);
if (pa_atomic_load(&m->marker) != SHM_MARKER) {
pa_shm_free(&seg);
commit 862a05f8c8b9d02520c904e4eff0740f1c56f181
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 15 18:38:55 2009 +0200
upnp: update to newest spec
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 2c0de58..080b612 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -23,10 +23,6 @@
#include <config.h>
#endif
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -59,7 +55,7 @@ PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_USAGE(
"display_name=<UPnP Media Server name>");
-/* This implements http://live.gnome.org/action/edit/Rygel/MediaServerSpec */
+/* This implements http://live.gnome.org/Rygel/MediaServerSpec */
#define SERVICE_NAME "org.Rygel.MediaServer1.PulseAudio"
@@ -73,20 +69,16 @@ PA_MODULE_USAGE(
" <!-- If you are looking for documentation make sure to check out" \
" http://live.gnome.org/Rygel/MediaServerSpec -->" \
" <interface name=\"org.Rygel.MediaContainer1\">" \
- " <method name=\"GetContainers\">" \
- " <arg name=\"children\" type=\"ao\" direction=\"out\"/>" \
- " </method>" \
- " <method name=\"GetItems\">" \
- " <arg name=\"children\" type=\"ao\" direction=\"out\"/>" \
- " </method>" \
" <signal name=\"Updated\">" \
" <arg name=\"path\" type=\"o\"/>" \
" </signal>" \
+ " <property name=\"Items\" type=\"ao\" access=\"read\"/>" \
" <property name=\"ItemCount\" type=\"u\" access=\"read\"/>" \
+ " <property name=\"Containers\" type=\"ao\" access=\"read\"/>" \
" <property name=\"ContainerCount\" type=\"u\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.Rygel.MediaObject1\">" \
- " <property name=\"IconName\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"Parent\" type=\"s\" access=\"read\"/>" \
" <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.freedesktop.DBus.Properties\">" \
@@ -121,11 +113,12 @@ PA_MODULE_USAGE(
" <!-- If you are looking for documentation make sure to check out" \
" http://live.gnome.org/Rygel/MediaProviderSpec -->" \
" <interface name=\"org.Rygel.MediaItem1\">" \
- " <property name=\"Urls\" type=\"as\" access=\"read\"/>" \
- " <property name=\"MimeType\" type=\"s\" access=\"read\"/>" \
+ " <property name=\"URLs\" type=\"as\" access=\"read\"/>" \
+ " <property name=\"MIMEType\" type=\"s\" access=\"read\"/>" \
" <property name=\"Type\" type=\"s\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.Rygel.MediaObject1\">" \
+ " <property name=\"Parent\" type=\"s\" access=\"read\"/>" \
" <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
" <interface name=\"org.freedesktop.DBus.Properties\">" \
@@ -234,6 +227,28 @@ static pa_bool_t message_is_property_get_all(DBusMessage *m, const char *interfa
return pa_streq(i, interface);
}
+static void append_variant_object_array(DBusMessage *m, DBusMessageIter *iter, const char *path[], unsigned n) {
+ DBusMessageIter _iter, variant, array;
+ unsigned c;
+
+ pa_assert(m);
+ pa_assert(path);
+
+ if (!iter) {
+ dbus_message_iter_init_append(m, &_iter);
+ iter = &_iter;
+ }
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, "ao", &variant));
+ pa_assert_se(dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, "o", &array));
+
+ for (c = 0; c < n; c++)
+ pa_assert_se(dbus_message_iter_append_basic(&array, DBUS_TYPE_OBJECT_PATH, path + c));
+
+ pa_assert_se(dbus_message_iter_close_container(&variant, &array));
+ pa_assert_se(dbus_message_iter_close_container(iter, &variant));
+}
+
static void append_variant_string(DBusMessage *m, DBusMessageIter *iter, const char *s) {
DBusMessageIter _iter, sub;
@@ -250,6 +265,22 @@ static void append_variant_string(DBusMessage *m, DBusMessageIter *iter, const c
pa_assert_se(dbus_message_iter_close_container(iter, &sub));
}
+static void append_variant_object(DBusMessage *m, DBusMessageIter *iter, const char *s) {
+ DBusMessageIter _iter, sub;
+
+ pa_assert(m);
+ pa_assert(s);
+
+ if (!iter) {
+ dbus_message_iter_init_append(m, &_iter);
+ iter = &_iter;
+ }
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, "o", &sub));
+ pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &s));
+ pa_assert_se(dbus_message_iter_close_container(iter, &sub));
+}
+
static void append_variant_unsigned(DBusMessage *m, DBusMessageIter *iter, unsigned u) {
DBusMessageIter _iter, sub;
@@ -265,6 +296,17 @@ static void append_variant_unsigned(DBusMessage *m, DBusMessageIter *iter, unsig
pa_assert_se(dbus_message_iter_close_container(iter, &sub));
}
+static void append_property_dict_entry_object_array(DBusMessage *m, DBusMessageIter *iter, const char *name, const char *path[], unsigned n) {
+ DBusMessageIter sub;
+
+ pa_assert(iter);
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &sub));
+ pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &name));
+ append_variant_object_array(m, &sub, path, n);
+ pa_assert_se(dbus_message_iter_close_container(iter, &sub));
+}
+
static void append_property_dict_entry_string(DBusMessage *m, DBusMessageIter *iter, const char *name, const char *value) {
DBusMessageIter sub;
@@ -276,6 +318,17 @@ static void append_property_dict_entry_string(DBusMessage *m, DBusMessageIter *i
pa_assert_se(dbus_message_iter_close_container(iter, &sub));
}
+static void append_property_dict_entry_object(DBusMessage *m, DBusMessageIter *iter, const char *name, const char *value) {
+ DBusMessageIter sub;
+
+ pa_assert(iter);
+
+ pa_assert_se(dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &sub));
+ pa_assert_se(dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &name));
+ append_variant_object(m, &sub, value);
+ pa_assert_se(dbus_message_iter_close_container(iter, &sub));
+}
+
static void append_property_dict_entry_unsigned(DBusMessage *m, DBusMessageIter *iter, const char *name, unsigned u) {
DBusMessageIter sub;
@@ -287,68 +340,60 @@ static void append_property_dict_entry_unsigned(DBusMessage *m, DBusMessageIter
pa_assert_se(dbus_message_iter_close_container(iter, &sub));
}
+static const char *array_root_containers[] = { OBJECT_SINKS, OBJECT_SOURCES };
+static const char *array_no_children[] = { };
+
static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
struct userdata *u = userdata;
DBusMessage *r = NULL;
pa_assert(u);
- if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetContainers")) {
- const char * array[] = { OBJECT_SINKS, OBJECT_SOURCES };
- const char ** parray = array;
-
+ if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Containers")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- pa_assert_se(dbus_message_append_args(
- r,
- DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &parray, 2,
- DBUS_TYPE_INVALID));
-
- } else if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetItems")) {
- const char * array[] = { };
- const char ** parray = array;
+ append_variant_object_array(r, NULL, (const char**) array_root_containers, PA_ELEMENTSOF(array_root_containers));
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- pa_assert_se(dbus_message_append_args(
- r,
- DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &parray, 0,
- DBUS_TYPE_INVALID));
+ append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_root_containers));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Items")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, NULL, u->display_name);
+ append_variant_object_array(r, NULL, array_no_children, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "IconName")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_string(r, NULL, "audio-card");
+ append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_string(r, &sub, "DisplayName", u->display_name);
- append_property_dict_entry_string(r, &sub, "IconName", "audio-card");
+ append_property_dict_entry_object_array(r, &sub, "Containers", array_root_containers, PA_ELEMENTSOF(array_root_containers));
+ append_property_dict_entry_unsigned(r, &sub, "ContainerCount", PA_ELEMENTSOF(array_root_containers));
+ append_property_dict_entry_object_array(r, &sub, "Items", array_no_children, PA_ELEMENTSOF(array_no_children));
+ append_property_dict_entry_unsigned(r, &sub, "ItemCount", PA_ELEMENTSOF(array_no_children));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_unsigned(r, NULL, 0);
+ append_variant_object(r, NULL, OBJECT_ROOT);
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_unsigned(r, NULL, 2);
+ append_variant_string(r, NULL, u->display_name);
- } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_unsigned(r, &sub, "ItemCount", 0);
- append_property_dict_entry_unsigned(r, &sub, "ContainerCount", 2);
+ append_property_dict_entry_string(r, &sub, "DisplayName", u->display_name);
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
@@ -408,6 +453,49 @@ static char *compute_url(struct userdata *u, const char *name) {
return pa_sprintf_malloc("http://@ADDRESS@:4714/listen/source/%s", name);
}
+static char **child_array(struct userdata *u, const char *path, unsigned *n) {
+ unsigned m;
+ uint32_t idx;
+ char **array;
+
+ pa_assert(u);
+ pa_assert(path);
+ pa_assert(n);
+
+ if (pa_streq(path, OBJECT_SINKS))
+ m = pa_idxset_size(u->core->sinks);
+ else
+ m = pa_idxset_size(u->core->sources);
+
+ array = pa_xnew(char*, m);
+ *n = 0;
+
+ if (pa_streq(path, OBJECT_SINKS)) {
+ pa_sink *sink;
+
+ PA_IDXSET_FOREACH(sink, u->core->sinks, idx)
+ array[(*n)++] = pa_sprintf_malloc(OBJECT_SINKS "/%u", sink->index);
+ } else {
+ pa_source *source;
+
+ PA_IDXSET_FOREACH(source, u->core->sources, idx)
+ if (!source->monitor_of)
+ array[(*n)++] = pa_sprintf_malloc(OBJECT_SOURCES "/%u", source->index);
+ }
+
+ pa_assert((*n) <= m);
+
+ return array;
+}
+
+static void free_child_array(char **array, unsigned n) {
+
+ for (; n >= 1; n--)
+ pa_xfree(array[n-1]);
+
+ pa_xfree(array);
+}
+
static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
struct userdata *u = userdata;
DBusMessage *r = NULL;
@@ -421,59 +509,60 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
/* Container nodes */
- if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetContainers")) {
-
- const char * array[] = { };
- const char ** parray = array;
+ if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Containers")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_object_array(r, NULL, array_no_children, PA_ELEMENTSOF(array_no_children));
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
- pa_assert_se(dbus_message_append_args(
- r,
- DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &parray, 0,
- DBUS_TYPE_INVALID));
+ append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_no_children));
- } else if (dbus_message_is_method_call(m, "org.Rygel.MediaContainer1", "GetItems")) {
- unsigned n, i = 0;
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Items")) {
char ** array;
- uint32_t idx;
+ unsigned n;
- if (pa_streq(path, OBJECT_SINKS))
- n = pa_idxset_size(u->core->sinks);
- else
- n = pa_idxset_size(u->core->sources);
+ array = child_array(u, path, &n);
- array = pa_xnew(char*, n);
-
- if (pa_streq(path, OBJECT_SINKS)) {
- pa_sink *sink;
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_object_array(r, NULL, (const char**) array, n);
- PA_IDXSET_FOREACH(sink, u->core->sinks, idx)
- array[i++] = pa_sprintf_malloc(OBJECT_SINKS "/%u", sink->index);
- } else {
- pa_source *source;
+ free_child_array(array, n);
- PA_IDXSET_FOREACH(source, u->core->sources, idx)
- if (!source->monitor_of)
- array[i++] = pa_sprintf_malloc(OBJECT_SOURCES "/%u", source->index);
- }
+ } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_unsigned(r, NULL,
+ pa_streq(path, OBJECT_SINKS) ?
+ pa_idxset_size(u->core->sinks) :
+ pa_idxset_size(u->core->sources));
- pa_assert(i <= n);
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ DBusMessageIter iter, sub;
+ char **array;
+ unsigned n;
pa_assert_se(r = dbus_message_new_method_return(m));
- pa_assert_se(dbus_message_append_args(
- r,
- DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &array, i,
- DBUS_TYPE_INVALID));
+ dbus_message_iter_init_append(r, &iter);
- for (; i >= 1; i--)
- pa_xfree(array[i-1]);
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry_object_array(r, &sub, "Containers", array_no_children, PA_ELEMENTSOF(array_no_children));
+ append_property_dict_entry_unsigned(r, &sub, "ContainerCount", 0);
- pa_xfree(array);
+ array = child_array(u, path, &n);
+ append_property_dict_entry_object_array(r, &sub, "Items", (const char**) array, n);
+ free_child_array(array, n);
+ append_property_dict_entry_unsigned(r, &sub, "ItemCount",
+ pa_streq(path, OBJECT_SINKS) ?
+ pa_idxset_size(u->core->sinks) :
+ pa_idxset_size(u->core->sources));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_object(r, NULL, OBJECT_ROOT);
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r,
NULL,
pa_streq(path, OBJECT_SINKS) ?
@@ -488,37 +577,13 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
dbus_message_iter_init_append(r, &iter);
pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry_object(m, &sub, "Parent", OBJECT_ROOT);
append_property_dict_entry_string(m, &sub, "DisplayName",
pa_streq(path, OBJECT_SINKS) ?
_("Output Devices") :
_("Input Devices"));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
- pa_assert_se(r = dbus_message_new_method_return(m));
-
- append_variant_unsigned(r, NULL,
- pa_streq(path, OBJECT_SINKS) ?
- pa_idxset_size(u->core->sinks) :
- pa_idxset_size(u->core->sources));
-
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
- pa_assert_se(r = dbus_message_new_method_return(m));
- append_variant_unsigned(r, NULL, 0);
-
- } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
- DBusMessageIter iter, sub;
-
- pa_assert_se(r = dbus_message_new_method_return(m));
- dbus_message_iter_init_append(r, &iter);
-
- pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_unsigned(r, &sub, "ItemCount",
- pa_streq(path, OBJECT_SINKS) ?
- pa_idxset_size(u->core->sinks) :
- pa_idxset_size(u->core->sources));
- append_property_dict_entry_unsigned(r, &sub, "ContainerCount", 0);
- pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
} else if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
pa_strbuf *sb;
char *xml;
@@ -567,15 +632,30 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
if (!sink && !source)
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ append_variant_object(r, NULL, sink ? OBJECT_SINKS : OBJECT_SOURCES);
+
+ } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ DBusMessageIter iter, sub;
+
+ pa_assert_se(r = dbus_message_new_method_return(m));
+ dbus_message_iter_init_append(r, &iter);
+
+ pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
+ append_property_dict_entry_object(r, &sub, "Parent", sink ? OBJECT_SINKS : OBJECT_SOURCES);
+ append_property_dict_entry_string(r, &sub, "DisplayName", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
+ pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
+
} else if (message_is_property_get(m, "org.Rygel.MediaItem1", "Type")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, "audio");
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "MimeType")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "MIMEType")) {
char *t;
if (sink)
@@ -587,7 +667,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
append_variant_string(r, NULL, t);
pa_xfree(t);
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "Urls")) {
+ } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "URLs")) {
DBusMessageIter iter, sub, array;
char *url;
@@ -605,16 +685,6 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_xfree(url);
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
- DBusMessageIter iter, sub;
-
- pa_assert_se(r = dbus_message_new_method_return(m));
- dbus_message_iter_init_append(r, &iter);
-
- pa_assert_se(dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub));
- append_property_dict_entry_string(r, &sub, "DisplayName", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
-
} else if (message_is_property_get_all(m, "org.Rygel.MediaItem1")) {
DBusMessageIter iter, sub, dict, variant, array;
char *url, *t;
@@ -631,7 +701,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
else
t = pa_sample_spec_to_mime_type_mimefy(&source->sample_spec, &source->channel_map);
- append_property_dict_entry_string(r, &sub, "MimeType", t);
+ append_property_dict_entry_string(r, &sub, "MIMEType", t);
pa_xfree(t);
pa_assert_se(dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, NULL, &dict));
commit 0de6877934cd70874b7baa7e9ab416c43b7f9fc5
Author: Diego Elio 'Flameeyes' Pettenò <flameeyes at gmail.com>
Date: Fri May 15 22:43:56 2009 +0200
Don't use == for comparison in tests. Fix build with non-bash shells.
diff --git a/configure.ac b/configure.ac
index 16e6648..37b9fc5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -608,30 +608,30 @@ AC_ARG_WITH(
[database],
AS_HELP_STRING([--with-database=auto|tdb|gdbm],[Choose database backend.]),[],[with_database=auto])
-if test "x${with_database}" == "xauto" -o "x${with_database}" == "xtdb" ; then
+if test "x${with_database}" = "xauto" -o "x${with_database}" = "xtdb" ; then
PKG_CHECK_MODULES(TDB, [ tdb ],
[
HAVE_TDB=1
with_database=tdb
], [
- if test "x${with_database}" == "xtdb" ; then
+ if test "x${with_database}" = "xtdb" ; then
AC_MSG_ERROR([*** tdb not found])
fi
])
fi
-if test "x${with_database}" == "xauto" -o "x${with_database}" == "xgdbm" ; then
+if test "x${with_database}" = "xauto" -o "x${with_database}" = "xgdbm" ; then
have_gdbm=yes
AC_CHECK_LIB(gdbm, gdbm_open, [], [have_gdbm=no])
AC_CHECK_HEADERS(gdbm.h, [], [have_gdbm=no])
- if test "x${have_gdbm}" == "xyes" ; then
+ if test "x${have_gdbm}" = "xyes" ; then
HAVE_GDBM=1
GDBM_CFLAGS=
GDBM_LIBS=-lgdbm
with_database=gdbm
- elif test "x${with_database}" == "xgdbm"; then
+ elif test "x${with_database}" = "xgdbm"; then
AC_MSG_ERROR([*** gdbm not found])
fi
fi
commit d45c909ab37630c772c1852082cee90086e70b03
Author: Diego Elio 'Flameeyes' Pettenò <flameeyes at gmail.com>
Date: Fri May 15 23:09:59 2009 +0200
When MAP_ANONYMOUS is missing, fallback to MAP_ANON.
While the latter is deprecated on modern systems like glibc-based ones,
FreeBSD (and probably others) still use it, so make sure it falls back if
the new one is missing.
diff --git a/src/pulsecore/memtrap.c b/src/pulsecore/memtrap.c
index 601fef4..e06f60c 100644
--- a/src/pulsecore/memtrap.c
+++ b/src/pulsecore/memtrap.c
@@ -26,6 +26,11 @@
#include <signal.h>
#include <sys/mman.h>
+/* This is deprecated on glibc but is still used by FreeBSD */
+#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
+# define MAP_ANONYMOUS MAP_ANON
+#endif
+
#include <pulse/xmalloc.h>
#include <pulsecore/core-util.h>
commit 99f254103818390ae4577ef77f288759d3c8f152
Author: Diego Elio 'Flameeyes' Pettenò <flameeyes at gmail.com>
Date: Fri May 15 23:42:29 2009 +0200
Add missing include directory path for OSS modules.
diff --git a/src/Makefile.am b/src/Makefile.am
index 49a0c69..b6c98fc 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -56,6 +56,8 @@ AM_CFLAGS = \
-I$(top_builddir)/src/modules/gconf \
-I$(top_srcdir)/src/modules/bluetooth \
-I$(top_builddir)/src/modules/bluetooth \
+ -I$(top_srcdir)/src/modules/oss \
+ -I$(top_builddir)/src/modules/oss \
-I$(top_srcdir)/src/modules/alsa \
-I$(top_builddir)/src/modules/alsa \
-I$(top_srcdir)/src/modules/raop \
commit ff5b7fb222db265dfbc5f44dc3d55ce6396d78ca
Author: Diego Elio 'Flameeyes' Pettenò <flameeyes at gmail.com>
Date: Fri May 15 23:42:43 2009 +0200
Add missing headers' include to build on FreeBSD 7.1.
diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c
index 629328a..cb037de 100644
--- a/src/modules/rtp/rtsp_client.c
+++ b/src/modules/rtp/rtsp_client.c
@@ -30,6 +30,7 @@
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/ioctl.h>
+#include <netinet/in.h>
#ifdef HAVE_SYS_FILIO_H
#include <sys/filio.h>
diff --git a/src/pulsecore/parseaddr.c b/src/pulsecore/parseaddr.c
index 1cd010b..44cd9a0 100644
--- a/src/pulsecore/parseaddr.c
+++ b/src/pulsecore/parseaddr.c
@@ -26,6 +26,7 @@
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>
+#include <sys/socket.h>
#include <pulse/xmalloc.h>
#include <pulse/util.h>
commit ce6643e8c9bbfb466721985bc777fb47c1b26267
Author: Diego Elio 'Flameeyes' Pettenò <flameeyes at gmail.com>
Date: Sun May 17 23:25:23 2009 +0200
Use the _ONCE variation of AC_CHECKs where applicable.
When we're unconditionally looking for a function, or an header file,
without particular libraries set, or with found/not-found conditional code,
we can save ~1K lines in the final configure script by using the _ONCE
variant.
This makes sure that for each header of function, the check is done exactly
once and never more, reducing the amount of code that has to be generated
and executed.
diff --git a/configure.ac b/configure.ac
index 37b9fc5..a3f9f0e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -301,7 +301,7 @@ AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1")
AC_HEADER_STDC
# POSIX
-AC_CHECK_HEADERS([arpa/inet.h glob.h grp.h netdb.h netinet/in.h \
+AC_CHECK_HEADERS_ONCE([arpa/inet.h glob.h grp.h netdb.h netinet/in.h \
netinet/in_systm.h netinet/tcp.h poll.h pwd.h sched.h \
sys/mman.h sys/resource.h sys/select.h sys/socket.h sys/wait.h \
sys/uio.h syslog.h sys/dl.h dlfcn.h linux/sockios.h])
@@ -325,23 +325,23 @@ AC_CHECK_HEADERS([linux/input.h], [HAVE_EVDEV=1], [HAVE_EVDEV=0])
AM_CONDITIONAL([HAVE_EVDEV], [test "x$HAVE_EVDEV" = "x1"])
-AC_CHECK_HEADERS([sys/prctl.h])
+AC_CHECK_HEADERS_ONCE([sys/prctl.h])
# Solaris
-AC_CHECK_HEADERS([sys/filio.h])
+AC_CHECK_HEADERS_ONCE([sys/filio.h])
# Windows
-AC_CHECK_HEADERS([windows.h winsock2.h ws2tcpip.h])
+AC_CHECK_HEADERS_ONCE([windows.h winsock2.h ws2tcpip.h])
# NetBSD
-AC_CHECK_HEADERS([sys/atomic.h])
+AC_CHECK_HEADERS_ONCE([sys/atomic.h])
# Other
-AC_CHECK_HEADERS([sys/ioctl.h])
-AC_CHECK_HEADERS([byteswap.h])
-AC_CHECK_HEADERS([sys/syscall.h])
-AC_CHECK_HEADERS([sys/eventfd.h])
-AC_CHECK_HEADERS([execinfo.h])
+AC_CHECK_HEADERS_ONCE([sys/ioctl.h])
+AC_CHECK_HEADERS_ONCE([byteswap.h])
+AC_CHECK_HEADERS_ONCE([sys/syscall.h])
+AC_CHECK_HEADERS_ONCE([sys/eventfd.h])
+AC_CHECK_HEADERS_ONCE([execinfo.h])
#### Typdefs, structures, etc. ####
@@ -395,13 +395,13 @@ AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])])
#### Check for functions ####
# ISO
-AC_CHECK_FUNCS([lrintf strtof])
+AC_CHECK_FUNCS_ONCE([lrintf strtof])
# POSIX
AC_FUNC_FORK
AC_FUNC_GETGROUPS
AC_FUNC_SELECT_ARGTYPES
-AC_CHECK_FUNCS([chmod chown clock_gettime getaddrinfo getgrgid_r getgrnam_r \
+AC_CHECK_FUNCS_ONCE([chmod chown clock_gettime getaddrinfo getgrgid_r getgrnam_r \
getpwnam_r getpwuid_r gettimeofday getuid inet_ntop inet_pton mlock nanosleep \
pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
sigaction sleep sysconf pthread_setaffinity_np])
@@ -410,20 +410,20 @@ AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")
# X/OPEN
-AC_CHECK_FUNCS([readlink])
+AC_CHECK_FUNCS_ONCE([readlink])
# SUSv2
-AC_CHECK_FUNCS([ctime_r usleep])
+AC_CHECK_FUNCS_ONCE([ctime_r usleep])
# SUSv3
-AC_CHECK_FUNCS([strerror_r])
+AC_CHECK_FUNCS_ONCE([strerror_r])
# BSD
-AC_CHECK_FUNCS([lstat])
+AC_CHECK_FUNCS_ONCE([lstat])
# Non-standard
-AC_CHECK_FUNCS([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtof_l])
+AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtof_l])
AC_FUNC_ALLOCA
@@ -456,7 +456,7 @@ AC_DEFINE_UNQUOTED(PA_CFLAGS,"$CFLAGS", [The CFLAGS used during compilation])
AC_SYS_LARGEFILE
# Check for open64 to know if the current system does have open64() and similar functions
-AC_CHECK_FUNCS([open64])
+AC_CHECK_FUNCS_ONCE([open64])
#### [lib]iconv ####
@@ -535,7 +535,7 @@ fi
#### Valgrind (optional) ####
-AC_CHECK_HEADERS([valgrind/memcheck.h])
+AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
#### Sound file ####
commit e7bca90775222145224425980c1d44580a7a2c8d
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue May 19 18:18:36 2009 +0200
upnp: s/url/URL/ in GetAll() D-Bus call
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 080b612..cb9ec92 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -688,7 +688,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
} else if (message_is_property_get_all(m, "org.Rygel.MediaItem1")) {
DBusMessageIter iter, sub, dict, variant, array;
char *url, *t;
- const char *un = "urls";
+ const char *un = "URLs";
pa_assert_se(r = dbus_message_new_method_return(m));
dbus_message_iter_init_append(r, &iter);
commit 000bdb8d2545a3d6c09a7b154f09e6c4c045018d
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 22 01:30:54 2009 +0200
volume: change pa_volume_t mapping to cubic
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index a9622e7..e48c777 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -120,20 +120,28 @@ pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) / v);
}
-#define USER_DECIBEL_RANGE 90
+/* Amplitude, not power */
+static double linear_to_dB(double v) {
+ return 20.0 * log10(v);
+}
+
+static double dB_to_linear(double v) {
+ return pow(10.0, v / 20.0);
+}
pa_volume_t pa_sw_volume_from_dB(double dB) {
- if (isinf(dB) < 0 || dB <= -USER_DECIBEL_RANGE)
+ if (isinf(dB) < 0 || dB <= PA_DECIBEL_MININFTY)
return PA_VOLUME_MUTED;
- return (pa_volume_t) lrint(ceil((dB/USER_DECIBEL_RANGE+1.0)*PA_VOLUME_NORM));
+ return pa_sw_volume_from_linear(dB_to_linear(dB));
}
double pa_sw_volume_to_dB(pa_volume_t v) {
- if (v == PA_VOLUME_MUTED)
+
+ if (v <= PA_VOLUME_MUTED)
return PA_DECIBEL_MININFTY;
- return ((double) v/PA_VOLUME_NORM-1)*USER_DECIBEL_RANGE;
+ return linear_to_dB(pa_sw_volume_to_linear(v));
}
pa_volume_t pa_sw_volume_from_linear(double v) {
@@ -141,18 +149,28 @@ pa_volume_t pa_sw_volume_from_linear(double v) {
if (v <= 0.0)
return PA_VOLUME_MUTED;
- if (v > .999 && v < 1.001)
- return PA_VOLUME_NORM;
+ /*
+ * We use a cubic mapping here, as suggested and discussed here:
+ *
+ * http://www.robotplanet.dk/audio/audio_gui_design/
+ * http://lists.linuxaudio.org/pipermail/linux-audio-dev/2009-May/thread.html#23151
+ */
- return pa_sw_volume_from_dB(20.0*log10(v));
+ return (pa_volume_t) (cbrt(v) * PA_VOLUME_NORM);
}
double pa_sw_volume_to_linear(pa_volume_t v) {
+ double f;
- if (v == PA_VOLUME_MUTED)
+ if (v <= PA_VOLUME_MUTED)
return 0.0;
- return pow(10.0, pa_sw_volume_to_dB(v)/20.0);
+ if (v == PA_VOLUME_NORM)
+ return 1.0;
+
+ f = ((double) v / PA_VOLUME_NORM);
+
+ return f*f*f;
}
char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
@@ -225,7 +243,7 @@ char *pa_sw_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c) {
l -= pa_snprintf(e, l, "%s%u: %0.2f dB",
first ? "" : " ",
channel,
- isinf(f) < 0 || f <= -USER_DECIBEL_RANGE ? -INFINITY : f);
+ isinf(f) < 0 || f <= PA_DECIBEL_MININFTY ? -INFINITY : f);
e = strchr(e, 0);
first = FALSE;
@@ -249,7 +267,7 @@ char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v) {
f = pa_sw_volume_to_dB(v);
pa_snprintf(s, l, "%0.2f dB",
- isinf(f) < 0 || f <= -USER_DECIBEL_RANGE ? -INFINITY : f);
+ isinf(f) < 0 || f <= PA_DECIBEL_MININFTY ? -INFINITY : f);
return s;
}
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index ddedca7..b567778 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -212,10 +212,10 @@ pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) PA_GCC_CONST;
* *dest. This is only valid for software volumes! \since 0.9.13 */
pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
-/** Convert a decibel value to a volume. This is only valid for software volumes! */
+/** Convert a decibel value to a volume (amplitude, not power). This is only valid for software volumes! */
pa_volume_t pa_sw_volume_from_dB(double f) PA_GCC_CONST;
-/** Convert a volume to a decibel value. This is only valid for software volumes! */
+/** Convert a volume to a decibel value (amplitude, not power). This is only valid for software volumes! */
double pa_sw_volume_to_dB(pa_volume_t v) PA_GCC_CONST;
/** Convert a linear factor to a volume. This is only valid for software volumes! */
@@ -227,7 +227,7 @@ double pa_sw_volume_to_linear(pa_volume_t v) PA_GCC_CONST;
#ifdef INFINITY
#define PA_DECIBEL_MININFTY ((double) -INFINITY)
#else
-/** This value is used as minus infinity when using pa_volume_{to,from}_dB(). */
+/** This floor value is used as minus infinity when using pa_volume_{to,from}_dB(). */
#define PA_DECIBEL_MININFTY ((double) -200.0)
#endif
commit ce3fbb5268b68681b86e58eec8bd88c41bc393c9
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 22 01:31:26 2009 +0200
tests: show dB in volume-ui.py
diff --git a/src/tests/volume-ui.py b/src/tests/volume-ui.py
index 6dc1c47..7909b80 100644
--- a/src/tests/volume-ui.py
+++ b/src/tests/volume-ui.py
@@ -111,6 +111,10 @@ class CVolume(Structure):
_set_fade.restype = c_void_p
_set_fade.argtypes = [c_void_p, c_void_p, c_float]
+ _to_dB = libpulse.pa_sw_volume_to_dB
+ _to_dB.restype = c_double
+ _to_dB.argytpes = [c_uint32]
+
def snprint(this):
s = create_string_buffer(320)
r = this._snprint(s, len(s), byref(this))
@@ -138,6 +142,12 @@ class CVolume(Structure):
def set_fade(this, cm, f):
return this._set_fade(byref(this), byref(cm), f)
+ def to_dB(this, channel = None):
+ if channel is None:
+ return this._to_dB(this.max())
+
+ return this._to_dB(this.values[channel])
+
cm = ChannelMap()
if len(sys.argv) > 1:
@@ -149,7 +159,7 @@ v = CVolume()
v.channels = cm.channels
for i in range(cm.channels):
- v.values[i] = 65536/2
+ v.values[i] = 65536
title = cm.to_pretty_name()
if title is None:
@@ -163,6 +173,7 @@ vbox = gtk.VBox(spacing=6)
channel_labels = {}
channel_scales = {}
+channel_dB_labels = {}
def update_volume(update_channels = True, update_fade = True, update_balance = True, update_scale = True):
if update_channels:
@@ -178,6 +189,11 @@ def update_volume(update_channels = True, update_fade = True, update_balance = T
if update_fade:
fade_scale.set_value(v.get_fade(cm))
+ for i in range(cm.channels):
+ channel_dB_labels[i].set_label("%0.2f dB" % v.to_dB(i))
+
+ value_dB_label.set_label("%0.2f dB" % v.to_dB())
+
def fade_value_changed(fs):
v.set_fade(cm, fade_scale.get_value())
update_volume(update_fade = False)
@@ -200,19 +216,26 @@ for i in range(cm.channels):
vbox.pack_start(channel_labels[i], expand=False, fill=True)
channel_scales[i] = gtk.HScale()
- channel_scales[i].set_range(0, 65536)
+ channel_scales[i].set_range(0, 65536*3/2)
channel_scales[i].set_digits(0)
channel_scales[i].set_value_pos(gtk.POS_RIGHT)
vbox.pack_start(channel_scales[i], expand=False, fill=True)
+ channel_dB_labels[i] = gtk.Label("-xxx dB")
+ channel_dB_labels[i].set_alignment(1, 1)
+ vbox.pack_start(channel_dB_labels[i], expand=False, fill=True)
+
value_label = gtk.Label("Value")
value_label.set_alignment(0, .5)
vbox.pack_start(value_label, expand=False, fill=True)
value_scale = gtk.HScale()
-value_scale.set_range(0, 65536)
+value_scale.set_range(0, 65536*3/2)
value_scale.set_value_pos(gtk.POS_RIGHT)
value_scale.set_digits(0)
vbox.pack_start(value_scale, expand=False, fill=True)
+value_dB_label = gtk.Label("-xxx dB")
+value_dB_label.set_alignment(1, 1)
+vbox.pack_start(value_dB_label, expand=False, fill=True)
balance_label = gtk.Label("Balance")
balance_label.set_alignment(0, .5)
commit e2aba1521a48a2be42e46e741b0eb7f8b67cae39
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri May 22 01:31:56 2009 +0200
core-util: fall back to sysconf(_SC_OPEN_MAX) to find maximum file descriptor
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 4658eb5..d4956fb 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -2235,7 +2235,7 @@ int pa_close_all(int except_fd, ...) {
int pa_close_allv(const int except_fds[]) {
struct rlimit rl;
- int fd;
+ int maxfd, fd;
int saved_errno;
#ifdef __linux__
@@ -2302,10 +2302,12 @@ int pa_close_allv(const int except_fds[]) {
#endif
- if (getrlimit(RLIMIT_NOFILE, &rl) < 0)
- return -1;
+ if (getrlimit(RLIMIT_NOFILE, &rl) >= 0)
+ maxfd = (int) rl.rlim_max;
+ else
+ maxfd = sysconf(_SC_OPEN_MAX);
- for (fd = 3; fd < (int) rl.rlim_max; fd++) {
+ for (fd = 3; fd < maxfd; fd++) {
int i;
pa_bool_t found;
commit f80928495aa41ce54e9ca2c64ab31fb71ce21c23
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun May 24 01:03:34 2009 +0200
channelmap: document how apple's/microsoft's channel names map to ours
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index a2925c1..4f39d8a 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -74,26 +74,30 @@ typedef enum pa_channel_position {
PA_CHANNEL_POSITION_INVALID = -1,
PA_CHANNEL_POSITION_MONO = 0,
- PA_CHANNEL_POSITION_LEFT,
- PA_CHANNEL_POSITION_RIGHT,
- PA_CHANNEL_POSITION_CENTER,
+ PA_CHANNEL_POSITION_FRONT_LEFT, /* Apple calls this 'Left' */
+ PA_CHANNEL_POSITION_FRONT_RIGHT, /* Apple calls this 'Right' */
+ PA_CHANNEL_POSITION_FRONT_CENTER, /* Apple calls this 'Center' */
- PA_CHANNEL_POSITION_FRONT_LEFT = PA_CHANNEL_POSITION_LEFT,
- PA_CHANNEL_POSITION_FRONT_RIGHT = PA_CHANNEL_POSITION_RIGHT,
- PA_CHANNEL_POSITION_FRONT_CENTER = PA_CHANNEL_POSITION_CENTER,
+/** \cond fulldocs */
+ PA_CHANNEL_POSITION_LEFT = PA_CHANNEL_POSITION_FRONT_LEFT,
+ PA_CHANNEL_POSITION_RIGHT = PA_CHANNEL_POSITION_FRONT_RIGHT,
+ PA_CHANNEL_POSITION_CENTER = PA_CHANNEL_POSITION_FRONT_CENTER,
+/** \endcond */
- PA_CHANNEL_POSITION_REAR_CENTER,
- PA_CHANNEL_POSITION_REAR_LEFT,
- PA_CHANNEL_POSITION_REAR_RIGHT,
+ PA_CHANNEL_POSITION_REAR_CENTER, /* Microsoft calls this 'Back Center', Apple calls this 'Center Surround' */
+ PA_CHANNEL_POSITION_REAR_LEFT, /* Microsoft calls this 'Back Left', Apple calls this 'Left Surround' */
+ PA_CHANNEL_POSITION_REAR_RIGHT, /* Microsoft calls this 'Back Right', Apple calls this 'Right Surround' */
- PA_CHANNEL_POSITION_LFE,
+ PA_CHANNEL_POSITION_LFE, /* Microsoft calls this 'Low Frequency', Apple calls this 'LFEScreen' */
+/** \cond fulldocs */
PA_CHANNEL_POSITION_SUBWOOFER = PA_CHANNEL_POSITION_LFE,
+/** \endcond */
- PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
- PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER,
+ PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, /* Apple calls this 'Left Center' */
+ PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, /* Apple calls this 'Right Center */
- PA_CHANNEL_POSITION_SIDE_LEFT,
- PA_CHANNEL_POSITION_SIDE_RIGHT,
+ PA_CHANNEL_POSITION_SIDE_LEFT, /* Apple calls this 'Left Surround Direct' */
+ PA_CHANNEL_POSITION_SIDE_RIGHT, /* Apple calls this 'Right Surround Direct' */
PA_CHANNEL_POSITION_AUX0,
PA_CHANNEL_POSITION_AUX1,
@@ -128,15 +132,15 @@ typedef enum pa_channel_position {
PA_CHANNEL_POSITION_AUX30,
PA_CHANNEL_POSITION_AUX31,
- PA_CHANNEL_POSITION_TOP_CENTER,
+ PA_CHANNEL_POSITION_TOP_CENTER, /* Apple calls this 'Top Center Surround' */
- PA_CHANNEL_POSITION_TOP_FRONT_LEFT,
- PA_CHANNEL_POSITION_TOP_FRONT_RIGHT,
- PA_CHANNEL_POSITION_TOP_FRONT_CENTER,
+ PA_CHANNEL_POSITION_TOP_FRONT_LEFT, /* Apple calls this 'Vertical Height Left' */
+ PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, /* Apple calls this 'Vertical Height Right' */
+ PA_CHANNEL_POSITION_TOP_FRONT_CENTER, /* Apple calls this 'Vertical Height Center' */
- PA_CHANNEL_POSITION_TOP_REAR_LEFT,
- PA_CHANNEL_POSITION_TOP_REAR_RIGHT,
- PA_CHANNEL_POSITION_TOP_REAR_CENTER,
+ PA_CHANNEL_POSITION_TOP_REAR_LEFT, /* Microsoft and Apple call this 'Top Back Left' */
+ PA_CHANNEL_POSITION_TOP_REAR_RIGHT, /* Microsoft and Apple call this 'Top Back Right' */
+ PA_CHANNEL_POSITION_TOP_REAR_CENTER, /* Microsoft and Apple call this 'Top Back Center' */
PA_CHANNEL_POSITION_MAX
} pa_channel_position_t;
commit 3533599579b64d7124451bd60ea57c6f70dd9f35
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:47:09 2009 +0200
upnp: s/org.Rygel./org.gnome.UPnP/ following the newest version of the spec
diff --git a/src/modules/module-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index cb9ec92..4c02e95 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -57,18 +57,18 @@ PA_MODULE_USAGE(
/* This implements http://live.gnome.org/Rygel/MediaServerSpec */
-#define SERVICE_NAME "org.Rygel.MediaServer1.PulseAudio"
+#define SERVICE_NAME "org.gnome.UPnP.MediaServer1.PulseAudio"
-#define OBJECT_ROOT "/org/Rygel/MediaServer1/PulseAudio"
-#define OBJECT_SINKS "/org/Rygel/MediaServer1/PulseAudio/Sinks"
-#define OBJECT_SOURCES "/org/Rygel/MediaServer1/PulseAudio/Sources"
+#define OBJECT_ROOT "/org/gnome/UPnP/MediaServer1/PulseAudio"
+#define OBJECT_SINKS "/org/gnome/UPnP/MediaServer1/PulseAudio/Sinks"
+#define OBJECT_SOURCES "/org/gnome/UPnP/MediaServer1/PulseAudio/Sources"
#define CONTAINER_INTROSPECT_XML_PREFIX \
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
"<node>" \
" <!-- If you are looking for documentation make sure to check out" \
" http://live.gnome.org/Rygel/MediaServerSpec -->" \
- " <interface name=\"org.Rygel.MediaContainer1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaContainer1\">" \
" <signal name=\"Updated\">" \
" <arg name=\"path\" type=\"o\"/>" \
" </signal>" \
@@ -77,7 +77,7 @@ PA_MODULE_USAGE(
" <property name=\"Containers\" type=\"ao\" access=\"read\"/>" \
" <property name=\"ContainerCount\" type=\"u\" access=\"read\"/>" \
" </interface>" \
- " <interface name=\"org.Rygel.MediaObject1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaObject1\">" \
" <property name=\"Parent\" type=\"s\" access=\"read\"/>" \
" <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
@@ -112,12 +112,12 @@ PA_MODULE_USAGE(
"<node>" \
" <!-- If you are looking for documentation make sure to check out" \
" http://live.gnome.org/Rygel/MediaProviderSpec -->" \
- " <interface name=\"org.Rygel.MediaItem1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaItem1\">" \
" <property name=\"URLs\" type=\"as\" access=\"read\"/>" \
" <property name=\"MIMEType\" type=\"s\" access=\"read\"/>" \
" <property name=\"Type\" type=\"s\" access=\"read\"/>" \
" </interface>" \
- " <interface name=\"org.Rygel.MediaObject1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaObject1\">" \
" <property name=\"Parent\" type=\"s\" access=\"read\"/>" \
" <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
@@ -174,7 +174,7 @@ static void send_signal(struct userdata *u, pa_source *s) {
else
parent = OBJECT_SOURCES;
- pa_assert_se(m = dbus_message_new_signal(parent, "org.Rygel.MediaContainer1", "Updated"));
+ pa_assert_se(m = dbus_message_new_signal(parent, "org.gnome.UPnP.MediaContainer1", "Updated"));
pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->bus), m, NULL));
dbus_message_unref(m);
@@ -349,23 +349,23 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
pa_assert(u);
- if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Containers")) {
+ if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Containers")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object_array(r, NULL, (const char**) array_root_containers, PA_ELEMENTSOF(array_root_containers));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_root_containers));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Items")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Items")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object_array(r, NULL, array_no_children, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ItemCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaContainer1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -378,15 +378,15 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
append_property_dict_entry_unsigned(r, &sub, "ItemCount", PA_ELEMENTSOF(array_no_children));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object(r, NULL, OBJECT_ROOT);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, u->display_name);
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaObject1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -509,15 +509,15 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
/* Container nodes */
- if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Containers")) {
+ if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Containers")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object_array(r, NULL, array_no_children, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Items")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Items")) {
char ** array;
unsigned n;
@@ -528,14 +528,14 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
free_child_array(array, n);
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ItemCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL,
pa_streq(path, OBJECT_SINKS) ?
pa_idxset_size(u->core->sinks) :
pa_idxset_size(u->core->sources));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaContainer1")) {
DBusMessageIter iter, sub;
char **array;
unsigned n;
@@ -557,11 +557,11 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object(r, NULL, OBJECT_ROOT);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r,
NULL,
@@ -569,7 +569,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
_("Output Devices") :
_("Input Devices"));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaObject1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -632,15 +632,15 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
if (!sink && !source)
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
+ if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object(r, NULL, sink ? OBJECT_SINKS : OBJECT_SOURCES);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaObject1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -651,11 +651,11 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
append_property_dict_entry_string(r, &sub, "DisplayName", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "Type")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaItem1", "Type")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, "audio");
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "MIMEType")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaItem1", "MIMEType")) {
char *t;
if (sink)
@@ -667,7 +667,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
append_variant_string(r, NULL, t);
pa_xfree(t);
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "URLs")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaItem1", "URLs")) {
DBusMessageIter iter, sub, array;
char *url;
@@ -685,7 +685,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_xfree(url);
- } else if (message_is_property_get_all(m, "org.Rygel.MediaItem1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaItem1")) {
DBusMessageIter iter, sub, dict, variant, array;
char *url, *t;
const char *un = "URLs";
commit 346a708c2c079e646ced407ea15b1475ae9129ad
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:49:47 2009 +0200
sample: introduce pa_sample_format_is_{le,be,ne,re}()
diff --git a/src/map-file b/src/map-file
index d0102ae..c6a576e 100644
--- a/src/map-file
+++ b/src/map-file
@@ -182,6 +182,8 @@ pa_proplist_to_string_sep;
pa_proplist_unset;
pa_proplist_unset_many;
pa_proplist_update;
+pa_sample_format_is_be;
+pa_sample_format_is_le;
pa_sample_format_to_string;
pa_sample_size;
pa_sample_size_of_format;
diff --git a/src/pulse/sample.c b/src/pulse/sample.c
index ed7b1b0..0f19f8e 100644
--- a/src/pulse/sample.c
+++ b/src/pulse/sample.c
@@ -241,3 +241,36 @@ pa_sample_format_t pa_parse_sample_format(const char *format) {
return -1;
}
+
+int pa_sample_format_is_le(pa_sample_format_t f) {
+ pa_assert(f >= PA_SAMPLE_U8);
+ pa_assert(f < PA_SAMPLE_MAX);
+
+ switch (f) {
+ case PA_SAMPLE_S16LE:
+ case PA_SAMPLE_S24LE:
+ case PA_SAMPLE_S32LE:
+ case PA_SAMPLE_S24_32LE:
+ case PA_SAMPLE_FLOAT32LE:
+ return 1;
+
+ case PA_SAMPLE_S16BE:
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_S32BE:
+ case PA_SAMPLE_S24_32BE:
+ case PA_SAMPLE_FLOAT32BE:
+ return 0;
+
+ default:
+ return -1;
+ }
+}
+
+int pa_sample_format_is_be(pa_sample_format_t f) {
+ int r;
+
+ if ((r = pa_sample_format_is_le(f)) < 0)
+ return r;
+
+ return !r;
+}
diff --git a/src/pulse/sample.h b/src/pulse/sample.h
index 138f13c..53d7dea 100644
--- a/src/pulse/sample.h
+++ b/src/pulse/sample.h
@@ -305,6 +305,26 @@ char* pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec *spec);
/** Pretty print a byte size value. (i.e. "2.5 MiB") */
char* pa_bytes_snprint(char *s, size_t l, unsigned v);
+/** Return 1 when the specified format is little endian, return -1
+ * when endianess does not apply to this format. \since 0.9.16 */
+int pa_sample_format_is_le(pa_sample_format_t f) PA_GCC_PURE;
+
+/** Return 1 when the specified format is big endian, return -1 when
+ * endianess does not apply to this format. \since 0.9.16 */
+int pa_sample_format_is_be(pa_sample_format_t f) PA_GCC_PURE;
+
+#ifdef WORDS_BIGENDIAN
+#define pa_sample_format_is_ne(f) pa_sample_format_is_be(f)
+#define pa_sample_format_is_re(f) pa_sample_format_is_le(f)
+#else
+/** Return 1 when the specified format is native endian, return -1
+ * when endianess does not apply to this format. \since 0.9.16 */
+#define pa_sample_format_is_ne(f) pa_sample_format_is_le(f)
+/** Return 1 when the specified format is reverse endian, return -1
+ * when endianess does not apply to this format. \since 0.9.16 */
+#define pa_sample_format_is_re(f) pa_sample_format_is_be(f)
+#endif
+
PA_C_DECL_END
#endif
commit 261a4830fb28f7ae690176cdfbe21607d27d9bcb
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:50:18 2009 +0200
sample: introduce pa_proplist_setp()
diff --git a/src/map-file b/src/map-file
index c6a576e..201e837 100644
--- a/src/map-file
+++ b/src/map-file
@@ -175,6 +175,7 @@ pa_proplist_iterate;
pa_proplist_new;
pa_proplist_set;
pa_proplist_setf;
+pa_proplist_setp;
pa_proplist_sets;
pa_proplist_size;
pa_proplist_to_string;
diff --git a/src/pulse/proplist.c b/src/pulse/proplist.c
index db4c934..c904f53 100644
--- a/src/pulse/proplist.c
+++ b/src/pulse/proplist.c
@@ -140,6 +140,21 @@ static int proplist_setn(pa_proplist *p, const char *key, size_t key_length, con
return 0;
}
+/** Will accept only valid UTF-8 */
+int pa_proplist_setp(pa_proplist *p, const char *pair) {
+ const char *t;
+
+ pa_assert(p);
+ pa_assert(pair);
+
+ if (!(t = strchr(pair, '=')))
+ return -1;
+
+ return proplist_setn(p,
+ pair, t - pair,
+ t + 1, strchr(pair, 0) - t - 1);
+}
+
static int proplist_sethex(pa_proplist *p, const char *key, size_t key_length, const char *value, size_t value_length) {
struct property *prop;
pa_bool_t add = FALSE;
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index 2e7e5ad..7d680d0 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -234,6 +234,14 @@ int pa_proplist_sets(pa_proplist *p, const char *key, const char *value);
/** Append a new string entry to the property list, possibly
* overwriting an already existing entry with the same key. An
* internal copy of the data passed is made. Will accept only valid
+ * UTF-8. The string passed in must contain a '='. Left hand side of
+ * the '=' is used as key name, the right hand side as string
+ * data. \since 0.9.16 */
+int pa_proplist_setp(pa_proplist *p, const char *pair);
+
+/** Append a new string entry to the property list, possibly
+ * overwriting an already existing entry with the same key. An
+ * internal copy of the data passed is made. Will accept only valid
* UTF-8. The data can be passed as printf()-style format string with
* arguments. \since 0.9.11 */
int pa_proplist_setf(pa_proplist *p, const char *key, const char *format, ...) PA_GCC_PRINTF_ATTR(3,4);
commit 01fa34ba8a2be006964b87e5e19a2c955bf7131e
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:51:34 2009 +0200
channelmap: introduce pa_channel_map_mask() and pa_channel_position_mask_t
diff --git a/src/map-file b/src/map-file
index 201e837..98a568e 100644
--- a/src/map-file
+++ b/src/map-file
@@ -20,6 +20,7 @@ pa_channel_map_init_auto;
pa_channel_map_init_extend;
pa_channel_map_init_mono;
pa_channel_map_init_stereo;
+pa_channel_map_mask;
pa_channel_map_parse;
pa_channel_map_snprint;
pa_channel_map_superset;
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index fe14df2..4654a9a 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -852,3 +852,15 @@ int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t
return 0;
}
+
+pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) {
+ unsigned c;
+ pa_channel_position_mask_t r = 0;
+
+ pa_return_val_if_fail(pa_channel_map_valid(map), 0);
+
+ for (c = 0; c < map->channels; c++)
+ r |= PA_CHANNEL_POSITION_MASK(map->map[c]);
+
+ return r;
+}
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index 4f39d8a..2aaead0 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -205,6 +205,12 @@ typedef enum pa_channel_position {
#define PA_CHANNEL_POSITION_MAX PA_CHANNEL_POSITION_MAX
/** \endcond */
+/** A mask of channel positions. \since 0.9.16 */
+typedef uint64_t pa_channel_position_mask_t;
+
+/** Makes a bit mask from a channel position. \since 0.9.16 */
+#define PA_CHANNEL_POSITION_MASK(f) ((pa_channel_position_mask_t) (1 << (f)))
+
/** A list of channel mapping definitions for pa_channel_map_init_auto() */
typedef enum pa_channel_map_def {
PA_CHANNEL_MAP_AIFF,
@@ -333,6 +339,9 @@ const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) PA_GCC_PURE
* least once in the channel map. \since 0.9.16 */
int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) PA_GCC_PURE;
+/** Generates a bit mask from a channel map. \since 0.9.16 */
+pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) PA_GCC_PURE;
+
PA_C_DECL_END
#endif
commit 8f23a2edb5c602064b24648088572e61e9aeb395
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:52:31 2009 +0200
proplist: add two new generic properties, media.copyright and media.software
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index 7d680d0..4c791dc 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -39,6 +39,12 @@ PA_C_DECL_BEGIN
/** For streams: localized media artist if applicable, formatted as UTF-8. e.g. "Guns'N'Roses" */
#define PA_PROP_MEDIA_ARTIST "media.artist"
+/** For streams: localized media copyright string if applicable, formatted as UTF-8. e.g. "Evil Record Corp." */
+#define PA_PROP_MEDIA_COPYRIGHT "media.copyright"
+
+/** For streams: localized media generator software string if applicable, formatted as UTF-8. e.g. "Foocrop AudioFrobnicator" */
+#define PA_PROP_MEDIA_SOFTWARE "media.software"
+
/** For streams: media language if applicable, in standard POSIX format. e.g. "de_DE" */
#define PA_PROP_MEDIA_LANGUAGE "media.language"
commit 5f2d848d8e6958f8e83d4ef5100ef9597ff75011
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:54:08 2009 +0200
map-file: add missing channel map/cvolume position functions
diff --git a/src/map-file b/src/map-file
index 98a568e..5cae6d3 100644
--- a/src/map-file
+++ b/src/map-file
@@ -15,6 +15,7 @@ pa_channel_map_can_balance;
pa_channel_map_can_fade;
pa_channel_map_compatible;
pa_channel_map_equal;
+pa_channel_map_has_position;
pa_channel_map_init;
pa_channel_map_init_auto;
pa_channel_map_init_extend;
@@ -117,6 +118,7 @@ pa_cvolume_compatible_with_channel_map;
pa_cvolume_equal;
pa_cvolume_get_balance;
pa_cvolume_get_fade;
+pa_cvolume_get_position;
pa_cvolume_init;
pa_cvolume_max;
pa_cvolume_remap;
@@ -124,6 +126,7 @@ pa_cvolume_scale;
pa_cvolume_set;
pa_cvolume_set_balance;
pa_cvolume_set_fade;
+pa_cvolume_set_position;
pa_cvolume_snprint;
pa_cvolume_valid;
pa_ext_stream_restore_delete;
commit 8b180b6368b64c53d0da03682b5bfa8c7e6e6536
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:55:44 2009 +0200
volume: implement pa_cvolume_{scale|max|avg}_mask()
diff --git a/src/map-file b/src/map-file
index 5cae6d3..c46c679 100644
--- a/src/map-file
+++ b/src/map-file
@@ -112,6 +112,7 @@ pa_context_suspend_source_by_name;
pa_context_unload_module;
pa_context_unref;
pa_cvolume_avg;
+pa_cvolume_avg_mask;
pa_cvolume_channels_equal_to;
pa_cvolume_compatible;
pa_cvolume_compatible_with_channel_map;
@@ -121,8 +122,10 @@ pa_cvolume_get_fade;
pa_cvolume_get_position;
pa_cvolume_init;
pa_cvolume_max;
+pa_cvolume_max_mask;
pa_cvolume_remap;
pa_cvolume_scale;
+pa_cvolume_scale_mask;
pa_cvolume_set;
pa_cvolume_set_balance;
pa_cvolume_set_fade;
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index e48c777..64688e0 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -80,29 +80,78 @@ pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v) {
pa_volume_t pa_cvolume_avg(const pa_cvolume *a) {
uint64_t sum = 0;
- int i;
+ unsigned c;
pa_assert(a);
pa_return_val_if_fail(pa_cvolume_valid(a), PA_VOLUME_MUTED);
- for (i = 0; i < a->channels; i++)
- sum += a->values[i];
+ for (c = 0; c < a->channels; c++)
+ sum += a->values[c];
sum /= a->channels;
return (pa_volume_t) sum;
}
+pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
+ uint64_t sum = 0;
+ unsigned c, n;
+
+ pa_assert(a);
+
+ if (!cm)
+ return pa_cvolume_avg(a);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED);
+
+ for (c = n = 0; c < a->channels; c++) {
+
+ if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask))
+ continue;
+
+ sum += a->values[c];
+ n ++;
+ }
+
+ if (n > 0)
+ sum /= n;
+
+ return (pa_volume_t) sum;
+}
+
pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
pa_volume_t m = 0;
- int i;
+ unsigned c;
pa_assert(a);
pa_return_val_if_fail(pa_cvolume_valid(a), PA_VOLUME_MUTED);
- for (i = 0; i < a->channels; i++)
- if (a->values[i] > m)
- m = a->values[i];
+ 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_assert(a);
+
+ if (!cm)
+ return pa_cvolume_max(a);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED);
+
+ for (c = n = 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;
}
@@ -590,11 +639,29 @@ pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) {
pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
pa_return_val_if_fail(max != (pa_volume_t) -1, NULL);
+ t = pa_cvolume_max(v);
+
+ if (t <= PA_VOLUME_MUTED)
+ return pa_cvolume_set(v, v->channels, max);
+
for (c = 0; c < v->channels; c++)
- if (v->values[c] > t)
- t = v->values[c];
+ v->values[c] = (pa_volume_t) (((uint64_t) v->values[c] * (uint64_t) max) / (uint64_t) t);
+
+ return v;
+}
+
+pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map *cm, pa_channel_position_mask_t mask) {
+ unsigned c;
+ pa_volume_t t = 0;
+
+ pa_assert(v);
+
+ pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
+ pa_return_val_if_fail(max != (pa_volume_t) -1, NULL);
+
+ t = pa_cvolume_max_mask(v, cm, mask);
- if (t <= 0)
+ if (t <= PA_VOLUME_MUTED)
return pa_cvolume_set(v, v->channels, max);
for (c = 0; c < v->channels; c++)
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index b567778..c07fd99 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -178,9 +178,23 @@ char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v);
/** Return the average volume of all channels */
pa_volume_t pa_cvolume_avg(const pa_cvolume *a) PA_GCC_PURE;
+/** Return the average 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_avg(). If no
+ * channel is selected the returned value will be
+ * PA_VOLUME_MUTED. \since 0.9.16 */
+pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE;
+
/** Return the maximum volume of all channels. \since 0.9.12 */
pa_volume_t pa_cvolume_max(const pa_cvolume *a) PA_GCC_PURE;
+/** Return the maximum 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_max(). If no
+ * channel is selected the returned value will be PA_VOLUME_MUTED.
+ * \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 TRUE when the passed cvolume structure is valid, FALSE otherwise */
int pa_cvolume_valid(const pa_cvolume *v) PA_GCC_PURE;
@@ -283,6 +297,12 @@ pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float
* volumes are kept. \since 0.9.15 */
pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max);
+/** Scale the passed pa_cvolume structure so that the maximum volume
+ * of all channels selected via cm/mask equals max. This also modifies
+ * the volume of those channels that are unmasked. The proportions
+ * between the channel volumes are kept. \since 0.9.16 */
+pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map *cm, pa_channel_position_mask_t mask);
+
/** Set the passed volume to all channels at the specified channel
* position. Will return the updated volume struct, or NULL if there
* is no channel at the position specified. You can check if a channel
@@ -294,7 +314,7 @@ pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, p
* position. Will return 0 if there is no channel at the position
* specified. You can check if a channel map includes a specific
* 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_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) PA_GCC_PURE;
PA_C_DECL_END
commit ebce3185ef8064ab42106d2fd24aba21a159905d
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:56:38 2009 +0200
cli: allow easy repeating of commands with '/'
diff --git a/src/pulsecore/cli.c b/src/pulsecore/cli.c
index a784f58..54514e7 100644
--- a/src/pulsecore/cli.c
+++ b/src/pulsecore/cli.c
@@ -59,6 +59,8 @@ struct pa_cli {
pa_bool_t fail, kill_requested;
int defer_kill;
+
+ char *last_line;
};
static void line_callback(pa_ioline *line, const char *s, void *userdata);
@@ -101,6 +103,8 @@ pa_cli* pa_cli_new(pa_core *core, pa_iochannel *io, pa_module *m) {
c->fail = c->kill_requested = FALSE;
c->defer_kill = 0;
+ c->last_line = NULL;
+
return c;
}
@@ -110,6 +114,7 @@ void pa_cli_free(pa_cli *c) {
pa_ioline_close(c->line);
pa_ioline_unref(c->line);
pa_client_free(c->client);
+ pa_xfree(c->last_line);
pa_xfree(c);
}
@@ -144,6 +149,14 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
return;
}
+ /* Magic command, like they had in AT Hayes Modems! Those were the good days! */
+ if (pa_streq(s, "/"))
+ s = c->last_line;
+ else if (s[0]) {
+ pa_xfree(c->last_line);
+ c->last_line = pa_xstrdup(s);
+ }
+
pa_assert_se(buf = pa_strbuf_new());
c->defer_kill++;
pa_cli_command_execute_line(c->core, s, buf, &c->fail);
commit 759a9d0cc56c074567e0048fc0a1058bc179a101
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon May 25 23:56:38 2009 +0200
core-util: introduce pa_disable_sigpipe()
diff --git a/src/daemon/main.c b/src/daemon/main.c
index a232451..3e50baa 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -946,9 +946,7 @@ int main(int argc, char *argv[]) {
valid_pid_file = TRUE;
}
-#ifdef SIGPIPE
- signal(SIGPIPE, SIG_IGN);
-#endif
+ pa_disable_sigpipe();
if (pa_rtclock_hrtimer())
pa_log_info(_("Fresh high-resolution timers available! Bon appetit!"));
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index d4956fb..b747cd8 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -2711,3 +2711,24 @@ char *pa_realpath(const char *path) {
return t;
}
+
+void pa_disable_sigpipe(void) {
+
+#ifdef SIGPIPE
+ struct sigaction sa;
+
+ pa_zero(sa);
+
+ if (sigaction(SIGPIPE, NULL, &sa) < 0) {
+ pa_log("sigaction(): %s", pa_cstrerror(errno));
+ return;
+ }
+
+ sa.sa_handler = SIG_IGN;
+
+ if (sigaction(SIGPIPE, &sa, NULL) < 0) {
+ pa_log("sigaction(): %s", pa_cstrerror(errno));
+ return;
+ }
+#endif
+}
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index 91a4c55..d073b75 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -227,4 +227,6 @@ char *pa_unescape(char *p);
char *pa_realpath(const char *path);
+void pa_disable_sigpipe(void);
+
#endif
diff --git a/src/utils/pabrowse.c b/src/utils/pabrowse.c
index 288d44a..a6487b8 100644
--- a/src/utils/pabrowse.c
+++ b/src/utils/pabrowse.c
@@ -30,6 +30,8 @@
#include <pulse/pulseaudio.h>
#include <pulse/browser.h>
+#include <pulsecore/core-util.h>
+
static void exit_signal_callback(pa_mainloop_api*m, pa_signal_event *e, int sig, void *userdata) {
fprintf(stderr, "Got signal, exiting\n");
m->quit(m, 0);
@@ -127,7 +129,7 @@ int main(int argc, char *argv[]) {
assert(r == 0);
pa_signal_new(SIGINT, exit_signal_callback, NULL);
pa_signal_new(SIGTERM, exit_signal_callback, NULL);
- signal(SIGPIPE, SIG_IGN);
+ pa_disable_sigpipe();
if (!(browser = pa_browser_new_full(pa_mainloop_get_api(mainloop), PA_BROWSE_FOR_SERVERS|PA_BROWSE_FOR_SINKS|PA_BROWSE_FOR_SOURCES, &s))) {
fprintf(stderr, "pa_browse_new_full(): %s\n", s);
commit 5c10b84e0f020de8a0d9f5adc6b0affbae4343cb
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue May 26 00:05:28 2009 +0200
sndfile: big rework of libsndfile interfacing code
This adds proper channel map handling when reading/writing audio files.
This allows surround .WAV files to be played with the right channel
setup automatically.
This also merges paplay into pacat and adds recording into formatted
files to pacat.
diff --git a/src/Makefile.am b/src/Makefile.am
index b6c98fc..a7ec691 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -177,7 +177,6 @@ endif
bin_PROGRAMS += \
pacat \
pactl \
- paplay \
pasuspender
if HAVE_AF_UNIX
@@ -195,23 +194,18 @@ endif
bin_SCRIPTS = esdcompat start-pulseaudio-x11
pacat_SOURCES = utils/pacat.c
-pacat_LDADD = $(AM_LDADD) libpulse.la
-pacat_CFLAGS = $(AM_CFLAGS)
+pacat_LDADD = $(AM_LDADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@.la $(LIBSNDFILE_LIBS)
+pacat_CFLAGS = $(AM_CFLAGS) $(LIBSNDFILE_CFLAGS)
pacat_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
-paplay_SOURCES = utils/paplay.c
-paplay_LDADD = $(AM_LDADD) libpulse.la $(LIBSNDFILE_LIBS)
-paplay_CFLAGS = $(AM_CFLAGS) $(LIBSNDFILE_CFLAGS)
-paplay_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
-
pactl_SOURCES = utils/pactl.c
pactl_LDADD = $(AM_LDADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@.la $(LIBSNDFILE_LIBS)
pactl_CFLAGS = $(AM_CFLAGS) $(LIBSNDFILE_CFLAGS)
pactl_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
pasuspender_SOURCES = utils/pasuspender.c
-pasuspender_LDADD = $(AM_LDADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@.la $(LIBSNDFILE_LIBS)
-pasuspender_CFLAGS = $(AM_CFLAGS) $(LIBSNDFILE_CFLAGS)
+pasuspender_LDADD = $(AM_LDADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@.la
+pasuspender_CFLAGS = $(AM_CFLAGS)
pasuspender_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
pacmd_SOURCES = utils/pacmd.c
@@ -225,7 +219,7 @@ pax11publish_LDADD = $(AM_LDADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@
pax11publish_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
pabrowse_SOURCES = utils/pabrowse.c
-pabrowse_LDADD = $(AM_LDADD) libpulse.la libpulse-browse.la
+pabrowse_LDADD = $(AM_LDADD) libpulse.la libpulse-browse.la libpulsecommon- at PA_MAJORMINORMICRO@.la
pabrowse_CFLAGS = $(AM_CFLAGS)
pabrowse_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
@@ -603,11 +597,12 @@ libpulsecommon_ at 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/sndfile-util.c pulsecore/sndfile-util.h \
pulsecore/winsock.h
libpulsecommon_ at PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS)
libpulsecommon_ at PA_MAJORMINORMICRO@_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version
-libpulsecommon_ at PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBWRAP_LIBS) $(WINSOCK_LIBS) $(LTLIBICONV)
+libpulsecommon_ at PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBWRAP_LIBS) $(WINSOCK_LIBS) $(LTLIBICONV) $(LIBSNDFILE_LIBS)
# proplist-util.h uses these header files, but not the library itself!
libpulsecommon_ at PA_MAJORMINORMICRO@_la_CFLAGS += $(GLIB20_CFLAGS) $(GTK20_CFLAGS)
@@ -821,9 +816,9 @@ libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/time-smoother.c pulsecore/time-smoother.h \
pulsecore/database.h
-libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
+libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(WINSOCK_CFLAGS) $(LIBOIL_CFLAGS)
libpulsecore_ at PA_MAJORMINORMICRO@_la_LDFLAGS = -avoid-version
-libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSNDFILE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la
+libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la
if HAVE_X11
libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/x11wrap.c pulsecore/x11wrap.h
@@ -1643,11 +1638,17 @@ install-exec-hook:
chmod u+s $(DESTDIR)$(bindir)/pulseaudio
-chmod u+s $(DESTDIR)$(pulselibexecdir)/proximity-helper
ln -sf pacat $(DESTDIR)$(bindir)/parec
+ ln -sf pacat $(DESTDIR)$(bindir)/pamon
+ ln -sf pacat $(DESTDIR)$(bindir)/paplay
+ ln -sf pacat $(DESTDIR)$(bindir)/parecord
rm -f $(DESTDIR)$(libdir)/libpulsedsp.la
rm -f $(DESTDIR)$(modlibexecdir)/*.la
uninstall-hook:
rm -f $(DESTDIR)$(bindir)/parec
+ rm -f $(DESTDIR)$(bindir)/pamon
+ rm -f $(DESTDIR)$(bindir)/paplay
+ rm -f $(DESTDIR)$(bindir)/parecord
rm -f $(DESTDIR)$(libdir)/libpulsedsp.*
rm -f $(DESTDIR)$(modlibexecdir)/*.so
diff --git a/src/pulsecore/core-scache.c b/src/pulsecore/core-scache.c
index 34d60a8..086f5fc 100644
--- a/src/pulsecore/core-scache.c
+++ b/src/pulsecore/core-scache.c
@@ -219,11 +219,14 @@ int pa_scache_add_file(pa_core *c, const char *name, const char *filename, uint3
pa_assert(name);
pa_assert(filename);
- if (pa_sound_file_load(c->mempool, filename, &ss, &map, &chunk) < 0)
- return -1;
-
p = pa_proplist_new();
pa_proplist_sets(p, PA_PROP_MEDIA_FILENAME, filename);
+
+ if (pa_sound_file_load(c->mempool, filename, &ss, &map, &chunk, p) < 0) {
+ pa_proplist_free(p);
+ return -1;
+ }
+
r = pa_scache_add_item(c, name, &ss, &map, &chunk, p, idx);
pa_memblock_unref(chunk.memblock);
pa_proplist_free(p);
@@ -311,11 +314,14 @@ int pa_scache_play_item(pa_core *c, const char *name, pa_sink *sink, pa_volume_t
if (!(e = pa_namereg_get(c, name, PA_NAMEREG_SAMPLE)))
return -1;
+ merged = pa_proplist_new();
+ pa_proplist_setf(merged, PA_PROP_MEDIA_NAME, "Sample %s", name);
+
if (e->lazy && !e->memchunk.memblock) {
pa_channel_map old_channel_map = e->channel_map;
- if (pa_sound_file_load(c->mempool, e->filename, &e->sample_spec, &e->channel_map, &e->memchunk) < 0)
- return -1;
+ if (pa_sound_file_load(c->mempool, e->filename, &e->sample_spec, &e->channel_map, &e->memchunk, merged) < 0)
+ goto fail;
pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE|PA_SUBSCRIPTION_EVENT_CHANGE, e->index);
@@ -328,7 +334,7 @@ int pa_scache_play_item(pa_core *c, const char *name, pa_sink *sink, pa_volume_t
}
if (!e->memchunk.memblock)
- return -1;
+ goto fail;
pa_log_debug("Playing sample \"%s\" on \"%s\"", name, sink->name);
@@ -344,17 +350,13 @@ int pa_scache_play_item(pa_core *c, const char *name, pa_sink *sink, pa_volume_t
else
pass_volume = FALSE;
- merged = pa_proplist_new();
- pa_proplist_setf(merged, PA_PROP_MEDIA_NAME, "Sample %s", name);
pa_proplist_update(merged, PA_UPDATE_REPLACE, e->proplist);
if (p)
pa_proplist_update(merged, PA_UPDATE_REPLACE, p);
- if (pa_play_memchunk(sink, &e->sample_spec, &e->channel_map, &e->memchunk, pass_volume ? &r : NULL, merged, sink_input_idx) < 0) {
- pa_proplist_free(merged);
- return -1;
- }
+ if (pa_play_memchunk(sink, &e->sample_spec, &e->channel_map, &e->memchunk, pass_volume ? &r : NULL, merged, sink_input_idx) < 0)
+ goto fail;
pa_proplist_free(merged);
@@ -362,6 +364,10 @@ int pa_scache_play_item(pa_core *c, const char *name, pa_sink *sink, pa_volume_t
time(&e->last_used_time);
return 0;
+
+fail:
+ pa_proplist_free(merged);
+ return -1;
}
int pa_scache_play_item_by_name(pa_core *c, const char *name, const char*sink_name, pa_volume_t volume, pa_proplist *p, uint32_t *sink_input_idx) {
diff --git a/src/pulsecore/sndfile-util.c b/src/pulsecore/sndfile-util.c
new file mode 100644
index 0000000..032aefc
--- /dev/null
+++ b/src/pulsecore/sndfile-util.c
@@ -0,0 +1,462 @@
+/***
+ 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
+
+/* Shared between pacat/parec/paplay and the server */
+
+#include <pulse/xmalloc.h>
+#include <pulse/utf8.h>
+
+#include <pulsecore/macro.h>
+#include <pulsecore/core-util.h>
+
+#include "sndfile-util.h"
+
+int pa_sndfile_read_sample_spec(SNDFILE *sf, pa_sample_spec *ss) {
+ SF_INFO sfi;
+
+ pa_assert(sf);
+ pa_assert(ss);
+
+ pa_zero(sfi);
+ pa_assert_se(sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)) == 0);
+
+ switch (sfi.format & SF_FORMAT_SUBMASK) {
+
+ case SF_FORMAT_PCM_16:
+ case SF_FORMAT_PCM_U8:
+ case SF_FORMAT_PCM_S8:
+ ss->format = PA_SAMPLE_S16NE;
+ break;
+
+ case SF_FORMAT_PCM_24:
+ case SF_FORMAT_PCM_32:
+ ss->format = PA_SAMPLE_S32NE;
+ break;
+
+ case SF_FORMAT_ULAW:
+ ss->format = PA_SAMPLE_ULAW;
+ break;
+
+ case SF_FORMAT_ALAW:
+ ss->format = PA_SAMPLE_ALAW;
+ break;
+
+ case SF_FORMAT_FLOAT:
+ case SF_FORMAT_DOUBLE:
+ default:
+ ss->format = PA_SAMPLE_FLOAT32NE;
+ break;
+ }
+
+ ss->rate = (uint32_t) sfi.samplerate;
+ ss->channels = (uint8_t) sfi.channels;
+
+ if (!pa_sample_spec_valid(ss))
+ return -1;
+
+ return 0;
+}
+
+int pa_sndfile_write_sample_spec(SF_INFO *sfi, pa_sample_spec *ss) {
+ pa_assert(sfi);
+ pa_assert(ss);
+
+ sfi->samplerate = (int) ss->rate;
+ sfi->channels = (int) ss->channels;
+
+ if (pa_sample_format_is_le(ss->format) > 0)
+ sfi->format = SF_ENDIAN_LITTLE;
+ else if (pa_sample_format_is_be(ss->format) > 0)
+ sfi->format = SF_ENDIAN_BIG;
+
+ switch (ss->format) {
+
+ case PA_SAMPLE_U8:
+ ss->format = PA_SAMPLE_S16NE;
+ sfi->format = SF_FORMAT_PCM_U8;
+ break;
+
+ case PA_SAMPLE_S16LE:
+ case PA_SAMPLE_S16BE:
+ ss->format = PA_SAMPLE_S16NE;
+ sfi->format |= SF_FORMAT_PCM_16;
+ break;
+
+ case PA_SAMPLE_S24LE:
+ case PA_SAMPLE_S24BE:
+ case PA_SAMPLE_S24_32LE:
+ case PA_SAMPLE_S24_32BE:
+ ss->format = PA_SAMPLE_S32NE;
+ sfi->format |= SF_FORMAT_PCM_24;
+ break;
+
+ case PA_SAMPLE_S32LE:
+ case PA_SAMPLE_S32RE:
+ ss->format = PA_SAMPLE_S32NE;
+ sfi->format |= SF_FORMAT_PCM_32;
+ break;
+
+ case PA_SAMPLE_ULAW:
+ sfi->format = SF_FORMAT_ULAW;
+ break;
+
+ case PA_SAMPLE_ALAW:
+ sfi->format = SF_FORMAT_ALAW;
+ break;
+
+ case PA_SAMPLE_FLOAT32LE:
+ case PA_SAMPLE_FLOAT32BE:
+ default:
+ ss->format = PA_SAMPLE_FLOAT32NE;
+ sfi->format |= SF_FORMAT_FLOAT;
+ break;
+ }
+
+
+ if (!pa_sample_spec_valid(ss))
+ return -1;
+
+ return 0;
+}
+
+int pa_sndfile_read_channel_map(SNDFILE *sf, pa_channel_map *cm) {
+
+ static const pa_channel_position_t table[] = {
+ [SF_CHANNEL_MAP_MONO] = PA_CHANNEL_POSITION_MONO,
+ [SF_CHANNEL_MAP_LEFT] = PA_CHANNEL_POSITION_FRONT_LEFT, /* libsndfile distuingishes left und front-left, which we don't */
+ [SF_CHANNEL_MAP_RIGHT] = PA_CHANNEL_POSITION_FRONT_RIGHT,
+ [SF_CHANNEL_MAP_CENTER] = PA_CHANNEL_POSITION_FRONT_CENTER,
+ [SF_CHANNEL_MAP_FRONT_LEFT] = PA_CHANNEL_POSITION_FRONT_LEFT,
+ [SF_CHANNEL_MAP_FRONT_RIGHT] = PA_CHANNEL_POSITION_FRONT_RIGHT,
+ [SF_CHANNEL_MAP_FRONT_CENTER] = PA_CHANNEL_POSITION_FRONT_CENTER,
+ [SF_CHANNEL_MAP_REAR_CENTER] = PA_CHANNEL_POSITION_REAR_CENTER,
+ [SF_CHANNEL_MAP_REAR_LEFT] = PA_CHANNEL_POSITION_REAR_LEFT,
+ [SF_CHANNEL_MAP_REAR_RIGHT] = PA_CHANNEL_POSITION_REAR_RIGHT,
+ [SF_CHANNEL_MAP_LFE] = PA_CHANNEL_POSITION_LFE,
+ [SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER] = PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
+ [SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER] = PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER,
+ [SF_CHANNEL_MAP_SIDE_LEFT] = PA_CHANNEL_POSITION_SIDE_LEFT,
+ [SF_CHANNEL_MAP_SIDE_RIGHT] = PA_CHANNEL_POSITION_SIDE_RIGHT,
+ [SF_CHANNEL_MAP_TOP_CENTER] = PA_CHANNEL_POSITION_TOP_CENTER,
+ [SF_CHANNEL_MAP_TOP_FRONT_LEFT] = PA_CHANNEL_POSITION_TOP_FRONT_LEFT,
+ [SF_CHANNEL_MAP_TOP_FRONT_RIGHT] = PA_CHANNEL_POSITION_TOP_FRONT_RIGHT,
+ [SF_CHANNEL_MAP_TOP_FRONT_CENTER] = PA_CHANNEL_POSITION_TOP_FRONT_CENTER,
+ [SF_CHANNEL_MAP_TOP_REAR_LEFT] = PA_CHANNEL_POSITION_TOP_REAR_LEFT,
+ [SF_CHANNEL_MAP_TOP_REAR_RIGHT] = PA_CHANNEL_POSITION_TOP_REAR_RIGHT,
+ [SF_CHANNEL_MAP_TOP_REAR_CENTER] = PA_CHANNEL_POSITION_TOP_REAR_CENTER
+ };
+
+ SF_INFO sfi;
+ int *channels;
+ unsigned c;
+
+ pa_assert(sf);
+ pa_assert(cm);
+
+ pa_zero(sfi);
+ pa_assert_se(sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)) == 0);
+
+ channels = pa_xnew(int, sfi.channels);
+ if (!sf_command(sf, SFC_GET_CHANNEL_MAP_INFO,
+ channels, sizeof(channels[0]) * sfi.channels)) {
+
+ pa_xfree(channels);
+ return -1;
+ }
+
+ cm->channels = (uint8_t) sfi.channels;
+ for (c = 0; c < cm->channels; c++) {
+ if (channels[c] <= SF_CHANNEL_MAP_INVALID ||
+ (unsigned) channels[c] >= PA_ELEMENTSOF(table)) {
+ pa_xfree(channels);
+ return -1;
+ }
+
+ cm->map[c] = table[channels[c]];
+ }
+
+ pa_xfree(channels);
+
+ if (!pa_channel_map_valid(cm))
+ return -1;
+
+ return 0;
+}
+
+int pa_sndfile_write_channel_map(SNDFILE *sf, pa_channel_map *cm) {
+ static const int table[PA_CHANNEL_POSITION_MAX] = {
+ [PA_CHANNEL_POSITION_MONO] = SF_CHANNEL_MAP_MONO,
+
+ [PA_CHANNEL_POSITION_FRONT_LEFT] = SF_CHANNEL_MAP_FRONT_LEFT,
+ [PA_CHANNEL_POSITION_FRONT_RIGHT] = SF_CHANNEL_MAP_FRONT_RIGHT,
+ [PA_CHANNEL_POSITION_FRONT_CENTER] = SF_CHANNEL_MAP_FRONT_CENTER,
+
+ [PA_CHANNEL_POSITION_REAR_CENTER] = SF_CHANNEL_MAP_REAR_CENTER,
+ [PA_CHANNEL_POSITION_REAR_LEFT] = SF_CHANNEL_MAP_REAR_LEFT,
+ [PA_CHANNEL_POSITION_REAR_RIGHT] = SF_CHANNEL_MAP_REAR_RIGHT,
+
+ [PA_CHANNEL_POSITION_LFE] = SF_CHANNEL_MAP_LFE,
+
+ [PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER] = SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER,
+ [PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER] = SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER,
+
+ [PA_CHANNEL_POSITION_SIDE_LEFT] = SF_CHANNEL_MAP_SIDE_LEFT,
+ [PA_CHANNEL_POSITION_SIDE_RIGHT] = SF_CHANNEL_MAP_SIDE_RIGHT,
+
+ [PA_CHANNEL_POSITION_AUX0] = -1,
+ [PA_CHANNEL_POSITION_AUX1] = -1,
+ [PA_CHANNEL_POSITION_AUX2] = -1,
+ [PA_CHANNEL_POSITION_AUX3] = -1,
+ [PA_CHANNEL_POSITION_AUX4] = -1,
+ [PA_CHANNEL_POSITION_AUX5] = -1,
+ [PA_CHANNEL_POSITION_AUX6] = -1,
+ [PA_CHANNEL_POSITION_AUX7] = -1,
+ [PA_CHANNEL_POSITION_AUX8] = -1,
+ [PA_CHANNEL_POSITION_AUX9] = -1,
+ [PA_CHANNEL_POSITION_AUX10] = -1,
+ [PA_CHANNEL_POSITION_AUX11] = -1,
+ [PA_CHANNEL_POSITION_AUX12] = -1,
+ [PA_CHANNEL_POSITION_AUX13] = -1,
+ [PA_CHANNEL_POSITION_AUX14] = -1,
+ [PA_CHANNEL_POSITION_AUX15] = -1,
+ [PA_CHANNEL_POSITION_AUX16] = -1,
+ [PA_CHANNEL_POSITION_AUX17] = -1,
+ [PA_CHANNEL_POSITION_AUX18] = -1,
+ [PA_CHANNEL_POSITION_AUX19] = -1,
+ [PA_CHANNEL_POSITION_AUX20] = -1,
+ [PA_CHANNEL_POSITION_AUX21] = -1,
+ [PA_CHANNEL_POSITION_AUX22] = -1,
+ [PA_CHANNEL_POSITION_AUX23] = -1,
+ [PA_CHANNEL_POSITION_AUX24] = -1,
+ [PA_CHANNEL_POSITION_AUX25] = -1,
+ [PA_CHANNEL_POSITION_AUX26] = -1,
+ [PA_CHANNEL_POSITION_AUX27] = -1,
+ [PA_CHANNEL_POSITION_AUX28] = -1,
+ [PA_CHANNEL_POSITION_AUX29] = -1,
+ [PA_CHANNEL_POSITION_AUX30] = -1,
+ [PA_CHANNEL_POSITION_AUX31] = -1,
+
+ [PA_CHANNEL_POSITION_TOP_CENTER] = SF_CHANNEL_MAP_TOP_CENTER,
+
+ [PA_CHANNEL_POSITION_TOP_FRONT_LEFT] = SF_CHANNEL_MAP_TOP_FRONT_LEFT,
+ [PA_CHANNEL_POSITION_TOP_FRONT_RIGHT] = SF_CHANNEL_MAP_TOP_FRONT_RIGHT,
+ [PA_CHANNEL_POSITION_TOP_FRONT_CENTER] = SF_CHANNEL_MAP_TOP_FRONT_CENTER ,
+
+ [PA_CHANNEL_POSITION_TOP_REAR_LEFT] = SF_CHANNEL_MAP_TOP_REAR_LEFT,
+ [PA_CHANNEL_POSITION_TOP_REAR_RIGHT] = SF_CHANNEL_MAP_TOP_REAR_RIGHT,
+ [PA_CHANNEL_POSITION_TOP_REAR_CENTER] = SF_CHANNEL_MAP_TOP_REAR_CENTER,
+ };
+
+ int *channels;
+ unsigned c;
+
+ pa_assert(sf);
+ pa_assert(cm);
+
+ /* Suppress channel mapping for the obvious cases */
+ if (cm->channels == 1 && cm->map[0] == PA_CHANNEL_POSITION_MONO)
+ return 0;
+
+ if (cm->channels == 2 &&
+ cm->map[0] == PA_CHANNEL_POSITION_FRONT_LEFT &&
+ cm->map[1] == PA_CHANNEL_POSITION_FRONT_RIGHT)
+ return 0;
+
+ channels = pa_xnew(int, cm->channels);
+ for (c = 0; c < cm->channels; c++) {
+
+ if (cm->map[c] < 0 ||
+ cm->map[c] >= PA_CHANNEL_POSITION_MAX ||
+ table[cm->map[c]] < 0) {
+ pa_xfree(channels);
+ return -1;
+ }
+
+ channels[c] = table[cm->map[c]];
+ }
+
+ if (!sf_command(sf, SFC_SET_CHANNEL_MAP_INFO,
+ channels, sizeof(channels[0]) * cm->channels)) {
+ pa_xfree(channels);
+ return -1;
+ }
+
+ pa_xfree(channels);
+ return 0;
+}
+
+void pa_sndfile_init_proplist(SNDFILE *sf, pa_proplist *p) {
+
+ static const char* table[] = {
+ [SF_STR_TITLE] = PA_PROP_MEDIA_TITLE,
+ [SF_STR_COPYRIGHT] = PA_PROP_MEDIA_COPYRIGHT,
+ [SF_STR_SOFTWARE] = PA_PROP_MEDIA_SOFTWARE,
+ [SF_STR_ARTIST] = PA_PROP_MEDIA_ARTIST,
+ [SF_STR_COMMENT] = "media.comment",
+ [SF_STR_DATE] = "media.date"
+ };
+
+ SF_INFO sfi;
+ SF_FORMAT_INFO fi;
+ unsigned c;
+
+ pa_assert(sf);
+ pa_assert(p);
+
+ for (c = 0; c < PA_ELEMENTSOF(table); c++) {
+ const char *s;
+ char *t;
+
+ if (!table[c])
+ continue;
+
+ if (!(s = sf_get_string(sf, c)))
+ continue;
+
+ t = pa_utf8_filter(s);
+ pa_proplist_sets(p, table[c], t);
+ pa_xfree(t);
+ }
+
+ pa_zero(sfi);
+ pa_assert_se(sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)) == 0);
+
+ pa_zero(fi);
+ fi.format = sfi.format;
+ if (sf_command(sf, SFC_GET_FORMAT_INFO, &fi, sizeof(fi)) == 0 && fi.name) {
+ char *t;
+
+ t = pa_utf8_filter(fi.name);
+ pa_proplist_sets(p, "media.format", t);
+ pa_xfree(t);
+ }
+}
+
+pa_sndfile_readf_t pa_sndfile_readf_function(const pa_sample_spec *ss) {
+ pa_assert(ss);
+
+ switch (ss->format) {
+ case PA_SAMPLE_S16NE:
+ return (pa_sndfile_readf_t) sf_readf_short;
+
+ case PA_SAMPLE_S32NE:
+ return (pa_sndfile_readf_t) sf_readf_int;
+
+ case PA_SAMPLE_FLOAT32NE:
+ return (pa_sndfile_readf_t) sf_readf_float;
+
+ case PA_SAMPLE_ULAW:
+ case PA_SAMPLE_ALAW:
+ return NULL;
+
+ default:
+ pa_assert_not_reached();
+ }
+}
+
+pa_sndfile_writef_t pa_sndfile_writef_function(const pa_sample_spec *ss) {
+ pa_assert(ss);
+
+ switch (ss->format) {
+ case PA_SAMPLE_S16NE:
+ return (pa_sndfile_writef_t) sf_writef_short;
+
+ case PA_SAMPLE_S32NE:
+ return (pa_sndfile_writef_t) sf_writef_int;
+
+ case PA_SAMPLE_FLOAT32NE:
+ return (pa_sndfile_writef_t) sf_writef_float;
+
+ case PA_SAMPLE_ULAW:
+ case PA_SAMPLE_ALAW:
+ return NULL;
+
+ default:
+ pa_assert_not_reached();
+ }
+}
+
+int pa_sndfile_format_from_string(const char *name) {
+ int i, count = 0;
+
+
+ if (!name[0])
+ return -1;
+
+ pa_assert_se(sf_command(NULL, SFC_GET_FORMAT_MAJOR_COUNT, &count, sizeof(int)) == 0);
+
+ /* First try to match via full type string */
+ for (i = 0; i < count; i++) {
+ SF_FORMAT_INFO fi;
+ pa_zero(fi);
+ fi.format = i;
+
+ pa_assert_se(sf_command(NULL, SFC_GET_FORMAT_MAJOR, &fi, sizeof(fi)) == 0);
+
+ if (strcasecmp(name, fi.name) == 0)
+ return i;
+ }
+
+ /* Then, try to match via the full extension */
+ for (i = 0; i < count; i++) {
+ SF_FORMAT_INFO fi;
+ pa_zero(fi);
+ fi.format = i;
+
+ pa_assert_se(sf_command(NULL, SFC_GET_FORMAT_MAJOR, &fi, sizeof(fi)) == 0);
+
+ if (strcasecmp(name, fi.extension) == 0)
+ return i;
+ }
+
+ /* Then, try to match via the start of the type string */
+ for (i = 0; i < count; i++) {
+ SF_FORMAT_INFO fi;
+ pa_zero(fi);
+ fi.format = i;
+
+ pa_assert_se(sf_command(NULL, SFC_GET_FORMAT_MAJOR, &fi, sizeof(fi)) == 0);
+
+ if (strncasecmp(name, fi.extension, strlen(name)) == 0)
+ return i;
+ }
+
+ return -1;
+}
+
+void pa_sndfile_dump_formats(void) {
+ int i, count = 0;
+
+ pa_assert_se(sf_command(NULL, SFC_GET_FORMAT_MAJOR_COUNT, &count, sizeof(int)) == 0);
+
+ for (i = 0; i < count; i++) {
+ SF_FORMAT_INFO fi;
+ pa_zero(fi);
+ fi.format = i;
+
+ pa_assert_se(sf_command(NULL, SFC_GET_FORMAT_MAJOR, &fi, sizeof(fi)) == 0);
+ printf("%s\t%s\n", fi.extension, fi.name);
+ }
+}
diff --git a/src/pulsecore/sndfile-util.h b/src/pulsecore/sndfile-util.h
new file mode 100644
index 0000000..74021da
--- /dev/null
+++ b/src/pulsecore/sndfile-util.h
@@ -0,0 +1,52 @@
+#ifndef foopulsecoresndfileutilhfoo
+#define foopulsecoresndfileutilhfoo
+
+/***
+ 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.
+***/
+
+#include <sndfile.h>
+
+#include <pulse/sample.h>
+#include <pulse/channelmap.h>
+#include <pulse/proplist.h>
+
+int pa_sndfile_read_sample_spec(SNDFILE *sf, pa_sample_spec *ss);
+int pa_sndfile_read_channel_map(SNDFILE *sf, pa_channel_map *cm);
+
+int pa_sndfile_write_sample_spec(SF_INFO *sfi, pa_sample_spec *ss);
+int pa_sndfile_write_channel_map(SNDFILE *sf, pa_channel_map *cm);
+
+void pa_sndfile_init_proplist(SNDFILE *sf, pa_proplist *p);
+
+typedef sf_count_t (*pa_sndfile_readf_t)(SNDFILE *sndfile, void *ptr, sf_count_t frames);
+typedef sf_count_t (*pa_sndfile_writef_t)(SNDFILE *sndfile, const void *ptr, sf_count_t frames);
+
+/* Returns NULL if sf_read_raw() shall be used */
+pa_sndfile_readf_t pa_sndfile_readf_function(const pa_sample_spec *ss);
+
+/* Returns NULL if sf_write_raw() shall be used */
+pa_sndfile_writef_t pa_sndfile_writef_function(const pa_sample_spec *ss);
+
+int pa_sndfile_format_from_string(const char *extension);
+
+void pa_sndfile_dump_formats(void);
+
+#endif
diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c
index 3453637..502e5c6 100644
--- a/src/pulsecore/sound-file-stream.c
+++ b/src/pulsecore/sound-file-stream.c
@@ -41,6 +41,7 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/core-util.h>
#include <pulsecore/sample-util.h>
+#include <pulsecore/sndfile-util.h>
#include "sound-file-stream.h"
@@ -234,10 +235,11 @@ int pa_play_file(
const pa_cvolume *volume) {
file_stream *u = NULL;
- SF_INFO sfinfo;
pa_sample_spec ss;
+ pa_channel_map cm;
pa_sink_input_new_data data;
int fd;
+ SF_INFO sfi;
pa_assert(sink);
pa_assert(fname);
@@ -251,8 +253,6 @@ int pa_play_file(
u->readf_function = NULL;
u->memblockq = NULL;
- memset(&sfinfo, 0, sizeof(sfinfo));
-
if ((fd = open(fname, O_RDONLY
#ifdef O_NOCTTY
|O_NOCTTY
@@ -281,50 +281,36 @@ int pa_play_file(
pa_log_debug("POSIX_FADV_WILLNEED succeeded.");
#endif
- if (!(u->sndfile = sf_open_fd(fd, SFM_READ, &sfinfo, 1))) {
+ pa_zero(sfi);
+ if (!(u->sndfile = sf_open_fd(fd, SFM_READ, &sfi, 1))) {
pa_log("Failed to open file %s", fname);
- pa_close(fd);
goto fail;
}
- switch (sfinfo.format & 0xFF) {
- case SF_FORMAT_PCM_16:
- case SF_FORMAT_PCM_U8:
- case SF_FORMAT_PCM_S8:
- ss.format = PA_SAMPLE_S16NE;
- u->readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *ptr, sf_count_t frames)) sf_readf_short;
- break;
-
- case SF_FORMAT_ULAW:
- ss.format = PA_SAMPLE_ULAW;
- break;
-
- case SF_FORMAT_ALAW:
- ss.format = PA_SAMPLE_ALAW;
- break;
+ fd = -1;
- case SF_FORMAT_FLOAT:
- default:
- ss.format = PA_SAMPLE_FLOAT32NE;
- u->readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *ptr, sf_count_t frames)) sf_readf_float;
- break;
+ if (pa_sndfile_read_sample_spec(u->sndfile, &ss) < 0) {
+ pa_log("Failed to determine file sample format.");
+ goto fail;
}
- ss.rate = (uint32_t) sfinfo.samplerate;
- ss.channels = (uint8_t) sfinfo.channels;
-
- if (!pa_sample_spec_valid(&ss)) {
- pa_log("Unsupported sample format in file %s", fname);
- goto fail;
+ if (pa_sndfile_read_channel_map(u->sndfile, &cm) < 0) {
+ if (ss.channels > 2)
+ pa_log_info("Failed to determine file channel map, synthesizing one.");
+ pa_channel_map_init_extend(&cm, ss.channels, PA_CHANNEL_MAP_DEFAULT);
}
+ u->readf_function = pa_sndfile_readf_function(&ss);
+
pa_sink_input_new_data_init(&data);
data.sink = sink;
data.driver = __FILE__;
pa_sink_input_new_data_set_sample_spec(&data, &ss);
+ pa_sink_input_new_data_set_channel_map(&data, &cm);
pa_sink_input_new_data_set_volume(&data, volume);
pa_proplist_sets(data.proplist, PA_PROP_MEDIA_NAME, pa_path_get_filename(fname));
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_data_done(&data);
@@ -352,5 +338,8 @@ fail:
if (u)
file_stream_unref(u);
+ if (fd >= 0)
+ pa_close(fd);
+
return -1;
}
diff --git a/src/pulsecore/sound-file.c b/src/pulsecore/sound-file.c
index db75ae0..2d9b76a 100644
--- a/src/pulsecore/sound-file.c
+++ b/src/pulsecore/sound-file.c
@@ -35,19 +35,21 @@
#include <pulsecore/macro.h>
#include <pulsecore/core-error.h>
#include <pulsecore/core-util.h>
+#include <pulsecore/core-scache.h>
+#include <pulsecore/sndfile-util.h>
#include "sound-file.h"
-#include "core-scache.h"
int pa_sound_file_load(
pa_mempool *pool,
const char *fname,
pa_sample_spec *ss,
pa_channel_map *map,
- pa_memchunk *chunk) {
+ pa_memchunk *chunk,
+ pa_proplist *p) {
SNDFILE *sf = NULL;
- SF_INFO sfinfo;
+ SF_INFO sfi;
int ret = -1;
size_t l;
sf_count_t (*readf_function)(SNDFILE *sndfile, void *ptr, sf_count_t frames) = NULL;
@@ -59,7 +61,6 @@ int pa_sound_file_load(
pa_assert(chunk);
pa_memchunk_reset(chunk);
- memset(&sfinfo, 0, sizeof(sfinfo));
if ((fd = open(fname, O_RDONLY
#ifdef O_NOCTTY
@@ -78,48 +79,29 @@ int pa_sound_file_load(
pa_log_debug("POSIX_FADV_SEQUENTIAL succeeded.");
#endif
- if (!(sf = sf_open_fd(fd, SFM_READ, &sfinfo, 1))) {
+ pa_zero(sfi);
+ if (!(sf = sf_open_fd(fd, SFM_READ, &sfi, 1))) {
pa_log("Failed to open file %s", fname);
- pa_close(fd);
goto finish;
}
- switch (sfinfo.format & SF_FORMAT_SUBMASK) {
- case SF_FORMAT_PCM_16:
- case SF_FORMAT_PCM_U8:
- case SF_FORMAT_PCM_S8:
- ss->format = PA_SAMPLE_S16NE;
- readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *_ptr, sf_count_t frames)) sf_readf_short;
- break;
-
- case SF_FORMAT_ULAW:
- ss->format = PA_SAMPLE_ULAW;
- break;
-
- case SF_FORMAT_ALAW:
- ss->format = PA_SAMPLE_ALAW;
- break;
-
- case SF_FORMAT_FLOAT:
- case SF_FORMAT_DOUBLE:
- default:
- ss->format = PA_SAMPLE_FLOAT32NE;
- readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *_ptr, sf_count_t frames)) sf_readf_float;
- break;
- }
-
- ss->rate = (uint32_t) sfinfo.samplerate;
- ss->channels = (uint8_t) sfinfo.channels;
+ fd = -1;
- if (!pa_sample_spec_valid(ss)) {
- pa_log("Unsupported sample format in file %s", fname);
+ if (pa_sndfile_read_sample_spec(sf, ss) < 0) {
+ pa_log("Failed to determine file sample format.");
goto finish;
}
- if (map)
+ if ((map && pa_sndfile_read_channel_map(sf, map) < 0)) {
+ if (ss->channels > 2)
+ pa_log("Failed to determine file channel map, synthesizing one.");
pa_channel_map_init_extend(map, ss->channels, PA_CHANNEL_MAP_DEFAULT);
+ }
- if ((l = pa_frame_size(ss) * (size_t) sfinfo.frames) > PA_SCACHE_ENTRY_SIZE_MAX) {
+ if (p)
+ pa_sndfile_init_proplist(sf, p);
+
+ if ((l = pa_frame_size(ss) * (size_t) sfi.frames) > PA_SCACHE_ENTRY_SIZE_MAX) {
pa_log("File too large");
goto finish;
}
@@ -128,9 +110,11 @@ int pa_sound_file_load(
chunk->index = 0;
chunk->length = l;
+ readf_function = pa_sndfile_readf_function(ss);
+
ptr = pa_memblock_acquire(chunk->memblock);
- if ((readf_function && readf_function(sf, ptr, sfinfo.frames) != sfinfo.frames) ||
+ if ((readf_function && readf_function(sf, ptr, sfi.frames) != sfi.frames) ||
(!readf_function && sf_read_raw(sf, ptr, (sf_count_t) l) != (sf_count_t) l)) {
pa_log("Premature file end");
goto finish;
@@ -149,55 +133,35 @@ finish:
if (ret != 0 && chunk->memblock)
pa_memblock_unref(chunk->memblock);
+ if (fd >= 0)
+ pa_close(fd);
+
return ret;
}
int pa_sound_file_too_big_to_cache(const char *fname) {
SNDFILE*sf = NULL;
- SF_INFO sfinfo;
+ SF_INFO sfi;
pa_sample_spec ss;
pa_assert(fname);
- if (!(sf = sf_open(fname, SFM_READ, &sfinfo))) {
+ pa_zero(sfi);
+ if (!(sf = sf_open(fname, SFM_READ, &sfi))) {
pa_log("Failed to open file %s", fname);
return -1;
}
- sf_close(sf);
-
- switch (sfinfo.format & SF_FORMAT_SUBMASK) {
- case SF_FORMAT_PCM_16:
- case SF_FORMAT_PCM_U8:
- case SF_FORMAT_PCM_S8:
- ss.format = PA_SAMPLE_S16NE;
- break;
-
- case SF_FORMAT_ULAW:
- ss.format = PA_SAMPLE_ULAW;
- break;
-
- case SF_FORMAT_ALAW:
- ss.format = PA_SAMPLE_ALAW;
- break;
-
- case SF_FORMAT_DOUBLE:
- case SF_FORMAT_FLOAT:
- default:
- ss.format = PA_SAMPLE_FLOAT32NE;
- break;
- }
-
- ss.rate = (uint32_t) sfinfo.samplerate;
- ss.channels = (uint8_t) sfinfo.channels;
-
- if (!pa_sample_spec_valid(&ss)) {
- pa_log("Unsupported sample format in file %s", fname);
+ if (pa_sndfile_read_sample_spec(sf, &ss) < 0) {
+ pa_log("Failed to determine file sample format.");
+ sf_close(sf);
return -1;
}
- if ((pa_frame_size(&ss) * (size_t) sfinfo.frames) > PA_SCACHE_ENTRY_SIZE_MAX) {
+ sf_close(sf);
+
+ if ((pa_frame_size(&ss) * (size_t) sfi.frames) > PA_SCACHE_ENTRY_SIZE_MAX) {
pa_log("File too large: %s", fname);
return 1;
}
diff --git a/src/pulsecore/sound-file.h b/src/pulsecore/sound-file.h
index 34e0261..4dc0c7e 100644
--- a/src/pulsecore/sound-file.h
+++ b/src/pulsecore/sound-file.h
@@ -26,7 +26,7 @@
#include <pulse/channelmap.h>
#include <pulsecore/memchunk.h>
-int pa_sound_file_load(pa_mempool *pool, const char *fname, pa_sample_spec *ss, pa_channel_map *map, pa_memchunk *chunk);
+int pa_sound_file_load(pa_mempool *pool, const char *fname, pa_sample_spec *ss, pa_channel_map *map, pa_memchunk *chunk, pa_proplist *p);
int pa_sound_file_too_big_to_cache(const char *fname);
diff --git a/src/utils/pacat.c b/src/utils/pacat.c
index 15e842f..0b6df3d 100644
--- a/src/utils/pacat.c
+++ b/src/utils/pacat.c
@@ -35,9 +35,16 @@
#include <fcntl.h>
#include <locale.h>
+#include <sndfile.h>
+
#include <pulse/i18n.h>
#include <pulse/pulseaudio.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/log.h>
+#include <pulsecore/sndfile-util.h>
+
#define TIME_EVENT_USEC 50000
#define CLEAR_LINE "\x1B[K"
@@ -53,35 +60,92 @@ static size_t buffer_length = 0, buffer_index = 0;
static pa_io_event* stdio_event = NULL;
-static char *stream_name = NULL, *client_name = NULL, *device = NULL;
+static pa_proplist *proplist = NULL;
+static char *device = NULL;
+
+static SNDFILE* sndfile = NULL;
-static int verbose = 0;
+static pa_bool_t verbose = FALSE;
static pa_volume_t volume = PA_VOLUME_NORM;
-static int volume_is_set = 0;
+static pa_bool_t volume_is_set = FALSE;
static pa_sample_spec sample_spec = {
.format = PA_SAMPLE_S16LE,
.rate = 44100,
.channels = 2
};
+static pa_bool_t sample_spec_set = FALSE;
static pa_channel_map channel_map;
-static int channel_map_set = 0;
+static pa_bool_t channel_map_set = FALSE;
+
+static sf_count_t (*readf_function)(SNDFILE *_sndfile, void *ptr, sf_count_t frames) = NULL;
+static sf_count_t (*writef_function)(SNDFILE *_sndfile, const void *ptr, sf_count_t frames) = NULL;
static pa_stream_flags_t flags = 0;
-static size_t latency = 0, process_time=0;
+static size_t latency = 0, process_time = 0;
+
+static pa_bool_t raw = TRUE;
+static int file_format = -1;
/* A shortcut for terminating the application */
static void quit(int ret) {
- assert(mainloop_api);
+ pa_assert(mainloop_api);
mainloop_api->quit(mainloop_api, ret);
}
+/* Connection draining complete */
+static void context_drain_complete(pa_context*c, void *userdata) {
+ pa_context_disconnect(c);
+}
+
+/* Stream draining complete */
+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)));
+ quit(1);
+ }
+
+ if (verbose)
+ pa_log(_("Playback stream drained.\n"));
+
+ pa_stream_disconnect(stream);
+ pa_stream_unref(stream);
+ stream = NULL;
+
+ if (!pa_context_drain(context, context_drain_complete, NULL))
+ pa_context_disconnect(context);
+ else {
+ if (verbose)
+ pa_log(_("Draining connection to server.\n"));
+ }
+}
+
+/* Start draining */
+static void start_drain(void) {
+
+ if (stream) {
+ pa_operation *o;
+
+ 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)));
+ quit(1);
+ return;
+ }
+
+ pa_operation_unref(o);
+ } else
+ quit(0);
+}
+
/* Write some data to the stream */
static void do_stream_write(size_t length) {
size_t l;
- assert(length);
+ pa_assert(length);
if (!buffer || !buffer_length)
return;
@@ -91,7 +155,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) {
- fprintf(stderr, _("pa_stream_write() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_stream_write() failed: %s\n"), pa_strerror(pa_context_errno(context)));
quit(1);
return;
}
@@ -108,53 +172,121 @@ static void do_stream_write(size_t length) {
/* This is called whenever new data may be written to the stream */
static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
- assert(s);
- assert(length > 0);
+ pa_assert(s);
+ pa_assert(length > 0);
- if (stdio_event)
- mainloop_api->io_enable(stdio_event, PA_IO_EVENT_INPUT);
+ if (raw) {
+ pa_assert(!sndfile);
- if (!buffer)
- return;
+ if (stdio_event)
+ mainloop_api->io_enable(stdio_event, PA_IO_EVENT_INPUT);
+
+ if (!buffer)
+ return;
+
+ do_stream_write(length);
+
+ } else {
+ sf_count_t bytes;
+ void *data;
+
+ pa_assert(sndfile);
+
+ data = pa_xmalloc(length);
+
+ if (readf_function) {
+ size_t k = pa_frame_size(&sample_spec);
- do_stream_write(length);
+ if ((bytes = readf_function(sndfile, data, (sf_count_t) (length/k))) > 0)
+ bytes *= (sf_count_t) k;
+
+ } else
+ 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);
+ else
+ pa_xfree(data);
+
+ if (bytes < (sf_count_t) length)
+ start_drain();
+ }
}
/* This is called whenever new data may is available */
static void stream_read_callback(pa_stream *s, size_t length, void *userdata) {
- const void *data;
- assert(s);
- assert(length > 0);
- if (stdio_event)
- mainloop_api->io_enable(stdio_event, PA_IO_EVENT_OUTPUT);
+ pa_assert(s);
+ pa_assert(length > 0);
- if (pa_stream_peek(s, &data, &length) < 0) {
- fprintf(stderr, _("pa_stream_peek() failed: %s\n"), pa_strerror(pa_context_errno(context)));
- quit(1);
- return;
- }
+ if (raw) {
+ pa_assert(!sndfile);
- assert(data);
- assert(length > 0);
+ 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)));
+ quit(1);
+ return;
+ }
+
+ pa_assert(data);
+ pa_assert(length > 0);
+
+ if (buffer) {
+ buffer = pa_xrealloc(buffer, buffer_length + length);
+ memcpy((uint8_t*) buffer + buffer_length, data, length);
+ buffer_length += length;
+ } else {
+ buffer = pa_xmalloc(length);
+ memcpy(buffer, data, length);
+ buffer_length = length;
+ buffer_index = 0;
+ }
+ pa_stream_drop(s);
+ }
- if (buffer) {
- buffer = pa_xrealloc(buffer, buffer_length + length);
- memcpy((uint8_t*) buffer + buffer_length, data, length);
- buffer_length += length;
} else {
- buffer = pa_xmalloc(length);
- memcpy(buffer, data, length);
- buffer_length = length;
- buffer_index = 0;
- }
+ pa_assert(sndfile);
+
+ while (pa_stream_readable_size(s) > 0) {
+ sf_count_t bytes;
+ 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)));
+ quit(1);
+ return;
+ }
+
+ pa_assert(data);
+ pa_assert(length > 0);
+
+ if (writef_function) {
+ size_t k = pa_frame_size(&sample_spec);
- pa_stream_drop(s);
+ if ((bytes = writef_function(sndfile, data, (sf_count_t) (length/k))) > 0)
+ bytes *= (sf_count_t) k;
+
+ } else
+ bytes = sf_write_raw(sndfile, data, (sf_count_t) length);
+
+ if (bytes < (sf_count_t) length)
+ quit(1);
+
+ pa_stream_drop(s);
+ }
+ }
}
/* This routine is called whenever the stream state changes */
static void stream_state_callback(pa_stream *s, void *userdata) {
- assert(s);
+ pa_assert(s);
switch (pa_stream_get_state(s)) {
case PA_STREAM_CREATING:
@@ -162,29 +294,30 @@ static void stream_state_callback(pa_stream *s, void *userdata) {
break;
case PA_STREAM_READY:
+
if (verbose) {
const pa_buffer_attr *a;
char cmt[PA_CHANNEL_MAP_SNPRINT_MAX], sst[PA_SAMPLE_SPEC_SNPRINT_MAX];
- fprintf(stderr, _("Stream successfully created.\n"));
+ pa_log(_("Stream successfully created.\n"));
if (!(a = pa_stream_get_buffer_attr(s)))
- fprintf(stderr, _("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\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
else {
if (mode == PLAYBACK)
- fprintf(stderr, _("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\n"), a->maxlength, a->tlength, a->prebuf, a->minreq);
else {
- assert(mode == RECORD);
- fprintf(stderr, _("Buffer metrics: maxlength=%u, fragsize=%u\n"), a->maxlength, a->fragsize);
+ pa_assert(mode == RECORD);
+ pa_log(_("Buffer metrics: maxlength=%u, fragsize=%u\n"), a->maxlength, a->fragsize);
}
}
- fprintf(stderr, _("Using sample spec '%s', channel map '%s'.\n"),
+ pa_log(_("Using sample spec '%s', channel map '%s'.\n"),
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)));
- fprintf(stderr, _("Connected to device %s (%u, %ssuspended).\n"),
+ pa_log(_("Connected to device %s (%u, %ssuspended).\n"),
pa_stream_get_device_name(s),
pa_stream_get_device_index(s),
pa_stream_is_suspended(s) ? "" : "not ");
@@ -194,72 +327,72 @@ static void stream_state_callback(pa_stream *s, void *userdata) {
case PA_STREAM_FAILED:
default:
- fprintf(stderr, _("Stream error: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
+ pa_log(_("Stream error: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
quit(1);
}
}
static void stream_suspended_callback(pa_stream *s, void *userdata) {
- assert(s);
+ pa_assert(s);
if (verbose) {
if (pa_stream_is_suspended(s))
- fprintf(stderr, _("Stream device suspended.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream device suspended.%s \n"), CLEAR_LINE);
else
- fprintf(stderr, _("Stream device resumed.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream device resumed.%s \n"), CLEAR_LINE);
}
}
static void stream_underflow_callback(pa_stream *s, void *userdata) {
- assert(s);
+ pa_assert(s);
if (verbose)
- fprintf(stderr, _("Stream underrun.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream underrun.%s \n"), CLEAR_LINE);
}
static void stream_overflow_callback(pa_stream *s, void *userdata) {
- assert(s);
+ pa_assert(s);
if (verbose)
- fprintf(stderr, _("Stream overrun.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream overrun.%s \n"), CLEAR_LINE);
}
static void stream_started_callback(pa_stream *s, void *userdata) {
- assert(s);
+ pa_assert(s);
if (verbose)
- fprintf(stderr, _("Stream started.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream started.%s \n"), CLEAR_LINE);
}
static void stream_moved_callback(pa_stream *s, void *userdata) {
- assert(s);
+ pa_assert(s);
if (verbose)
- fprintf(stderr, _("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 \n"), 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) {
- assert(s);
+ pa_assert(s);
if (verbose)
- fprintf(stderr, _("Stream buffer attributes changed.%s \n"), CLEAR_LINE);
+ pa_log(_("Stream buffer attributes changed.%s \n"), CLEAR_LINE);
}
static void stream_event_callback(pa_stream *s, const char *name, pa_proplist *pl, void *userdata) {
char *t;
- assert(s);
- assert(name);
- assert(pl);
+ pa_assert(s);
+ pa_assert(name);
+ pa_assert(pl);
t = pa_proplist_to_string_sep(pl, ", ");
- fprintf(stderr, "Got event '%s', properties '%s'\n", name, t);
+ pa_log("Got event '%s', properties '%s'\n", name, t);
pa_xfree(t);
}
/* This is called whenever the context status changes */
static void context_state_callback(pa_context *c, void *userdata) {
- assert(c);
+ pa_assert(c);
switch (pa_context_get_state(c)) {
case PA_CONTEXT_CONNECTING:
@@ -271,14 +404,14 @@ static void context_state_callback(pa_context *c, void *userdata) {
int r;
pa_buffer_attr buffer_attr;
- assert(c);
- assert(!stream);
+ pa_assert(c);
+ pa_assert(!stream);
if (verbose)
- fprintf(stderr, _("Connection established.%s \n"), CLEAR_LINE);
+ pa_log(_("Connection established.%s \n"), CLEAR_LINE);
- if (!(stream = pa_stream_new(c, stream_name, &sample_spec, channel_map_set ? &channel_map : NULL))) {
- fprintf(stderr, _("pa_stream_new() failed: %s\n"), pa_strerror(pa_context_errno(c)));
+ 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)));
goto fail;
}
@@ -306,13 +439,13 @@ 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) {
- fprintf(stderr, _("pa_stream_connect_playback() failed: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("pa_stream_connect_playback() failed: %s\n"), pa_strerror(pa_context_errno(c)));
goto fail;
}
} else {
if ((r = pa_stream_connect_record(stream, device, latency > 0 ? &buffer_attr : NULL, flags)) < 0) {
- fprintf(stderr, _("pa_stream_connect_record() failed: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("pa_stream_connect_record() failed: %s\n"), pa_strerror(pa_context_errno(c)));
goto fail;
}
}
@@ -326,7 +459,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
case PA_CONTEXT_FAILED:
default:
- fprintf(stderr, _("Connection failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Connection failure: %s\n"), pa_strerror(pa_context_errno(c)));
goto fail;
}
@@ -337,42 +470,14 @@ fail:
}
-/* Connection draining complete */
-static void context_drain_complete(pa_context*c, void *userdata) {
- pa_context_disconnect(c);
-}
-
-/* Stream draining complete */
-static void stream_drain_complete(pa_stream*s, int success, void *userdata) {
-
- if (!success) {
- fprintf(stderr, _("Failed to drain stream: %s\n"), pa_strerror(pa_context_errno(context)));
- quit(1);
- }
-
- if (verbose)
- fprintf(stderr, _("Playback stream drained.\n"));
-
- pa_stream_disconnect(stream);
- pa_stream_unref(stream);
- stream = NULL;
-
- if (!pa_context_drain(context, context_drain_complete, NULL))
- pa_context_disconnect(context);
- else {
- if (verbose)
- fprintf(stderr, _("Draining connection to server.\n"));
- }
-}
-
/* New data on STDIN **/
static void stdin_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_event_flags_t f, void *userdata) {
size_t l, w = 0;
ssize_t r;
- assert(a == mainloop_api);
- assert(e);
- assert(stdio_event == e);
+ pa_assert(a == mainloop_api);
+ pa_assert(e);
+ pa_assert(stdio_event == e);
if (buffer) {
mainloop_api->io_enable(stdio_event, PA_IO_EVENT_NULL);
@@ -387,23 +492,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)
- fprintf(stderr, _("Got EOF.\n"));
-
- if (stream) {
- pa_operation *o;
-
- if (!(o = pa_stream_drain(stream, stream_drain_complete, NULL))) {
- fprintf(stderr, _("pa_stream_drain(): %s\n"), pa_strerror(pa_context_errno(context)));
- quit(1);
- return;
- }
+ pa_log(_("Got EOF.\n"));
- pa_operation_unref(o);
- } else
- quit(0);
+ start_drain();
} else {
- fprintf(stderr, _("read() failed: %s\n"), strerror(errno));
+ pa_log(_("read() failed: %s\n"), strerror(errno));
quit(1);
}
@@ -423,19 +517,19 @@ static void stdin_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_even
static void stdout_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_event_flags_t f, void *userdata) {
ssize_t r;
- assert(a == mainloop_api);
- assert(e);
- assert(stdio_event == e);
+ pa_assert(a == mainloop_api);
+ pa_assert(e);
+ pa_assert(stdio_event == e);
if (!buffer) {
mainloop_api->io_enable(stdio_event, PA_IO_EVENT_NULL);
return;
}
- assert(buffer_length);
+ pa_assert(buffer_length);
if ((r = write(fd, (uint8_t*) buffer+buffer_index, buffer_length)) <= 0) {
- fprintf(stderr, _("write() failed: %s\n"), strerror(errno));
+ pa_log(_("write() failed: %s\n"), strerror(errno));
quit(1);
mainloop_api->io_free(stdio_event);
@@ -456,7 +550,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)
- fprintf(stderr, _("Got signal, exiting.\n"));
+ pa_log(_("Got signal, exiting.\n"));
quit(0);
}
@@ -465,17 +559,17 @@ static void stream_update_timing_callback(pa_stream *s, int success, void *userd
pa_usec_t l, usec;
int negative = 0;
- assert(s);
+ pa_assert(s);
if (!success ||
pa_stream_get_time(s, &usec) < 0 ||
pa_stream_get_latency(s, &l, &negative) < 0) {
- fprintf(stderr, _("Failed to get latency: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("Failed to get latency: %s\n"), pa_strerror(pa_context_errno(context)));
quit(1);
return;
}
- fprintf(stderr, _("Time: %0.3f sec; Latency: %0.0f usec. \r"),
+ pa_log(_("Time: %0.3f sec; Latency: %0.0f usec. \r"),
(float) usec / 1000000,
(float) l * (negative?-1.0f:1.0f));
}
@@ -495,7 +589,7 @@ static void time_event_callback(pa_mainloop_api*m, pa_time_event *e, const struc
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)))
- fprintf(stderr, _("pa_stream_update_timing_info() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_stream_update_timing_info() failed: %s\n"), pa_strerror(pa_context_errno(context)));
else
pa_operation_unref(o);
}
@@ -509,34 +603,38 @@ static void time_event_callback(pa_mainloop_api*m, pa_time_event *e, const struc
static void help(const char *argv0) {
printf(_("%s [options]\n\n"
- " -h, --help Show this help\n"
- " --version Show version\n\n"
- " -r, --record Create a connection for recording\n"
- " -p, --playback Create a connection for playback\n\n"
- " -v, --verbose Enable verbose operations\n\n"
- " -s, --server=SERVER The name of the server to connect to\n"
- " -d, --device=DEVICE The name of the sink/source to connect to\n"
- " -n, --client-name=NAME How to call this client on the server\n"
- " --stream-name=NAME How to call this stream on the server\n"
- " --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n"
- " --rate=SAMPLERATE The sample rate in Hz (defaults to 44100)\n"
- " --format=SAMPLEFORMAT The sample type, one of s16le, s16be, u8, float32le,\n"
- " float32be, ulaw, alaw, s32le, s32be (defaults to s16ne)\n"
- " --channels=CHANNELS The number of channels, 1 for mono, 2 for stereo\n"
- " (defaults to 2)\n"
- " --channel-map=CHANNELMAP Channel map to use instead of the default\n"
- " --fix-format Take the sample format from the sink the stream is\n"
- " being connected to.\n"
- " --fix-rate Take the sampling rate from the sink the stream is\n"
- " being connected to.\n"
- " --fix-channels Take the number of channels and the channel map\n"
- " from the sink the stream is being connected to.\n"
- " --no-remix Don't upmix or downmix channels.\n"
- " --no-remap Map channels by index instead of name.\n"
- " --latency=BYTES Request the specified latency in bytes.\n"
- " --process-time=BYTES Request the specified process time per request in bytes.\n")
- ,
- argv0);
+ " -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")
+ , argv0);
}
enum {
@@ -553,14 +651,19 @@ enum {
ARG_NO_REMAP,
ARG_NO_REMIX,
ARG_LATENCY,
- ARG_PROCESS_TIME
+ ARG_PROCESS_TIME,
+ ARG_RAW,
+ ARG_PROPERTY,
+ ARG_FILE_FORMAT,
+ ARG_LIST_FILE_FORMATS
};
int main(int argc, char *argv[]) {
pa_mainloop* m = NULL;
- int ret = 1, r, c;
+ int ret = 1, c;
char *bn, *server = NULL;
pa_time_event *time_event = NULL;
+ const char *filename = NULL;
static const struct option long_options[] = {
{"record", 0, NULL, 'r'},
@@ -584,21 +687,33 @@ int main(int argc, char *argv[]) {
{"no-remix", 0, NULL, ARG_NO_REMIX},
{"latency", 1, NULL, ARG_LATENCY},
{"process-time", 1, NULL, ARG_PROCESS_TIME},
+ {"property", 1, NULL, ARG_PROPERTY},
+ {"raw", 0, NULL, ARG_RAW},
+ {"file-format", 2, NULL, ARG_FILE_FORMAT},
+ {"list-file-formats", 0, NULL, ARG_LIST_FILE_FORMATS},
{NULL, 0, NULL, 0}
};
setlocale(LC_ALL, "");
bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
- if (!(bn = strrchr(argv[0], '/')))
- bn = argv[0];
- else
- bn++;
+ bn = pa_path_get_filename(argv[0]);
- if (strstr(bn, "rec") || strstr(bn, "mon"))
+ if (strstr(bn, "play")) {
+ mode = PLAYBACK;
+ raw = FALSE;
+ } else if (strstr(bn, "record")) {
mode = RECORD;
- else if (strstr(bn, "cat") || strstr(bn, "play"))
+ raw = FALSE;
+ } else if (strstr(bn, "cat")) {
mode = PLAYBACK;
+ raw = TRUE;
+ } if (strstr(bn, "rec") || strstr(bn, "mon")) {
+ mode = RECORD;
+ raw = TRUE;
+ }
+
+ proplist = pa_proplist_new();
while ((c = getopt_long(argc, argv, "rpd:s:n:hv", long_options, NULL)) != -1) {
@@ -609,7 +724,12 @@ int main(int argc, char *argv[]) {
goto quit;
case ARG_VERSION:
- printf(_("pacat %s\nCompiled with libpulse %s\nLinked with libpulse %s\n"), PACKAGE_VERSION, pa_get_headers_version(), pa_get_library_version());
+ printf(_("pacat %s\n"
+ "Compiled with libpulse %s\n"
+ "Linked with libpulse %s\n"),
+ PACKAGE_VERSION,
+ pa_get_headers_version(),
+ pa_get_library_version());
ret = 0;
goto quit;
@@ -631,15 +751,36 @@ int main(int argc, char *argv[]) {
server = pa_xstrdup(optarg);
break;
- case 'n':
- pa_xfree(client_name);
- client_name = pa_xstrdup(optarg);
+ case 'n': {
+ char *t;
+
+ 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_xfree(t);
+ goto quit;
+ }
+
+ pa_xfree(t);
break;
+ }
+
+ case ARG_STREAM_NAME: {
+ char *t;
+ t = pa_locale_to_utf8(optarg);
- case ARG_STREAM_NAME:
- pa_xfree(stream_name);
- stream_name = pa_xstrdup(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_xfree(t);
+ goto quit;
+ }
+
+ pa_xfree(t);
break;
+ }
case 'v':
verbose = 1;
@@ -648,29 +789,32 @@ int main(int argc, char *argv[]) {
case ARG_VOLUME: {
int v = atoi(optarg);
volume = v < 0 ? 0U : (pa_volume_t) v;
- volume_is_set = 1;
+ volume_is_set = TRUE;
break;
}
case ARG_CHANNELS:
sample_spec.channels = (uint8_t) atoi(optarg);
+ sample_spec_set = TRUE;
break;
case ARG_SAMPLEFORMAT:
sample_spec.format = pa_parse_sample_format(optarg);
+ sample_spec_set = TRUE;
break;
case ARG_SAMPLERATE:
sample_spec.rate = (uint32_t) atoi(optarg);
+ sample_spec_set = TRUE;
break;
case ARG_CHANNELMAP:
if (!pa_channel_map_parse(&channel_map, optarg)) {
- fprintf(stderr, _("Invalid channel map '%s'\n"), optarg);
+ pa_log(_("Invalid channel map '%s'\n"), optarg);
goto quit;
}
- channel_map_set = 1;
+ channel_map_set = TRUE;
break;
case ARG_FIX_CHANNELS:
@@ -695,17 +839,54 @@ int main(int argc, char *argv[]) {
case ARG_LATENCY:
if (((latency = (size_t) atoi(optarg))) <= 0) {
- fprintf(stderr, _("Invalid latency specification '%s'\n"), optarg);
+ pa_log(_("Invalid latency specification '%s'\n"), optarg);
goto quit;
}
break;
case ARG_PROCESS_TIME:
if (((process_time = (size_t) atoi(optarg))) <= 0) {
- fprintf(stderr, _("Invalid process time specification '%s'\n"), optarg);
+ pa_log(_("Invalid process time specification '%s'\n"), optarg);
+ goto quit;
+ }
+ break;
+
+ case ARG_PROPERTY: {
+ char *t;
+
+ if (!(t = pa_locale_to_utf8(optarg)) ||
+ pa_proplist_setp(proplist, t) < 0) {
+
+ pa_xfree(t);
+ pa_log(_("Invalid property '%s'\n"), optarg);
goto quit;
}
+
+ pa_xfree(t);
break;
+ }
+
+ case ARG_RAW:
+ raw = TRUE;
+ break;
+
+ case ARG_FILE_FORMAT:
+ raw = FALSE;
+
+ if (optarg) {
+ if ((file_format = pa_sndfile_format_from_string(optarg)) < 0) {
+ pa_log(_("Unknown file format %s."), optarg);
+ goto quit;
+ }
+ }
+
+ raw = FALSE;
+ break;
+
+ case ARG_LIST_FILE_FORMATS:
+ pa_sndfile_dump_formats();
+ ret = 0;
+ goto quit;
default:
goto quit;
@@ -713,82 +894,168 @@ int main(int argc, char *argv[]) {
}
if (!pa_sample_spec_valid(&sample_spec)) {
- fprintf(stderr, _("Invalid sample specification\n"));
+ pa_log(_("Invalid sample specification\n"));
goto quit;
}
- if (channel_map_set && pa_channel_map_compatible(&channel_map, &sample_spec)) {
- fprintf(stderr, _("Channel map doesn't match sample specification\n"));
- goto quit;
- }
+ if (optind+1 == argc) {
+ int fd;
- if (verbose) {
- char t[PA_SAMPLE_SPEC_SNPRINT_MAX];
- pa_sample_spec_snprint(t, sizeof(t), &sample_spec);
- fprintf(stderr, _("Opening a %s stream with sample specification '%s'.\n"), mode == RECORD ? _("recording") : _("playback"), t);
+ 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));
+ goto quit;
+ }
+
+ if (dup2(fd, mode == PLAYBACK ? STDIN_FILENO : STDOUT_FILENO) < 0) {
+ pa_log(_("dup2(): %s\n"), strerror(errno));
+ goto quit;
+ }
+
+ pa_close(fd);
+
+ } else if (optind+1 <= argc) {
+ pa_log(_("Too many arguments.\n"));
+ goto quit;
}
- if (!(optind >= argc)) {
- if (optind+1 == argc) {
- int fd;
+ if (!raw) {
+ SF_INFO sfi;
+ pa_zero(sfi);
- if ((fd = open(argv[optind], mode == PLAYBACK ? O_RDONLY : O_WRONLY|O_TRUNC|O_CREAT, 0666)) < 0) {
- fprintf(stderr, _("open(): %s\n"), strerror(errno));
+ 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"));
goto quit;
}
- if (dup2(fd, mode == PLAYBACK ? 0 : 1) < 0) {
- fprintf(stderr, _("dup2(): %s\n"), strerror(errno));
+ /* Transparently upgrade classic .wav to wavex for multichannel audio */
+ if (file_format <= 0) {
+ if ((sample_spec.channels == 2 && (!channel_map_set || (channel_map.map[0] == PA_CHANNEL_POSITION_LEFT &&
+ channel_map.map[1] == PA_CHANNEL_POSITION_RIGHT))) ||
+ (sample_spec.channels == 1 && (!channel_map_set || (channel_map.map[0] == PA_CHANNEL_POSITION_MONO))))
+ file_format = SF_FORMAT_WAV;
+ else
+ file_format = SF_FORMAT_WAVEX;
+ }
+
+ sfi.format |= file_format;
+ }
+
+ 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"));
+ goto quit;
+ }
+
+ if (mode == PLAYBACK) {
+ if (sample_spec_set)
+ pa_log(_("Warning: specified sample specification will be overwritten with specification from file.\n"));
+
+ if (pa_sndfile_read_sample_spec(sndfile, &sample_spec) < 0) {
+ pa_log(_("Failed to determine sample specification from file.\n"));
goto quit;
}
+ sample_spec_set = TRUE;
+
+ if (!channel_map_set) {
+ /* 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"));
+ } else
+ channel_map_set = TRUE;
+ }
+ }
+ }
- close(fd);
+ if (!channel_map_set)
+ pa_channel_map_init_extend(&channel_map, sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
- if (!stream_name)
- stream_name = pa_xstrdup(argv[optind]);
+ if (!pa_channel_map_compatible(&channel_map, &sample_spec)) {
+ pa_log(_("Channel map doesn't match sample specification\n"));
+ goto quit;
+ }
- } else {
- fprintf(stderr, _("Too many arguments.\n"));
- goto quit;
+ if (!raw) {
+ pa_proplist *sfp;
+
+ if (mode == PLAYBACK)
+ 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"));
+
+ writef_function = pa_sndfile_writef_function(&sample_spec);
}
+
+ /* Fill in libsndfile prop list data */
+ sfp = pa_proplist_new();
+ pa_sndfile_init_proplist(sndfile, sfp);
+ pa_proplist_update(proplist, PA_UPDATE_MERGE, sfp);
+ pa_proplist_free(sfp);
}
- if (!client_name)
- client_name = pa_xstrdup(bn);
+ 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"),
+ mode == RECORD ? _("recording") : _("playback"),
+ pa_sample_spec_snprint(tss, sizeof(tss), &sample_spec),
+ pa_channel_map_snprint(tcm, sizeof(tcm), &channel_map));
+ }
- if (!stream_name)
- stream_name = pa_xstrdup(client_name);
+ /* Fill in client name if none was set */
+ if (!pa_proplist_contains(proplist, PA_PROP_APPLICATION_NAME)) {
+ char *t;
+
+ if ((t = pa_locale_to_utf8(bn))) {
+ pa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, t);
+ pa_xfree(t);
+ }
+ }
+
+ /* Fill in media name if none was set */
+ if (!pa_proplist_contains(proplist, PA_PROP_MEDIA_NAME)) {
+ const char *t;
+
+ if ((t = filename) ||
+ (t = pa_proplist_gets(proplist, PA_PROP_APPLICATION_NAME)))
+ pa_proplist_sets(proplist, PA_PROP_MEDIA_NAME, t);
+ }
/* Set up a new main loop */
if (!(m = pa_mainloop_new())) {
- fprintf(stderr, _("pa_mainloop_new() failed.\n"));
+ pa_log(_("pa_mainloop_new() failed.\n"));
goto quit;
}
mainloop_api = pa_mainloop_get_api(m);
- r = pa_signal_init(mainloop_api);
- assert(r == 0);
+ pa_assert_se(pa_signal_init(mainloop_api) == 0);
pa_signal_new(SIGINT, exit_signal_callback, NULL);
pa_signal_new(SIGTERM, exit_signal_callback, NULL);
#ifdef SIGUSR1
pa_signal_new(SIGUSR1, sigusr1_signal_callback, NULL);
#endif
-#ifdef SIGPIPE
- signal(SIGPIPE, SIG_IGN);
-#endif
-
- if (!(stdio_event = mainloop_api->io_new(mainloop_api,
- mode == PLAYBACK ? STDIN_FILENO : STDOUT_FILENO,
- mode == PLAYBACK ? PA_IO_EVENT_INPUT : PA_IO_EVENT_OUTPUT,
- mode == PLAYBACK ? stdin_callback : stdout_callback, NULL))) {
- fprintf(stderr, _("io_new() failed.\n"));
- goto quit;
+ pa_disable_sigpipe();
+
+ if (raw) {
+ if (!(stdio_event = mainloop_api->io_new(mainloop_api,
+ 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"));
+ goto quit;
+ }
}
/* Create a new connection context */
- if (!(context = pa_context_new(mainloop_api, client_name))) {
- fprintf(stderr, _("pa_context_new() failed.\n"));
+ if (!(context = pa_context_new_with_proplist(mainloop_api, NULL, proplist))) {
+ pa_log(_("pa_context_new() failed.\n"));
goto quit;
}
@@ -796,7 +1063,7 @@ int main(int argc, char *argv[]) {
/* Connect the context */
if (pa_context_connect(context, server, 0, NULL) < 0) {
- fprintf(stderr, _("pa_context_connect() failed: %s\n"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_context_connect() failed: %s\n"), pa_strerror(pa_context_errno(context)));
goto quit;
}
@@ -807,14 +1074,14 @@ int main(int argc, char *argv[]) {
pa_timeval_add(&tv, TIME_EVENT_USEC);
if (!(time_event = mainloop_api->time_new(mainloop_api, &tv, time_event_callback, NULL))) {
- fprintf(stderr, _("time_new() failed.\n"));
+ pa_log(_("time_new() failed.\n"));
goto quit;
}
}
/* Run the main loop */
if (pa_mainloop_run(m, &ret) < 0) {
- fprintf(stderr, _("pa_mainloop_run() failed.\n"));
+ pa_log(_("pa_mainloop_run() failed.\n"));
goto quit;
}
@@ -826,12 +1093,12 @@ quit:
pa_context_unref(context);
if (stdio_event) {
- assert(mainloop_api);
+ pa_assert(mainloop_api);
mainloop_api->io_free(stdio_event);
}
if (time_event) {
- assert(mainloop_api);
+ pa_assert(mainloop_api);
mainloop_api->time_free(time_event);
}
@@ -844,8 +1111,12 @@ quit:
pa_xfree(server);
pa_xfree(device);
- pa_xfree(client_name);
- pa_xfree(stream_name);
+
+ if (sndfile)
+ sf_close(sndfile);
+
+ if (proplist)
+ pa_proplist_free(proplist);
return ret;
}
diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c
index d94f266..ac60a0b 100644
--- a/src/utils/pacmd.c
+++ b/src/utils/pacmd.c
@@ -38,11 +38,13 @@
#include <pulse/xmalloc.h>
#include <pulse/i18n.h>
+#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
#include <pulsecore/log.h>
#include <pulsecore/pid.h>
int main(int argc, char*argv[]) {
+
pid_t pid ;
int fd = -1;
int ret = 1, i;
@@ -56,7 +58,7 @@ int main(int argc, char*argv[]) {
bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
if (pa_pid_file_check_running(&pid, "pulseaudio") < 0) {
- pa_log("No PulseAudio daemon running, or not running as session daemon.");
+ pa_log(_("No PulseAudio daemon running, or not running as session daemon."));
goto fail;
}
@@ -65,7 +67,7 @@ int main(int argc, char*argv[]) {
goto fail;
}
- memset(&sa, 0, sizeof(sa));
+ pa_zero(sa);
sa.sun_family = AF_UNIX;
if (!(cli = pa_runtime_path("cli")))
@@ -147,9 +149,9 @@ int main(int argc, char*argv[]) {
if (FD_ISSET(0, &ifds)) {
ssize_t r;
- assert(!ibuf_length);
+ pa_assert(!ibuf_length);
- if ((r = read(0, ibuf, sizeof(ibuf))) <= 0) {
+ if ((r = pa_read(0, ibuf, sizeof(ibuf), NULL)) <= 0) {
if (r < 0) {
pa_log(_("read(): %s"), strerror(errno));
goto fail;
@@ -164,9 +166,9 @@ int main(int argc, char*argv[]) {
if (FD_ISSET(fd, &ifds)) {
ssize_t r;
- assert(!obuf_length);
+ pa_assert(!obuf_length);
- if ((r = read(fd, obuf, sizeof(obuf))) <= 0) {
+ if ((r = pa_read(fd, obuf, sizeof(obuf), NULL)) <= 0) {
if (r < 0) {
pa_log(_("read(): %s"), strerror(errno));
goto fail;
@@ -181,9 +183,9 @@ int main(int argc, char*argv[]) {
if (FD_ISSET(1, &ofds)) {
ssize_t r;
- assert(obuf_length);
+ pa_assert(obuf_length);
- if ((r = write(1, obuf + obuf_index, obuf_length)) < 0) {
+ if ((r = pa_write(1, obuf + obuf_index, obuf_length, NULL)) < 0) {
pa_log(_("write(): %s"), strerror(errno));
goto fail;
}
@@ -195,9 +197,9 @@ int main(int argc, char*argv[]) {
if (FD_ISSET(fd, &ofds)) {
ssize_t r;
- assert(ibuf_length);
+ pa_assert(ibuf_length);
- if ((r = write(fd, ibuf + ibuf_index, ibuf_length)) < 0) {
+ if ((r = pa_write(fd, ibuf + ibuf_index, ibuf_length, NULL)) < 0) {
pa_log(_("write(): %s"), strerror(errno));
goto fail;
}
@@ -207,14 +209,14 @@ int main(int argc, char*argv[]) {
}
if (ibuf_length <= 0 && ibuf_eof && !ibuf_closed) {
- close(0);
+ pa_close(0);
shutdown(fd, SHUT_WR);
ibuf_closed = TRUE;
}
if (obuf_length <= 0 && obuf_eof && !obuf_closed) {
shutdown(fd, SHUT_RD);
- close(1);
+ pa_close(1);
obuf_closed = TRUE;
}
}
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index de1c6d3..53c6766 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -38,9 +38,13 @@
#include <pulse/i18n.h>
#include <pulse/pulseaudio.h>
+
+#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
+#include <pulsecore/log.h>
+#include <pulsecore/sndfile-util.h>
-#define BUFSIZE 1024
+#define BUFSIZE (16*1024)
static pa_context *context = NULL;
static pa_mainloop_api *mainloop_api = NULL;
@@ -48,16 +52,19 @@ static pa_mainloop_api *mainloop_api = NULL;
static char *device = NULL, *sample_name = NULL, *sink_name = NULL, *source_name = NULL, *module_name = NULL, *module_args = NULL, *card_name = NULL, *profile_name = NULL;
static uint32_t sink_input_idx = PA_INVALID_INDEX, source_output_idx = PA_INVALID_INDEX;
static uint32_t module_index;
-static int suspend;
+static pa_bool_t suspend;
+
+static pa_proplist *proplist = NULL;
static SNDFILE *sndfile = NULL;
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 int nl = 0;
+static pa_bool_t nl = FALSE;
static enum {
NONE,
@@ -77,11 +84,10 @@ static enum {
} action = NONE;
static void quit(int ret) {
- assert(mainloop_api);
+ pa_assert(mainloop_api);
mainloop_api->quit(mainloop_api, ret);
}
-
static void context_drain_complete(pa_context *c, void *userdata) {
pa_context_disconnect(c);
}
@@ -94,9 +100,8 @@ static void drain(void) {
pa_operation_unref(o);
}
-
static void complete_action(void) {
- assert(actions > 0);
+ pa_assert(actions > 0);
if (!(--actions))
drain();
@@ -105,7 +110,7 @@ static void complete_action(void) {
static void stat_callback(pa_context *c, const pa_stat_info *i, void *userdata) {
char s[128];
if (!i) {
- fprintf(stderr, _("Failed to get statistics: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get statistics: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -126,7 +131,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) {
- fprintf(stderr, _("Failed to get server information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get server information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -175,7 +180,7 @@ static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get sink information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get sink information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -185,11 +190,11 @@ static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
printf(_("Sink #%u\n"
"\tState: %s\n"
@@ -255,7 +260,7 @@ static void get_source_info_callback(pa_context *c, const pa_source_info *i, int
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get source information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get source information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -265,11 +270,11 @@ static void get_source_info_callback(pa_context *c, const pa_source_info *i, int
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
printf(_("Source #%u\n"
"\tState: %s\n"
@@ -321,7 +326,7 @@ static void get_module_info_callback(pa_context *c, const pa_module_info *i, int
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get module information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get module information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -331,13 +336,13 @@ static void get_module_info_callback(pa_context *c, const pa_module_info *i, int
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
- snprintf(t, sizeof(t), "%u", i->n_used);
+ pa_snprintf(t, sizeof(t), "%u", i->n_used);
printf(_("Module #%u\n"
"\tName: %s\n"
@@ -358,7 +363,7 @@ static void get_client_info_callback(pa_context *c, const pa_client_info *i, int
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get client information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get client information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -368,13 +373,13 @@ static void get_client_info_callback(pa_context *c, const pa_client_info *i, int
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
- snprintf(t, sizeof(t), "%u", i->owner_module);
+ pa_snprintf(t, sizeof(t), "%u", i->owner_module);
printf(_("Client #%u\n"
"\tDriver: %s\n"
@@ -393,7 +398,7 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get card information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get card information: %s\n"), pa_strerror(pa_context_errno(c)));
complete_action();
return;
}
@@ -403,13 +408,13 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
- snprintf(t, sizeof(t), "%u", i->owner_module);
+ pa_snprintf(t, sizeof(t), "%u", i->owner_module);
printf(_("Card #%u\n"
"\tName: %s\n"
@@ -442,7 +447,7 @@ static void get_sink_input_info_callback(pa_context *c, const pa_sink_input_info
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get sink input information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get sink input information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -452,14 +457,14 @@ static void get_sink_input_info_callback(pa_context *c, const pa_sink_input_info
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
- snprintf(t, sizeof(t), "%u", i->owner_module);
- snprintf(k, sizeof(k), "%u", i->client);
+ pa_snprintf(t, sizeof(t), "%u", i->owner_module);
+ pa_snprintf(k, sizeof(k), "%u", i->client);
printf(_("Sink Input #%u\n"
"\tDriver: %s\n"
@@ -500,7 +505,7 @@ static void get_source_output_info_callback(pa_context *c, const pa_source_outpu
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get source output information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get source output information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -510,15 +515,15 @@ static void get_source_output_info_callback(pa_context *c, const pa_source_outpu
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
- snprintf(t, sizeof(t), "%u", i->owner_module);
- snprintf(k, sizeof(k), "%u", i->client);
+ pa_snprintf(t, sizeof(t), "%u", i->owner_module);
+ pa_snprintf(k, sizeof(k), "%u", i->client);
printf(_("Source Output #%u\n"
"\tDriver: %s\n"
@@ -551,7 +556,7 @@ static void get_sample_info_callback(pa_context *c, const pa_sample_info *i, int
char *pl;
if (is_last < 0) {
- fprintf(stderr, _("Failed to get sample information: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failed to get sample information: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -561,11 +566,11 @@ static void get_sample_info_callback(pa_context *c, const pa_sample_info *i, int
return;
}
- assert(i);
+ pa_assert(i);
if (nl)
printf("\n");
- nl = 1;
+ nl = TRUE;
pa_bytes_snprint(t, sizeof(t), i->bytes);
@@ -599,7 +604,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) {
- fprintf(stderr, _("Failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failure: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -609,7 +614,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) {
- fprintf(stderr, _("Failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Failure: %s\n"), pa_strerror(pa_context_errno(c)));
quit(1);
return;
}
@@ -620,7 +625,7 @@ static void index_callback(pa_context *c, uint32_t idx, void *userdata) {
}
static void stream_state_callback(pa_stream *s, void *userdata) {
- assert(s);
+ pa_assert(s);
switch (pa_stream_get_state(s)) {
case PA_STREAM_CREATING:
@@ -633,7 +638,7 @@ static void stream_state_callback(pa_stream *s, void *userdata) {
case PA_STREAM_FAILED:
default:
- fprintf(stderr, _("Failed to upload sample: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
+ pa_log(_("Failed to upload sample: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
quit(1);
}
}
@@ -641,16 +646,16 @@ static void stream_state_callback(pa_stream *s, void *userdata) {
static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
sf_count_t l;
float *d;
- assert(s && length && sndfile);
+ pa_assert(s && length && sndfile);
d = pa_xmalloc(length);
- assert(sample_length >= length);
+ pa_assert(sample_length >= length);
l = (sf_count_t) (length/pa_frame_size(&sample_spec));
if ((sf_readf_float(sndfile, d, l)) != l) {
pa_xfree(d);
- fprintf(stderr, _("Premature end of file\n"));
+ pa_log(_("Premature end of file\n"));
quit(1);
return;
}
@@ -666,7 +671,7 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
}
static void context_state_callback(pa_context *c, void *userdata) {
- assert(c);
+ pa_assert(c);
switch (pa_context_get_state(c)) {
case PA_CONTEXT_CONNECTING:
case PA_CONTEXT_AUTHORIZING:
@@ -691,7 +696,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
case UPLOAD_SAMPLE:
sample_stream = pa_stream_new(c, sample_name, &sample_spec, NULL);
- assert(sample_stream);
+ pa_assert(sample_stream);
pa_stream_set_state_callback(sample_stream, stream_state_callback, NULL);
pa_stream_set_write_callback(sample_stream, stream_write_callback, NULL);
@@ -749,7 +754,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
break;
default:
- assert(0);
+ pa_assert_not_reached();
}
break;
@@ -759,13 +764,13 @@ static void context_state_callback(pa_context *c, void *userdata) {
case PA_CONTEXT_FAILED:
default:
- fprintf(stderr, _("Connection failure: %s\n"), pa_strerror(pa_context_errno(c)));
+ pa_log(_("Connection failure: %s\n"), 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) {
- fprintf(stderr, _("Got SIGINT, exiting.\n"));
+ pa_log(_("Got SIGINT, exiting.\n"));
quit(0);
}
@@ -791,13 +796,15 @@ static void help(const char *argv0) {
argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0);
}
-enum { ARG_VERSION = 256 };
+enum {
+ ARG_VERSION = 256
+};
int main(int argc, char *argv[]) {
pa_mainloop* m = NULL;
char tmp[PATH_MAX];
- int ret = 1, r, c;
- char *server = NULL, *client_name = NULL, *bn;
+ int ret = 1, c;
+ char *server = NULL, *bn;
static const struct option long_options[] = {
{"server", 1, NULL, 's'},
@@ -810,10 +817,9 @@ int main(int argc, char *argv[]) {
setlocale(LC_ALL, "");
bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
- if (!(bn = strrchr(argv[0], '/')))
- bn = argv[0];
- else
- bn++;
+ bn = pa_path_get_filename(argv[0]);
+
+ proplist = pa_proplist_new();
while ((c = getopt_long(argc, argv, "s:n:h", long_options, NULL)) != -1) {
switch (c) {
@@ -837,32 +843,39 @@ int main(int argc, char *argv[]) {
server = pa_xstrdup(optarg);
break;
- case 'n':
- pa_xfree(client_name);
- client_name = pa_xstrdup(optarg);
+ case 'n': {
+ char *t;
+
+ 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_xfree(t);
+ goto quit;
+ }
+
+ pa_xfree(t);
break;
+ }
default:
goto quit;
}
}
- if (!client_name)
- client_name = pa_xstrdup(bn);
-
if (optind < argc) {
- if (!strcmp(argv[optind], "stat"))
+ if (pa_streq(argv[optind], "stat"))
action = STAT;
- else if (!strcmp(argv[optind], "exit"))
+ else if (pa_streq(argv[optind], "exit"))
action = EXIT;
- else if (!strcmp(argv[optind], "list"))
+ else if (pa_streq(argv[optind], "list"))
action = LIST;
- else if (!strcmp(argv[optind], "upload-sample")) {
- struct SF_INFO sfinfo;
+ else if (pa_streq(argv[optind], "upload-sample")) {
+ struct SF_INFO sfi;
action = UPLOAD_SAMPLE;
if (optind+1 >= argc) {
- fprintf(stderr, _("Please specify a sample file to load\n"));
+ pa_log(_("Please specify a sample file to load\n"));
goto quit;
}
@@ -882,21 +895,31 @@ int main(int argc, char *argv[]) {
sample_name = pa_xstrdup(tmp);
}
- memset(&sfinfo, 0, sizeof(sfinfo));
- if (!(sndfile = sf_open(argv[optind+1], SFM_READ, &sfinfo))) {
- fprintf(stderr, _("Failed to open sound file.\n"));
+ pa_zero(sfi);
+ if (!(sndfile = sf_open(argv[optind+1], SFM_READ, &sfi))) {
+ pa_log(_("Failed to open sound file.\n"));
goto quit;
}
+ if (pa_sndfile_read_sample_spec(sndfile, &sample_spec) < 0) {
+ pa_log(_("Failed to determine sample specification from file.\n"));
+ goto quit;
+ }
sample_spec.format = PA_SAMPLE_FLOAT32;
- sample_spec.rate = (uint32_t) sfinfo.samplerate;
- sample_spec.channels = (uint8_t) sfinfo.channels;
- sample_length = (size_t)sfinfo.frames*pa_frame_size(&sample_spec);
- } else if (!strcmp(argv[optind], "play-sample")) {
+ 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_channel_map_init_extend(&channel_map, sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
+ }
+
+ pa_assert(pa_channel_map_compatible(&channel_map, &sample_spec));
+ sample_length = (size_t) sfi.frames*pa_frame_size(&sample_spec);
+
+ } else if (pa_streq(argv[optind], "play-sample")) {
action = PLAY_SAMPLE;
if (argc != optind+2 && argc != optind+3) {
- fprintf(stderr, _("You have to specify a sample name to play\n"));
+ pa_log(_("You have to specify a sample name to play\n"));
goto quit;
}
@@ -905,33 +928,36 @@ int main(int argc, char *argv[]) {
if (optind+2 < argc)
device = pa_xstrdup(argv[optind+2]);
- } else if (!strcmp(argv[optind], "remove-sample")) {
+ } else if (pa_streq(argv[optind], "remove-sample")) {
action = REMOVE_SAMPLE;
if (argc != optind+2) {
- fprintf(stderr, _("You have to specify a sample name to remove\n"));
+ pa_log(_("You have to specify a sample name to remove\n"));
goto quit;
}
sample_name = pa_xstrdup(argv[optind+1]);
- } else if (!strcmp(argv[optind], "move-sink-input")) {
+
+ } else if (pa_streq(argv[optind], "move-sink-input")) {
action = MOVE_SINK_INPUT;
if (argc != optind+3) {
- fprintf(stderr, _("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\n"));
goto quit;
}
sink_input_idx = (uint32_t) atoi(argv[optind+1]);
sink_name = pa_xstrdup(argv[optind+2]);
- } else if (!strcmp(argv[optind], "move-source-output")) {
+
+ } else if (pa_streq(argv[optind], "move-source-output")) {
action = MOVE_SOURCE_OUTPUT;
if (argc != optind+3) {
- fprintf(stderr, _("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\n"));
goto quit;
}
source_output_idx = (uint32_t) atoi(argv[optind+1]);
source_name = pa_xstrdup(argv[optind+2]);
- } else if (!strcmp(argv[optind], "load-module")) {
+
+ } else if (pa_streq(argv[optind], "load-module")) {
int i;
size_t n = 0;
char *p;
@@ -939,7 +965,7 @@ int main(int argc, char *argv[]) {
action = LOAD_MODULE;
if (argc <= optind+1) {
- fprintf(stderr, _("You have to specify a module name and arguments.\n"));
+ pa_log(_("You have to specify a module name and arguments.\n"));
goto quit;
}
@@ -955,21 +981,21 @@ int main(int argc, char *argv[]) {
p += sprintf(p, "%s%s", p == module_args ? "" : " ", argv[i]);
}
- } else if (!strcmp(argv[optind], "unload-module")) {
+ } else if (pa_streq(argv[optind], "unload-module")) {
action = UNLOAD_MODULE;
if (argc != optind+2) {
- fprintf(stderr, _("You have to specify a module index\n"));
+ pa_log(_("You have to specify a module index\n"));
goto quit;
}
module_index = (uint32_t) atoi(argv[optind+1]);
- } else if (!strcmp(argv[optind], "suspend-sink")) {
+ } else if (pa_streq(argv[optind], "suspend-sink")) {
action = SUSPEND_SINK;
if (argc > optind+3 || optind+1 >= argc) {
- fprintf(stderr, _("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.\n"));
goto quit;
}
@@ -978,11 +1004,11 @@ int main(int argc, char *argv[]) {
if (argc > optind+2)
sink_name = pa_xstrdup(argv[optind+1]);
- } else if (!strcmp(argv[optind], "suspend-source")) {
+ } else if (pa_streq(argv[optind], "suspend-source")) {
action = SUSPEND_SOURCE;
if (argc > optind+3 || optind+1 >= argc) {
- fprintf(stderr, _("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.\n"));
goto quit;
}
@@ -990,18 +1016,18 @@ int main(int argc, char *argv[]) {
if (argc > optind+2)
source_name = pa_xstrdup(argv[optind+1]);
- } else if (!strcmp(argv[optind], "set-card-profile")) {
+ } else if (pa_streq(argv[optind], "set-card-profile")) {
action = SET_CARD_PROFILE;
if (argc != optind+3) {
- fprintf(stderr, _("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\n"));
goto quit;
}
card_name = pa_xstrdup(argv[optind+1]);
profile_name = pa_xstrdup(argv[optind+2]);
- } else if (!strcmp(argv[optind], "help")) {
+ } else if (pa_streq(argv[optind], "help")) {
help(bn);
ret = 0;
goto quit;
@@ -1009,37 +1035,35 @@ int main(int argc, char *argv[]) {
}
if (action == NONE) {
- fprintf(stderr, _("No valid command specified.\n"));
+ pa_log(_("No valid command specified.\n"));
goto quit;
}
if (!(m = pa_mainloop_new())) {
- fprintf(stderr, _("pa_mainloop_new() failed.\n"));
+ pa_log(_("pa_mainloop_new() failed.\n"));
goto quit;
}
mainloop_api = pa_mainloop_get_api(m);
- r = pa_signal_init(mainloop_api);
- assert(r == 0);
+ pa_assert_se(pa_signal_init(mainloop_api) == 0);
pa_signal_new(SIGINT, exit_signal_callback, NULL);
-#ifdef SIGPIPE
- signal(SIGPIPE, SIG_IGN);
-#endif
+ pa_signal_new(SIGTERM, exit_signal_callback, NULL);
+ pa_disable_sigpipe();
- if (!(context = pa_context_new(mainloop_api, client_name))) {
- fprintf(stderr, _("pa_context_new() failed.\n"));
+ if (!(context = pa_context_new_with_proplist(mainloop_api, NULL, proplist))) {
+ pa_log(_("pa_context_new() failed.\n"));
goto quit;
}
pa_context_set_state_callback(context, context_state_callback, NULL);
if (pa_context_connect(context, server, 0, NULL) < 0) {
- fprintf(stderr, _("pa_context_connect() failed: %s"), pa_strerror(pa_context_errno(context)));
+ pa_log(_("pa_context_connect() failed: %s"), pa_strerror(pa_context_errno(context)));
goto quit;
}
if (pa_mainloop_run(m, &ret) < 0) {
- fprintf(stderr, _("pa_mainloop_run() failed.\n"));
+ pa_log(_("pa_mainloop_run() failed.\n"));
goto quit;
}
@@ -1055,18 +1079,20 @@ quit:
pa_mainloop_free(m);
}
- if (sndfile)
- sf_close(sndfile);
-
pa_xfree(server);
pa_xfree(device);
pa_xfree(sample_name);
pa_xfree(sink_name);
pa_xfree(source_name);
pa_xfree(module_args);
- pa_xfree(client_name);
pa_xfree(card_name);
pa_xfree(profile_name);
+ if (sndfile)
+ sf_close(sndfile);
+
+ if (proplist)
+ pa_proplist_free(proplist);
+
return ret;
}
diff --git a/src/utils/paplay.c b/src/utils/paplay.c
deleted file mode 100644
index f6ba6f6..0000000
--- a/src/utils/paplay.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/***
- This file is part of PulseAudio.
-
- Copyright 2004-2006 Lennart Poettering
- Copyright 2006 Pierre Ossman <ossman at 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 <signal.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include <locale.h>
-
-#include <sndfile.h>
-
-#include <pulse/pulseaudio.h>
-#include <pulse/i18n.h>
-
-static pa_context *context = NULL;
-static pa_stream *stream = NULL;
-static pa_mainloop_api *mainloop_api = NULL;
-
-static char *stream_name = NULL, *client_name = NULL, *device = NULL;
-
-static int verbose = 0;
-static pa_volume_t volume = PA_VOLUME_NORM;
-
-static SNDFILE* sndfile = NULL;
-
-static pa_sample_spec sample_spec = { 0, 0, 0 };
-static pa_channel_map channel_map;
-static int channel_map_set = 0;
-
-static sf_count_t (*readf_function)(SNDFILE *_sndfile, void *ptr, sf_count_t frames) = NULL;
-
-/* A shortcut for terminating the application */
-static void quit(int ret) {
- assert(mainloop_api);
- mainloop_api->quit(mainloop_api, ret);
-}
-
-/* Connection draining complete */
-static void context_drain_complete(pa_context*c, void *userdata) {
- pa_context_disconnect(c);
-}
-
-/* Stream draining complete */
-static void stream_drain_complete(pa_stream*s, int success, void *userdata) {
- pa_operation *o;
-
- if (!success) {
- fprintf(stderr, _("Failed to drain stream: %s\n"), pa_strerror(pa_context_errno(context)));
- quit(1);
- }
-
- if (verbose)
- fprintf(stderr, _("Playback stream drained.\n"));
-
- pa_stream_disconnect(stream);
- pa_stream_unref(stream);
- stream = NULL;
-
- if (!(o = pa_context_drain(context, context_drain_complete, NULL)))
- pa_context_disconnect(context);
- else {
- pa_operation_unref(o);
-
- if (verbose)
- fprintf(stderr, _("Draining connection to server.\n"));
- }
-}
-
-/* This is called whenever new data may be written to the stream */
-static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
- sf_count_t bytes;
- void *data;
- assert(s && length);
-
- if (!sndfile)
- return;
-
- data = pa_xmalloc(length);
-
- if (readf_function) {
- size_t k = pa_frame_size(&sample_spec);
-
- if ((bytes = readf_function(sndfile, data, (sf_count_t) (length/k))) > 0)
- bytes *= (sf_count_t) k;
-
- } else
- 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);
- else
- pa_xfree(data);
-
- if (bytes < (sf_count_t) length) {
- sf_close(sndfile);
- sndfile = NULL;
- pa_operation_unref(pa_stream_drain(s, stream_drain_complete, NULL));
- }
-}
-
-/* This routine is called whenever the stream state changes */
-static void stream_state_callback(pa_stream *s, void *userdata) {
- assert(s);
-
- switch (pa_stream_get_state(s)) {
- case PA_STREAM_CREATING:
- case PA_STREAM_TERMINATED:
- break;
-
- case PA_STREAM_READY:
- if (verbose)
- fprintf(stderr, _("Stream successfully created\n"));
- break;
-
- case PA_STREAM_FAILED:
- default:
- fprintf(stderr, _("Stream errror: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s))));
- quit(1);
- }
-}
-
-/* This is called whenever the context status changes */
-static void context_state_callback(pa_context *c, void *userdata) {
- assert(c);
-
- switch (pa_context_get_state(c)) {
- case PA_CONTEXT_CONNECTING:
- case PA_CONTEXT_AUTHORIZING:
- case PA_CONTEXT_SETTING_NAME:
- break;
-
- case PA_CONTEXT_READY: {
- pa_cvolume cv;
-
- assert(c && !stream);
-
- if (verbose)
- fprintf(stderr, _("Connection established.\n"));
-
- stream = pa_stream_new(c, stream_name, &sample_spec, channel_map_set ? &channel_map : NULL);
- assert(stream);
-
- pa_stream_set_state_callback(stream, stream_state_callback, NULL);
- pa_stream_set_write_callback(stream, stream_write_callback, NULL);
- pa_stream_connect_playback(stream, device, NULL, 0, pa_cvolume_set(&cv, sample_spec.channels, volume), NULL);
-
- break;
- }
-
- case PA_CONTEXT_TERMINATED:
- quit(0);
- break;
-
- case PA_CONTEXT_FAILED:
- default:
- fprintf(stderr, _("Connection failure: %s\n"), pa_strerror(pa_context_errno(c)));
- quit(1);
- }
-}
-
-/* UNIX signal to quit recieved */
-static void exit_signal_callback(pa_mainloop_api*m, pa_signal_event *e, int sig, void *userdata) {
- if (verbose)
- fprintf(stderr, _("Got SIGINT, exiting.\n"));
- quit(0);
-
-}
-
-static void help(const char *argv0) {
-
- printf(_("%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"),
- argv0);
-}
-
-enum {
- ARG_VERSION = 256,
- ARG_STREAM_NAME,
- ARG_VOLUME,
- ARG_CHANNELMAP
-};
-
-int main(int argc, char *argv[]) {
- pa_mainloop* m = NULL;
- int ret = 1, r, c;
- char *bn, *server = NULL;
- const char *filename;
- SF_INFO sfinfo;
-
- static const struct option long_options[] = {
- {"device", 1, NULL, 'd'},
- {"server", 1, NULL, 's'},
- {"client-name", 1, NULL, 'n'},
- {"stream-name", 1, NULL, ARG_STREAM_NAME},
- {"version", 0, NULL, ARG_VERSION},
- {"help", 0, NULL, 'h'},
- {"verbose", 0, NULL, 'v'},
- {"volume", 1, NULL, ARG_VOLUME},
- {"channel-map", 1, NULL, ARG_CHANNELMAP},
- {NULL, 0, NULL, 0}
- };
-
- setlocale(LC_ALL, "");
- bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
-
- if (!(bn = strrchr(argv[0], '/')))
- bn = argv[0];
- else
- bn++;
-
- while ((c = getopt_long(argc, argv, "d:s:n:hv", long_options, NULL)) != -1) {
-
- switch (c) {
- case 'h' :
- help(bn);
- ret = 0;
- goto quit;
-
- case ARG_VERSION:
- printf(_("paplay %s\nCompiled with libpulse %s\n"
- "Linked with libpulse %s\n"), PACKAGE_VERSION, pa_get_headers_version(), pa_get_library_version());
- ret = 0;
- goto quit;
-
- case 'd':
- pa_xfree(device);
- device = pa_xstrdup(optarg);
- break;
-
- case 's':
- pa_xfree(server);
- server = pa_xstrdup(optarg);
- break;
-
- case 'n':
- pa_xfree(client_name);
- client_name = pa_xstrdup(optarg);
- break;
-
- case ARG_STREAM_NAME:
- pa_xfree(stream_name);
- stream_name = pa_xstrdup(optarg);
- break;
-
- case 'v':
- verbose = 1;
- break;
-
- case ARG_VOLUME: {
- int v = atoi(optarg);
- volume = v < 0 ? 0U : (pa_volume_t) v;
- break;
- }
-
- case ARG_CHANNELMAP:
- if (!pa_channel_map_parse(&channel_map, optarg)) {
- fprintf(stderr, _("Invalid channel map\n"));
- goto quit;
- }
-
- channel_map_set = 1;
- break;
-
- default:
- goto quit;
- }
- }
-
- filename = optind < argc ? argv[optind] : "STDIN";
-
- memset(&sfinfo, 0, sizeof(sfinfo));
-
- if (optind < argc)
- sndfile = sf_open(filename, SFM_READ, &sfinfo);
- else
- sndfile = sf_open_fd(STDIN_FILENO, SFM_READ, &sfinfo, 0);
-
- if (!sndfile) {
- fprintf(stderr, _("Failed to open file '%s'\n"), filename);
- goto quit;
- }
-
- sample_spec.rate = (uint32_t) sfinfo.samplerate;
- sample_spec.channels = (uint8_t) sfinfo.channels;
-
- readf_function = NULL;
-
- switch (sfinfo.format & 0xFF) {
- case SF_FORMAT_PCM_16:
- case SF_FORMAT_PCM_U8:
- case SF_FORMAT_PCM_S8:
- sample_spec.format = PA_SAMPLE_S16NE;
- readf_function = (sf_count_t (*)(SNDFILE *_sndfile, void *ptr, sf_count_t frames)) sf_readf_short;
- break;
-
- case SF_FORMAT_ULAW:
- sample_spec.format = PA_SAMPLE_ULAW;
- break;
-
- case SF_FORMAT_ALAW:
- sample_spec.format = PA_SAMPLE_ALAW;
- break;
-
- case SF_FORMAT_FLOAT:
- case SF_FORMAT_DOUBLE:
- default:
- sample_spec.format = PA_SAMPLE_FLOAT32NE;
- readf_function = (sf_count_t (*)(SNDFILE *_sndfile, void *ptr, sf_count_t frames)) sf_readf_float;
- break;
- }
-
- assert(pa_sample_spec_valid(&sample_spec));
-
- if (channel_map_set && channel_map.channels != sample_spec.channels) {
- fprintf(stderr, _("Channel map doesn't match file.\n"));
- goto quit;
- }
-
- if (!client_name) {
- client_name = pa_locale_to_utf8(bn);
- if (!client_name)
- client_name = pa_utf8_filter(bn);
- }
-
- if (!stream_name) {
- const char *n;
-
- n = sf_get_string(sndfile, SF_STR_TITLE);
-
- if (!n)
- n = filename;
-
- stream_name = pa_locale_to_utf8(n);
- if (!stream_name)
- stream_name = pa_utf8_filter(n);
- }
-
- if (verbose) {
- char t[PA_SAMPLE_SPEC_SNPRINT_MAX];
- pa_sample_spec_snprint(t, sizeof(t), &sample_spec);
- fprintf(stderr, _("Using sample spec '%s'\n"), t);
- }
-
- /* Set up a new main loop */
- if (!(m = pa_mainloop_new())) {
- fprintf(stderr, _("pa_mainloop_new() failed.\n"));
- goto quit;
- }
-
- mainloop_api = pa_mainloop_get_api(m);
-
- r = pa_signal_init(mainloop_api);
- assert(r == 0);
- pa_signal_new(SIGINT, exit_signal_callback, NULL);
-#ifdef SIGPIPE
- signal(SIGPIPE, SIG_IGN);
-#endif
-
- /* Create a new connection context */
- if (!(context = pa_context_new(mainloop_api, client_name))) {
- fprintf(stderr, _("pa_context_new() failed.\n"));
- goto quit;
- }
-
- pa_context_set_state_callback(context, context_state_callback, NULL);
-
- /* Connect the context */
- if (pa_context_connect(context, server, 0, NULL) < 0) {
- fprintf(stderr, _("pa_context_connect() failed: %s"), pa_strerror(pa_context_errno(context)));
- goto quit;
- }
-
- /* Run the main loop */
- if (pa_mainloop_run(m, &ret) < 0) {
- fprintf(stderr, _("pa_mainloop_run() failed.\n"));
- goto quit;
- }
-
-quit:
- if (stream)
- pa_stream_unref(stream);
-
- if (context)
- pa_context_unref(context);
-
- if (m) {
- pa_signal_done();
- pa_mainloop_free(m);
- }
-
- pa_xfree(server);
- pa_xfree(device);
- pa_xfree(client_name);
- pa_xfree(stream_name);
-
- if (sndfile)
- sf_close(sndfile);
-
- return ret;
-}
commit d2198c9ba1acb070b14747c49afaff87e85daa81
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue May 26 22:29:33 2009 +0200
alsa: fix wording, we are speaking of card profiles, not output profiles
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 51d466e..d894b9c 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -135,7 +135,7 @@ static void enumerate_cb(
bonus += 20000;
}
- pa_log_info("Found output profile '%s'", t);
+ pa_log_info("Found profile '%s'", t);
p = pa_card_profile_new(n, t, sizeof(struct profile_data));
commit e8f7eb616a40dbb66c201509e459e3a8bd5f3e02
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue May 26 22:30:36 2009 +0200
oss: don't deadlock when we try to resume an OSS device that lacks a mixer
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index ab26137..d6f549c 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -477,6 +477,7 @@ static void build_pollfd(struct userdata *u) {
pollfd->revents = 0;
}
+/* Called from IO context */
static int suspend(struct userdata *u) {
pa_assert(u);
pa_assert(u->fd >= 0);
@@ -526,6 +527,7 @@ static int suspend(struct userdata *u) {
return 0;
}
+/* Called from IO context */
static int unsuspend(struct userdata *u) {
int m;
pa_sample_spec ss, *ss_original;
@@ -616,10 +618,10 @@ static int unsuspend(struct userdata *u) {
build_pollfd(u);
- if (u->sink)
- pa_sink_get_volume(u->sink, TRUE, FALSE);
- if (u->source)
- pa_source_get_volume(u->source, TRUE);
+ if (u->sink && u->sink->get_volume)
+ u->sink->get_volume(u->sink);
+ if (u->source && u->source->get_volume)
+ u->source->get_volume(u->source);
pa_log_info("Resumed successfully...");
@@ -631,6 +633,7 @@ fail:
return -1;
}
+/* Called from IO context */
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;
int ret;
commit 699bd542f3aa51a82bcf3e60c63412c156ea1ab6
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue May 26 22:31:05 2009 +0200
libpulse: introduce PA_CHECK_VERSION macro
diff --git a/src/pulse/version.h.in b/src/pulse/version.h.in
index 566dd55..3143e98 100644
--- a/src/pulse/version.h.in
+++ b/src/pulse/version.h.in
@@ -60,6 +60,13 @@ const char* pa_get_library_version(void);
/** The micro version of PA. \since 0.9.15 */
#define PA_MICRO @PA_MICRO@
+/** Evaluates to TRUE if the PulseAudio library version is equal or
+ * newer than the specified. \since 0.9.16 */
+#define PA_CHECK_VERSION(major,minor,micro) \
+ ((PA_MAJOR > (major)) || \
+ (PA_MAJOR == (major) && CA_MINOR > (minor)) || \
+ (PA_MAJOR == (major) && CA_MINOR == (minor) && CA_MICRO >= (micro)))
+
PA_C_DECL_END
#endif
commit 19d7ced40d4631d5d3a44a5f29ede8b00cc425bc
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed May 27 23:18:17 2009 +0200
modargs: introduce pa_modargs_get_proplist()
diff --git a/src/pulsecore/modargs.c b/src/pulsecore/modargs.c
index 73c67a8..c7d734d 100644
--- a/src/pulsecore/modargs.c
+++ b/src/pulsecore/modargs.c
@@ -84,8 +84,11 @@ pa_modargs *pa_modargs_new(const char *args, const char* const* valid_keys) {
KEY,
VALUE_START,
VALUE_SIMPLE,
+ VALUE_SIMPLE_ESCAPED,
VALUE_DOUBLE_QUOTES,
- VALUE_TICKS
+ VALUE_DOUBLE_QUOTES_ESCAPED,
+ VALUE_TICKS,
+ VALUE_TICKS_ESCAPED
} state;
const char *p, *key = NULL, *value = NULL;
@@ -131,9 +134,16 @@ pa_modargs *pa_modargs_new(const char *args, const char* const* valid_keys) {
value = p+1;
value_len = 0;
} else if (isspace(*p)) {
- if (add_key_value(map, pa_xstrndup(key, key_len), pa_xstrdup(""), valid_keys) < 0)
+ if (add_key_value(map,
+ pa_xstrndup(key, key_len),
+ pa_xstrdup(""),
+ valid_keys) < 0)
goto fail;
state = WHITESPACE;
+ } else if (*p == '\\') {
+ state = VALUE_SIMPLE_ESCAPED;
+ value = p;
+ value_len = 1;
} else {
state = VALUE_SIMPLE;
value = p;
@@ -143,30 +153,63 @@ pa_modargs *pa_modargs_new(const char *args, const char* const* valid_keys) {
case VALUE_SIMPLE:
if (isspace(*p)) {
- if (add_key_value(map, pa_xstrndup(key, key_len), pa_xstrndup(value, value_len), valid_keys) < 0)
+ if (add_key_value(map,
+ pa_xstrndup(key, key_len),
+ pa_unescape(pa_xstrndup(value, value_len)),
+ valid_keys) < 0)
goto fail;
state = WHITESPACE;
+ } else if (*p == '\\') {
+ state = VALUE_SIMPLE_ESCAPED;
+ value_len++;
} else
value_len++;
break;
+ case VALUE_SIMPLE_ESCAPED:
+ state = VALUE_SIMPLE;
+ value_len++;
+ break;
+
case VALUE_DOUBLE_QUOTES:
if (*p == '"') {
- if (add_key_value(map, pa_xstrndup(key, key_len), pa_xstrndup(value, value_len), valid_keys) < 0)
+ if (add_key_value(map,
+ pa_xstrndup(key, key_len),
+ pa_unescape(pa_xstrndup(value, value_len)),
+ valid_keys) < 0)
goto fail;
state = WHITESPACE;
+ } else if (*p == '\\') {
+ state = VALUE_DOUBLE_QUOTES_ESCAPED;
+ value_len++;
} else
value_len++;
break;
+ case VALUE_DOUBLE_QUOTES_ESCAPED:
+ state = VALUE_DOUBLE_QUOTES;
+ value_len++;
+ break;
+
case VALUE_TICKS:
if (*p == '\'') {
- if (add_key_value(map, pa_xstrndup(key, key_len), pa_xstrndup(value, value_len), valid_keys) < 0)
+ if (add_key_value(map,
+ pa_xstrndup(key, key_len),
+ pa_unescape(pa_xstrndup(value, value_len)),
+ valid_keys) < 0)
goto fail;
state = WHITESPACE;
+ } else if (*p == '\\') {
+ state = VALUE_TICKS_ESCAPED;
+ value_len++;
} else
value_len++;
break;
+
+ case VALUE_TICKS_ESCAPED:
+ state = VALUE_TICKS;
+ value_len++;
+ break;
}
}
@@ -352,3 +395,23 @@ int pa_modargs_get_sample_spec_and_channel_map(
return 0;
}
+
+int pa_modargs_get_proplist(pa_modargs *ma, const char *name, pa_proplist *p, pa_update_mode_t m) {
+ const char *v;
+ pa_proplist *n;
+
+ pa_assert(ma);
+ pa_assert(name);
+ pa_assert(p);
+
+ if (!(v = pa_modargs_get_value(ma, name, NULL)))
+ return 0;
+
+ if (!(n = pa_proplist_from_string(v)))
+ return -1;
+
+ pa_proplist_update(p, m, n);
+ pa_proplist_free(n);
+
+ return 0;
+}
diff --git a/src/pulsecore/modargs.h b/src/pulsecore/modargs.h
index 809fb27..b3125b1 100644
--- a/src/pulsecore/modargs.h
+++ b/src/pulsecore/modargs.h
@@ -58,4 +58,6 @@ structure if no channel_map is found, using pa_channel_map_init_auto() */
int pa_modargs_get_sample_spec_and_channel_map(pa_modargs *ma, pa_sample_spec *ss, pa_channel_map *map, pa_channel_map_def_t def);
+int pa_modargs_get_proplist(pa_modargs *ma, const char *name, pa_proplist *p, pa_update_mode_t m);
+
#endif
diff --git a/src/tests/proplist-test.c b/src/tests/proplist-test.c
index 3e72356..27a0d3f 100644
--- a/src/tests/proplist-test.c
+++ b/src/tests/proplist-test.c
@@ -27,11 +27,14 @@
#include <pulse/xmalloc.h>
#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
+#include <pulsecore/modargs.h>
int main(int argc, char*argv[]) {
+ pa_modargs *ma;
pa_proplist *a, *b, *c, *d;
char *s, *t, *u, *v;
const char *text;
+ const char *x[] = { "foo", NULL };
a = pa_proplist_new();
pa_assert_se(pa_proplist_sets(a, PA_PROP_MEDIA_TITLE, "Brandenburgische Konzerte") == 0);
@@ -78,5 +81,16 @@ int main(int argc, char*argv[]) {
printf("%s\n", v);
pa_xfree(v);
+ pa_assert_se(ma = pa_modargs_new("foo='foobar=waldo foo2=\"lj\\\\\"dhflh\" foo3=\\'kjlskj\\\\\\'\\''", x));
+ pa_assert_se(a = pa_proplist_new());
+
+ pa_assert_se(pa_modargs_get_proplist(ma, "foo", a, PA_UPDATE_REPLACE) >= 0);
+
+ printf("%s\n", v = pa_proplist_to_string(a));
+ pa_xfree(v);
+
+ pa_proplist_free(a);
+ pa_modargs_free(ma);
+
return 0;
}
commit 6601e099295d72bee68512b8ffd89c7529f78069
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed May 27 23:18:55 2009 +0200
simple: set ADJUST_LATENCY by default
diff --git a/src/pulse/simple.c b/src/pulse/simple.c
index e70b7b1..f4481fc 100644
--- a/src/pulse/simple.c
+++ b/src/pulse/simple.c
@@ -50,35 +50,38 @@ struct pa_simple {
int operation_success;
};
-#define CHECK_VALIDITY_RETURN_ANY(rerror, expression, error, ret) do { \
-if (!(expression)) { \
- if (rerror) \
- *(rerror) = error; \
- return (ret); \
- } \
-} while(0);
-
-#define CHECK_SUCCESS_GOTO(p, rerror, expression, label) do { \
-if (!(expression)) { \
- if (rerror) \
- *(rerror) = pa_context_errno((p)->context); \
- goto label; \
- } \
-} while(0);
-
-#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_get_state((p)->context) == PA_CONTEXT_FAILED) || \
- ((p)->stream && pa_stream_get_state((p)->stream) == PA_STREAM_FAILED)) { \
- if (rerror) \
- *(rerror) = pa_context_errno((p)->context); \
- } else \
- if (rerror) \
- *(rerror) = PA_ERR_BADSTATE; \
- goto label; \
- } \
-} while(0);
+#define CHECK_VALIDITY_RETURN_ANY(rerror, expression, error, ret) \
+ do { \
+ if (!(expression)) { \
+ if (rerror) \
+ *(rerror) = error; \
+ return (ret); \
+ } \
+ } while(FALSE);
+
+#define CHECK_SUCCESS_GOTO(p, rerror, expression, label) \
+ do { \
+ if (!(expression)) { \
+ if (rerror) \
+ *(rerror) = pa_context_errno((p)->context); \
+ goto label; \
+ } \
+ } while(FALSE);
+
+#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_get_state((p)->context) == PA_CONTEXT_FAILED) || \
+ ((p)->stream && pa_stream_get_state((p)->stream) == PA_STREAM_FAILED)) { \
+ if (rerror) \
+ *(rerror) = pa_context_errno((p)->context); \
+ } else \
+ if (rerror) \
+ *(rerror) = PA_ERR_BADSTATE; \
+ goto label; \
+ } \
+ } while(FALSE);
static void context_state_cb(pa_context *c, void *userdata) {
pa_simple *p = userdata;
@@ -198,9 +201,15 @@ pa_simple* pa_simple_new(
pa_stream_set_latency_update_callback(p->stream, stream_latency_update_cb, p);
if (dir == PA_STREAM_PLAYBACK)
- r = pa_stream_connect_playback(p->stream, dev, attr, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL);
+ r = pa_stream_connect_playback(p->stream, dev, attr,
+ PA_STREAM_INTERPOLATE_TIMING
+ |PA_STREAM_ADJUST_LATENCY
+ |PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL);
else
- r = pa_stream_connect_record(p->stream, dev, attr, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE);
+ r = pa_stream_connect_record(p->stream, dev, attr,
+ PA_STREAM_INTERPOLATE_TIMING
+ |PA_STREAM_ADJUST_LATENCY
+ |PA_STREAM_AUTO_TIMING_UPDATE);
if (r < 0) {
error = pa_context_errno(p->context);
commit 208862698e8ebf6bebfd9a07e4cc4b43b3cd0d96
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed May 27 23:30:29 2009 +0200
null: introduce sink_properties= argument
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index d9bab6b..c0c2fac 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -54,12 +54,12 @@ PA_MODULE_DESCRIPTION("Clocked NULL sink");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
+ "sink_name=<name of sink> "
+ "sink_properties=<properties for the sink> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
- "sink_name=<name of sink> "
- "channel_map=<channel map> "
- "description=<description for the sink>");
+ "channels=<number of channels> "
+ "channel_map=<channel map>");
#define DEFAULT_SINK_NAME "null"
#define BLOCK_USEC (PA_USEC_PER_SEC * 2)
@@ -78,12 +78,13 @@ struct userdata {
};
static const char* const valid_modargs[] = {
- "rate",
+ "sink_name",
+ "sink_properties",
"format",
+ "rate",
"channels",
- "sink_name",
"channel_map",
- "description",
+ "description", /* supported for compatibility reasons, made redundant by sink_properties= */
NULL
};
@@ -289,6 +290,12 @@ int pa__init(pa_module*m) {
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) {
+ pa_log("Invalid properties.");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
pa_sink_new_data_done(&data);
commit 6044aabf586d45a1ed0d6f7b9c7ed5e46df275d2
Merge: 2088626 ce6643e
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed May 27 23:57:50 2009 +0200
Merge commit 'flameeyes/master'
commit 1c4393acf0a641a4f462cfa6c368d23d9e55a1b8
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 28 02:39:22 2009 +0200
modules: add {sink|source|card}_properties argument to all modules
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 784a8dd..59f5311 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1693,6 +1693,12 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_xfree(control_device);
}
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY|(u->use_tsched ? PA_SINK_DYNAMIC_LATENCY : 0));
pa_sink_new_data_done(&data);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 780da83..f1c1819 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1548,6 +1548,12 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_xfree(control_device);
}
+ if (pa_modargs_get_proplist(ma, "source_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&data);
+ goto fail;
+ }
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|(u->use_tsched ? PA_SOURCE_DYNAMIC_LATENCY : 0));
pa_source_new_data_done(&data);
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index d894b9c..ad52f5e 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -43,9 +43,12 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"name=<name for the card/sink/source, to be prefixed> "
- "card_name=<name for card> "
- "sink_name=<name for sink> "
- "source_name=<name for source> "
+ "card_name=<name for the card> "
+ "card_properties=<properties for the card> "
+ "sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
+ "source_name=<name for the source> "
+ "source_properties=<properties for the source> "
"device_id=<ALSA card index> "
"format=<sample format> "
"rate=<sample rate> "
@@ -61,8 +64,11 @@ PA_MODULE_USAGE(
static const char* const valid_modargs[] = {
"name",
"card_name",
+ "card_properties",
"sink_name",
+ "sink_properties",
"source_name",
+ "source_properties",
"device_id",
"format",
"rate",
@@ -340,6 +346,12 @@ int pa__init(pa_module *m) {
add_disabled_profile(data.profiles);
+ if (pa_modargs_get_proplist(ma, "card_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_card_new_data_done(&data);
+ goto fail;
+ }
+
u->card = pa_card_new(m->core, &data);
pa_card_new_data_done(&data);
diff --git a/src/modules/alsa/module-alsa-sink.c b/src/modules/alsa/module-alsa-sink.c
index 8e600ab..058ea20 100644
--- a/src/modules/alsa/module-alsa-sink.c
+++ b/src/modules/alsa/module-alsa-sink.c
@@ -40,6 +40,7 @@ PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"name=<name of the sink, to be prefixed> "
"sink_name=<name for the sink> "
+ "sink_properities=<properties for the sink> "
"device=<ALSA device> "
"device_id=<ALSA card index> "
"format=<sample format> "
@@ -58,6 +59,7 @@ PA_MODULE_USAGE(
static const char* const valid_modargs[] = {
"name",
"sink_name",
+ "sink_properties",
"device",
"device_id",
"format",
diff --git a/src/modules/alsa/module-alsa-source.c b/src/modules/alsa/module-alsa-source.c
index e6b27b3..3bd1b45 100644
--- a/src/modules/alsa/module-alsa-source.c
+++ b/src/modules/alsa/module-alsa-source.c
@@ -64,6 +64,7 @@ PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"name=<name for the source, to be prefixed> "
"source_name=<name for the source> "
+ "source_properties=<properties for the source> "
"device=<ALSA device> "
"device_id=<ALSA card index> "
"format=<sample format> "
@@ -82,6 +83,7 @@ PA_MODULE_USAGE(
static const char* const valid_modargs[] = {
"name",
"source_name",
+ "source_properties",
"device",
"device_id",
"format",
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 812b0ba..dbec00d 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -64,8 +64,11 @@ PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"name=<name for the card/sink/source, to be prefixed> "
"card_name=<name for the card> "
+ "card_properties=<properties for the card> "
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"source_name=<name for the source> "
+ "source_properties=<properties for the source> "
"address=<address of the device> "
"profile=<a2dp|hsp> "
"rate=<sample rate> "
@@ -84,8 +87,11 @@ PA_MODULE_USAGE(
static const char* const valid_modargs[] = {
"name",
"card_name",
+ "card_properties",
"sink_name",
+ "sink_properties",
"source_name",
+ "source_properties",
"address",
"profile",
"rate",
@@ -1620,6 +1626,12 @@ static int add_sink(struct userdata *u) {
data.name = get_name("sink", u->modargs, u->address, &b);
data.namereg_fail = b;
+ if (pa_modargs_get_proplist(u->modargs, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ return -1;
+ }
+
u->sink = pa_sink_new(u->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY | (u->profile == PROFILE_HSP ? PA_SINK_HW_VOLUME_CTRL : 0));
pa_sink_new_data_done(&data);
@@ -1672,6 +1684,12 @@ static int add_source(struct userdata *u) {
data.name = get_name("source", u->modargs, u->address, &b);
data.namereg_fail = b;
+ if (pa_modargs_get_proplist(u->modargs, "source_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&data);
+ return -1;
+ }
+
u->source = pa_source_new(u->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY | (u->profile == PROFILE_HSP ? PA_SOURCE_HW_VOLUME_CTRL : 0));
pa_source_new_data_done(&data);
@@ -1963,13 +1981,17 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
}
/* Run from main thread */
-static int add_card(struct userdata *u, const char *default_profile, const pa_bluetooth_device *device) {
+static int add_card(struct userdata *u, const pa_bluetooth_device *device) {
pa_card_new_data data;
pa_bool_t b;
pa_card_profile *p;
enum profile *d;
const char *ff;
char *n;
+ const char *default_profile;
+
+ pa_assert(u);
+ pa_assert(device);
pa_card_new_data_init(&data);
data.driver = __FILE__;
@@ -1990,6 +2012,12 @@ static int add_card(struct userdata *u, const char *default_profile, const pa_bl
data.name = get_name("card", u->modargs, device->address, &b);
data.namereg_fail = b;
+ if (pa_modargs_get_proplist(u->modargs, "card_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_card_new_data_done(&data);
+ return -1;
+ }
+
data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
/* we base hsp/a2dp availability on UUIDs.
@@ -2032,7 +2060,7 @@ static int add_card(struct userdata *u, const char *default_profile, const pa_bl
*d = PROFILE_OFF;
pa_hashmap_put(data.profiles, p->name, p);
- if (default_profile) {
+ if ((default_profile = pa_modargs_get_value(u->modargs, "profile", NULL))) {
if (pa_hashmap_get(data.profiles, default_profile))
pa_card_new_data_set_profile(&data, default_profile);
else
@@ -2178,7 +2206,7 @@ int pa__init(pa_module* m) {
goto fail;
/* Add the card structure. This will also initialize the default profile */
- if (add_card(u, pa_modargs_get_value(ma, "profile", NULL), device) < 0)
+ if (add_card(u, device) < 0)
goto fail;
/* Connect to the BT service and query capabilities */
diff --git a/src/modules/jack/module-jack-sink.c b/src/modules/jack/module-jack-sink.c
index 31b8a96..290038e 100644
--- a/src/modules/jack/module-jack-sink.c
+++ b/src/modules/jack/module-jack-sink.c
@@ -67,12 +67,13 @@ PA_MODULE_DESCRIPTION("JACK Sink");
PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_USAGE(
- "sink_name=<name of sink> "
+ "sink_name=<name for the sink> "
+ "sink_properties=<properties for the card> "
"server_name=<jack server name> "
"client_name=<jack client name> "
"channels=<number of channels> "
- "connect=<connect ports?> "
- "channel_map=<channel map>");
+ "channel_map=<channel map> "
+ "connect=<connect ports?>");
#define DEFAULT_SINK_NAME "jack_out"
@@ -102,11 +103,12 @@ struct userdata {
static const char* const valid_modargs[] = {
"sink_name",
+ "sink_properties",
"server_name",
"client_name",
"channels",
- "connect",
"channel_map",
+ "connect",
NULL
};
@@ -386,6 +388,12 @@ int pa__init(pa_module*m) {
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Jack sink (%s)", jack_get_client_name(u->client));
pa_proplist_sets(data.proplist, "jack.client_name", jack_get_client_name(u->client));
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
pa_sink_new_data_done(&data);
diff --git a/src/modules/jack/module-jack-source.c b/src/modules/jack/module-jack-source.c
index 9a215c5..ef89a98 100644
--- a/src/modules/jack/module-jack-source.c
+++ b/src/modules/jack/module-jack-source.c
@@ -57,12 +57,13 @@ PA_MODULE_DESCRIPTION("JACK Source");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
PA_MODULE_USAGE(
- "source_name=<name of source> "
+ "source_name=<name for the source> "
+ "source_properties=<properties for the source> "
"server_name=<jack server name> "
"client_name=<jack client name> "
"channels=<number of channels> "
- "connect=<connect ports?>"
- "channel_map=<channel map>");
+ "channel_map=<channel map> "
+ "connect=<connect ports?>");
#define DEFAULT_SOURCE_NAME "jack_in"
@@ -89,11 +90,12 @@ struct userdata {
static const char* const valid_modargs[] = {
"source_name",
+ "source_properties",
"server_name",
"client_name",
"channels",
- "connect",
"channel_map",
+ "connect",
NULL
};
@@ -338,6 +340,12 @@ int pa__init(pa_module*m) {
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Jack source (%s)", jack_get_client_name(u->client));
pa_proplist_sets(data.proplist, "jack.client_name", jack_get_client_name(u->client));
+ if (pa_modargs_get_proplist(ma, "source_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&data);
+ goto fail;
+ }
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_LATENCY);
pa_source_new_data_done(&data);
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index a1ef8da..02a7e1f 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -55,12 +55,13 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"slaves=<slave sinks> "
"adjust_time=<seconds> "
"resample_method=<method> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
+ "channels=<number of channels> "
"channel_map=<channel map>");
#define DEFAULT_SINK_NAME "combined"
@@ -73,12 +74,13 @@ PA_MODULE_USAGE(
static const char* const valid_modargs[] = {
"sink_name",
+ "sink_properties",
"slaves",
"adjust_time",
"resample_method",
"format",
- "channels",
"rate",
+ "channels",
"channel_map",
NULL
};
@@ -1080,6 +1082,12 @@ int pa__init(pa_module*m) {
if (slaves)
pa_proplist_sets(data.proplist, "combine.slaves", slaves);
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
pa_sink_new_data_done(&data);
diff --git a/src/modules/module-esound-sink.c b/src/modules/module-esound-sink.c
index a1a783a..8cb25c5 100644
--- a/src/modules/module-esound-sink.c
+++ b/src/modules/module-esound-sink.c
@@ -68,10 +68,11 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"server=<address> cookie=<filename> "
"format=<sample format> "
- "channels=<number of channels> "
- "rate=<sample rate>");
+ "rate=<sample rate> "
+ "channels=<number of channels>");
#define DEFAULT_SINK_NAME "esound_out"
@@ -118,12 +119,13 @@ struct userdata {
};
static const char* const valid_modargs[] = {
+ "sink_name",
+ "sink_properties",
"server",
"cookie",
- "rate",
"format",
+ "rate",
"channels",
- "sink_name",
NULL
};
@@ -586,6 +588,12 @@ int pa__init(pa_module*m) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_API, "esd");
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "EsounD Output on %s", espeaker);
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
pa_sink_new_data_done(&data);
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 44052c9..15af74a 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -50,10 +50,11 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"master=<name of sink to remap> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
+ "channels=<number of channels> "
"channel_map=<channel map> "
"plugin=<ladspa plugin name> "
"label=<ladspa plugin label> "
@@ -85,10 +86,11 @@ struct userdata {
static const char* const valid_modargs[] = {
"sink_name",
+ "sink_properties",
"master",
"format",
- "channels",
"rate",
+ "channels",
"channel_map",
"plugin",
"label",
@@ -705,6 +707,12 @@ int pa__init(pa_module*m) {
pa_proplist_sets(sink_data.proplist, "device.ladspa.copyright", d->Copyright);
pa_proplist_setf(sink_data.proplist, "device.ladspa.unique_id", "%lu", (unsigned long) d->UniqueID);
+ if (pa_modargs_get_proplist(ma, "sink_properties", sink_data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&sink_data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index c0c2fac..30a99ca 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -291,7 +291,7 @@ int pa__init(pa_module*m) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, "abstract");
if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
- pa_log("Invalid properties.");
+ pa_log("Invalid properties");
pa_sink_new_data_done(&data);
goto fail;
}
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index 304d01c..5b0f641 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -54,10 +54,11 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"file=<path of the FIFO> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate>"
+ "channels=<number of channels> "
"channel_map=<channel map>");
#define DEFAULT_FILE_NAME "fifo_output"
@@ -83,11 +84,12 @@ struct userdata {
};
static const char* const valid_modargs[] = {
+ "sink_name",
+ "sink_properties",
"file",
- "rate",
"format",
+ "rate",
"channels",
- "sink_name",
"channel_map",
NULL
};
@@ -279,6 +281,12 @@ int pa__init(pa_module*m) {
pa_sink_new_data_set_sample_spec(&data, &ss);
pa_sink_new_data_set_channel_map(&data, &map);
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
pa_sink_new_data_done(&data);
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
index 6ed4fbf..61c9fc0 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -54,10 +54,11 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"source_name=<name for the source> "
+ "source_properties=<properties for the source> "
"file=<path of the FIFO> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
+ "channels=<number of channels> "
"channel_map=<channel map>");
#define DEFAULT_FILE_NAME "/tmp/music.input"
@@ -81,11 +82,12 @@ struct userdata {
};
static const char* const valid_modargs[] = {
+ "source_name",
+ "source_properties",
"file",
+ "format",
"rate",
"channels",
- "format",
- "source_name",
"channel_map",
NULL
};
@@ -264,6 +266,12 @@ int pa__init(pa_module*m) {
pa_source_new_data_set_sample_spec(&data, &ss);
pa_source_new_data_set_channel_map(&data, &map);
+ if (pa_modargs_get_proplist(ma, "source_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&data);
+ goto fail;
+ }
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_LATENCY);
pa_source_new_data_done(&data);
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c
index 4d68b1b..052a3a5 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/module-raop-sink.c
@@ -72,11 +72,11 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
- "description=<description for the sink> "
+ "sink_properties=<properties for the sink> "
"server=<address> "
"format=<sample format> "
- "channels=<number of channels> "
- "rate=<sample rate>");
+ "rate=<sample rate> "
+ "channels=<number of channels>");
#define DEFAULT_SINK_NAME "raop"
@@ -118,12 +118,13 @@ struct userdata {
};
static const char* const valid_modargs[] = {
+ "sink_name",
+ "sink_properties",
"server",
- "rate",
"format",
+ "rate",
"channels",
- "sink_name",
- "description",
+ "description", /* supported for compatibility reasons, made redundant by sink_properties= */
NULL
};
@@ -587,6 +588,12 @@ int pa__init(pa_module*m) {
else
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
pa_sink_new_data_done(&data);
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index f9777be..119f5b9 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -44,6 +44,7 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"master=<name of sink to remap> "
"master_channel_map=<channel map> "
"format=<sample format> "
@@ -62,10 +63,11 @@ struct userdata {
static const char* const valid_modargs[] = {
"sink_name",
+ "sink_properties",
"master",
"master_channel_map",
- "rate",
"format",
+ "rate",
"channels",
"channel_map",
"remix",
@@ -354,6 +356,12 @@ int pa__init(pa_module*m) {
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
+ if (pa_modargs_get_proplist(ma, "sink_properties", sink_data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&sink_data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/module-sine-source.c b/src/modules/module-sine-source.c
index a6e15d8..14a04e4 100644
--- a/src/modules/module-sine-source.c
+++ b/src/modules/module-sine-source.c
@@ -55,8 +55,9 @@ PA_MODULE_DESCRIPTION("Sine wave generator source");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
- "rate=<sample rate> "
"source_name=<name for the source> "
+ "source_properties=<properties for the source> "
+ "rate=<sample rate> "
"frequency=<frequency in Hz>");
#define DEFAULT_SOURCE_NAME "sine_input"
@@ -79,8 +80,9 @@ struct userdata {
};
static const char* const valid_modargs[] = {
- "rate",
"source_name",
+ "source_properties",
+ "rate",
"frequency",
NULL
};
@@ -248,6 +250,12 @@ int pa__init(pa_module*m) {
pa_proplist_setf(data.proplist, "sine.hz", "%u", frequency);
pa_source_new_data_set_sample_spec(&data, &ss);
+ if (pa_modargs_get_proplist(ma, "source_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&data);
+ goto fail;
+ }
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_LATENCY);
pa_source_new_data_done(&data);
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 3f46406..5cfa97a 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -68,7 +68,9 @@ PA_MODULE_DESCRIPTION("Solaris Sink/Source");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"source_name=<name for the source> "
+ "source_properties=<properties for the source> "
"device=<audio device file name> "
"record=<enable source?> "
"playback=<enable sink?> "
@@ -112,7 +114,9 @@ struct userdata {
static const char* const valid_modargs[] = {
"sink_name",
+ "sink_properties",
"source_name",
+ "source_properties",
"device",
"record",
"playback",
@@ -897,10 +901,16 @@ int pa__init(pa_module *m) {
pa_source_new_data_set_channel_map(&source_new_data, &map);
pa_proplist_sets(source_new_data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
pa_proplist_sets(source_new_data.proplist, PA_PROP_DEVICE_API, "solaris");
- pa_proplist_setf(source_new_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Solaris PCM source");
+ pa_proplist_sets(source_new_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Solaris PCM source");
pa_proplist_sets(source_new_data.proplist, PA_PROP_DEVICE_ACCESS_MODE, "serial");
pa_proplist_setf(source_new_data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) u->buffer_size);
+ if (pa_modargs_get_proplist(ma, "source_properties", source_new_data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&source_new_data);
+ goto fail;
+ }
+
u->source = pa_source_new(m->core, &source_new_data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|PA_SOURCE_HW_VOLUME_CTRL);
pa_source_new_data_done(&source_new_data);
pa_xfree(name_buf);
@@ -939,9 +949,15 @@ int pa__init(pa_module *m) {
pa_sink_new_data_set_channel_map(&sink_new_data, &map);
pa_proplist_sets(sink_new_data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
pa_proplist_sets(sink_new_data.proplist, PA_PROP_DEVICE_API, "solaris");
- pa_proplist_setf(sink_new_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Solaris PCM sink");
+ pa_proplist_sets(sink_new_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Solaris PCM sink");
pa_proplist_sets(sink_new_data.proplist, PA_PROP_DEVICE_ACCESS_MODE, "serial");
+ if (pa_modargs_get_proplist(ma, "sink_properties", sink_new_data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&sink_new_data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &sink_new_data, PA_SINK_HARDWARE|PA_SINK_LATENCY|PA_SINK_HW_VOLUME_CTRL|PA_SINK_HW_MUTE_CTRL);
pa_sink_new_data_done(&sink_new_data);
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index 5ea58aa..6f525da 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -64,24 +64,26 @@
#ifdef TUNNEL_SINK
PA_MODULE_DESCRIPTION("Tunnel module for sinks");
PA_MODULE_USAGE(
+ "sink_name=<name for the local sink> "
+ "sink_properties=<properties for the local sink> "
"server=<address> "
"sink=<remote sink name> "
"cookie=<filename> "
"format=<sample format> "
"channels=<number of channels> "
"rate=<sample rate> "
- "sink_name=<name for the local sink> "
"channel_map=<channel map>");
#else
PA_MODULE_DESCRIPTION("Tunnel module for sources");
PA_MODULE_USAGE(
+ "source_name=<name for the local source> "
+ "source_properties=<properties for the local source> "
"server=<address> "
"source=<remote source name> "
"cookie=<filename> "
"format=<sample format> "
"channels=<number of channels> "
"rate=<sample rate> "
- "source_name=<name for the local source> "
"channel_map=<channel map>");
#endif
@@ -97,9 +99,11 @@ static const char* const valid_modargs[] = {
"rate",
#ifdef TUNNEL_SINK
"sink_name",
+ "sink_properties",
"sink",
#else
"source_name",
+ "source_properties",
"source",
#endif
"channel_map",
@@ -1873,6 +1877,12 @@ int pa__init(pa_module*m) {
if (u->sink_name)
pa_proplist_sets(data.proplist, "tunnel.remote.sink", u->sink_name);
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_NETWORK|PA_SINK_LATENCY|PA_SINK_HW_VOLUME_CTRL|PA_SINK_HW_MUTE_CTRL);
pa_sink_new_data_done(&data);
@@ -1911,6 +1921,12 @@ int pa__init(pa_module*m) {
if (u->source_name)
pa_proplist_sets(data.proplist, "tunnel.remote.source", u->source_name);
+ if (pa_modargs_get_proplist(ma, "source_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&data);
+ goto fail;
+ }
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_NETWORK|PA_SOURCE_LATENCY);
pa_source_new_data_done(&data);
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index d6f549c..7d8d25e 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -85,16 +85,18 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "sink_properties=<properties for the sink> "
"source_name=<name for the source> "
+ "source_properties=<properties for the source> "
"device=<OSS device> "
"record=<enable source?> "
"playback=<enable sink?> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
+ "channels=<number of channels> "
+ "channel_map=<channel map> "
"fragments=<number of fragments> "
"fragment_size=<fragment size> "
- "channel_map=<channel map> "
"mmap=<enable memory mapping?>");
#define DEFAULT_DEVICE "/dev/dsp"
@@ -140,7 +142,9 @@ struct userdata {
static const char* const valid_modargs[] = {
"sink_name",
+ "sink_properties",
"source_name",
+ "source_properties",
"device",
"record",
"playback",
@@ -1314,6 +1318,12 @@ int pa__init(pa_module*m) {
pa_proplist_setf(source_new_data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (u->in_hwbuf_size));
pa_proplist_setf(source_new_data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (u->in_fragment_size));
+ if (pa_modargs_get_proplist(ma, "source_properties", source_new_data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_source_new_data_done(&source_new_data);
+ goto fail;
+ }
+
u->source = pa_source_new(m->core, &source_new_data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY);
pa_source_new_data_done(&source_new_data);
pa_xfree(name_buf);
@@ -1376,6 +1386,12 @@ int pa__init(pa_module*m) {
pa_proplist_setf(sink_new_data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (u->out_hwbuf_size));
pa_proplist_setf(sink_new_data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (u->out_fragment_size));
+ if (pa_modargs_get_proplist(ma, "sink_properties", sink_new_data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties");
+ pa_sink_new_data_done(&sink_new_data);
+ goto fail;
+ }
+
u->sink = pa_sink_new(m->core, &sink_new_data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
pa_sink_new_data_done(&sink_new_data);
pa_xfree(name_buf);
commit c224aace42ca3b59d18a5bc7d5f33aed7d9fb99c
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 28 02:47:36 2009 +0200
modules: introduce PA_MODULE_DEPRECATED() macro for marking modules deprecated
diff --git a/src/daemon/dumpmodules.c b/src/daemon/dumpmodules.c
index 0ffc0fc..92470b4 100644
--- a/src/daemon/dumpmodules.c
+++ b/src/daemon/dumpmodules.c
@@ -71,6 +71,8 @@ static void long_info(const char *name, const char *path, pa_modinfo *i) {
if (i->usage)
printf(_("Usage: %s\n"), i->usage);
printf(_("Load Once: %s\n"), pa_yes_no(i->load_once));
+ if (i->deprecated)
+ printf(_("DEPRECATION WARNING: %s\n"), i->deprecated);
}
if (path)
diff --git a/src/modules/module-defs.h.m4 b/src/modules/module-defs.h.m4
index f9924cf..b6a60b6 100644
--- a/src/modules/module-defs.h.m4
+++ b/src/modules/module-defs.h.m4
@@ -17,6 +17,7 @@ gen_symbol(pa__get_author)
gen_symbol(pa__get_description)
gen_symbol(pa__get_usage)
gen_symbol(pa__get_version)
+gen_symbol(pa__get_deprecated)
gen_symbol(pa__load_once)
gen_symbol(pa__get_n_used)
@@ -28,6 +29,7 @@ const char* pa__get_author(void);
const char* pa__get_description(void);
const char* pa__get_usage(void);
const char* pa__get_version(void);
+const char* pa__get_deprecated(void);
pa_bool_t pa__load_once(void);
#endif
diff --git a/src/modules/module-detect.c b/src/modules/module-detect.c
index 49127ab..18479df 100644
--- a/src/modules/module-detect.c
+++ b/src/modules/module-detect.c
@@ -50,6 +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!");
static const char* const valid_modargs[] = {
"just-one",
diff --git a/src/modules/module-volume-restore.c b/src/modules/module-volume-restore.c
index 61858af..91da598 100644
--- a/src/modules/module-volume-restore.c
+++ b/src/modules/module-volume-restore.c
@@ -36,6 +36,7 @@ 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-stream-restore instead of module-volume-restore!");
static const char* const valid_modargs[] = {
"table",
@@ -62,7 +63,7 @@ int pa__init(pa_module*m) {
goto fail;
}
- pa_log_warn("module-volume-restore is obsolete. It has been replaced by module-stream-restore. We will now load the latter but please make sure to remove module-volume-restore from your configuration.");
+ 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);
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index 7d8d25e..b1afcfd 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -98,6 +98,9 @@ PA_MODULE_USAGE(
"fragments=<number of fragments> "
"fragment_size=<fragment size> "
"mmap=<enable memory mapping?>");
+#ifdef __linux__
+PA_MODULE_DEPRECATED("Please use module-alsa-card instead of module-oss!");
+#endif
#define DEFAULT_DEVICE "/dev/dsp"
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index 15fe525..dad647a 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -483,6 +483,8 @@ static int pa_cli_command_describe(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
if (i->usage)
pa_strbuf_printf(buf, "Usage: %s\n", i->usage);
pa_strbuf_printf(buf, "Load Once: %s\n", pa_yes_no(i->load_once));
+ if (i->deprecated)
+ pa_strbuf_printf(buf, "Warning, deprecated: %s\n", i->deprecated);
}
pa_modinfo_free(i);
diff --git a/src/pulsecore/ltdl-helper.h b/src/pulsecore/ltdl-helper.h
index 4c4f018..9f34696 100644
--- a/src/pulsecore/ltdl-helper.h
+++ b/src/pulsecore/ltdl-helper.h
@@ -29,4 +29,3 @@ typedef void (*pa_void_func_t)(void);
pa_void_func_t pa_load_sym(lt_dlhandle handle, const char*module, const char *symbol);
#endif
-
diff --git a/src/pulsecore/modinfo.c b/src/pulsecore/modinfo.c
index 00fb9c4..b5ee9f5 100644
--- a/src/pulsecore/modinfo.c
+++ b/src/pulsecore/modinfo.c
@@ -38,6 +38,7 @@
#define PA_SYMBOL_DESCRIPTION "pa__get_description"
#define PA_SYMBOL_USAGE "pa__get_usage"
#define PA_SYMBOL_VERSION "pa__get_version"
+#define PA_SYMBOL_DEPRECATED "pa__get_deprecated"
#define PA_SYMBOL_LOAD_ONCE "pa__load_once"
pa_modinfo *pa_modinfo_get_by_handle(lt_dlhandle dl, const char *module_name) {
@@ -61,6 +62,9 @@ pa_modinfo *pa_modinfo_get_by_handle(lt_dlhandle dl, const char *module_name) {
if ((func = (const char* (*)(void)) pa_load_sym(dl, module_name, PA_SYMBOL_VERSION)))
i->version = pa_xstrdup(func());
+ if ((func = (const char* (*)(void)) pa_load_sym(dl, module_name, PA_SYMBOL_DEPRECATED)))
+ i->deprecated = pa_xstrdup(func());
+
if ((func2 = (pa_bool_t (*)(void)) pa_load_sym(dl, module_name, PA_SYMBOL_LOAD_ONCE)))
i->load_once = func2();
@@ -91,5 +95,6 @@ void pa_modinfo_free(pa_modinfo *i) {
pa_xfree(i->description);
pa_xfree(i->usage);
pa_xfree(i->version);
+ pa_xfree(i->deprecated);
pa_xfree(i);
}
diff --git a/src/pulsecore/modinfo.h b/src/pulsecore/modinfo.h
index 407e602..baad0de 100644
--- a/src/pulsecore/modinfo.h
+++ b/src/pulsecore/modinfo.h
@@ -30,6 +30,7 @@ typedef struct pa_modinfo {
char *description;
char *usage;
char *version;
+ char *deprecated;
pa_bool_t load_once;
} pa_modinfo;
diff --git a/src/pulsecore/module.c b/src/pulsecore/module.c
index 42fd912..5bcdd89 100644
--- a/src/pulsecore/module.c
+++ b/src/pulsecore/module.c
@@ -48,10 +48,12 @@
#define PA_SYMBOL_DONE "pa__done"
#define PA_SYMBOL_LOAD_ONCE "pa__load_once"
#define PA_SYMBOL_GET_N_USED "pa__get_n_used"
+#define PA_SYMBOL_GET_DEPRECATE "pa__get_deprecated"
pa_module* pa_module_load(pa_core *c, const char *name, const char *argument) {
pa_module *m = NULL;
pa_bool_t (*load_once)(void);
+ const char* (*get_deprecated)(void);
pa_modinfo *mi;
pa_assert(c);
@@ -89,6 +91,13 @@ pa_module* pa_module_load(pa_core *c, const char *name, const char *argument) {
}
}
+ if ((get_deprecated = (const char* (*) (void)) pa_load_sym(m->dl, name, PA_SYMBOL_GET_DEPRECATE))) {
+ const char *t;
+
+ if ((t = get_deprecated()))
+ pa_log_warn("%s is deprecated: %s", name, t);
+ }
+
if (!(m->init = (int (*)(pa_module*_m)) pa_load_sym(m->dl, name, PA_SYMBOL_INIT))) {
pa_log("Failed to load module \"%s\": symbol \""PA_SYMBOL_INIT"\" not found.", name);
goto fail;
diff --git a/src/pulsecore/module.h b/src/pulsecore/module.h
index 3f69734..af89d79 100644
--- a/src/pulsecore/module.h
+++ b/src/pulsecore/module.h
@@ -78,6 +78,10 @@ int pa_module_get_n_used(pa_module*m);
const char * pa__get_version(void) { return s; } \
struct __stupid_useless_struct_to_allow_trailing_semicolon
+#define PA_MODULE_DEPRECATED(s) \
+ const char * pa__get_deprecated(void) { return s; } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
#define PA_MODULE_LOAD_ONCE(b) \
pa_bool_t pa__load_once(void) { return b; } \
struct __stupid_useless_struct_to_allow_trailing_semicolon
commit 8bada7496c4d12a033ba54fed98ba796239a1776
Merge: c224aac 6044aab
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu May 28 02:50:11 2009 +0200
Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
commit 4d874753f5ba838b015c69f281e991c7a42381eb
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Jun 4 23:19:48 2009 +0200
utils: use pa_path_get_filename() where applicable
diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c
index d78089e..ecb3848 100644
--- a/src/daemon/cmdline.c
+++ b/src/daemon/cmdline.c
@@ -31,6 +31,7 @@
#include <pulse/xmalloc.h>
#include <pulse/i18n.h>
+#include <pulse/util.h>
#include <pulsecore/core-util.h>
#include <pulsecore/strbuf.h>
@@ -109,15 +110,8 @@ static const struct option long_options[] = {
};
void pa_cmdline_help(const char *argv0) {
- const char *e;
-
pa_assert(argv0);
- if ((e = strrchr(argv0, '/')))
- e++;
- else
- e = argv0;
-
printf(_("%s [options]\n\n"
"COMMANDS:\n"
" -h, --help Show this help\n"
@@ -172,7 +166,8 @@ void pa_cmdline_help(const char *argv0) {
" -C Open a command line on the running TTY\n"
" after startup\n\n"
- " -n Don't load default script file\n"), e);
+ " -n Don't load default script file\n"),
+ pa_path_get_filename(argv0));
}
int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d) {
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index 53c6766..6608c01 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -802,7 +802,6 @@ enum {
int main(int argc, char *argv[]) {
pa_mainloop* m = NULL;
- char tmp[PATH_MAX];
int ret = 1, c;
char *server = NULL, *bn;
@@ -882,17 +881,8 @@ int main(int argc, char *argv[]) {
if (optind+2 < argc)
sample_name = pa_xstrdup(argv[optind+2]);
else {
- char *f = strrchr(argv[optind+1], '/');
- size_t n;
- if (f)
- f++;
- else
- f = argv[optind];
-
- n = strcspn(f, ".");
- strncpy(tmp, f, n);
- tmp[n] = 0;
- sample_name = pa_xstrdup(tmp);
+ char *f = pa_path_get_filename(argv[optind+1]);
+ sample_name = pa_xstrndup(f, strcspn(f, "."));
}
pa_zero(sfi);
diff --git a/src/utils/pasuspender.c b/src/utils/pasuspender.c
index b4bccd5..c327ee4 100644
--- a/src/utils/pasuspender.c
+++ b/src/utils/pasuspender.c
@@ -235,10 +235,7 @@ int main(int argc, char *argv[]) {
setlocale(LC_ALL, "");
bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
- if (!(bn = strrchr(argv[0], '/')))
- bn = argv[0];
- else
- bn++;
+ bn = pa_path_get_filename(argv[0]);
while ((c = getopt_long(argc, argv, "s:h", long_options, NULL)) != -1) {
switch (c) {
commit 3e10f3f4e3bde6bb772eab70a1008895a302494f
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Jun 4 23:50:43 2009 +0200
tdb: include signal.h before tdb.h for compat reasons
diff --git a/src/pulsecore/database-tdb.c b/src/pulsecore/database-tdb.c
index c35fd81..b79d283 100644
--- a/src/pulsecore/database-tdb.c
+++ b/src/pulsecore/database-tdb.c
@@ -26,6 +26,9 @@
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
+
+/* Some versions of tdb lack inclusion of signal.h in the header files but use sigatomic_t */
+#include <signal.h>
#include <tdb.h>
#include <pulse/xmalloc.h>
commit 1748fd2a0d327201ee57847ba3d9a8209f8d98d6
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Jun 5 19:00:12 2009 +0200
reserve: update reserve.[ch] from upstream git
diff --git a/src/modules/reserve.c b/src/modules/reserve.c
index 9a9591d..09bc46c 100644
--- a/src/modules/reserve.c
+++ b/src/modules/reserve.c
@@ -43,16 +43,15 @@ struct rd_device {
DBusConnection *connection;
- int owning:1;
- int registered:1;
- int filtering:1;
- int gave_up:1;
+ unsigned owning:1;
+ unsigned registered:1;
+ unsigned filtering:1;
+ unsigned gave_up:1;
rd_request_cb_t request_cb;
void *userdata;
};
-
#define SERVICE_PREFIX "org.freedesktop.ReserveDevice1."
#define OBJECT_PREFIX "/org/freedesktop/ReserveDevice1/"
@@ -297,6 +296,7 @@ static DBusHandlerResult filter_handler(
dbus_error_init(&error);
d = userdata;
+ assert(d->ref >= 1);
if (dbus_message_is_signal(m, "org.freedesktop.DBus", "NameLost")) {
const char *name;
@@ -560,7 +560,7 @@ void rd_release(
assert(d->ref > 0);
- if (--d->ref)
+ if (--d->ref > 0)
return;
@@ -575,17 +575,11 @@ void rd_release(
d->connection,
d->object_path);
- if (d->owning) {
- DBusError error;
- dbus_error_init(&error);
-
+ if (d->owning)
dbus_bus_release_name(
d->connection,
d->service_name,
- &error);
-
- dbus_error_free(&error);
- }
+ NULL);
free(d->device_name);
free(d->application_name);
diff --git a/src/modules/reserve.h b/src/modules/reserve.h
index b315a08..3107129 100644
--- a/src/modules/reserve.h
+++ b/src/modules/reserve.h
@@ -45,7 +45,7 @@ typedef int (*rd_request_cb_t)(
* the error was caused D-Bus. */
int rd_acquire(
rd_device **d, /* On success a pointer to the newly allocated rd_device object will be filled in here */
- DBusConnection *connection,
+ DBusConnection *connection, /* Session bus (when D-Bus learns about user busses we should switchg to user busses) */
const char *device_name, /* The device to lock, e.g. "Audio0" */
const char *application_name, /* A human readable name of the application, e.g. "PulseAudio Sound Server" */
int32_t priority, /* The priority for this application. If unsure use 0 */
commit 3af5f8cb553e512305c1f3603b57424c36c9c82c
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Jun 5 19:03:16 2009 +0200
reserve: wrap device reservation monitor reference implementation
diff --git a/src/Makefile.am b/src/Makefile.am
index a7ec691..c0e1806 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1358,7 +1358,7 @@ libalsa_util_la_CFLAGS += $(UDEV_CFLAGS)
endif
if HAVE_DBUS
-libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c
+libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c modules/reserve-monitor.h modules/reserve-monitor.c
libalsa_util_la_LIBADD += $(DBUS_LIBS)
libalsa_util_la_CFLAGS += $(DBUS_CFLAGS)
endif
@@ -1670,7 +1670,7 @@ update-sbc:
done
update-reserve:
- for i in reserve.c reserve.h ; do \
+ for i in reserve.c reserve.h reserve-monitor.c reserve-monitor.h ; do \
wget -O modules/$$i http://git.0pointer.de/\?p=reserve.git\;a=blob_plain\;f=$$i\;hb=master ; \
done
diff --git a/src/modules/reserve-monitor.c b/src/modules/reserve-monitor.c
new file mode 100644
index 0000000..64d2a7c
--- /dev/null
+++ b/src/modules/reserve-monitor.c
@@ -0,0 +1,259 @@
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "reserve-monitor.h"
+
+struct rm_monitor {
+ int ref;
+
+ char *device_name;
+ char *service_name;
+
+ DBusConnection *connection;
+
+ unsigned busy:1;
+ unsigned filtering:1;
+ unsigned matching:1;
+
+ rm_change_cb_t change_cb;
+ void *userdata;
+};
+
+#define SERVICE_PREFIX "org.freedesktop.ReserveDevice1."
+
+static DBusHandlerResult filter_handler(
+ DBusConnection *c,
+ DBusMessage *s,
+ void *userdata) {
+
+ DBusMessage *reply;
+ rm_monitor *m;
+ DBusError error;
+
+ dbus_error_init(&error);
+
+ m = userdata;
+ assert(m->ref >= 1);
+
+ if (dbus_message_is_signal(s, "org.freedesktop.DBus", "NameOwnerChanged")) {
+ const char *name, *old, *new;
+
+ if (!dbus_message_get_args(
+ s,
+ &error,
+ DBUS_TYPE_STRING, &name,
+ DBUS_TYPE_STRING, &old,
+ DBUS_TYPE_STRING, &new,
+ DBUS_TYPE_INVALID))
+ goto invalid;
+
+ if (strcmp(name, m->service_name) == 0) {
+
+ m->busy = !!(new && *new);
+
+ if (m->change_cb) {
+ m->ref++;
+ m->change_cb(m);
+ rm_release(m);
+ }
+ }
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+invalid:
+ if (!(reply = dbus_message_new_error(
+ s,
+ DBUS_ERROR_INVALID_ARGS,
+ "Invalid arguments")))
+ goto oom;
+
+ if (!dbus_connection_send(c, reply, NULL))
+ goto oom;
+
+ dbus_message_unref(reply);
+
+ dbus_error_free(&error);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+
+oom:
+ if (reply)
+ dbus_message_unref(reply);
+
+ dbus_error_free(&error);
+
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+}
+
+int rm_watch(
+ rm_monitor **_m,
+ DBusConnection *connection,
+ const char*device_name,
+ rm_change_cb_t change_cb,
+ DBusError *error) {
+
+ rm_monitor *m = NULL;
+ int r;
+ DBusError _error;
+
+ if (!error)
+ error = &_error;
+
+ dbus_error_init(error);
+
+ if (!_m)
+ return -EINVAL;
+
+ if (!connection)
+ return -EINVAL;
+
+ if (!device_name)
+ return -EINVAL;
+
+ if (!(m = calloc(sizeof(rm_monitor), 1)))
+ return -ENOMEM;
+
+ m->ref = 1;
+
+ if (!(m->device_name = strdup(device_name))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ m->connection = dbus_connection_ref(connection);
+ m->change_cb = change_cb;
+
+ if (!(m->service_name = malloc(sizeof(SERVICE_PREFIX) + strlen(device_name)))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+ sprintf(m->service_name, SERVICE_PREFIX "%s", m->device_name);
+
+ if (!(dbus_connection_add_filter(m->connection, filter_handler, m, NULL))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ m->filtering = 1;
+
+ dbus_bus_add_match(m->connection,
+ "type='signal',"
+ "sender='" DBUS_SERVICE_DBUS "',"
+ "interface='" DBUS_INTERFACE_DBUS "',"
+ "member='NameOwnerChanged'", error);
+
+ if (dbus_error_is_set(error)) {
+ r = -EIO;
+ goto fail;
+ }
+
+ m->matching = 1;
+
+ m->busy = dbus_bus_name_has_owner(m->connection, m->service_name, error);
+
+ if (dbus_error_is_set(error)) {
+ r = -EIO;
+ goto fail;
+ }
+
+ *_m = m;
+ return 0;
+
+fail:
+ if (&_error == error)
+ dbus_error_free(&_error);
+
+ if (m)
+ rm_release(m);
+
+ return r;
+}
+
+void rm_release(rm_monitor *m) {
+ if (!m)
+ return;
+
+ assert(m->ref > 0);
+
+ if (--m->ref > 0)
+ return;
+
+ if (m->matching)
+ dbus_bus_remove_match(
+ m->connection,
+ "type='signal',"
+ "sender='" DBUS_SERVICE_DBUS "',"
+ "interface='" DBUS_INTERFACE_DBUS "',"
+ "member='NameOwnerChanged'", NULL);
+
+ if (m->filtering)
+ dbus_connection_remove_filter(
+ m->connection,
+ filter_handler,
+ m);
+
+ free(m->device_name);
+ free(m->service_name);
+
+ if (m->connection)
+ dbus_connection_unref(m->connection);
+
+ free(m);
+}
+
+int rm_busy(rm_monitor *m) {
+ if (!m)
+ return -EINVAL;
+
+ assert(m->ref > 0);
+
+ return m->busy;
+}
+
+void rm_set_userdata(rm_monitor *m, void *userdata) {
+
+ if (!m)
+ return;
+
+ assert(m->ref > 0);
+ m->userdata = userdata;
+}
+
+void* rm_get_userdata(rm_monitor *m) {
+
+ if (!m)
+ return NULL;
+
+ assert(m->ref > 0);
+
+ return m->userdata;
+}
diff --git a/src/modules/reserve-monitor.h b/src/modules/reserve-monitor.h
new file mode 100644
index 0000000..4f4a833
--- /dev/null
+++ b/src/modules/reserve-monitor.h
@@ -0,0 +1,62 @@
+#ifndef fooreservemonitorhfoo
+#define fooreservemonitorhfoo
+
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <dbus/dbus.h>
+#include <inttypes.h>
+
+typedef struct rm_monitor rm_monitor;
+
+/* Prototype for a function that is called whenever the reservation
+ * device of a device changes. Use rm_monitor_busy() to find out the
+ * new state.*/
+typedef void (*rm_change_cb_t)(rm_monitor *m);
+
+/* Creates a monitor for watching the lock status of a device. Returns
+ * 0 on success, a negative errno style return value on error. The
+ * DBus error might be set as well if the error was caused D-Bus. */
+int rm_watch(
+ rm_monitor **m, /* On success a pointer to the newly allocated rm_device object will be filled in here */
+ DBusConnection *connection, /* Session bus (when D-Bus learns about user busses we should switchg to user busses) */
+ const char *device_name, /* The device to monitor, e.g. "Audio0" */
+ rm_change_cb_t change_cb, /* Will be called whenever the lock status changes. May be NULL */
+ DBusError *error); /* If we fail due to a D-Bus related issue the error will be filled in here. May be NULL. */
+
+/* Free a rm_monitor object */
+void rm_release(rm_monitor *m);
+
+/* Checks whether the device is currently reserved, and returns 1
+ * then, 0 if not, negative errno style error code value on error. */
+int rm_busy(rm_monitor *m);
+
+/* Attach a userdata pointer to an rm_monitor */
+void rm_set_userdata(rm_monitor *m, void *userdata);
+
+/* Query the userdata pointer from an rm_monitor. Returns NULL if no
+ * userdata was set. */
+void* rm_get_userdata(rm_monitor *m);
+
+#endif
diff --git a/src/modules/reserve-wrap.c b/src/modules/reserve-wrap.c
index d0d014d..07b592d 100644
--- a/src/modules/reserve-wrap.c
+++ b/src/modules/reserve-wrap.c
@@ -35,6 +35,7 @@
#ifdef HAVE_DBUS
#include <pulsecore/dbus-shared.h>
#include "reserve.h"
+#include "reserve-monitor.h"
#endif
#include "reserve-wrap.h"
@@ -50,6 +51,17 @@ struct pa_reserve_wrapper {
#endif
};
+struct pa_reserve_monitor_wrapper {
+ PA_REFCNT_DECLARE;
+ pa_core *core;
+ pa_hook hook;
+ char *shared_name;
+#ifdef HAVE_DBUS
+ pa_dbus_connection *connection;
+ struct rm_monitor *monitor;
+#endif
+};
+
static void reserve_wrapper_free(pa_reserve_wrapper *r) {
pa_assert(r);
@@ -83,7 +95,7 @@ static int request_cb(rd_device *d, int forced) {
PA_REFCNT_INC(r);
k = pa_hook_fire(&r->hook, PA_INT_TO_PTR(forced));
- pa_log_debug("Device unlock has been requested and %s.", k < 0 ? "failed" : "succeeded");
+ pa_log_debug("Device unlock of %s has been requested and %s.", r->shared_name, k < 0 ? "failed" : "succeeded");
pa_reserve_wrapper_unref(r);
@@ -191,3 +203,138 @@ void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const
rd_set_application_device_name(r->device, name);
#endif
}
+
+static void reserve_monitor_wrapper_free(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+
+#ifdef HAVE_DBUS
+ if (w->monitor)
+ rm_release(w->monitor);
+
+ if (w->connection)
+ pa_dbus_connection_unref(w->connection);
+#endif
+
+ pa_hook_done(&w->hook);
+
+ if (w->shared_name) {
+ pa_assert_se(pa_shared_remove(w->core, w->shared_name) >= 0);
+ pa_xfree(w->shared_name);
+ }
+
+ pa_xfree(w);
+}
+
+#ifdef HAVE_DBUS
+static void change_cb(rm_monitor *m) {
+ pa_reserve_monitor_wrapper *w;
+ int k;
+
+ pa_assert(m);
+ pa_assert_se(w = rm_get_userdata(m));
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ PA_REFCNT_INC(w);
+
+ if ((k = rm_busy(w->monitor)) < 0)
+ return;
+
+ pa_hook_fire(&w->hook, PA_INT_TO_PTR(!!k));
+ pa_log_debug("Device lock status of %s changed: %s", w->shared_name, k ? "busy" : "not busy");
+
+ pa_reserve_monitor_wrapper_unref(w);
+}
+#endif
+
+pa_reserve_monitor_wrapper* pa_reserve_monitor_wrapper_get(pa_core *c, const char *device_name) {
+ pa_reserve_monitor_wrapper *w;
+ int k;
+ char *t;
+#ifdef HAVE_DBUS
+ DBusError error;
+
+ dbus_error_init(&error);
+#endif
+
+ pa_assert(c);
+ pa_assert(device_name);
+
+ t = pa_sprintf_malloc("reserve-monitor-wrapper@%s", device_name);
+
+ if ((w = pa_shared_get(c, t))) {
+ pa_xfree(t);
+
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+ PA_REFCNT_INC(w);
+
+ return w;
+ }
+
+ w = pa_xnew0(pa_reserve_monitor_wrapper, 1);
+ PA_REFCNT_INIT(w);
+ w->core = c;
+ pa_hook_init(&w->hook, w);
+ w->shared_name = t;
+
+ pa_assert_se(pa_shared_set(c, w->shared_name, w) >= 0);
+
+#ifdef HAVE_DBUS
+ if (!(w->connection = pa_dbus_bus_get(c, DBUS_BUS_SESSION, &error)) || dbus_error_is_set(&error)) {
+ pa_log_warn("Unable to contact D-Bus session bus: %s: %s", error.name, error.message);
+
+ /* We don't treat this as error here because we want allow PA
+ * to run even when no session bus is available. */
+ return w;
+ }
+
+ if ((k = rm_watch(
+ &w->monitor,
+ pa_dbus_connection_get(w->connection),
+ device_name,
+ change_cb,
+ NULL)) < 0) {
+
+ pa_log_warn("Failed to create watch on device '%s': %s", device_name, pa_cstrerror(-k));
+ goto fail;
+ }
+
+ pa_log_debug("Successfully create reservation lock monitor for device '%s'", device_name);
+
+ rm_set_userdata(w->monitor, w);
+ return w;
+
+fail:
+ dbus_error_free(&error);
+
+ reserve_monitor_wrapper_free(w);
+
+ return NULL;
+#else
+ return w;
+#endif
+}
+
+void pa_reserve_monitor_wrapper_unref(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ if (PA_REFCNT_DEC(w) > 0)
+ return;
+
+ reserve_monitor_wrapper_free(w);
+}
+
+pa_hook* pa_reserve_monitor_wrapper_hook(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ return &w->hook;
+}
+
+pa_bool_t pa_reserve_monitor_wrapper_busy(pa_reserve_monitor_wrapper *w) {
+ pa_assert(w);
+
+ pa_assert(PA_REFCNT_VALUE(w) >= 1);
+
+ return rm_busy(w->monitor) > 0;
+}
diff --git a/src/modules/reserve-wrap.h b/src/modules/reserve-wrap.h
index 2b97c91..2de6c09 100644
--- a/src/modules/reserve-wrap.h
+++ b/src/modules/reserve-wrap.h
@@ -28,11 +28,18 @@
typedef struct pa_reserve_wrapper pa_reserve_wrapper;
pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name);
-
void pa_reserve_wrapper_unref(pa_reserve_wrapper *r);
pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r);
void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const char *name);
+typedef struct pa_reserve_monitor_wrapper pa_reserve_monitor_wrapper;
+
+pa_reserve_monitor_wrapper* pa_reserve_monitor_wrapper_get(pa_core *c, const char *device_name);
+void pa_reserve_monitor_wrapper_unref(pa_reserve_monitor_wrapper *m);
+
+pa_hook* pa_reserve_monitor_wrapper_hook(pa_reserve_monitor_wrapper *m);
+pa_bool_t pa_reserve_monitor_wrapper_busy(pa_reserve_monitor_wrapper *m);
+
#endif
commit 00797b8b6ea7978f862facb7181fb04895caf23c
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Jun 5 19:05:07 2009 +0200
core: add a suspend cause flags field
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 59f5311..b1adc52 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -124,7 +124,7 @@ static pa_hook_result_t reserve_cb(pa_reserve_wrapper *r, void *forced, struct u
pa_assert(r);
pa_assert(u);
- if (pa_sink_suspend(u->sink, TRUE) < 0)
+ if (pa_sink_suspend(u->sink, TRUE, PA_SUSPEND_APPLICATION) < 0)
return PA_HOOK_CANCEL;
return PA_HOOK_OK;
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index f1c1819..68f697d 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -122,7 +122,7 @@ static pa_hook_result_t reserve_cb(pa_reserve_wrapper *r, void *forced, struct u
pa_assert(r);
pa_assert(u);
- if (pa_source_suspend(u->source, TRUE) < 0)
+ if (pa_source_suspend(u->source, TRUE, PA_SUSPEND_APPLICATION) < 0)
return PA_HOOK_CANCEL;
return PA_HOOK_OK;
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 02a7e1f..725faa0 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -593,7 +593,7 @@ static void unsuspend(struct userdata *u) {
/* Let's resume */
for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
- pa_sink_suspend(o->sink, FALSE);
+ pa_sink_suspend(o->sink, FALSE, PA_SUSPEND_IDLE);
if (PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
enable_output(o);
@@ -873,7 +873,7 @@ static struct output *output_new(struct userdata *u, pa_sink *sink) {
}
if (PA_SINK_IS_OPENED(state) || state == PA_SINK_INIT) {
- pa_sink_suspend(sink, FALSE);
+ pa_sink_suspend(sink, FALSE, PA_SUSPEND_IDLE);
if (PA_SINK_IS_OPENED(pa_sink_get_state(sink)))
if (output_create_sink_input(o) < 0)
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index b6139e4..9ac8705 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -567,7 +567,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_sink *sink;
if ((sink = pa_namereg_get(u->core, d->sink_name, PA_NAMEREG_SINK))) {
- pa_bool_t success = pa_sink_suspend(sink, suspend) >= 0;
+ pa_bool_t success = pa_sink_suspend(sink, suspend, PA_SUSPEND_SESSION) >= 0;
if (!success && !suspend)
d->acl_race_fix = TRUE; /* resume failed, let's try again */
@@ -580,7 +580,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_source *source;
if ((source = pa_namereg_get(u->core, d->source_name, PA_NAMEREG_SOURCE))) {
- pa_bool_t success = pa_source_suspend(source, suspend) >= 0;
+ pa_bool_t success = pa_source_suspend(source, suspend, PA_SUSPEND_SESSION) >= 0;
if (!success && !suspend)
d->acl_race_fix = TRUE; /* resume failed, let's try again */
@@ -593,7 +593,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_card *card;
if ((card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD))) {
- pa_bool_t success = pa_card_suspend(card, suspend) >= 0;
+ pa_bool_t success = pa_card_suspend(card, suspend, PA_SUSPEND_SESSION) >= 0;
if (!success && !suspend)
d->acl_race_fix = TRUE; /* resume failed, let's try again */
@@ -637,21 +637,21 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
pa_sink *sink;
if ((sink = pa_namereg_get(u->core, d->sink_name, PA_NAMEREG_SINK)))
- pa_sink_suspend(sink, FALSE);
+ pa_sink_suspend(sink, FALSE, PA_SUSPEND_SESSION);
}
if (d->source_name) {
pa_source *source;
if ((source = pa_namereg_get(u->core, d->source_name, PA_NAMEREG_SOURCE)))
- pa_source_suspend(source, FALSE);
+ pa_source_suspend(source, FALSE, PA_SUSPEND_SESSION);
}
if (d->card_name) {
pa_card *card;
if ((card = pa_namereg_get(u->core, d->source_name, PA_NAMEREG_CARD)))
- pa_card_suspend(card, FALSE);
+ pa_card_suspend(card, FALSE, PA_SUSPEND_SESSION);
}
}
diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
index cc69d74..c5b7891 100644
--- a/src/modules/module-suspend-on-idle.c
+++ b/src/modules/module-suspend-on-idle.c
@@ -86,14 +86,14 @@ static void timeout_cb(pa_mainloop_api*a, pa_time_event* e, const struct timeval
d->userdata->core->mainloop->time_restart(d->time_event, NULL);
- if (d->sink && pa_sink_check_suspend(d->sink) <= 0 && pa_sink_get_state(d->sink) != PA_SINK_SUSPENDED) {
+ if (d->sink && pa_sink_check_suspend(d->sink) <= 0 && !(d->sink->suspend_cause & PA_SUSPEND_IDLE)) {
pa_log_info("Sink %s idle for too long, suspending ...", d->sink->name);
- pa_sink_suspend(d->sink, TRUE);
+ pa_sink_suspend(d->sink, TRUE, PA_SUSPEND_IDLE);
}
- if (d->source && pa_source_check_suspend(d->source) <= 0 && pa_source_get_state(d->source) != PA_SOURCE_SUSPENDED) {
+ if (d->source && pa_source_check_suspend(d->source) <= 0 && !(d->source->suspend_cause & PA_SUSPEND_IDLE)) {
pa_log_info("Source %s idle for too long, suspending ...", d->source->name);
- pa_source_suspend(d->source, TRUE);
+ pa_source_suspend(d->source, TRUE, PA_SUSPEND_IDLE);
}
}
@@ -127,13 +127,13 @@ static void resume(struct device_info *d) {
d->userdata->core->mainloop->time_restart(d->time_event, NULL);
if (d->sink) {
- pa_sink_suspend(d->sink, FALSE);
+ pa_sink_suspend(d->sink, FALSE, PA_SUSPEND_IDLE);
pa_log_debug("Sink %s becomes busy.", d->sink->name);
}
if (d->source) {
- pa_source_suspend(d->source, FALSE);
+ pa_source_suspend(d->source, FALSE, PA_SUSPEND_IDLE);
pa_log_debug("Source %s becomes busy.", d->source->name);
}
diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
index 8101a92..59b8cda 100644
--- a/src/pulsecore/card.c
+++ b/src/pulsecore/card.c
@@ -244,19 +244,20 @@ int pa_card_set_profile(pa_card *c, const char *name, pa_bool_t save) {
return 0;
}
-int pa_card_suspend(pa_card *c, pa_bool_t suspend) {
+int pa_card_suspend(pa_card *c, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink *sink;
pa_source *source;
uint32_t idx;
int ret = 0;
pa_assert(c);
+ pa_assert(cause != 0);
for (sink = pa_idxset_first(c->sinks, &idx); sink; sink = pa_idxset_next(c->sinks, &idx))
- ret -= pa_sink_suspend(sink, suspend) < 0;
+ ret -= pa_sink_suspend(sink, suspend, cause) < 0;
for (source = pa_idxset_first(c->sources, &idx); source; source = pa_idxset_next(c->sources, &idx))
- ret -= pa_source_suspend(source, suspend) < 0;
+ ret -= pa_source_suspend(source, suspend, cause) < 0;
return ret;
}
diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
index 3b7608f..415ab67 100644
--- a/src/pulsecore/card.h
+++ b/src/pulsecore/card.h
@@ -99,6 +99,6 @@ void pa_card_free(pa_card *c);
int pa_card_set_profile(pa_card *c, const char *name, pa_bool_t save);
-int pa_card_suspend(pa_card *c, pa_bool_t suspend);
+int pa_card_suspend(pa_card *c, pa_bool_t suspend, pa_suspend_cause_t cause);
#endif
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index dad647a..644de96 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -1278,7 +1278,7 @@ static int pa_cli_command_suspend_sink(pa_core *c, pa_tokenizer *t, pa_strbuf *b
return -1;
}
- if ((r = pa_sink_suspend(sink, suspend)) < 0)
+ if ((r = pa_sink_suspend(sink, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend sink: %s\n", pa_strerror(r));
return 0;
@@ -1314,7 +1314,7 @@ static int pa_cli_command_suspend_source(pa_core *c, pa_tokenizer *t, pa_strbuf
return -1;
}
- if ((r = pa_source_suspend(source, suspend)) < 0)
+ if ((r = pa_source_suspend(source, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend source: %s\n", pa_strerror(r));
return 0;
@@ -1339,10 +1339,10 @@ static int pa_cli_command_suspend(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, p
return -1;
}
- if ((r = pa_sink_suspend_all(c, suspend)) < 0)
+ if ((r = pa_sink_suspend_all(c, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend all sinks: %s\n", pa_strerror(r));
- if ((r = pa_source_suspend_all(c, suspend)) < 0)
+ if ((r = pa_source_suspend_all(c, suspend, PA_SUSPEND_USER)) < 0)
pa_strbuf_printf(buf, "Failed to resume/suspend all sources: %s\n", pa_strerror(r));
return 0;
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index 604678b..bc863f0 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) {
"\tdriver: <%s>\n"
"\tflags: %s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
+ "\tsuspend cause: %s%s%s%s\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
"\tbase volume: %s%s%s\n"
@@ -258,6 +259,10 @@ char *pa_sink_list_to_string(pa_core *c) {
sink->flags & PA_SINK_FLAT_VOLUME ? "FLAT_VOLUME " : "",
sink->flags & PA_SINK_DYNAMIC_LATENCY ? "DYNAMIC_LATENCY" : "",
sink_state_to_string(pa_sink_get_state(sink)),
+ sink->suspend_cause & PA_SUSPEND_USER ? "USER " : "",
+ sink->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "",
+ sink->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "",
+ sink->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "",
pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE, FALSE)),
sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "",
sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE, FALSE)) : "",
@@ -335,6 +340,7 @@ char *pa_source_list_to_string(pa_core *c) {
"\tdriver: <%s>\n"
"\tflags: %s%s%s%s%s%s%s\n"
"\tstate: %s\n"
+ "\tsuspend cause: %s%s%s%s\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
"\tbase volume: %s%s%s\n"
@@ -358,6 +364,10 @@ char *pa_source_list_to_string(pa_core *c) {
source->flags & PA_SOURCE_LATENCY ? "LATENCY " : "",
source->flags & PA_SOURCE_DYNAMIC_LATENCY ? "DYNAMIC_LATENCY" : "",
source_state_to_string(pa_source_get_state(source)),
+ source->suspend_cause & PA_SUSPEND_USER ? "USER " : "",
+ source->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "",
+ source->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "",
+ source->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "",
pa_cvolume_snprint(cv, sizeof(cv), pa_source_get_volume(source, FALSE)),
source->flags & PA_SOURCE_DECIBEL_VOLUME ? "\n\t " : "",
source->flags & PA_SOURCE_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_source_get_volume(source, FALSE)) : "",
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index c679444..09a880c 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -27,6 +27,16 @@
typedef struct pa_core pa_core;
+/* This is a bitmask that encodes the cause why a sink/source is
+ * suspended. */
+typedef enum pa_suspend_cause {
+ PA_SUSPEND_USER = 1, /* Exposed to the user via some protocol */
+ PA_SUSPEND_APPLICATION = 2, /* Used by the device reservation logic */
+ PA_SUSPEND_IDLE = 4, /* Used by module-suspend-on-idle */
+ PA_SUSPEND_SESSION = 8, /* Used by module-hal for mark inactive sessions */
+ PA_SUSPEND_ALL = 0xFFFF /* Magic cause that can be used to resume forcibly */
+} pa_suspend_cause_t;
+
#include <pulsecore/idxset.h>
#include <pulsecore/hashmap.h>
#include <pulsecore/memblock.h>
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 7e7126e..ad7cd04 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -947,10 +947,10 @@ static int esd_proto_standby_or_resume(connection *c, esd_proto_t request, const
connection_write(c, &ok, sizeof(int32_t));
if (request == ESD_PROTO_STANDBY)
- ok = pa_sink_suspend_all(c->protocol->core, TRUE) >= 0;
+ ok = pa_sink_suspend_all(c->protocol->core, TRUE, PA_SUSPEND_USER) >= 0;
else {
pa_assert(request == ESD_PROTO_RESUME);
- ok = pa_sink_suspend_all(c->protocol->core, FALSE) >= 0;
+ ok = pa_sink_suspend_all(c->protocol->core, FALSE, PA_SUSPEND_USER) >= 0;
}
connection_write(c, &ok, sizeof(int32_t));
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index d4a9952..e9e2d60 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -4098,7 +4098,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
pa_log_debug("%s all sinks", b ? "Suspending" : "Resuming");
- if (pa_sink_suspend_all(c->protocol->core, b) < 0) {
+ if (pa_sink_suspend_all(c->protocol->core, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4112,7 +4112,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
CHECK_VALIDITY(c->pstream, sink, tag, PA_ERR_NOENTITY);
- if (pa_sink_suspend(sink, b) < 0) {
+ if (pa_sink_suspend(sink, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4125,7 +4125,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
pa_log_debug("%s all sources", b ? "Suspending" : "Resuming");
- if (pa_source_suspend_all(c->protocol->core, b) < 0) {
+ if (pa_source_suspend_all(c->protocol->core, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4140,7 +4140,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
CHECK_VALIDITY(c->pstream, source, tag, PA_ERR_NOENTITY);
- if (pa_source_suspend(source, b) < 0) {
+ if (pa_source_suspend(source, b, PA_SUSPEND_USER) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 28b3440..3c4adc6 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -190,6 +190,7 @@ pa_sink* pa_sink_new(
s->core = core;
s->state = PA_SINK_INIT;
s->flags = flags;
+ s->suspend_cause = 0;
s->name = pa_xstrdup(name);
s->proplist = pa_proplist_copy(data->proplist);
s->driver = pa_xstrdup(pa_path_get_filename(data->driver));
@@ -499,11 +500,19 @@ int pa_sink_update_status(pa_sink*s) {
}
/* Called from main context */
-int pa_sink_suspend(pa_sink *s, pa_bool_t suspend) {
+int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink_assert_ref(s);
pa_assert(PA_SINK_IS_LINKED(s->state));
+ pa_assert(cause != 0);
if (suspend)
+ s->suspend_cause |= cause;
+ else
+ s->suspend_cause &= ~cause;
+
+ pa_log_debug("Suspend cause of sink %s is 0x%04x, %s", s->name, s->suspend_cause, s->suspend_cause ? "suspending" : "resuming");
+
+ if (s->suspend_cause)
return sink_set_state(s, PA_SINK_SUSPENDED);
else
return sink_set_state(s, pa_sink_used_by(s) ? PA_SINK_RUNNING : PA_SINK_IDLE);
@@ -1823,17 +1832,18 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
}
/* Called from main thread */
-int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend) {
+int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink *sink;
uint32_t idx;
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert(cause != 0);
for (sink = PA_SINK(pa_idxset_first(c->sinks, &idx)); sink; sink = PA_SINK(pa_idxset_next(c->sinks, &idx))) {
int r;
- if ((r = pa_sink_suspend(sink, suspend)) < 0)
+ if ((r = pa_sink_suspend(sink, suspend, cause)) < 0)
ret = r;
}
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index e33b3cf..4dce3f9 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -56,6 +56,7 @@ struct pa_sink {
pa_core *core;
pa_sink_state_t state;
pa_sink_flags_t flags;
+ pa_suspend_cause_t suspend_cause;
char *name;
char *driver; /* may be NULL */
@@ -252,8 +253,8 @@ size_t pa_sink_get_max_rewind(pa_sink *s);
size_t pa_sink_get_max_request(pa_sink *s);
int pa_sink_update_status(pa_sink*s);
-int pa_sink_suspend(pa_sink *s, pa_bool_t suspend);
-int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend);
+int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause);
+int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause);
void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume);
void pa_sink_propagate_flat_volume(pa_sink *s);
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 8aeb560..4ade18f 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -180,6 +180,7 @@ pa_source* pa_source_new(
s->core = core;
s->state = PA_SOURCE_INIT;
s->flags = flags;
+ s->suspend_cause = 0;
s->name = pa_xstrdup(name);
s->proplist = pa_proplist_copy(data->proplist);
s->driver = pa_xstrdup(pa_path_get_filename(data->driver));
@@ -427,14 +428,22 @@ int pa_source_update_status(pa_source*s) {
}
/* Called from main context */
-int pa_source_suspend(pa_source *s, pa_bool_t suspend) {
+int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ pa_assert(cause != 0);
if (s->monitor_of)
return -PA_ERR_NOTSUPPORTED;
if (suspend)
+ s->suspend_cause |= cause;
+ else
+ s->suspend_cause &= ~cause;
+
+ pa_log_debug("Suspend cause of source %s is 0x%04x, %s", s->name, s->suspend_cause, s->suspend_cause ? "suspending" : "resuming");
+
+ if (suspend)
return source_set_state(s, PA_SOURCE_SUSPENDED);
else
return source_set_state(s, pa_source_used_by(s) ? PA_SOURCE_RUNNING : PA_SOURCE_IDLE);
@@ -1032,12 +1041,13 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
}
/* Called from main thread */
-int pa_source_suspend_all(pa_core *c, pa_bool_t suspend) {
+int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause) {
uint32_t idx;
pa_source *source;
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert(cause != 0);
for (source = PA_SOURCE(pa_idxset_first(c->sources, &idx)); source; source = PA_SOURCE(pa_idxset_next(c->sources, &idx))) {
int r;
@@ -1045,7 +1055,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend) {
if (source->monitor_of)
continue;
- if ((r = pa_source_suspend(source, suspend)) < 0)
+ if ((r = pa_source_suspend(source, suspend, cause)) < 0)
ret = r;
}
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 2978f57..1fbed70 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -58,6 +58,7 @@ struct pa_source {
pa_core *core;
pa_source_state_t state;
pa_source_flags_t flags;
+ pa_suspend_cause_t suspend_cause;
char *name;
char *driver; /* may be NULL */
@@ -231,8 +232,8 @@ void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t
size_t pa_source_get_max_rewind(pa_source *s);
int pa_source_update_status(pa_source*s);
-int pa_source_suspend(pa_source *s, pa_bool_t suspend);
-int pa_source_suspend_all(pa_core *c, pa_bool_t suspend);
+int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause);
+int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause);
void pa_source_set_volume(pa_source *source, const pa_cvolume *volume);
const pa_cvolume *pa_source_get_volume(pa_source *source, pa_bool_t force_refresh);
commit 561c0af8518dd8a2bac07284d306b0970c304f9f
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Jun 5 19:05:42 2009 +0200
alsa: monitor device reservation status and resume automatically when device becomes unused
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index b1adc52..98ebac3 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -116,6 +116,8 @@ struct userdata {
pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot;
+ pa_reserve_monitor_wrapper *monitor;
+ pa_hook_slot *monitor_slot;
};
static void userdata_free(struct userdata *u);
@@ -185,6 +187,57 @@ static int reserve_init(struct userdata *u, const char *dname) {
return 0;
}
+static pa_hook_result_t monitor_cb(pa_reserve_monitor_wrapper *w, void* busy, struct userdata *u) {
+ pa_bool_t b;
+
+ pa_assert(w);
+ pa_assert(u);
+
+ b = PA_PTR_TO_UINT(busy) && !u->reserve;
+
+ pa_sink_suspend(u->sink, b, PA_SUSPEND_APPLICATION);
+ return PA_HOOK_OK;
+}
+
+static void monitor_done(struct userdata *u) {
+ pa_assert(u);
+
+ if (u->monitor_slot) {
+ pa_hook_slot_free(u->monitor_slot);
+ u->monitor_slot = NULL;
+ }
+
+ if (u->monitor) {
+ pa_reserve_monitor_wrapper_unref(u->monitor);
+ u->monitor = NULL;
+ }
+}
+
+static int reserve_monitor_init(struct userdata *u, const char *dname) {
+ char *rname;
+
+ pa_assert(u);
+ pa_assert(dname);
+
+ if (pa_in_system_mode())
+ return 0;
+
+ /* We are resuming, try to lock the device */
+ if (!(rname = pa_alsa_get_reserve_name(dname)))
+ return 0;
+
+ u->monitor = pa_reserve_monitor_wrapper_get(u->core, rname);
+ pa_xfree(rname);
+
+ if (!(u->monitor))
+ return -1;
+
+ pa_assert(!u->monitor_slot);
+ u->monitor_slot = pa_hook_connect(pa_reserve_monitor_wrapper_hook(u->monitor), PA_HOOK_NORMAL, (pa_hook_cb_t) monitor_cb, u);
+
+ return 0;
+}
+
static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
@@ -1580,9 +1633,14 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_rtclock_usec(),
TRUE);
- if (reserve_init(u, pa_modargs_get_value(
- ma, "device_id",
- pa_modargs_get_value(ma, "device", DEFAULT_DEVICE))) < 0)
+ dev_id = pa_modargs_get_value(
+ ma, "device_id",
+ pa_modargs_get_value(ma, "device", DEFAULT_DEVICE));
+
+ if (reserve_init(u, dev_id) < 0)
+ goto fail;
+
+ if (reserve_monitor_init(u, dev_id) < 0)
goto fail;
b = use_mmap;
@@ -1828,6 +1886,7 @@ static void userdata_free(struct userdata *u) {
pa_smoother_free(u->smoother);
reserve_done(u);
+ monitor_done(u);
pa_xfree(u->device_name);
pa_xfree(u);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 68f697d..277b110 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -114,6 +114,8 @@ struct userdata {
pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot;
+ pa_reserve_monitor_wrapper *monitor;
+ pa_hook_slot *monitor_slot;
};
static void userdata_free(struct userdata *u);
@@ -183,6 +185,57 @@ static int reserve_init(struct userdata *u, const char *dname) {
return 0;
}
+static pa_hook_result_t monitor_cb(pa_reserve_monitor_wrapper *w, void* busy, struct userdata *u) {
+ pa_bool_t b;
+
+ pa_assert(w);
+ pa_assert(u);
+
+ b = PA_PTR_TO_UINT(busy) && !u->reserve;
+
+ pa_source_suspend(u->source, b, PA_SUSPEND_APPLICATION);
+ return PA_HOOK_OK;
+}
+
+static void monitor_done(struct userdata *u) {
+ pa_assert(u);
+
+ if (u->monitor_slot) {
+ pa_hook_slot_free(u->monitor_slot);
+ u->monitor_slot = NULL;
+ }
+
+ if (u->monitor) {
+ pa_reserve_monitor_wrapper_unref(u->monitor);
+ u->monitor = NULL;
+ }
+}
+
+static int reserve_monitor_init(struct userdata *u, const char *dname) {
+ char *rname;
+
+ pa_assert(u);
+ pa_assert(dname);
+
+ if (pa_in_system_mode())
+ return 0;
+
+ /* We are resuming, try to lock the device */
+ if (!(rname = pa_alsa_get_reserve_name(dname)))
+ return 0;
+
+ u->monitor = pa_reserve_monitor_wrapper_get(u->core, rname);
+ pa_xfree(rname);
+
+ if (!(u->monitor))
+ return -1;
+
+ pa_assert(!u->monitor_slot);
+ u->monitor_slot = pa_hook_connect(pa_reserve_monitor_wrapper_hook(u->monitor), PA_HOOK_NORMAL, (pa_hook_cb_t) monitor_cb, u);
+
+ return 0;
+}
+
static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
pa_assert(u);
@@ -1438,9 +1491,14 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_rtclock_usec(),
FALSE);
- if (reserve_init(u, pa_modargs_get_value(
- ma, "device_id",
- pa_modargs_get_value(ma, "device", DEFAULT_DEVICE))) < 0)
+ dev_id = pa_modargs_get_value(
+ ma, "device_id",
+ pa_modargs_get_value(ma, "device", DEFAULT_DEVICE));
+
+ if (reserve_init(u, dev_id) < 0)
+ goto fail;
+
+ if (reserve_monitor_init(u, dev_id) < 0)
goto fail;
b = use_mmap;
@@ -1676,6 +1734,7 @@ static void userdata_free(struct userdata *u) {
pa_smoother_free(u->smoother);
reserve_done(u);
+ monitor_done(u);
pa_xfree(u->device_name);
pa_xfree(u);
commit f398407544b7eef1cad4a1e79ccd3c29ea1beb81
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Jun 5 19:24:40 2009 +0200
augment: try to deduce the media role from the menu category
diff --git a/src/modules/module-augment-properties.c b/src/modules/module-augment-properties.c
index c3e5997..15aa3a1 100644
--- a/src/modules/module-augment-properties.c
+++ b/src/modules/module-augment-properties.c
@@ -58,6 +58,7 @@ struct rule {
char *process_name;
char *application_name;
char *icon_name;
+ char *role;
pa_proplist *proplist;
};
@@ -72,12 +73,21 @@ static void rule_free(struct rule *r) {
pa_xfree(r->process_name);
pa_xfree(r->application_name);
pa_xfree(r->icon_name);
+ pa_xfree(r->role);
if (r->proplist)
pa_proplist_free(r->proplist);
pa_xfree(r);
}
-static int parse_properties(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
+static int parse_properties(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
struct rule *r = userdata;
pa_proplist *n;
@@ -93,11 +103,56 @@ static int parse_properties(const char *filename, unsigned line, const char *sec
return 0;
}
-static int check_type(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
+static int parse_categories(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ struct rule *r = userdata;
+ const char *state = NULL;
+ char *c;
+
+ while ((c = pa_split(rvalue, ";", &state))) {
+
+ if (pa_streq(c, "Game")) {
+ pa_xfree(r->role);
+ r->role = pa_xstrdup("game");
+ } else if (pa_streq(c, "Telephony")) {
+ pa_xfree(r->role);
+ r->role = pa_xstrdup("phone");
+ }
+
+ pa_xfree(c);
+ }
+
+ return 0;
+}
+
+static int check_type(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
return pa_streq(rvalue, "Application") ? 0 : -1;
}
-static int catch_all(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
+static int catch_all(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
return 0;
}
@@ -109,6 +164,7 @@ static void update_rule(struct rule *r) {
{ "Icon", pa_config_parse_string, NULL, "Desktop Entry" },
{ "Type", check_type, NULL, "Desktop Entry" },
{ "X-PulseAudio-Properties", parse_properties, NULL, "Desktop Entry" },
+ { "Categories", parse_categories, NULL, "Desktop Entry" },
{ NULL, catch_all, NULL, NULL },
{ NULL, NULL, NULL, NULL },
};
@@ -131,7 +187,8 @@ static void update_rule(struct rule *r) {
r->mtime = st.st_mtime;
pa_xfree(r->application_name);
pa_xfree(r->icon_name);
- r->application_name = r->icon_name = NULL;
+ pa_xfree(r->role);
+ r->application_name = r->icon_name = r->role = NULL;
if (r->proplist)
pa_proplist_clear(r->proplist);
@@ -151,6 +208,9 @@ static void apply_rule(struct rule *r, pa_proplist *p) {
if (!r->good)
return;
+ if (r->proplist)
+ pa_proplist_update(p, PA_UPDATE_MERGE, r->proplist);
+
if (r->icon_name)
if (!pa_proplist_contains(p, PA_PROP_APPLICATION_ICON_NAME))
pa_proplist_sets(p, PA_PROP_APPLICATION_ICON_NAME, r->icon_name);
@@ -164,8 +224,9 @@ static void apply_rule(struct rule *r, pa_proplist *p) {
pa_proplist_sets(p, PA_PROP_APPLICATION_NAME, r->application_name);
}
- if (r->proplist)
- pa_proplist_update(p, PA_UPDATE_MERGE, r->proplist);
+ if (r->role)
+ if (!pa_proplist_contains(p, PA_PROP_MEDIA_ROLE))
+ pa_proplist_sets(p, PA_PROP_MEDIA_ROLE, r->role);
}
static void make_room(pa_hashmap *cache) {
commit e5dd9dfe682000f75d2770c21fd26d6cc56e3c4d
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Jun 5 19:25:15 2009 +0200
rtp: remove gcc warning
diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c
index cdd2c57..39ee4d7 100644
--- a/src/modules/rtp/module-rtp-send.c
+++ b/src/modules/rtp/module-rtp-send.c
@@ -347,8 +347,8 @@ int pa__init(pa_module*m) {
o->push = source_output_push;
o->kill = source_output_kill;
- pa_log_info("Configured source latency of %lu ms.",
- pa_source_output_set_requested_latency(o, pa_bytes_to_usec(mtu, &o->sample_spec)) / PA_USEC_PER_MSEC);
+ pa_log_info("Configured source latency of %llu ms.",
+ (unsigned long long) pa_source_output_set_requested_latency(o, pa_bytes_to_usec(mtu, &o->sample_spec)) / PA_USEC_PER_MSEC);
m->userdata = o->userdata = u = pa_xnew(struct userdata, 1);
u->module = m;
commit 8080ab12597cfbffe9327271236b85054765a2d8
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Jun 6 03:26:07 2009 +0200
udev: add module-udev-detect for discovering and configuring devices
diff --git a/src/Makefile.am b/src/Makefile.am
index c0e1806..38395e7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1070,6 +1070,11 @@ modlibexec_LTLIBRARIES += \
module-hal-detect.la
endif
+if HAVE_UDEV
+modlibexec_LTLIBRARIES += \
+ module-udev-detect.la
+endif
+
if HAVE_DBUS
modlibexec_LTLIBRARIES += \
module-rygel-media-server.la
@@ -1155,6 +1160,7 @@ SYMDEF_FILES = \
modules/module-rescue-streams-symdef.h \
modules/module-suspend-on-idle-symdef.h \
modules/module-hal-detect-symdef.h \
+ modules/module-udev-detect-symdef.h \
modules/bluetooth/module-bluetooth-proximity-symdef.h \
modules/bluetooth/module-bluetooth-discover-symdef.h \
modules/bluetooth/module-bluetooth-device-symdef.h \
@@ -1518,6 +1524,11 @@ module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_hal_detect_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS)
+module_udev_detect_la_SOURCES = modules/module-udev-detect.c
+module_udev_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
+module_udev_detect_la_LIBADD = $(AM_LIBADD) $(UDEV_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
+module_udev_detect_la_CFLAGS = $(AM_CFLAGS) $(UDEV_CFLAGS)
+
module_console_kit_la_SOURCES = modules/module-console-kit.c
module_console_kit_la_LDFLAGS = $(MODULE_LDFLAGS)
module_console_kit_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
new file mode 100644
index 0000000..29c94e1
--- /dev/null
+++ b/src/modules/module-udev-detect.c
@@ -0,0 +1,348 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Lennart Poettering
+
+ PulseAudio is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with PulseAudio; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <errno.h>
+#include <sys/inotify.h>
+#include <libudev.h>
+
+#include <pulsecore/modargs.h>
+#include <pulsecore/core-error.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/namereg.h>
+
+#include "module-udev-detect-symdef.h"
+
+PA_MODULE_AUTHOR("Lennart Poettering");
+PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers");
+PA_MODULE_VERSION(PACKAGE_VERSION);
+PA_MODULE_LOAD_ONCE(TRUE);
+
+struct device {
+ char *path;
+ char *card_name;
+ uint32_t module;
+};
+
+struct userdata {
+ pa_core *core;
+ pa_hashmap *devices;
+ pa_bool_t use_tsched;
+ struct udev* udev;
+ struct udev_monitor *monitor;
+ pa_io_event *io;
+};
+
+static const char* const valid_modargs[] = {
+ "tsched",
+ NULL
+};
+
+static void device_free(struct device *d) {
+ pa_assert(d);
+
+ pa_xfree(d->path);
+ pa_xfree(d->card_name);
+ pa_xfree(d);
+}
+
+static const char *path_get_card_id(const char *path) {
+ const char *e;
+
+ if (!path)
+ return NULL;
+
+ if (!(e = strrchr(path, '/')))
+ return NULL;
+
+ if (!pa_startswith(e, "/card"))
+ return NULL;
+
+ return e + 5;
+}
+
+static void verify_access(struct userdata *u, struct device *d) {
+ char *cd;
+ int r;
+ pa_card *card;
+
+ pa_assert(u);
+ pa_assert(d);
+
+ cd = pa_sprintf_malloc("%s/controlC%s", d->path, path_get_card_id(d->path));
+ r = access(cd, W_OK);
+ pa_log_info("%s is accessible: %s", cd, pa_yes_no(r >= 0));
+ pa_xfree(cd);
+
+ if ((card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD)))
+ pa_card_suspend(card, r < 0, PA_SUSPEND_SESSION);
+}
+
+static void card_changed(struct userdata *u, struct udev_device *dev) {
+ struct device *d;
+ const char *path;
+ const char *t;
+ char *card_name, *args;
+ pa_module *m;
+ char *n;
+
+ pa_assert(u);
+ pa_assert(dev);
+
+ path = udev_device_get_devpath(dev);
+
+ if ((d = pa_hashmap_get(u->devices, path))) {
+ verify_access(u, d);
+ return;
+ }
+
+ if (!(t = udev_device_get_property_value(dev, "PULSE_NAME")))
+ if (!(t = udev_device_get_property_value(dev, "ID_ID")))
+ if (!(t = udev_device_get_property_value(dev, "ID_PATH")))
+ t = path_get_card_id(path);
+
+ n = pa_namereg_make_valid_name(t);
+
+ card_name = pa_sprintf_malloc("alsa_card.%s", n);
+ args = pa_sprintf_malloc("device_id=\"%s\" "
+ "name=\"%s\" "
+ "card_name=\"%s\" "
+ "tsched=%i "
+ "card_properties=\"module-udev-detect.discovered=1\"",
+ path_get_card_id(path),
+ n,
+ card_name,
+ (int) u->use_tsched);
+
+ pa_log_debug("Loading module-alsa-card with arguments '%s'", args);
+ m = pa_module_load(u->core, "module-alsa-card", args);
+ pa_xfree(args);
+
+ if (m) {
+ pa_log_info("Card %s (%s) added.", path, n);
+
+ d = pa_xnew(struct device, 1);
+ d->path = pa_xstrdup(path);
+ d->card_name = card_name;
+ d->module = m->index;
+
+ pa_hashmap_put(u->devices, d->path, d);
+ } else
+ pa_xfree(card_name);
+
+ pa_xfree(n);
+}
+
+static void remove_card(struct userdata *u, struct udev_device *dev) {
+ struct device *d;
+
+ pa_assert(u);
+ pa_assert(dev);
+
+ if (!(d = pa_hashmap_remove(u->devices, udev_device_get_devpath(dev))))
+ return;
+
+ pa_log_info("Card %s removed.", d->path);
+ pa_module_unload_request_by_index(u->core, d->module, TRUE);
+ device_free(d);
+}
+
+static void process_device(struct userdata *u, struct udev_device *dev) {
+ const char *action, *ff;
+
+ pa_assert(u);
+ pa_assert(dev);
+
+ if (udev_device_get_property_value(dev, "PULSE_IGNORE")) {
+ pa_log_info("Ignoring %s, because marked so.", udev_device_get_devpath(dev));
+ return;
+ }
+
+ if ((ff = udev_device_get_property_value(dev, "SOUND_FORM_FACTOR")) &&
+ pa_streq(ff, "modem")) {
+ pa_log_info("Ignoring %s, because it is a modem.", udev_device_get_devpath(dev));
+ return;
+ }
+
+ action = udev_device_get_action(dev);
+
+ if (action && pa_streq(action, "remove"))
+ remove_card(u, dev);
+ else if ((!action || pa_streq(action, "change")) &&
+ udev_device_get_property_value(dev, "SOUND_INITIALIZED"))
+ card_changed(u, dev);
+
+ /* For an explanation why we don't look for 'add' events here
+ * have a look into /lib/udev/rules.d/78-sound-card.rules! */
+}
+
+static void process_path(struct userdata *u, const char *path) {
+ struct udev_device *dev;
+
+ if (!path_get_card_id(path))
+ return;
+
+ if (!(dev = udev_device_new_from_syspath(u->udev, path))) {
+ pa_log("Failed to get udev device object from udev.");
+ return;
+ }
+
+ process_device(u, dev);
+ udev_device_unref(dev);
+}
+
+static void monitor_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t events, void *userdata) {
+ struct userdata *u = userdata;
+ struct udev_device *dev;
+
+ pa_assert(a);
+
+ if (!(dev = udev_monitor_receive_device(u->monitor))) {
+ pa_log("Failed to get udev device object from monitor.");
+ return;
+ }
+
+ if (!path_get_card_id(udev_device_get_devpath(dev)))
+ return;
+
+ process_device(u, dev);
+ udev_device_unref(dev);
+}
+
+int pa__init(pa_module *m) {
+ struct userdata *u = NULL;
+ pa_modargs *ma;
+ struct udev_enumerate *enumerate = NULL;
+ struct udev_list_entry *item = NULL, *first = NULL;
+ int fd;
+
+ pa_assert(m);
+
+ if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
+ pa_log("Failed to parse module arguments");
+ goto fail;
+ }
+
+ m->userdata = u = pa_xnew(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;
+
+ if (pa_modargs_get_value_boolean(ma, "tsched", &u->use_tsched) < 0) {
+ pa_log("Failed to parse tsched argument.");
+ goto fail;
+ }
+
+ if (!(u->udev = udev_new())) {
+ pa_log("Failed to initialize udev library.");
+ goto fail;
+ }
+
+ if (!(u->monitor = udev_monitor_new_from_netlink(u->udev, "udev"))) {
+ pa_log("Failed to initialize monitor.");
+ goto fail;
+ }
+
+ errno = 0;
+ if (udev_monitor_enable_receiving(u->monitor) < 0) {
+ pa_log("Failed to enable monitor: %s", pa_cstrerror(errno));
+ if (errno == EPERM)
+ pa_log_info("Most likely your kernel is simply too old and "
+ "allows only priviliged processes to listen to device events. "
+ "Please upgrade your kernel to at least 2.6.30.");
+ goto fail;
+ }
+
+ if ((fd = udev_monitor_get_fd(u->monitor)) < 0) {
+ pa_log("Failed to get udev monitor fd.");
+ goto fail;
+ }
+
+ pa_assert_se(u->io = u->core->mainloop->io_new(u->core->mainloop, fd, PA_IO_EVENT_INPUT, monitor_cb, u));
+
+ if (!(enumerate = udev_enumerate_new(u->udev))) {
+ pa_log("Failed to initialize udev enumerator.");
+ goto fail;
+ }
+
+ if (udev_enumerate_add_match_subsystem(enumerate, "sound") < 0) {
+ pa_log("Failed to match to subsystem.");
+ goto fail;
+ }
+
+ if (udev_enumerate_scan_devices(enumerate) < 0) {
+ pa_log("Failed to scan for devices.");
+ goto fail;
+ }
+
+ first = udev_enumerate_get_list_entry(enumerate);
+ udev_list_entry_foreach(item, first)
+ process_path(u, udev_list_entry_get_name(item));
+
+ udev_enumerate_unref(enumerate);
+
+ pa_log_info("Loaded %u modules.", pa_hashmap_size(u->devices));
+
+ pa_modargs_free(ma);
+
+ return 0;
+
+fail:
+
+ if (enumerate)
+ udev_enumerate_unref(enumerate);
+
+ if (ma)
+ pa_modargs_free(ma);
+
+ pa__done(m);
+
+ return -1;
+}
+
+void pa__done(pa_module *m) {
+ struct userdata *u;
+
+ pa_assert(m);
+
+ if (!(u = m->userdata))
+ return;
+
+ if (u->monitor)
+ udev_monitor_unref(u->monitor);
+
+ if (u->udev)
+ udev_unref(u->udev);
+
+ if (u->devices) {
+ struct device *d;
+
+ while ((d = pa_hashmap_steal_first(u->devices)))
+ device_free(d);
+
+ pa_hashmap_free(u->devices, NULL, NULL);
+ }
+
+ pa_xfree(u);
+}
commit e84644aa88acd7158bb174946dbff630ff2389ad
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Jun 6 03:26:55 2009 +0200
hal,udev: deprecate HAL support in favour of udev
diff --git a/src/daemon/default.pa.in b/src/daemon/default.pa.in
index fa0683e..a35ff8f 100755
--- a/src/daemon/default.pa.in
+++ b/src/daemon/default.pa.in
@@ -49,11 +49,11 @@ load-module module-augment-properties
#load-module module-pipe-sink
### Automatically load driver modules depending on the hardware available
-.ifexists module-hal-detect at PA_SOEXT@
-load-module module-hal-detect
+.ifexists module-udev-detect at PA_SOEXT@
+load-module module-udev-detect
.else
### Alternatively use the static hardware detection module (for systems that
-### lack HAL support)
+### lack udev support)
load-module module-detect
.endif
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index 9ac8705..658b3e5 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -64,6 +64,7 @@ PA_MODULE_USAGE("api=<alsa> "
#elif defined(HAVE_OSS)
PA_MODULE_USAGE("api=<oss>");
#endif
+PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!");
struct device {
char *udi, *originating_udi;
@@ -232,7 +233,7 @@ static int hal_device_load_alsa(struct userdata *u, const char *udi, struct devi
goto fail;
card_name = pa_sprintf_malloc("alsa_card.%s", strip_udi(originating_udi));
- args = pa_sprintf_malloc("device_id=%u name=%s card_name=%s tsched=%i", card, strip_udi(originating_udi), card_name, (int) u->use_tsched);
+ args = pa_sprintf_malloc("device_id=%u name=\"%s\" card_name=\"%s\" tsched=%i card_properties=\"module-hal-detect.discovered=1\"", card, strip_udi(originating_udi), card_name, (int) u->use_tsched);
pa_log_debug("Loading module-alsa-card with arguments '%s'", args);
m = pa_module_load(u->core, "module-alsa-card", args);
commit 496be212ad645999647c432a856c906b86d41487
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Jun 6 15:30:24 2009 +0200
hashmap: introduce PA_HASHMAP_FOREACH macro
diff --git a/src/pulsecore/hashmap.h b/src/pulsecore/hashmap.h
index 08e18ea..828e244 100644
--- a/src/pulsecore/hashmap.h
+++ b/src/pulsecore/hashmap.h
@@ -65,4 +65,8 @@ void *pa_hashmap_steal_first(pa_hashmap *h);
/* Return the oldest entry in the hashmap */
void* pa_hashmap_first(pa_hashmap *h);
+/* A macro to ease iteration through all entries */
+#define PA_HASHMAP_FOREACH(e, h, state) \
+ for ((state) = NULL, (e) = pa_hashmap_iterate((h), &(state), NULL); (e); (e) = pa_hashmap_iterate((h), &(state), NULL))
+
#endif
diff --git a/src/pulsecore/idxset.h b/src/pulsecore/idxset.h
index 6b9ff47..a6179fc 100644
--- a/src/pulsecore/idxset.h
+++ b/src/pulsecore/idxset.h
@@ -103,7 +103,7 @@ unsigned pa_idxset_size(pa_idxset*s);
/* Return TRUE of the idxset is empty */
pa_bool_t pa_idxset_isempty(pa_idxset *s);
-
+/* A macro to ease iteration through all entries */
#define PA_IDXSET_FOREACH(e, s, idx) \
for ((e) = pa_idxset_first((s), &(idx)); (e); (e) = pa_idxset_next((s), &(idx)))
commit 69eab1e057e000951516cfd381846c33abc8aaf1
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Jun 6 15:31:46 2009 +0200
core: suppress suspending/resume when we are already in the right state
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 3c4adc6..a087e42 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -510,6 +510,9 @@ int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
else
s->suspend_cause &= ~cause;
+ if ((pa_sink_get_state(s) == PA_SINK_SUSPENDED) == !!s->suspend_cause)
+ return 0;
+
pa_log_debug("Suspend cause of sink %s is 0x%04x, %s", s->name, s->suspend_cause, s->suspend_cause ? "suspending" : "resuming");
if (s->suspend_cause)
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 4ade18f..abb5f4d 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -441,6 +441,9 @@ int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause)
else
s->suspend_cause &= ~cause;
+ if ((pa_source_get_state(s) == PA_SOURCE_SUSPENDED) == !!s->suspend_cause)
+ return 0;
+
pa_log_debug("Suspend cause of source %s is 0x%04x, %s", s->name, s->suspend_cause, s->suspend_cause ? "suspending" : "resuming");
if (suspend)
commit d1646f78af6a43928cb0cd6b3e8d45578c489cb1
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Jun 6 15:32:45 2009 +0200
core: monitor sources need to inherit the suspend cause from their sinks
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index a087e42..141084d 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -505,10 +505,13 @@ int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(cause != 0);
- if (suspend)
+ if (suspend) {
s->suspend_cause |= cause;
- else
+ s->monitor_source->suspend_cause |= cause;
+ } else {
s->suspend_cause &= ~cause;
+ s->monitor_source->suspend_cause &= ~cause;
+ }
if ((pa_sink_get_state(s) == PA_SINK_SUSPENDED) == !!s->suspend_cause)
return 0;
commit bab4b94b566f54976836b04f187d97d424f7d750
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Jun 6 15:33:54 2009 +0200
udev: try to unsuspend devices whenever they are closed by other processes
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
index 29c94e1..b667cb4 100644
--- a/src/modules/module-udev-detect.c
+++ b/src/modules/module-udev-detect.c
@@ -24,6 +24,7 @@
#endif
#include <errno.h>
+#include <limits.h>
#include <sys/inotify.h>
#include <libudev.h>
@@ -41,6 +42,7 @@ PA_MODULE_LOAD_ONCE(TRUE);
struct device {
char *path;
+ pa_bool_t accessible;
char *card_name;
uint32_t module;
};
@@ -49,9 +51,13 @@ struct userdata {
pa_core *core;
pa_hashmap *devices;
pa_bool_t use_tsched;
+
struct udev* udev;
struct udev_monitor *monitor;
- pa_io_event *io;
+ pa_io_event *udev_io;
+
+ int inotify_fd;
+ pa_io_event *inotify_io;
};
static const char* const valid_modargs[] = {
@@ -84,19 +90,20 @@ static const char *path_get_card_id(const char *path) {
static void verify_access(struct userdata *u, struct device *d) {
char *cd;
- int r;
pa_card *card;
pa_assert(u);
pa_assert(d);
- cd = pa_sprintf_malloc("%s/controlC%s", d->path, path_get_card_id(d->path));
- r = access(cd, W_OK);
- pa_log_info("%s is accessible: %s", cd, pa_yes_no(r >= 0));
+ if (!(card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD)))
+ return;
+
+ cd = pa_sprintf_malloc("%s/snd/controlC%s", udev_get_dev_path(u->udev), path_get_card_id(d->path));
+ d->accessible = access(cd, W_OK) >= 0;
+ pa_log_info("%s is accessible: %s", cd, pa_yes_no(d->accessible));
pa_xfree(cd);
- if ((card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD)))
- pa_card_suspend(card, r < 0, PA_SUSPEND_SESSION);
+ pa_card_suspend(card, !d->accessible, PA_SUSPEND_SESSION);
}
static void card_changed(struct userdata *u, struct udev_device *dev) {
@@ -146,6 +153,7 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
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
@@ -175,13 +183,13 @@ static void process_device(struct userdata *u, struct udev_device *dev) {
pa_assert(dev);
if (udev_device_get_property_value(dev, "PULSE_IGNORE")) {
- pa_log_info("Ignoring %s, because marked so.", udev_device_get_devpath(dev));
+ pa_log_debug("Ignoring %s, because marked so.", udev_device_get_devpath(dev));
return;
}
if ((ff = udev_device_get_property_value(dev, "SOUND_FORM_FACTOR")) &&
pa_streq(ff, "modem")) {
- pa_log_info("Ignoring %s, because it is a modem.", udev_device_get_devpath(dev));
+ pa_log_debug("Ignoring %s, because it is a modem.", udev_device_get_devpath(dev));
return;
}
@@ -212,7 +220,13 @@ static void process_path(struct userdata *u, const char *path) {
udev_device_unref(dev);
}
-static void monitor_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t events, void *userdata) {
+static void monitor_cb(
+ pa_mainloop_api*a,
+ pa_io_event* e,
+ int fd,
+ pa_io_event_flags_t events,
+ void *userdata) {
+
struct userdata *u = userdata;
struct udev_device *dev;
@@ -220,7 +234,7 @@ static void monitor_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_fl
if (!(dev = udev_monitor_receive_device(u->monitor))) {
pa_log("Failed to get udev device object from monitor.");
- return;
+ goto fail;
}
if (!path_get_card_id(udev_device_get_devpath(dev)))
@@ -228,6 +242,88 @@ static void monitor_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_fl
process_device(u, dev);
udev_device_unref(dev);
+ return;
+
+fail:
+ a->io_free(u->udev_io);
+ u->udev_io = NULL;
+}
+
+static void inotify_cb(
+ pa_mainloop_api*a,
+ pa_io_event* e,
+ int fd,
+ pa_io_event_flags_t events,
+ void *userdata) {
+
+ struct {
+ struct inotify_event e;
+ char name[NAME_MAX];
+ } buf;
+ struct userdata *u = userdata;
+ static int type = 0;
+ pa_bool_t verify = FALSE;
+
+ for (;;) {
+ ssize_t r;
+
+ pa_zero(buf);
+ if ((r = pa_read(fd, &buf, sizeof(buf), &type)) <= 0) {
+
+ if (r < 0 && errno == EAGAIN)
+ break;
+
+ pa_log("read() from inotify failed: %s", r < 0 ? pa_cstrerror(errno) : "EOF");
+ goto fail;
+ }
+
+ if ((buf.e.mask & IN_CLOSE_WRITE) && pa_startswith(buf.e.name, "pcmC"))
+ verify = TRUE;
+ }
+
+ if (verify) {
+ struct device *d;
+ void *state;
+
+ pa_log_debug("Verifying access.");
+
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ verify_access(u, d);
+ }
+
+ return;
+
+fail:
+ a->io_free(u->inotify_io);
+ u->inotify_io = NULL;
+
+ if (u->inotify_fd >= 0) {
+ pa_close(u->inotify_fd);
+ u->inotify_fd = -1;
+ }
+}
+
+static int setup_inotify(struct userdata *u) {
+ char *dev_snd;
+ int r;
+
+ if ((u->inotify_fd = inotify_init1(IN_CLOEXEC|IN_NONBLOCK)) < 0) {
+ pa_log("inotify_init1() failed: %s", pa_cstrerror(errno));
+ return -1;
+ }
+
+ dev_snd = pa_sprintf_malloc("%s/snd", udev_get_dev_path(u->udev));
+ r = inotify_add_watch(u->inotify_fd, dev_snd, IN_CLOSE_WRITE);
+ pa_xfree(dev_snd);
+
+ if (r < 0) {
+ pa_log("inotify_add_watch() failed: %s", pa_cstrerror(errno));
+ return -1;
+ }
+
+ pa_assert_se(u->inotify_io = u->core->mainloop->io_new(u->core->mainloop, u->inotify_fd, PA_IO_EVENT_INPUT, inotify_cb, u));
+
+ return 0;
}
int pa__init(pa_module *m) {
@@ -248,6 +344,7 @@ int pa__init(pa_module *m) {
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.");
@@ -259,6 +356,9 @@ int pa__init(pa_module *m) {
goto fail;
}
+ if (setup_inotify(u) < 0)
+ goto fail;
+
if (!(u->monitor = udev_monitor_new_from_netlink(u->udev, "udev"))) {
pa_log("Failed to initialize monitor.");
goto fail;
@@ -279,7 +379,7 @@ int pa__init(pa_module *m) {
goto fail;
}
- pa_assert_se(u->io = u->core->mainloop->io_new(u->core->mainloop, fd, PA_IO_EVENT_INPUT, monitor_cb, u));
+ pa_assert_se(u->udev_io = u->core->mainloop->io_new(u->core->mainloop, fd, PA_IO_EVENT_INPUT, monitor_cb, u));
if (!(enumerate = udev_enumerate_new(u->udev))) {
pa_log("Failed to initialize udev enumerator.");
@@ -329,12 +429,21 @@ void pa__done(pa_module *m) {
if (!(u = m->userdata))
return;
+ if (u->udev_io)
+ m->core->mainloop->io_free(u->udev_io);
+
if (u->monitor)
udev_monitor_unref(u->monitor);
if (u->udev)
udev_unref(u->udev);
+ if (u->inotify_io)
+ m->core->mainloop->io_free(u->inotify_io);
+
+ if (u->inotify_fd >= 0)
+ pa_close(u->inotify_fd);
+
if (u->devices) {
struct device *d;
commit 3a118f2a035d5c84deee0028627e06fe80cbffe8
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Jun 6 17:02:57 2009 +0200
build-sys: bump libsndfile dependency
diff --git a/configure.ac b/configure.ac
index a3f9f0e..4522300 100644
--- a/configure.ac
+++ b/configure.ac
@@ -539,7 +539,7 @@ AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
#### Sound file ####
-PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.10 ])
+PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.20 ])
AC_SUBST(LIBSNDFILE_CFLAGS)
AC_SUBST(LIBSNDFILE_LIBS)
commit 71ce195d3bb2cc1f88210fd7e22495bc38d2f72d
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Jun 7 00:40:48 2009 +0200
udev: properly initialize userdata to 0
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
index b667cb4..1ad6fa2 100644
--- a/src/modules/module-udev-detect.c
+++ b/src/modules/module-udev-detect.c
@@ -340,7 +340,7 @@ int pa__init(pa_module *m) {
goto fail;
}
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->devices = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
u->use_tsched = TRUE;
commit a9b38b3530318daf44d55c5fdfdd12b2299ef215
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Jun 7 00:43:03 2009 +0200
daemon: optionally call mlockall() on startup
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index afa7ca0..b4a7fdb 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -164,6 +164,14 @@ USA.
</option>
<option>
+ <p><opt>lock-memory=</opt> Locks the entire PulseAudio process
+ into memory. While this might increase drop-out safety when used
+ in conjunction with real-time scheduling this takes away a lot
+ of memory from other processes and might hence considerably slow
+ down your system. Defaults to <opt>no</opt>.</p>
+ </option>
+
+ <option>
<p><opt>flat-volumes=</opt> Enable 'flat' volumes, i.e. where
possible let the sink volume equal the maximum of the volumes of
the inputs connected to it. Takes a boolean argument, defaults
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index ac6cc8a..664e4fd 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -85,6 +85,7 @@ static const pa_daemon_conf default_conf = {
.system_instance = FALSE,
.no_cpu_limit = FALSE,
.disable_shm = FALSE,
+ .lock_memory = FALSE,
.default_n_fragments = 4,
.default_fragment_size_msec = 25,
.default_sample_spec = { .format = PA_SAMPLE_S16NE, .rate = 44100, .channels = 2 },
@@ -446,6 +447,7 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
{ "no-cpu-limit", pa_config_parse_bool, &c->no_cpu_limit, NULL },
{ "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
{ "flat-volumes", pa_config_parse_bool, &c->flat_volumes, NULL },
+ { "lock-memory", pa_config_parse_bool, &c->lock_memory, NULL },
{ "exit-idle-time", pa_config_parse_int, &c->exit_idle_time, NULL },
{ "scache-idle-time", pa_config_parse_int, &c->scache_idle_time, NULL },
{ "realtime-priority", parse_rtprio, c, NULL },
@@ -595,16 +597,14 @@ FILE *pa_daemon_conf_open_default_script_file(pa_daemon_conf *c) {
return f;
}
-
-static const char* const log_level_to_string[] = {
- [PA_LOG_DEBUG] = "debug",
- [PA_LOG_INFO] = "info",
- [PA_LOG_NOTICE] = "notice",
- [PA_LOG_WARN] = "warning",
- [PA_LOG_ERROR] = "error"
-};
-
char *pa_daemon_conf_dump(pa_daemon_conf *c) {
+ static const char* const log_level_to_string[] = {
+ [PA_LOG_DEBUG] = "debug",
+ [PA_LOG_INFO] = "info",
+ [PA_LOG_NOTICE] = "notice",
+ [PA_LOG_WARN] = "warning",
+ [PA_LOG_ERROR] = "error"
+ };
pa_strbuf *s;
char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
@@ -630,6 +630,7 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf_printf(s, "no-cpu-limit = %s\n", pa_yes_no(c->no_cpu_limit));
pa_strbuf_printf(s, "disable-shm = %s\n", pa_yes_no(c->disable_shm));
pa_strbuf_printf(s, "flat-volumes = %s\n", pa_yes_no(c->flat_volumes));
+ pa_strbuf_printf(s, "lock-memory = %s\n", pa_yes_no(c->lock_memory));
pa_strbuf_printf(s, "exit-idle-time = %i\n", c->exit_idle_time);
pa_strbuf_printf(s, "scache-idle-time = %i\n", c->scache_idle_time);
pa_strbuf_printf(s, "dl-search-path = %s\n", pa_strempty(c->dl_search_path));
diff --git a/src/daemon/daemon-conf.h b/src/daemon/daemon-conf.h
index 9cec189..dd69e04 100644
--- a/src/daemon/daemon-conf.h
+++ b/src/daemon/daemon-conf.h
@@ -73,7 +73,8 @@ typedef struct pa_daemon_conf {
disallow_exit,
log_meta,
log_time,
- flat_volumes;
+ flat_volumes,
+ lock_memory;
int exit_idle_time,
scache_idle_time,
auto_log_target,
diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in
index fcd2513..746ea76 100644
--- a/src/daemon/daemon.conf.in
+++ b/src/daemon/daemon.conf.in
@@ -27,6 +27,8 @@
; system-instance = no
; disable-shm = no
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
+; lock-memory = no
+; no-cpu-limit = no
; high-priority = yes
; nice-level = -11
@@ -55,8 +57,6 @@
; flat-volumes = yes
-; no-cpu-limit = no
-
; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 3e50baa..58f8d66 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -40,6 +40,10 @@
#include <liboil/liboil.h>
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
@@ -960,6 +964,17 @@ int main(int argc, char *argv[]) {
pa_rtsig_configure(SIGRTMIN, SIGRTMAX-1);
#endif
+ if (conf->lock_memory) {
+#ifdef HAVE_SYS_MMAN_H
+ if (mlockall(MCL_FUTURE) < 0)
+ pa_log_warn("mlockall() failed: %s", pa_cstrerror(errno));
+ else
+ pa_log_info("Sucessfully locked process into memory.");
+#else
+ pa_log_warn("Memory locking requested but not supported on platform.");
+#endif
+ }
+
pa_memtrap_install();
pa_assert_se(mainloop = pa_mainloop_new());
commit 78bccde2264c439702b103fd8491d9f56c79f54f
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Jun 7 00:44:16 2009 +0200
conf: remove obsolete module-idle-time directive from default config file/man page
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index b4a7fdb..a7c49a4 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -236,13 +236,6 @@ USA.
</option>
<option>
- <p><opt>module-idle-time=</opt> Unload autoloaded modules after
- being idle for this time in seconds. Defaults to 20. The
- <opt>--module-idle-time</opt> command line option takes
- precedence.</p>
- </option>
-
- <option>
<p><opt>scache-idle-time=</opt> Unload autoloaded sample cache
entries after being idle for this time in seconds. Defaults to
20. The <opt>--scache-idle-time</opt> command line option takes
diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in
index 746ea76..d119716 100644
--- a/src/daemon/daemon.conf.in
+++ b/src/daemon/daemon.conf.in
@@ -37,7 +37,6 @@
; realtime-priority = 5
; exit-idle-time = 20
-; module-idle-time = 20
; scache-idle-time = 20
; dl-search-path = (depends on architecture)
commit 5be1cc52ffcc01c655f897fd7fdead4484bfd86b
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Jun 7 00:44:49 2009 +0200
man: document log related daemon.conf options
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index a7c49a4..fe30016 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -268,9 +268,9 @@ USA.
</option>
<option>
- <p><opt>default-script-file=</opt> Load the default
+ <p><opt>load-default-script-file=</opt> Load the default
configuration script file as specified
- in <opt>default-script-file=</opt>. Defaults to "yes".</p>
+ in <opt>default-script-file=</opt>. Defaults to <opt>yes</opt>.</p>
</option>
</section>
@@ -297,6 +297,23 @@ USA.
might alter this setting.</p>
</option>
+ <option>
+ <p><opt>log-meta=</opt> With each logged message log the code
+ location the message was generated from. Defaults to
+ <opt>no</opt>.</p>
+ </option>
+
+ <option>
+ <p><opt>log-time=</opt> With each logged messages log the
+ relative time since startup. Defaults to <opt>no</opt>.</p>
+ </option>
+
+ <option>
+ <p><opt>log-backtrace=</opt> When greater than 0, with each
+ logged message log a code stack trace up the the specified
+ number of stack frames. Defaults to <opt>0</opt>.</p>
+ </option>
+
</section>
<section name="Resource Limits">
commit 3aefc458839a8d72c9de95550339b049c2b7e730
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Jun 7 00:45:05 2009 +0200
man: document 24bit sample types in man page
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index fe30016..c23d8a7 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -389,11 +389,13 @@ USA.
<option>
<p><opt>default-sample-format=</opt> The default sampling
format. Specify one of <opt>u8</opt>, <opt>s16le</opt>,
- <opt>s16be</opt>, <opt>s32le</opt>,
- <opt>s32be</opt>, <opt>float32le</opt>, <opt>float32be</opt>,
+ <opt>s16be</opt>, <opt>s24le</opt>, <opt>s24be</opt>,
+ <opt>s24-32le</opt>, <opt>s24-32be</opt>, <opt>s32le</opt>,
+ <opt>s32be</opt> <opt>float32le</opt>, <opt>float32be</opt>,
<opt>ulaw</opt>, <opt>alaw</opt>. Depending on the endianess of
- the CPU the
- formats <opt>s16ne</opt>, <opt>s16re</opt>, <opt>s32ne</opt>, <opt>s32re</opt>,
+ the CPU the formats <opt>s16ne</opt>, <opt>s16re</opt>,
+ <opt>s24ne</opt>, <opt>s24re</opt>, <opt>s24-32ne</opt>,
+ <opt>s24-32re</opt>, <opt>s32ne</opt>, <opt>s32re</opt>,
<opt>float32ne</opt>, <opt>float32re</opt> (for native,
resp. reverse endian) are available as aliases.</p>
</option>
commit 8adf1d5eea0750cea52a5ce8fb75d4331bf8a7cc
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Jun 7 00:45:21 2009 +0200
man: document that tsched doesn't use fragment settings
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index c23d8a7..68bcb77 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -421,7 +421,8 @@ USA.
these buffer metrics for machines with high scheduling
latencies. Not all possible values that may be configured here are
available in all hardware. The driver will to find the nearest
- setting supported.</p>
+ setting supported. Modern drivers that support timer-based
+ scheduling ignore these options.</p>
<option>
<p><opt>default-fragments=</opt> The default number of
commit 8eaea3aa6471b7d0e78d110752847db5b213c85a
Author: Jyri Sarha <jyri.sarha at nokia.com>
Date: Thu May 14 09:42:52 2009 +0300
optimization: Optimized pa_sink_render_full.
This is finally the latest version of the patch.
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 141084d..db9b4f3 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1025,14 +1025,13 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
pa_memchunk chunk;
size_t l, d;
pa_memchunk_make_writable(result, length);
- result->length = length;
l = length - result->length;
d = result->index + result->length;
while (l > 0) {
chunk = *result;
- chunk.index += d;
- chunk.length -= d - result->index;
+ chunk.index = d;
+ chunk.length = l;
pa_sink_render_into(s, &chunk);
commit ab5adce7a014f57df829491d06acafbfec3afb5d
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Jun 7 23:24:02 2009 +0200
rtstutter: increase log level by default
diff --git a/src/tests/rtstutter.c b/src/tests/rtstutter.c
index f04d43a..a4b5d59 100644
--- a/src/tests/rtstutter.c
+++ b/src/tests/rtstutter.c
@@ -93,6 +93,8 @@ static void* work(void *p) {
int main(int argc, char*argv[]) {
unsigned n;
+ pa_log_set_level(PA_LOG_DEBUG);
+
srand((unsigned) time(NULL));
if (argc >= 3) {
commit 587fc2ab1c7b53ddd28f35e19aad55caa804de1f
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Jun 8 00:02:15 2009 +0200
core: make sure soft mute status stays in sync with hw mute status
This should close rhbz #494851, mandriva bz #51234.
Probably the same as our own #572, launchpad #352732.
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 98ebac3..59a5ca7 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1199,7 +1199,7 @@ fail:
static void sink_get_mute_cb(pa_sink *s) {
struct userdata *u = s->userdata;
- int err, sw;
+ int err, sw = 0;
pa_assert(u);
pa_assert(u->mixer_elem);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 277b110..c176309 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1158,7 +1158,7 @@ fail:
static void source_get_mute_cb(pa_source *s) {
struct userdata *u = s->userdata;
- int err, sw;
+ int err, sw = 0;
pa_assert(u);
pa_assert(u->mixer_elem);
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index db9b4f3..5d54d83 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1365,8 +1365,12 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0);
- if (old_muted != s->muted)
+ if (old_muted != s->muted) {
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+
+ /* Make sure the soft mute status stays in sync */
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0);
+ }
}
return s->muted;
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index abb5f4d..53697c5 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -768,8 +768,12 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0);
- if (old_muted != s->muted)
+ if (old_muted != s->muted) {
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+
+ /* Make sure the soft mute status stays in sync */
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0);
+ }
}
return s->muted;
commit e7a6d53118315ff12896707e42528bda5e5d9eab
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Jun 8 00:12:20 2009 +0200
core: replace tabs by spaces
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 5d54d83..13f0e11 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -973,21 +973,21 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
n = fill_mix_info(s, &length1st, info, MAX_MIX_CHANNELS);
if (n == 0) {
- pa_silence_memchunk_get(&s->core->silence_cache,
- s->core->mempool,
- result,
- &s->sample_spec,
- length1st);
+ pa_silence_memchunk_get(&s->core->silence_cache,
+ s->core->mempool,
+ result,
+ &s->sample_spec,
+ length1st);
} else if (n == 1) {
- pa_cvolume volume;
+ pa_cvolume volume;
- *result = info[0].chunk;
- pa_memblock_ref(result->memblock);
+ *result = info[0].chunk;
+ pa_memblock_ref(result->memblock);
- if (result->length > length)
- result->length = length;
+ if (result->length > length)
+ result->length = length;
- pa_sw_cvolume_multiply(&volume, &s->thread_info.soft_volume, &info[0].volume);
+ pa_sw_cvolume_multiply(&volume, &s->thread_info.soft_volume, &info[0].volume);
if (s->thread_info.soft_muted || !pa_cvolume_is_norm(&volume)) {
if (s->thread_info.soft_muted || pa_cvolume_is_muted(&volume)) {
@@ -1005,10 +1005,10 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
} else {
void *ptr;
- result->index = 0;
- result->memblock = pa_memblock_new(s->core->mempool, length);
+ result->index = 0;
+ result->memblock = pa_memblock_new(s->core->mempool, length);
- ptr = pa_memblock_acquire(result->memblock);
+ ptr = pa_memblock_acquire(result->memblock);
result->length = pa_mix(info, n,
(uint8_t*) ptr + result->index, length1st,
@@ -1022,23 +1022,23 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
inputs_drop(s, info, n, result);
if (result->length < length) {
- pa_memchunk chunk;
- size_t l, d;
- pa_memchunk_make_writable(result, length);
-
- l = length - result->length;
- d = result->index + result->length;
- while (l > 0) {
- chunk = *result;
- chunk.index = d;
- chunk.length = l;
-
- pa_sink_render_into(s, &chunk);
-
- d += chunk.length;
- l -= chunk.length;
- }
- result->length = length;
+ pa_memchunk chunk;
+ size_t l, d;
+ pa_memchunk_make_writable(result, length);
+
+ l = length - result->length;
+ d = result->index + result->length;
+ while (l > 0) {
+ chunk = *result;
+ chunk.index = d;
+ chunk.length = l;
+
+ pa_sink_render_into(s, &chunk);
+
+ d += chunk.length;
+ l -= chunk.length;
+ }
+ result->length = length;
}
pa_sink_unref(s);
commit 983aa5d44bb98f89d5f22ff03dcfc60e62c9f638
Merge: e7a6d53 00cc168
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Jun 8 00:27:52 2009 +0200
Merge commit 'origin/master-tx'
commit 12d53826f692f5dac60a5026521cffb5c5fb7b85
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Jun 8 00:34:52 2009 +0200
i18n: update po data
diff --git a/po/LINGUAS b/po/LINGUAS
index f594bac..2efd94e 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -2,8 +2,8 @@ as
bn_IN
ca
cs
-de
de_CH
+de
el
es
fi
@@ -16,13 +16,12 @@ nl
or
pa
pl
-pt
pt_BR
-sr
+pt
sr at latin
+sr
sv
ta
te
uk
zh_CN
-
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2cd451f..534feb1 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -15,7 +15,7 @@ src/modules/alsa/alsa-util.c
src/modules/module-pipe-source.c
src/modules/module-solaris.c
src/modules/module-default-device-restore.c
-src/modules/module-x11-xsmp.c
+src/modules/x11/module-x11-xsmp.c
src/modules/module-remap-sink.c
src/modules/bluetooth/module-bluetooth-proximity.c
src/modules/module-detect.c
@@ -24,23 +24,23 @@ src/modules/module-lirc.c
src/modules/module-hal-detect.c
src/modules/module-sine.c
src/modules/module-zeroconf-publish.c
-src/modules/module-jack-source.c
+src/modules/jack/module-jack-source.c
src/modules/module-cli.c
src/modules/gconf/module-gconf.c
src/modules/gconf/gconf-helper.c
src/modules/module-esound-sink.c
src/modules/alsa/module-alsa-sink.c
src/modules/module-volume-restore.c
-src/modules/module-x11-bell.c
+src/modules/x11/module-x11-bell.c
src/modules/module-protocol-stub.c
src/modules/module-stream-restore.c
-src/modules/module-jack-sink.c
+src/modules/jack/module-jack-sink.c
src/modules/module-esound-compat-spawnfd.c
src/modules/module-esound-compat-spawnpid.c
#src/modules/module-waveout.c
src/modules/module-combine.c
src/modules/bluetooth/proximity-helper.c
-src/modules/module-x11-publish.c
+src/modules/x11/module-x11-publish.c
src/modules/rtp/module-rtp-recv.c
src/modules/rtp/sdp.c
src/modules/rtp/rtp.c
@@ -190,7 +190,6 @@ src/utils/pactl.c
src/utils/padsp.c
src/utils/pax11publish.c
src/utils/pacmd.c
-src/utils/paplay.c
src/pulsecore/lock-autospawn.c
src/modules/alsa/alsa-sink.c
src/modules/alsa/alsa-source.c
diff --git a/po/as.po b/po/as.po
index 12488e6..74197d9 100644
--- a/po/as.po
+++ b/po/as.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-08 12:35+0530\n"
"Last-Translator: Amitakhya Phukan <aphukan at fedoraproject.org>\n"
"Language-Team: Assamese <fedora-trans-as at redhat.com>\n"
@@ -16,51 +16,51 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analog Mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analog Stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digital Stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digital Stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analog à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ 4.০"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digital à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ 4.০ (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analog à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analog à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ 5.০"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analog à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digital à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analog à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -72,7 +72,7 @@ msgstr ""
"à¦
তি সমà§à¦à§± à¦à¦à¦à§ ALSA à¦à¦¾à¦²à¦ '%s' ৰ à¦à¦à¦¾ বাঠ। à¦
নà§à¦à§à§°à¦¹ à¦à§°à¦¿ à¦à¦ সমসà§à¦¯à¦¾ ALSA বিà¦à¦¾à¦¶à¦à¦ "
"à¦à¦¨à¦¾à¦à¦ ।"
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -84,7 +84,7 @@ msgstr ""
"à¦
তি সমà§à¦à§± à¦à¦à¦à§ ALSA à¦à¦¾à¦²à¦ '%s' ৰ à¦à¦à¦¾ বাঠ। à¦
নà§à¦à§à§°à¦¹ à¦à§°à¦¿ à¦à¦ সমসà§à¦¯à¦¾ ALSA বিà¦à¦¾à¦¶à¦à¦ "
"à¦à¦¨à¦¾à¦à¦ ।"
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -96,11 +96,11 @@ msgstr ""
"à¦
তি সমà§à¦à§± à¦à¦à¦à§ ALSA à¦à¦¾à¦²à¦ '%s' ৰ à¦à¦à¦¾ বাঠ। à¦
নà§à¦à§à§°à¦¹ à¦à§°à¦¿ à¦à¦ সমসà§à¦¯à¦¾ ALSA বিà¦à¦¾à¦¶à¦à¦ "
"à¦à¦¨à¦¾à¦à¦ ।"
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à¦à¦à§à¦¯à¦¨à§à¦¤à§°à§à¦£ à¦
'ডিà¦
'"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "মà§à¦¡à§à¦®"
@@ -170,104 +170,104 @@ msgstr "auth পাব নà§à§±à¦¾à§°à¦¿: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ঠ'%s' à¦à¦¤à§à¦¤à§° দিলà§"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "à¦à¦¿à¦à§à¦¨à§à¦² %s পà§à§±à¦¾ à¦'ল ।"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "পà§à§°à¦¸à§à¦¥à¦¾à¦¨ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' পà§à§±à¦¾ ন'à¦'ল ।"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' সমষà§à¦à¦¿ পà§à§±à¦¾ ন'à¦'ল ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' (UID %lu) à¦à§°à§ সমষà§à¦à¦¿ '%s' (GID %lu) পà§à§±à¦¾ à¦'ল ।"
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' à¦à§°à§ সমষà§à¦à¦¿ '%s' ৰ GID à¦
মিল ।"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' ৰ à¦à§°à§° পà¦à§à¦à¦¿à¦à¦¾ '%s' নহà§, à¦à¦à¦à¦¾à¦£ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' সà§à¦·à§à¦à¦¿ à¦à§°à¦¿à¦¬à¦²à§ বিফল: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "সমষà§à¦à¦¿à§° তালিà¦à¦¾ সলনি à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID সলনি à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID সলনি à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ৰà§à¦à§° à¦
ধিà¦à¦¾à§° সফলà¦à¦¾à¦¬à§ à¦à§°à§à§±à¦¾ à¦'ল ।"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦ সà§à¦¥à¦¾à¦ªà¦¤à§à¦¯à¦¤ পà§à§°à¦£à¦¾à¦²à§ বà§à¦¯à¦¾à¦ªà¦ মà§à¦¡ à¦
সমৰà§à¦¥à¦¿à¦¤ ।"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "à¦à¦¦à§à¦¶ শাৰৠবিশà§à¦²à§à¦·à¦£ à¦à§°à¦¿à¦¬à¦²à§ বিফল ।"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "à¦à¦®à¦¿ '%s' সমষà§à¦à¦¿à¦¤, য'ত high-priority scheduling ৰ à¦
নà§à¦®à¦¤à¦¿ à¦à¦à§ ।"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "à¦à¦®à¦¿ '%s' সমষà§à¦à¦¿à¦¤, য'ত real-time scheduling ৰ à¦
নà§à¦®à¦¤à¦¿ à¦à¦à§ ।"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ঠà¦à¦®à¦¾à¦ acquire-high-priority à¦
ধিà¦à¦¾à§° দিà§à§ ।"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ঠacquire-high-priority à¦
ধিà¦à¦¾à§° নিদিà§à§ ।"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit ঠà¦à¦®à¦¾à¦ acquire-real-time à¦
ধিà¦à¦¾à§° দিà§à§ ।"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ঠacquire-real-time à¦
ধিà¦à¦¾à§° নিদিà§à§ ।"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -288,207 +288,207 @@ msgstr ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"বিনà§à¦¯à¦¾à¦¸ দà§à¦¬à¦¾à§°à¦¾ high-priority scheduling ৰ সà¦à§à§°à¦¿à§ হ'লà§à¦ নিà§à¦®à¦¨à§à¦¤à¦¿ দà§à¦¬à¦¾à§°à¦¾ সà§à¦à¦à§ "
"à¦
নà§à¦®à§à¦¦à¦¿à¦¤ নহৠ।"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO সফলতাৰৠবà§à¦¦à§à¦§à¦¿ à¦à§°à¦¾ হà§à¦à§"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO বিফল: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE বৰà§à¦à¦¨ à¦à§°à¦¾ হà§à¦à§"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"বিনà§à¦¯à¦¾à¦¸ দà§à¦¬à¦¾à§°à¦¾ real-time scheduling ৰ সà¦à§à§°à¦¿à§ হ'লà§à¦ নিà§à¦®à¦¨à§à¦¤à¦¿ দà§à¦¬à¦¾à§°à¦¾ সà§à¦à¦à§ à¦
নà§à¦®à§à¦¦à¦¿à¦¤ "
"নহৠ।"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ডà§à¦®à¦¨ নাঠà¦à¦²à¦¾"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u ৰà§à¦ªà§ ডà§à¦®à¦¨ à¦à¦²à¦¿à¦à§"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডà§à¦®à¦¨ kill à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পৰিà¦à§à§ à¦à¦ পà§à§°à§à¦à§à§°à¦¾à¦® সà¦à§à¦à¦¾à¦²à¦¿à¦¤ হà§à§±à¦¾ à¦à¦à¦¿à¦¤ নহৠ(ন'হ'লৠ--system à¦à¦²à§à¦²à¦¿à¦à¦¿à¦¤ হà§) ।"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-ৰ à¦
ধিà¦à¦¾à§° à¦à§±à¦¶à§à¦¯à¦ ।"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "পà§à§°à¦£à¦¾à¦²à§ à¦à¦¾à¦¨à§à¦à¦¿à§° à¦à§à¦·à§à¦¤à§à§°à¦¤ --start সমৰà§à¦¥à¦¿à¦¤ নহৠ।"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-exit নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহà§!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-module-loading নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহà§!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, SHM মà§à¦¡ বলপà§à§°à§à¦¬à¦ নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, à¦à¦¾à¦® নà¦à§°à¦¾ সমà§à§° পৰা পà§à§°à¦¸à§à¦¥à¦¾à¦¨ à¦à§°à¦¾ বলপà§à§°à§à¦¬à¦ নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe বিফল: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¿à¦¬à¦²à§ বিফল ।"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "সফলতাৰৠডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦à¦à§ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "সà¦à§à¦à¦²à¦¨à§° à¦à§à¦¹à¦¸à§à¦¥: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "সà¦à§à¦à¦²à¦¨à§° CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "à¦à§à¦¹à¦¸à§à¦¥à¦¤ à¦à¦²à§à§±à¦¾ হà§à¦à§: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পà§à§±à¦¾ à¦à§à¦à§ ।"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "পà§à¦à§° মাপ %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ হà§à¦à§: হà§"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ হà§à¦à§: নহà§"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimized build: হà§"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimized build: নহà§"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à§°à¦¾ হà§à¦à§, সà¦à¦²à§ asserts নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à§°à¦¾ হà§à¦à§, à¦
à¦à¦² fast path asserts নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "সà¦à¦²à§ asserts সà¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "যনà§à¦¤à§à§° ID পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ৰান-à¦à¦¾à¦à¦® পà¦à§à¦à¦¿à¦à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "à¦
ৱসà§à¦¥à¦¾à¦¸à§à¦à¦ পà¦à§à¦à¦¿à¦à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "নতà§à¦¨ high-resolution timers পà§à§±à¦¾ হà§! à¦
à¦à¦¿à¦¨à¦¨à§à¦¦à¦¨!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -496,32 +496,32 @@ msgstr ""
"শà§à§°à§à¦®à¦¾à¦¨, à¦à¦ªà§à¦¨à¦¾à§° à¦à¦¾à§°à§à¦£à§à¦² পà§à§°à¦£à¦¿! high-resolution timer সà¦à§à§°à¦¿à§ থà¦à¦¾ Linux ঠà¦à¦à¦¿ "
"à¦à¦ªà¦¦à§à¦¶ দিà§à¦¾ হà§!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"তà§à¦²à¦¿ লà§à§±à¦¾ মডিà¦à¦² নà§à¦¹à§à§±à¦¾à¦à§ ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§, à¦à§à¦¨à§ à¦à¦¾à¦® সà¦à§à¦à¦¾à¦²à¦¨ à¦à§°à¦¾ সমà§à¦à§± নহৠ।"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¾ সমà§à¦ªà§à§°à§à¦£ ।"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à§°à¦¾à§° পà§à§°à¦à§à§°à¦¿à§à¦¾ à¦à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -664,15 +664,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -680,52 +680,52 @@ msgstr ""
"--log-level ৰ à¦à¦¾à§°à¦£à§ লঠসà§à¦¤à§°à§° তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ (হৠসà¦à¦à§à¦¯à¦¾ ০..৪ ৰ সà§à¦®à¦¾à¦¤ বা debug, "
"info, notice, warn, error ৰ যিà¦à§à¦¨à§ à¦à¦à¦¾) ।"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "à¦
বà§à¦§ লঠলà¦à§à¦·à§à¦¯: 'syslog', 'stderr' বা 'auto' ৰ à¦à¦à¦¾ বà§à¦¯à§±à¦¹à¦¾à§° à¦à§°à¦"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm দà§à¦¬à¦¾à§°à¦¾ বà§à¦²à¦¿à§à§à¦¨ তৰà§à¦ পà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
@@ -764,77 +764,82 @@ msgstr "বà§à¦¯à§±à¦¹à¦¾à§° পদà§à¦§à¦¤à¦¿: %s\n"
msgid "Load Once: %s\n"
msgstr "à¦à¦¬à¦¾à§° তà§à¦²à¦¿ লà§à§±à¦¾ হ'ব: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লঠলà¦à§à¦·à§à¦¯ '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লà¦à§° সà§à¦¤à§° '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] resample পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] à¦à¦ সà§à¦¥à¦¾à¦ªà¦¤à§à¦¯à¦¤ rlimit সমৰà§à¦¥à¦¿à¦¤ নহৠ।"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] à¦à¦¾à¦¨à§à¦à¦¿à§° বিনà§à¦¯à¦¾à¦¸ '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] à¦à¦¾à¦¨à§à¦à¦¿à§° মাতà§à§°à¦¾ '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] à¦à¦¾à¦¨à§à¦à¦¿à§° à¦à§à¦¨à§à¦² '%s' বà§à¦§ নহà§"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] à¦à§à¦¨à§à¦² মà§à¦ª '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] à¦
à¦à¦¶à§° সà¦à¦à§à¦¯à¦¾ '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] à¦
à¦à¦¶à§° মাপ '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à§° '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§° à¦à§à¦²à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1086,8 +1091,8 @@ msgid "Top Rear Right"
msgstr "à¦à¦ªà§°à¦¤ পিà¦à¦¤ সà§à¦à¦«à¦¾à¦²à§"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(à¦
বà§à¦§)"
@@ -1272,173 +1277,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "à¦
à¦à¦¾à¦¨à¦¾ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨ '%s'-ৰ বাবৠবাৰà§à¦¤à¦¾ পà§à§°à¦¾à¦ªà§à¦¤ হà§à¦à§"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "সà§à¦à§à§°à¦¿à¦® drain à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "পà§à¦²à§à¦¬à§à¦ সà§à¦à§à§°à¦¿à¦®à¦ drain à¦à§°à¦¾ হ'ল ।\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "সà§à§±à¦à§° সà§à¦¤à§ সà¦à¦¯à§à¦ Drain à¦à§°à¦¾ হà§à¦à§ ।\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "সফলতাৰৠসà§à¦à§à§°à¦¿à¦® নিৰà§à¦®à¦¿à¦¤ হà§à¦à§ ।\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "à¦à¦¾à¦¨à§à¦à¦¿ spec '%s', à¦à§à¦¨à§à¦² মà§à¦ª '%s'পà§à§°à§à§à¦ à¦à§°à¦¾ হà§à¦à§\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "যনà§à¦¤à§à§° %s-ৰ সà§à¦¤à§ সà¦à¦¯à§à¦ à¦à§°à¦¾ হà§à¦à§ (%u, %ssuspended) ।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ষà§à¦à§à§°à¦¿à¦® সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তà§à§°à§à¦à¦¿: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "সà§à¦à§à§°à¦¿à¦® যনà§à¦¤à§à§° সà§à¦¥à¦à¦¿à¦¤ à¦à§°à¦¾ হà§à¦à§ । %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "সà§à¦à§à§°à¦¿à¦® যনà§à¦¤à§à§° পà§à¦¨à§°à¦¾à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§ । %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ষà§à¦à§à§°à¦¿à¦® underrun: %s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ষà§à¦à§à§°à¦¿à¦® overrun: %s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "সà§à¦à§à§°à¦¿à¦® à¦à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§ । %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "%s যনà§à¦¤à§à§°à¦²à§ সà§à¦à§à§°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° à¦à§°à¦¾ হà§à¦à§ (%u, %ssuspended) ।%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "সà§à¦à§à§°à¦¿à¦® পà§à§°à¦¶à¦®à¦à§° à¦à§à¦£ পৰিবৰà§à¦¤à¦¿à¦¤ হà§à¦à§ । %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "সà¦à¦¯à§à¦ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হà§à¦à§ ।%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "<b>সà¦à¦¯à§à¦à§° মà§à¦¡</b>: %s<br>\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "সà§à¦à§à§°à¦¿à¦® drain à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "পà§à¦²à§à¦¬à§à¦ সà§à¦à§à§°à¦¿à¦®à¦ drain à¦à§°à¦¾ হ'ল ।\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "সà§à§±à¦à§° সà§à¦¤à§ সà¦à¦¯à§à¦ Drain à¦à§°à¦¾ হà§à¦à§ ।\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF পà§à§±à¦¾ à¦'ল ।\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "à¦à¦¿à¦à§à¦¨à§à¦² পà§à§±à¦¾ à¦'ল, পà§à§°à¦¸à§à¦¥à¦¾à¦¨ à¦à§°à¦¾ হà§à¦à§ ।\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "latency পাবলৠবà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "সমà§: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1464,8 +1464,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1488,6 +1490,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1538,7 +1545,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1549,88 +1556,133 @@ msgstr ""
"libpulse ৰ সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ হà§à¦à§ %s\n"
"libpulse ৰ সà§à¦¤à§ যà§à¦à§à¦¤ %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "à¦à§à¦¨à§à¦² মà§à¦ª '%s' বà§à¦§ নহà§\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নহৠ।"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "à¦à§à¦¨à§à¦² মà§à¦ª '%s' বà§à¦§ নহà§\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "à¦
বà§à¦§ latency নিৰà§à¦§à¦¾à§°à¦£ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "à¦
বà§à¦§ পà§à§°à¦à§à§°à¦¿à§à¦¾à§° সমà§à§° নিৰà§à¦§à¦¾à§°à¦£ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "resample পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নহৠ।"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "à¦
বà§à¦§ à¦à¦¾à¦¨à§à¦à¦¿ নিৰà§à¦§à¦¾à§°à¦¿à¦¤\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "à¦
তà§à¦¯à¦¾à¦§à¦¿à¦ তৰà§à¦ ।\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "à¦à¦¾à¦¨à§à¦à¦¿ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "শবà§à¦¦à§à§° নথিপতà§à§° à¦à§à¦²à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "à¦à¦¾à¦¨à§à¦à¦¿ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "à¦à§à¦¨à§à¦² মà§à¦ª à¦à§°à§ নথিপতà§à§° à¦
মিল ।\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "à¦à¦à¦¾ %s সà§à¦à§à§°à¦¿à¦® à¦à¦¾à¦¨à§à¦à¦¿ নিৰà§à¦§à¦¾à§°à¦£ '%s' ৰ সà§à¦¤à§ à¦à§à¦²à¦¾ হà§à¦à§ ।\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "ৰà§à¦à§°à§à¦¡ à¦à§°à¦¾ হà§à¦à§"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "পà§à¦²à§-বà§à¦"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "à¦
তà§à¦¯à¦¾à¦§à¦¿à¦ তৰà§à¦ ।\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() বà§à¦¯à§°à§à¦¥ ।\n"
@@ -1660,8 +1712,7 @@ msgstr "পà§à¦¨à§°à¦¾à§°à¦®à§à¦ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "সতৰà§à¦à¦¬à¦¾à§°à§à¦¤à¦¾: ধà§à¦¬à¦¨à¦¿ সà§à§±à¦ সà§à¦¥à¦¾à¦¨à§à§ নহà§, সà§à¦¥à¦à¦¿à¦¤ à¦à§°à¦¾ নহৠ।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT পà§à§°à¦¾à¦ªà§à¦¤ হà§à¦à§, পà§à§°à¦¸à§à¦¥à¦¾à¦¨ à¦à§°à¦¾ হà§à¦à§ ।\n"
@@ -1690,7 +1741,7 @@ msgstr ""
"to\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1701,32 +1752,32 @@ msgstr ""
"libpulse ৰ সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ হà§à¦à§ %s\n"
"libpulse ৰ সà§à¦¤à§ যà§à¦à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "পৰিসà¦à¦à§à¦¯à¦¾à¦¨ পাবলৠবà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "বৰà§à¦¤à§à¦¤à¦®à¦¾à¦¨à§ বà§à¦¯à§±à¦¹à§à¦¤: %u blocks containing %s bytes total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "সমà§à¦ªà§à§°à§à¦£ à¦à§à§±à¦¨à¦à¦¾à¦²à¦¤ বিতৰণ à¦à§°à¦¾: %u blocks containing %s bytes total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "à¦à¦¾à¦¨à§à¦à¦¿ à¦à§à¦¶à§à¦¬à§° মাপ: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "সà§à§±à¦ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1749,12 +1800,12 @@ msgstr ""
"à¦
বিà¦à¦²à§à¦ªà¦¿à¦¤ à¦à§à¦¸: %s\n"
"à¦à§à¦à¦¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "à¦à¦¿à¦à§à¦ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1793,12 +1844,12 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "à¦à§à¦¸ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1837,20 +1888,20 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "মডিà¦à¦² সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1867,12 +1918,12 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à¦à§à§°à¦¾à¦¹à¦ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1887,12 +1938,12 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à¦à¦¾à§°à§à¦¡ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1909,22 +1960,22 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tপাৰà§à¦¶à§à¦¬à§°à§à¦ª:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tসà¦à§à§°à¦¿à§ পাৰà§à¦¶à§à¦¬à§°à§à¦ª: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "à¦à¦¿à¦à§à¦ নিবà§à¦¶ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1961,12 +2012,12 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "à¦à§à¦¸ à¦à¦à¦à¦ªà§à¦ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1995,12 +2046,12 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "à¦à¦¾à¦¨à§à¦à¦¿ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2031,22 +2082,21 @@ msgstr ""
"\tà¦à§à¦£:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "বà§à¦¯à§°à§à¦¥à¦¤à¦¾: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "à¦à¦¾à¦¨à§à¦à¦¿ à¦à¦ªà¦²'ড বà§à¦¯à§°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "নথিপতà§à§°à§° à¦
সমà§à¦¤ হà§à§±à¦¾ সমাপà§à¦¤à¦¿\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2093,7 +2143,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2104,71 +2154,64 @@ msgstr ""
"libpulseৰ সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ %s\n"
"libpulse-ৰ সà§à¦¤à§ যà§à¦à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "তà§à¦²à¦¿ লà§à§±à¦¾à§° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦
নà§à¦à§à§°à¦¹ à¦à§°à§ à¦à¦à¦à¦¿ à¦à¦¾à¦¨à§à¦à¦¿ নথিপতà§à§° à¦à¦²à§à¦²à§à¦ à¦à§°à§à¦¨\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "শবà§à¦¦à§à§° নথিপতà§à§° à¦à§à¦²à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "à¦à¦à¦¾ %s সà§à¦à§à§°à¦¿à¦® à¦à¦¾à¦¨à§à¦à¦¿ নিৰà§à¦§à¦¾à§°à¦£ '%s' ৰ সà§à¦¤à§ à¦à§à¦²à¦¾ হà§à¦à§ ।\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "বাà¦à¦¾à¦¨à§à§° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦à¦à¦à¦¿ à¦à¦¾à¦¨à§à¦à¦¿ নথিপতà§à§° à¦à¦²à§à¦²à§à¦ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "à¦à¦à¦¤à§°à¦¾à¦¬à¦²à§ à¦à¦à¦¾ à¦à¦¾à¦¨à§à¦à¦¿ নাম দিব লাà¦à¦¿à¦¬ \n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "à¦à¦¿à¦à§à¦ à¦à¦¨à¦ªà§à¦ à¦à¦¨à§à¦¡à§à¦à§à¦¸ à¦à§°à§ à¦à¦à¦¾ à¦à¦¿à¦à§à¦ নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "à¦à§à¦¸ à¦à¦à¦à¦ªà§à¦ à¦à¦¨à§à¦¡à§à¦à§à¦¸ à¦à§°à§ à¦à¦à¦à¦¿ à¦à§à¦¸ নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "মডিà¦à¦²à§° নাম à¦à§°à§ তৰà§à¦ নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "মডিà¦à¦² à¦à¦¨à§à¦¡à§à¦à§à¦¸ নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦à¦¾à¦§à¦¿à¦ à¦à¦¿à¦à§à¦ নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ যাবৠনা । বà§à¦²à¦¿à§à§à¦¨ মান নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦ ।\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦à¦¾à¦§à¦¿à¦ à¦à§à¦¸ নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ যাবৠনা । বà§à¦²à¦¿à§à§à¦¨ মান নিৰà§à¦§à¦¾à§°à¦£ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦ ।\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "à¦à¦¾à§°à§à¦¡à§à§° নাম/à¦à¦¨à§à¦¡à§à¦à§à¦¸ à¦à§°à§ à¦à¦à¦à¦¿ পাৰà§à¦¶à§à¦¬à§°à§à¦ªà§° নাম à¦à¦²à§à¦²à§à¦ à¦à§°à¦¾ à¦à§±à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "সà¦à§à¦à¦¾à¦²à¦¨à§° বাবৠà¦à¦¦à§à¦¶ নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহৠ।\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() বà§à¦¯à§°à§à¦¥: %s"
@@ -2252,129 +2295,48 @@ msgstr "à¦à§à¦à¦¿ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ তà§à¦²à¦¿à¦¬à¦²
msgid "Not yet implemented.\n"
msgstr "à¦à¦¤à¦¿à§à¦¾à¦ বাসà§à¦¤à¦¬à¦¾à§à¦¿à¦¤ নহৠ।\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডà§à¦®à¦¨ kill à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ডà§à¦®à¦¨à§° পৰা à¦à§à¦¨à§ পà§à§°à¦¤à¦¿à¦à§à§°à¦¿à§à¦¾ পà§à§±à¦¾ নাযাৠ।"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "সফলতাৰৠসà§à¦à§à§°à¦¿à¦® নিৰà§à¦®à¦¿à¦¤ হà§à¦à§\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "সà§à¦à§à§°à¦¿à¦®à§° তà§à§°à§à¦à¦¿: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "সà¦à¦¯à§à¦ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ ।\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse ৰ সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ হà§à¦à§ %s\n"
-"libpulse ৰ সà§à¦¤à§ যà§à¦à§à¦¤ %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "à¦
বà§à¦§ à¦à§à¦¨à§à¦² মà§à¦ª\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "'%s' নথিপতà§à§° à¦à§à¦²à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "à¦à§à¦¨à§à¦² মà§à¦ª à¦à§°à§ নথিপতà§à§° à¦
মিল ।\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "à¦à¦¾à¦¨à§à¦à¦¿ spec '%s' পà§à§°à§à§à¦ à¦à§°à¦¾ হà§à¦à§\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn লঠপà§à§°à§à§à¦ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2390,7 +2352,7 @@ msgstr ""
"POLLOUT নিৰà§à¦§à¦¾à§°à¦¿à¦¤ হà§à§±à¦¾à§°à¦¿ পিà¦à¦¤à§ à¦à¦®à¦¿ à¦à¦¥à¦¿à¦²à§ -- à¦à¦¿à¦¨à§à¦¤à§ তাৰ পিà¦à§° snd_pcm_avail() ঠ০ "
"দিলৠবা à¦
নà§à¦¯ à¦à¦à¦¾ মান < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2406,34 +2368,103 @@ msgstr ""
"POLLIN নিৰà§à¦§à¦¾à§°à¦¿à¦¤ হà§à§±à¦¾à§°à¦¿ পিà¦à¦¤à§ à¦à¦®à¦¿ à¦à¦¥à¦¿à¦²à§ -- à¦à¦¿à¦¨à§à¦¤à§ তাৰ পিà¦à§° snd_pcm_avail() ঠ০ "
"দিলৠবা à¦
নà§à¦¯ à¦à¦à¦¾ মান < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "নিৰà§à¦à¦® %s + নিবà§à¦¶ %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "নিৰà§à¦à¦® %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "নিবà§à¦¶ %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio ধà§à¦¬à¦¨à¦¿ সà§à§±à¦"
+
+#~ msgid "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 fbb9083..a629a42 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-08 16:21+0530\n"
"Last-Translator: Runa Bhattacharjee <runab at fedoraproject.org>\n"
"Language-Team: Bengali INDIA <fedora-trans-bn_in at redhat.com>\n"
@@ -17,51 +17,51 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "à¦
à§à¦¯à¦¾à¦¨à¦¾à¦²à¦ মà§à¦¨à§"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "à¦
à§à¦¯à¦¾à¦¨à¦¾à¦²à¦ সà§à¦à¦¿à¦°à¦¿à¦"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "ডিà¦à¦¿à¦à§à¦¯à¦¾à¦² সà§à¦à¦¿à¦°à¦¿à¦ (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "ডিà¦à¦¿à¦à§à¦¯à¦¾à¦² সà§à¦à¦¿à¦°à¦¿à¦ (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "à¦
à§à¦¯à¦¾à¦¨à¦¾à¦²à¦ সà§à¦à¦¿à¦°à¦¿à¦ ৪.০"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "ডিà¦à¦¿à¦à§à¦¯à¦¾à¦² সারাà¦à¦¨à§à¦¡ ৪.০ (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "à¦
à§à¦¯à¦¾à¦¨à¦¾à¦²à¦ সারাà¦à¦¨à§à¦¡ ৪.১"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "à¦
à§à¦¯à¦¾à¦¨à¦¾à¦²à¦ সারাà¦à¦¨à§à¦¡ ৫.০"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "à¦
à§à¦¯à¦¾à¦¨à¦¾à¦²à¦ সারাà¦à¦¨à§à¦¡ ৫.১"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "ডিà¦à¦¿à¦à§à¦¯à¦¾à¦² সারাà¦à¦¨à§à¦¡ ৫.১ (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "à¦
à§à¦¯à¦¾à¦¨à¦¾à¦²à¦ সারাà¦à¦¨à§à¦¡ à§.১"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +73,7 @@ msgstr ""
"সমà§à¦à¦¬à¦¤ à¦à¦à¦¿ ALSA ডà§à¦°à¦¾à¦à¦à¦¾à¦° '%s'-র à¦à¦à¦à¦¿ বাà¦à¥¤ à¦
নà§à¦à§à¦°à¦¹ à¦à¦°à§ à¦à¦ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§ ALSA "
"ডিà¦à§à¦²à¦ªà¦°à¦¦à§à¦° সà§à¦à¦¿à¦¤ à¦à¦°à§à¦¨à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +85,7 @@ msgstr ""
"সমà§à¦à¦¬à¦¤ à¦à¦à¦¿ ALSA ডà§à¦°à¦¾à¦à¦à¦¾à¦° '%s'-র à¦à¦à¦à¦¿ বাà¦à¥¤ à¦
নà§à¦à§à¦°à¦¹ à¦à¦°à§ à¦à¦ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§ ALSA "
"ডিà¦à§à¦²à¦ªà¦°à¦¦à§à¦° সà§à¦à¦¿à¦¤ à¦à¦°à§à¦¨à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +97,11 @@ msgstr ""
"সমà§à¦à¦¬à¦¤ à¦à¦à¦¿ ALSA ডà§à¦°à¦¾à¦à¦à¦¾à¦° '%s'-র à¦à¦à¦à¦¿ বাà¦à¥¤ à¦
নà§à¦à§à¦°à¦¹ à¦à¦°à§ à¦à¦ সমসà§à¦¯à¦¾ সমà§à¦¬à¦¨à§à¦§à§ ALSA "
"ডিà¦à§à¦²à¦ªà¦°à¦¦à§à¦° সà§à¦à¦¿à¦¤ à¦à¦°à§à¦¨à¥¤"
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à¦
à¦à§à¦¯à¦¨à§à¦¤à¦°à§à¦£ à¦
ডিà¦"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "মà§à¦¡à§à¦®"
@@ -171,105 +171,105 @@ msgstr "auth পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit থà§à¦à§ '%s' পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "%s সিà¦à¦¨à§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ à¦à¦°à¦¾ হà¦à§à¦à§à¥¤"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ সনà§à¦§à¦¾à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "দল '%s' সনà§à¦§à¦¾à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ '%s' (UID %lu) ঠদল '%s' (GID %lu) পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° ঠ'%s' দলà§à¦° GID-র মধà§à¦¯à§ à¦à¦°à¦®à¦¿à¦²à¥¤"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
"'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ বà§à¦¯à¦à§à¦¤à¦¿à¦à¦¤ ডিরà§à¦à§à¦à¦°à¦¿ রà§à¦ªà§ '%s' ধারà§à¦¯ à¦à¦°à¦¾ হà§à¦¨à¦¿, à¦
à¦à§à¦°à¦¾à¦¹à§à¦¯ à¦à¦°à¦¾ হবà§à¥¤"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' নিরà§à¦®à¦¾à¦£ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "দলà§à¦° তালিà¦à¦¾ পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "root-র à¦
ধিà¦à¦¾à¦° সাফলà§à¦¯à§à¦° সাথৠবরà§à¦à¦¨ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦ পà§à¦²à§à¦¯à¦¾à¦à¦«à¦°à§à¦®à§, সিসà§à¦à§à¦®à¦¬à§à¦¯à¦¾à¦ªà§ মà§à¦¡ সমরà§à¦¥à¦¿à¦¤ নà§à¥¤"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "à¦à¦®à¦¾à¦¨à§à¦¡-লাà¦à¦¨ পারà§à¦¸ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "à¦
ধিঠà¦à§à¦°à§à¦¤à§à¦¬à¦¸à¦¹ শিডিà¦à¦²à¦¿à¦à§à§à¦° সà§à¦¬à¦¿à¦§à¦¾ à¦à¦ªà¦²à¦¬à§à¦§à¦à¦¾à¦°à§ '%s' দলৠà¦à¦®à¦°à¦¾ à¦à¦ªà¦¸à§à¦¥à¦¿à¦¤à¥¤"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "রিà§à§à¦²-à¦à¦¾à¦à¦® শিডিà¦à¦²à¦¿à¦à§à§à¦° সà§à¦¬à¦¿à¦§à¦¾ à¦à¦ªà¦²à¦¬à§à¦§à¦à¦¾à¦°à§ '%s' দলৠà¦à¦®à¦°à¦¾ à¦à¦ªà¦¸à§à¦¥à¦¿à¦¤à¥¤"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit-র পà¦à§à¦· থà§à¦à§ acquire-high-priority à¦
ধিà¦à¦¾à¦° পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit-র পà¦à§à¦· থà§à¦à§ acquire-high-priority à¦
ধিà¦à¦¾à¦° পà§à¦°à¦¤à§à¦¯à¦¾à¦à§à¦¯à¦¾à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit-র পà¦à§à¦· থà§à¦à§ acquire-real-priority à¦
ধিà¦à¦¾à¦° পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit-র পà¦à§à¦· থà§à¦à§ acquire-real-priority à¦
ধিà¦à¦¾à¦° পà§à¦°à¦¤à§à¦¯à¦¾à¦à§à¦¯à¦¾à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -289,240 +289,240 @@ msgstr ""
"à¦
ধিà¦à¦¾à¦° পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à§à¦¨, à¦
থবা '%s' দলà§à¦° সদসà§à¦¯ হন, à¦
থবা সà¦à¦¶à§à¦²à¦¿à¦·à§à¦ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° à¦à¦¨à§à¦¯ "
"RLIMIT_NICE/RLIMIT_RTPRIO রিসà§à¦°à§à¦¸à§à¦° সà§à¦®à¦¾ বà§à¦¦à§à¦§à¦¿ à¦à¦°à§à¦¨à¥¤"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"à¦à¦¨à¦«à¦¿à¦à¦¾à¦°à§à¦¶à¦¨ দà§à¦¬à¦¾à¦°à¦¾ high-priority শিডিà¦à¦²à¦¿à¦à§à§à¦° সà§à¦¬à¦¿à¦§à¦¾ à¦à¦ªà¦²à¦¬à§à¦§ হলà§à¦ নিà§à¦®à¦¨à§à¦¤à¦¿ দà§à¦¬à¦¾à¦°à¦¾ "
"তা à¦
নà§à¦®à§à¦¦à¦¿à¦¤ নà§à¥¤"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO সাফলà§à¦¯à§à¦° সাথৠবà§à¦¦à§à¦§à¦¿ à¦à¦°à¦¾ হà§à§à¦à§"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO বিফল: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE বরà§à¦à¦¨ à¦à¦°à¦¾ হà¦à§à¦à§"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"à¦à¦¨à¦«à¦¿à¦à¦¾à¦°à§à¦¶à¦¨ দà§à¦¬à¦¾à¦°à¦¾ real-time শিডিà¦à¦²à¦¿à¦à§à§à¦° সà§à¦¬à¦¿à¦§à¦¾ à¦à¦ªà¦²à¦¬à§à¦§ হলà§à¦ নিà§à¦®à¦¨à§à¦¤à¦¿ দà§à¦¬à¦¾à¦°à¦¾ তা "
"à¦
নà§à¦®à§à¦¦à¦¿à¦¤ নà§à¥¤"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ডà§à¦®à¦¨ à¦à¦²à¦à§ না"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u রà§à¦ªà§ ডà§à¦®à¦¨ à¦à¦²à¦à§"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডà§à¦®à¦¨ kill à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পরিà¦à§à§ à¦à¦ পà§à¦°à§à¦à§à¦°à¦¾à¦®à¦à¦¿ সà¦à§à¦à¦¾à¦²à¦¿à¦¤ হà¦à§à¦¾ à¦à¦à¦¿à¦¤ নৠ(যদি না --system à¦à¦²à§à¦²à¦¿à¦à¦¿à¦¤ হà§)।"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-র à¦
ধিà¦à¦¾à¦° à¦à¦¬à¦¶à§à¦¯à¦à¥¤"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "সিসà§à¦à§à¦® à¦à¦¨à¦¸à§à¦à§à¦¯à¦¾à¦¨à§à¦¸à§à¦° à¦à§à¦·à§à¦¤à§à¦°à§ --start সমরà§à¦¥à¦¿à¦¤ নà§à¥¤"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-exit নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হà§à¦¨à¦¿!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-module-loading নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হà§à¦¨à¦¿!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, SHM মà§à¦¡ বলপà§à¦°à§à¦¬à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà¦à§à¦à§!"
# http://linux.die.net/man/1/pulseaudio à¦à¦à¦¾à¦¨à§ রà§à¦«à¦¾à¦°à§à¦¨à§à¦¸ পাà¦à§à¦¾ যাবà§
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, à¦à¦°à§à¦®à¦¹à§à¦¨ à¦
বসà§à¦¥à¦¾à¦° à¦à¦¨à§à¦¯ ধারà§à¦¯ সমà§à¦¸à§à¦®à¦¾ পà§à¦°à§à¦¤à§ পরৠপà§à¦°à¦¸à§à¦¥à¦¾à¦¨à§à¦° বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾ "
"বলপà§à¦°à§à¦¬à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà¦à§à¦à§!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "পাà¦à¦ª বিফল: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¤à§ বিফল।"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "সাফলà§à¦¯à§à¦° সাথৠডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦à¦¿ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "à¦à¦®à§à¦ªà¦¾à¦à¦²à§à¦¶à¦¨à§à¦° হà§à¦¸à§à¦: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à¦à¦®à§à¦ªà¦¾à¦à¦²à¦¶à¦¨à§à¦° CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ হà§à¦¸à§à¦à§ à¦à¦²à¦à§: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পাà¦à§à¦¾ à¦à¦¿à§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "পà§à¦à§à¦° মাপ %lu বাà¦à¦"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ হà§à§à¦à§: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ হà§à§à¦à§: না"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মà§à¦¡à§ à¦à¦²à¦à§: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "সরà§à¦¬à¦¾à¦ªà§à¦à§à¦· à¦à¦¤à§à¦¤à¦® বিলà§à¦¡: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "সরà§à¦¬à¦¾à¦ªà§à¦à§à¦· à¦à¦¤à§à¦¤à¦® বিলà§à¦¡: না"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à¦°à¦¾ হà§à§à¦à§, সà¦à¦² à¦
à§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à¦°à¦¾ হà§à§à¦à§, শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ফাসà§à¦ পাথ à¦
à§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "সà¦à¦² à¦
à§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦ সà¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "মà§à¦¶à¦¿à¦¨ ID পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "মà§à¦¶à¦¿à¦¨ ID হল %s।"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "মà§à¦¶à¦¿à¦¨ ID হল %s।"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "রান-à¦à¦¾à¦à¦® ডিরà§à¦à§à¦à¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾ হà¦à§à¦à§à¥¤"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "à¦
বসà§à¦¥à¦¾à¦¸à§à¦à¦ ডিরà§à¦à§à¦à¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾ হà¦à§à¦à§à¥¤"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "à¦à¦à§à¦-রà§à¦¸à§à¦²à¦¿à¦à¦¶à¦¨à§à¦° নতà§à¦¨ à¦à¦¾à¦à¦®à¦¾à¦° à¦à¦ªà¦²à¦¬à§à¦§ রà§à§à¦à§! পরà§à¦à§à¦·à¦¾ à¦à¦°à§ দà§à¦à§à¦¨!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "à¦à¦à§à¦-রà§à¦¸à§à¦²à¦¿à¦à¦¶à¦¨à§à¦° নতà§à¦¨ à¦à¦¾à¦à¦®à¦¾à¦° সহ Linux সà¦à§à¦°à¦¿à§ à¦à¦°à¦¾ বাà¦à§à¦à¦¨à§à§!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"লà§à¦¡ à¦à¦°à¦¾ মডিà¦à¦² বিনা ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§ à¦à¦¬à¦ à¦à§à¦¨à§ à¦à¦°à§à¦® সà¦à§à¦à¦¾à¦²à¦¨ à¦à¦°à¦¾ সমà§à¦à¦¬ নà§à¥¤"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à¦°à¦¾à¦° পà§à¦°à¦à§à¦°à¦¿à§à¦¾ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -674,15 +674,15 @@ msgstr ""
"\n"
" -n ডিফলà§à¦ সà§à¦à§à¦°à¦¿à¦ªà§à¦ ফাà¦à¦² লà§à¦¡ à¦à¦°à¦¾ হবৠনা\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -690,52 +690,52 @@ msgstr ""
"--log-level-র à¦à§à¦·à§à¦¤à§à¦°à§ লঠসà§à¦¤à¦°à§à¦° à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ (0..4 সà§à¦®à¦¾à¦° মধà§à¦¯à§ à¦à¦à¦à¦¿ সà¦à¦à§à¦¯à¦¾ "
"à¦
থবা debug, info, notice, warn, ঠerror-র মধà§à¦¯à§ à¦à¦à¦à¦¿ মান)।"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "লà¦à§à¦° à¦à¦¦à§à¦¦à¦¿à¦·à§à¦ সà§à¦¥à¦¨ বà§à¦§ নà§: 'syslog', 'stderr' à¦
থবা 'auto' পà§à¦°à§à§à¦ à¦à¦°à§à¦¨à¥¤"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm দà§à¦¬à¦¾à¦°à¦¾ বà§à¦²à¦¿à§à¦¾à¦¨ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ পà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤"
@@ -774,77 +774,82 @@ msgstr "বà§à¦¯à¦¬à¦¹à¦¾à¦° পদà§à¦§à¦¤à¦¿: %s\n"
msgid "Load Once: %s\n"
msgstr "à¦à¦à¦¬à¦¾à¦° লà§à¦¡ à¦à¦°à¦¾ হবà§: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লঠà¦à¦¾à¦°à§à¦à§à¦ '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লà¦à§à¦° সà§à¦¤à¦° '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] রি-সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] à¦à¦ পà§à¦²à§à¦¯à¦¾à¦à¦«à¦°à§à¦®à§ rlimit সমরà§à¦¥à¦¿à¦¤ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§à¦²à§à¦° বিনà§à¦¯à¦¾à¦¸ '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§à¦²à§à¦° মাতà§à¦°à¦¾ '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] সà§à¦¯à¦¾à¦®à§à¦ªà§à¦²à§à¦° à¦à§à¦¯à¦¾à¦¨à§à¦² '%s' বà§à¦§ নà§"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] à¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] à¦
à¦à¦¶ সà¦à¦à§à¦¯à¦¾ '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] à¦
à¦à¦¶à§à¦° মাপ '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à¦° '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "à¦à¦¨à¦«à¦¿à¦à¦¾à¦°à§à¦¶à¦¨ ফাà¦à¦² à¦à§à¦²à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1100,8 +1105,8 @@ msgid "Top Rear Right"
msgstr "à¦à¦ªà¦°à§ পিà¦à¦¨à§ ডানদিà¦à§"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(à¦
বà§à¦§)"
@@ -1286,177 +1291,172 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "à¦
à¦à¦¾à¦¨à¦¾ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨ '%s'-র à¦à¦¨à§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§"
-#: ../src/utils/pacat.c:94
+# drain a stream = যà¦à¦¨ সà§à¦à§à¦°à¦¿à¦®à§à¦° মধà§à¦¯à§ à¦à¦ªà¦¸à§à¦¥à¦¿à¦¤ সà¦à¦² তথà§à¦¯ à¦à¦¹à¦°à¦£ à¦à¦°à¦¾ হৠঠসà§à¦à§à¦°à¦¿à¦®à¦à¦¿ সমà§à¦ªà§à¦°à§à¦£à¦°à§à¦ªà§ ফাà¦à¦à¦¾ হà§à§ যাà§à¥¤
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "সà§à¦à§à¦°à¦¿à¦® ডà§à¦°à§à¦à¦¨ (à¦
রà§à¦¥à¦¾à§ ফাà¦à¦à¦¾) à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "পà§à¦²à§-বà§à¦¯à¦¾à¦ সà§à¦à§à¦°à¦¿à¦® ফাà¦à¦à¦¾ à¦à¦°à¦¾ হà§à§à¦à§à¥¤\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "সারà§à¦à¦¾à¦°à§à¦° সাথৠসà§à¦¥à¦¾à¦ªà¦¿à¦¤ সà¦à¦¯à§à¦ ফাà¦à¦à¦¾ à¦à¦°à¦¾ হà¦à§à¦à§à¥¤\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "সাফলà§à¦¯à§à¦° সাথৠসà§à¦à§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হà§à§à¦à§à¥¤\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "বাফারà§à¦° মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "বাফারà§à¦° মাপ: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§à¦²à§à¦° spec '%s', ঠà¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾ হà¦à§à¦à§à¥¤\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ডিà¦à¦¾à¦à¦¸ %s-র সাথৠসà¦à¦¯à§à¦ à¦à¦°à¦¾ হà§à§à¦à§ (%u, %ssuspended)।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ষà§à¦à§à¦°à¦¿à¦® সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦à¦¿: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "সà§à¦à§à¦°à¦¿à¦® ডিà¦à¦¾à¦à¦¸ সà§à¦¥à¦à¦¿à¦¤ à¦à¦°à¦¾ হà§à§à¦à§à¥¤ %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "সà§à¦à§à¦°à¦¿à¦® ডিà¦à¦¾à¦à¦¸ পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤ %s \n"
# underrun = ধà§à¦° à¦à¦¤à¦¿à¦° সà§à¦à§à¦°à¦¿à¦®
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ধà§à¦° à¦à¦¤à¦¿à¦° সà§à¦à§à¦°à¦¿à¦®.%s \n"
# overrun=the stream fills up the allocated buffer space and there is no more space for it
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "সà§à¦à§à¦°à¦¿à¦® মাতà§à¦°à¦¾ à¦
তিà¦à§à¦°à¦® à¦à¦°à§à¦à§à¥¤%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "সà§à¦à§à¦°à¦¿à¦® à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤ %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "%s ডিà¦à¦¾à¦à¦¸à§ সà§à¦à§à¦°à¦¿à¦® সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° à¦à¦°à¦¾ হà§à§à¦à§ (%u, %ssuspended)।%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "না "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "সà§à¦à§à¦°à¦¿à¦® বাফারà§à¦° à¦
à§à¦¯à¦¾à¦à§à¦°à¦¿à¦¬à¦¿à¦à¦ পরিবরà§à¦¤à¦¿à¦¤ হà§à§à¦à§à¥¤ %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "সà¦à¦¯à§à¦ সà§à¦¥à¦¾à¦ªà¦¿à¦¤ হà§à§à¦à§à¥¤%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "সà¦à¦¯à§à¦ বিফল: %s\n"
-# drain a stream = যà¦à¦¨ সà§à¦à§à¦°à¦¿à¦®à§à¦° মধà§à¦¯à§ à¦à¦ªà¦¸à§à¦¥à¦¿à¦¤ সà¦à¦² তথà§à¦¯ à¦à¦¹à¦°à¦£ à¦à¦°à¦¾ হৠঠসà§à¦à§à¦°à¦¿à¦®à¦à¦¿ সমà§à¦ªà§à¦°à§à¦£à¦°à§à¦ªà§ ফাà¦à¦à¦¾ হà§à§ যাà§à¥¤
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "সà§à¦à§à¦°à¦¿à¦® ডà§à¦°à§à¦à¦¨ (à¦
রà§à¦¥à¦¾à§ ফাà¦à¦à¦¾) à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "পà§à¦²à§-বà§à¦¯à¦¾à¦ সà§à¦à§à¦°à¦¿à¦® ফাà¦à¦à¦¾ à¦à¦°à¦¾ হà§à§à¦à§à¥¤\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "সারà§à¦à¦¾à¦°à§à¦° সাথৠসà§à¦¥à¦¾à¦ªà¦¿à¦¤ সà¦à¦¯à§à¦ ফাà¦à¦à¦¾ à¦à¦°à¦¾ হà¦à§à¦à§à¥¤\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "ফাà¦à¦²à§à¦° সমাপà§à¦¤à¦¿ সনাà¦à§à¦¤ হà§à§à¦à§à¥¤ \n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "সিà¦à¦¨à§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ à¦à¦°à¦¾ হবà§à¥¤\n"
# latency here = delay (technical term
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "লà§à¦à§à¦¨à§à¦¸à¦¿à¦° পরিমাণ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "সমà§: %0.3f সà§à¦à§à¦¨à§à¦¡; লà§à¦à§à¦¨à§à¦¸à¦¿: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1482,8 +1482,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1506,6 +1508,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1553,7 +1560,7 @@ msgstr ""
" --process-time=BYTES বাà¦à¦ à¦
নà§à¦¯à¦¾à§à§, পà§à¦°à¦¤à¦¿à¦à¦¿ à¦
নà§à¦°à§à¦§à§à¦° à¦à¦¨à§à¦¯ "
"নিরà§à¦§à¦¾à¦°à¦¿à¦¤ পà§à¦°à¦¸à§à¦¸ সমৠà¦
নà§à¦°à§à¦§ à¦à¦¾à¦¨à¦¿à§à§ দিন।\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1564,88 +1571,133 @@ msgstr ""
"libpulse সহযà§à¦à§ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ হà§à§à¦à§ %s\n"
"libpulse-র সাথৠযà§à¦à§à¦¤ %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "à¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦§ নà§\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নà§à¥¤"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "à¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ª '%s' বà§à¦§ নà§\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "লà§à¦à§à¦¨à§à¦¸à¦¿à¦° à¦à¦¨à§à¦¯ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯ '%s' বà§à¦§ নà§\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "পà§à¦°à¦¸à§à¦¸à§à¦° সমà§à§à¦° বà§à¦¶à¦¿à¦·à§à¦à§à¦¯ '%s' বà§à¦§ নà§\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "রি-সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² পদà§à¦§à¦¤à¦¿ '%s' বà§à¦§ নà§à¥¤"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "à¦
বà§à¦§ সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² নিরà§à¦§à¦¾à¦°à¦¿à¦¤\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "à¦
তà§à¦¯à¦¾à¦§à¦¿à¦ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦à¥¤\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "শবà§à¦¦à§à¦° ফাà¦à¦² à¦à§à¦²à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "à¦à§à¦¯à¦¾à¦¨à§à¦²à§à¦° মà§à¦¯à¦¾à¦ª ঠসà§à¦¯à¦¾à¦®à§à¦ªà§à¦²à§à¦° মাপৠà¦à¦°à¦®à¦¿à¦²\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "à¦à¦à¦à¦¿ %s সà§à¦à§à¦°à¦¿à¦® '%s' সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² বà§à¦¶à¦¿à¦·à§à¦à§à¦¯ সহ à¦à§à¦²à¦¾ হà¦à§à¦à§à¥¤\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "রà§à¦à¦°à§à¦¡ à¦à¦°à¦¾ হà¦à§à¦à§"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "পà§à¦²à§-বà§à¦¯à¦¾à¦"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "à¦
তà§à¦¯à¦¾à¦§à¦¿à¦ à¦à¦°à§à¦à§à¦®à§à¦¨à§à¦à¥¤\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() বà§à¦¯à¦°à§à¦¥à¥¤\n"
@@ -1675,8 +1727,7 @@ msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "সতরà§à¦à¦¬à¦¾à¦°à§à¦¤à¦¾: শবà§à¦¦à§à¦° সারà§à¦à¦¾à¦°à¦à¦¿ সà§à¦¥à¦¾à¦¨à§à§ নৠঠসà§à¦¥à¦à¦¿à¦¤ à¦à¦°à¦¾ হà¦à§à¦à§ না।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§, পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ à¦à¦°à¦¾ হà§à§à¦à§à¥¤\n"
@@ -1705,7 +1756,7 @@ msgstr ""
"নাম\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1716,33 +1767,33 @@ msgstr ""
"libpulse সহযà§à¦à§ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ হà§à§à¦à§ %s\n"
"libpulse-র সাথৠযà§à¦à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "পরিসà¦à¦à§à¦¯à¦¾à¦¨: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "বরà§à¦¤à¦®à¦¾à¦¨à§ বà§à¦¯à¦¬à¦¹à§à¦¤: %u বà§à¦²à¦à§à¦° মধà§à¦¯à§ à¦à¦ªà¦¸à§à¦¥à¦¿à¦¤ সরà§à¦¬à¦®à§à¦ %s বাà¦à¦à¥¤\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"সমà§à¦ªà§à¦°à§à¦£ à¦à¦°à§à¦®à¦à¦¾à¦²à§à¦° à¦à¦¨à§à¦¯ বরাদà§à¦¦ à¦à¦°à¦¾ হà§à§à¦à§: %u বà§à¦²à¦à§à¦° মধà§à¦¯à§ à¦à¦ªà¦¸à§à¦¥à¦¿à¦¤ সরà§à¦¬à¦®à§à¦ %s বাà¦à¦à¥¤\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² à¦à§à¦¯à¦¾à¦¶à§à¦° মাপ: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "সারà§à¦à¦¾à¦° সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1765,12 +1816,12 @@ msgstr ""
"ডিফলà§à¦ সà§à¦°à§à¦¸: %s\n"
"à¦à§à¦à¦¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "সিà¦à¦ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1809,12 +1860,12 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "সà§à¦°à§à¦¸ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1853,20 +1904,20 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "মডিà¦à¦² সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1883,12 +1934,12 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à¦à§à¦²à¦¾à§à§à¦¨à§à¦ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1903,12 +1954,12 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à¦à¦¾à¦°à§à¦¡ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1925,22 +1976,22 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tপà§à¦°à§à¦«à¦¾à¦à¦²:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tসà¦à§à¦°à¦¿à§ পà§à¦°à§à¦«à¦¾à¦à¦²: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "সিà¦à¦ à¦à¦¨à¦ªà§à¦ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1977,12 +2028,12 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "সà§à¦°à§à¦¸ à¦à¦à¦à¦ªà§à¦ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2011,13 +2062,13 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
# Lazy = low quality sample
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2048,22 +2099,21 @@ msgstr ""
"\tবিবিধ বà§à¦¶à¦¿à¦·à§à¦à§à¦¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "বà§à¦¯à¦°à§à¦¥à¦¤à¦¾: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² à¦à¦ªà¦²à§à¦¡ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "সমà§à¦ªà§à¦°à§à¦£ হà¦à§à¦¾à¦° পà§à¦°à§à¦¬à§ ফাà¦à¦² সমাপà§à¦¤ হà§à§à¦à§\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2108,7 +2158,7 @@ msgstr ""
" -s, --server=SERVER সà¦à¦¯à§à¦ à¦à¦°à¦¾à¦° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ সারà§à¦à¦¾à¦°\n"
" -n, --client-name=NAME সারà§à¦à¦¾à¦°à§à¦° মধà§à¦¯à§ à¦à¦ à¦à§à¦²à¦¾à§à§à¦¨à§à¦à§à¦° পরিà¦à§\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2119,71 +2169,64 @@ msgstr ""
"libpulse সহযà§à¦à§ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ %s\n"
"libpulse-র সাথৠযà§à¦à§à¦¤ %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "লà§à¦¡ à¦à¦°à¦¾à¦° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦
নà§à¦à§à¦°à¦¹ à¦à¦°à§ à¦à¦à¦à¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² ফাà¦à¦² à¦à¦²à§à¦²à§à¦ à¦à¦°à§à¦¨\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "শবà§à¦¦à§à¦° ফাà¦à¦² à¦à§à¦²à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "à¦à¦à¦à¦¿ %s সà§à¦à§à¦°à¦¿à¦® '%s' সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² বà§à¦¶à¦¿à¦·à§à¦à§à¦¯ সহ à¦à§à¦²à¦¾ হà¦à§à¦à§à¥¤\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "বাà¦à¦¾à¦¨à§à¦° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦à¦à¦à¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² ফাà¦à¦² à¦à¦²à§à¦²à§à¦ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "à¦
পসারণà§à¦° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦à¦à¦à¦¿ সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² ফাà¦à¦² à¦à¦²à§à¦²à§à¦ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "সিà¦à¦ à¦à¦¨à¦ªà§à¦ à¦à¦¨à§à¦¡à§à¦à§à¦¸ ঠà¦à¦à¦à¦¿ সিà¦à¦ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "সà§à¦°à§à¦¸ à¦à¦à¦à¦ªà§à¦ à¦à¦¨à§à¦¡à§à¦à§à¦¸ ঠà¦à¦à¦à¦¿ সà§à¦°à§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "মডিà¦à¦²à§à¦° নাম ঠà¦à¦°à§à¦à§à¦®à§à¦¨à§à¦ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "মডিà¦à¦² à¦à¦¨à§à¦¡à§à¦à§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦à¦¾à¦§à¦¿à¦ সিà¦à¦ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ যাবৠনা। বà§à¦²à¦¿à§à§à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦à¥¤\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "à¦à¦à¦¾à¦§à¦¿à¦ সà§à¦°à§à¦¸ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ যাবৠনা। বà§à¦²à¦¿à§à§à¦¨ মান নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦à¥¤\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "à¦à¦¾à¦°à§à¦¡à§à¦° নাম/à¦à¦¨à§à¦¡à§à¦à§à¦¸ ঠà¦à¦à¦à¦¿ পà§à¦°à§à¦«à¦¾à¦à¦²à§à¦° নাম à¦à¦²à§à¦²à§à¦ à¦à¦°à¦¾ à¦à¦¬à¦¶à§à¦¯à¦\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "à¦à§à¦¨à§ à¦à¦®à¦¾à¦¨à§à¦¡ নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হà§à¦¨à¦¿à¥¤\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() বà§à¦¯à¦°à§à¦¥: %s"
@@ -2267,128 +2310,48 @@ msgstr "à¦à§à¦à¦¿ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ লà§à¦¡ à¦à¦°
msgid "Not yet implemented.\n"
msgstr "à¦à¦à¦¨à§ বাসà§à¦¤à¦¬à¦¾à§à¦¿à¦¤ হà§à¦¨à¦¿à¥¤\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডà§à¦®à¦¨ kill à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ডà§à¦®à¦¨ থà§à¦à§ à¦à§à¦¨à§ পà§à¦°à¦¤à¦¿à¦à§à¦°à¦¿à§à¦¾ পাà¦à§à¦¾ যাà¦à§à¦à§ না।"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "সাফলà§à¦¯à§à¦° সাথৠসà§à¦à§à¦°à¦¿à¦® নিরà§à¦®à¦¿à¦¤ হà§à§à¦à§\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "সà§à¦à§à¦°à¦¿à¦® সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তà§à¦°à§à¦à¦¿: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "সà¦à¦¯à§à¦ সà§à¦¥à¦¾à¦ªà¦¿à¦¤à¥¤\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help à¦à¦ সাহাযà§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ à¦à¦°à¦¾ হবà§\n"
-" --version সà¦à¦¸à§à¦à¦°à¦£ সà¦à¦à§à¦¯à¦¾ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ à¦à¦°à¦¾ হবà§\n"
-"\n"
-" -v, --verbose à¦à¦¾à¦°à§à¦¬à§à¦¸ à¦à¦°à§à¦® সà¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হবà§\n"
-"\n"
-" -s, --server=SERVER সà¦à¦¯à§à¦ à¦à¦°à¦¾à¦° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ সারà§à¦à¦¾à¦°à§à¦° "
-"নাম\n"
-" -d, --device=DEVICE সà¦à¦¯à§à¦ à¦à¦°à¦¾à¦° à¦à¦¦à§à¦¦à§à¦¶à§à¦¯à§ à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ সিà¦à¦à§à¦° "
-"নাম\n"
-" -n, --client-name=NAME সারà§à¦à¦¾à¦°à§à¦° মধà§à¦¯à§ à¦à¦ à¦à§à¦²à¦¾à§à§à¦¨à§à¦à§à¦° নাম\n"
-" --stream-name=NAME সারà§à¦à¦¾à¦°à§à¦° মধà§à¦¯à§ à¦à¦ সà§à¦à§à¦°à¦¿à¦®à§à¦° নাম\n"
-" --volume=VOLUME 0...65536 সà§à¦®à¦¾à¦° মধà§à¦¯à§ পà§à¦°à¦¾à¦°à¦®à§à¦à¦¿à¦ "
-"(লিনিà§à¦¾à¦°) à¦à¦à§à¦¾à¦ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à§à¦¨\n"
-" --channel-map=CHANNELMAP বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§à¦à§à¦¯ à¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ª নিরà§à¦§à¦¾à¦°à¦£\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse সহযà§à¦à§ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ হà§à§à¦à§ %s\n"
-"libpulse-র সাথৠযà§à¦à§à¦¤ %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "à¦
বà§à¦§ à¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ª\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ফাà¦à¦² '%s' à¦à§à¦²à¦¤à§ বà§à¦¯à¦°à§à¦¥\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "à¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ª ঠফাà¦à¦²à§ à¦à¦°à¦®à¦¿à¦²à¥¤\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "সà§à¦¯à¦¾à¦®à§à¦ªà§à¦² spec '%s' পà§à¦°à§à§à¦ à¦à¦°à¦¾ হà¦à§à¦à§\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn লঠপà§à¦°à§à§à¦ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2405,7 +2368,7 @@ msgstr ""
"POLLOUT set দà§à¦¬à¦¾à¦°à¦¾ à¦à§à¦¤à¦¾à¦¬à¦¨à§ সà§à¦·à§à¦à¦¿ হà§à§à¦à§ -- পরবরà§à¦¤à§ snd_pcm_avail() থà§à¦à§ 0 à¦
থবা < "
"min_avail-র থà§à¦à§ à¦à¦® à¦
নà§à¦¯ à¦à¦à¦à¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2422,34 +2385,101 @@ msgstr ""
"POLLIN set দà§à¦¬à¦¾à¦°à¦¾ à¦à§à¦¤à¦¾à¦¬à¦¨à§ সà§à¦·à§à¦à¦¿ হà§à§à¦à§ -- পরবরà§à¦¤à§ snd_pcm_avail() থà§à¦à§ 0 à¦
থবা < "
"min_avail-র থà§à¦à§ à¦à¦® à¦
নà§à¦¯ à¦à¦à¦à¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "à¦à¦à¦à¦ªà§à¦ %s + à¦à¦¨à¦ªà§à¦ %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "à¦à¦à¦à¦ªà§à¦ %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "à¦à¦¨à¦ªà§à¦ %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "হাà¦-ফিডà§à¦²à¦¿à¦à¦¿ পà§à¦²à§-বà§à¦¯à¦¾à¦ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à¦à§à¦²à¦¿à¦«à§à¦¨à¦¿ ডà§à¦ªà§à¦²à§ (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio শবà§à¦¦à§à¦° সারà§à¦à¦¾à¦°"
+
+#~ msgid "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 5a7fa15..0cfea47 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-03-18 21:47+0100\n"
"Last-Translator: Agustà Grau <fletxa at gmail.com>\n"
"Language-Team: Catalan <fedora at softcatala.net>\n"
@@ -27,51 +27,51 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Mono analògic"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Estèreo analògic"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Estèreo digital (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Estèreo digital (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Envolvent 4.0 analògic"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Envolvent 4.0 digital (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Envolvent 4.1 analògic"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Envolvent 5.0 analògic"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Envolvent 5.1 analògic"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Envolvent 5.1 digital (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Envolvent analògic 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -85,7 +85,7 @@ msgstr ""
"informeu d'aquest\n"
"incident als desenvolupadors d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -99,7 +99,7 @@ msgstr ""
"informeu d'aquest\n"
"incident als desenvolupadors d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -113,12 +113,12 @@ msgstr ""
"informeu d'aquest\n"
"incident als desenvolupadors d'ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
#, fuzzy
msgid "Internal Audio"
msgstr "S'ha produït un error intern"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr ""
@@ -188,107 +188,107 @@ msgstr "No s'ha pogut obtenir autorització: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ha respós '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "S'ha obtingut la senyal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "S'està sortint."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "S'ha produït un error en trobar l'usuari '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "S'ha produït un error en trobar el grup '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "S'han trobat l'usuari '%s' (UID %lu) i el grup '%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "El GID de l'usuari '%s' i del grup '%s' no coincideixen"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "El directori arrel de l'usuari '%s' no és '%s', s'ignorarà ."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "S'ha produït un error durant la creació '%s': %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "S'ha produït un error en canviar la llista del grup :%s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "S'ha produït un error en canviar la GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "S'ha produït un error en canviar la UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "S'han lliberat els permissos de root amb éxit."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "El mode de sistema ampli no està suportat en aquesta plataforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "S'ha produït un error en setrlimit(%s, (%u, %u)): %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "S'ha produït un error en interpretar la lÃnia de comandes."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Aquesta aplicació està en el grup '%s', s'està establint la prioritat en "
"temps real."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ha permés el privilegi acquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ha rebutjat el privilegi acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit h permés el privilegi acquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ha rebutjat el privilegi acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -309,48 +309,48 @@ msgstr ""
"incrementar els lÃmits de recursos de RLIMIT_NICE/RLIMIT_RTPRIO per a aquest "
"usuari."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La prioritat alta està habilitada en la configuració però no està permesa "
"per la polÃtica."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit."
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "S'abandona CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La prioritat de temps real està habilitada en la configuració però no està "
"permesa per la polÃtica."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "El dimoni no s'està executant"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "El dimoni s'està executant amb PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "S'ha produït un error en matar el dimoni: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -358,165 +358,165 @@ msgstr ""
"No és necessari executar aquesta aplicació com a root (excepte si "
"s'especifica --system)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Es requereixen privilegis de root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "La opció --start no està suportada per a instà ncies de sistema."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-exit."
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-module-loading."
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"S'està executant en mode sistema, es deshabilitarà el mode SHM forçosament."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"S'està executant en mode sistema, la sortida per temps d'inactivitat es "
"deshabilita."
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "S'ha produït un error en adquirir stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Ha fallat la canonada: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Ha fallat fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Ha fallat read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "S'ha produït un error en iniciar el dimoni."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "S'ha iniciat el dimoni."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Aquest és el PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilació: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilació: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "S'està executant en el host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "S'han trobat %u CPU's"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "La mida de pà gina és de %lu bytes."
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilat amb suport per a Valgrind: sÃ"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilat amb suport per a Valgrind: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "S'està executant amb el mode valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Construcció optimitzada: sÃ"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Construcció optmitzada: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "S'ha produït un error en obtenir l'ID de la mà quina"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la mà quina és %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID de la mà quina és %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "S'està utilitzant el directori d'execució %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Estan disponibles els temporitzadors frescos de alta resolució."
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -524,31 +524,31 @@ msgstr ""
"Es recomana la utilització d'un nucli amb els temporitzadors d'alta "
"resolució habilitats."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Com el dimoni s'ha iniciat sense cap mòdul carregat, no funciona."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -704,15 +704,15 @@ msgstr ""
" -n No carreguis el fitxer de "
"configuració per omissió\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize necessita un argument booleà "
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail necessita un argument booleà "
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -720,52 +720,52 @@ msgstr ""
"--log-level necessita un argument de nivell de log (valor númeric 0..4 o "
"debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority necessita un argument booleà "
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime necessita un argument booleà "
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading necessita un argument booleà "
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit necessita d'un argument booleà "
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file necessita un argument booleà "
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Objectiu de log invà lid: utilitzeu 'syslog', 'stderr' o 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--logtime necessita un argument booleà "
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta necessita un argument booleà "
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Mètode de remostratge invà lid '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system necessita un argument booleà "
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit necessita un argument booleà "
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm necessita un argument booleà "
@@ -804,77 +804,82 @@ msgstr "Utilització: %s\n"
msgid "Load Once: %s\n"
msgstr "CÃ rrega: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destà de registre incorrecte '%s'"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivell de registre incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit no disponible en aquesta plataforma."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format de mostra incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Velocitat de mostreig '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canals incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1129,8 +1134,8 @@ msgid "Top Rear Right"
msgstr "Superior posterior dreta"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(incorrecte)"
@@ -1315,175 +1320,170 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "S'ha rebut un missatge per a l'extensió desconeguda '%s'"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "S'ha produït un error en drenar el fluxe: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Stream de reproducció drenat.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "S'està drenant la connexió amb el servidor.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Ha fallat pa_stream_write(): %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Ha fallat pa_stream_peek(): %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Flux creat correctament.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "Ha fallat pa_stream_get_buffer_attr(): %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Mètriques del búffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Mètriques del búffer: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
"S'estan utilitzant les especificacions de mostreig '%s', mapejat del canal '%"
"s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "S'ha connectat al dispositiu %s (%u, %s suspés).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "S'ha produït un error en l'stream: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Flux del dispositiu suspés.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Flux del dispositiu représ.%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Dades insuficients al flux .%s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Desbordament de flux.%s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "S'ha iniciat el flux.%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "S'ha mogut el flux al dispositiu %s (%u, %s suspés).%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, fuzzy, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Dades insuficients al flux .%s\n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "S'ha establert la connexió.%s\n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Ha fallat pa_stream_new(): %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ha fallat la connexió: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "S'ha produït un error en drenar el fluxe: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Stream de reproducció drenat.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "S'està drenant la connexió amb el servidor.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "S'ha llegit EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "Ha fallat read(): %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "Ha fallat write(): %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "S'ha rebut un senyal, s'està sortint.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Ha fallat en obtenir la latència: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Temps: %0.3f segs; Latència: %0.0f microsegs.\r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Ha fallat pa_stream_update_timing_info(): %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1509,8 +1509,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1533,6 +1535,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opcions]\n"
"\n"
@@ -1582,7 +1589,7 @@ msgstr ""
" --process-time=BYTES Especifica el temps de procés per "
"petició en bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1593,88 +1600,133 @@ msgstr ""
"Compil·lat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mapa de canals invà lid '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Mètode de remostratge invà lid '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canals invà lid '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificació de latència invà lida '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificació de temps de procés invà lida '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Mètode de remostratge invà lid '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Especificació de mostra invà lida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Hi han massa arguments.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Ha fallat en obtenir informació de la mostra: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ha fallat en obrir el fitxer de so.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Ha fallat en obtenir informació de la mostra: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "El mapa de canals no coincideix amb l'especificació de mostra\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "S'està obrint un flux %s amb especificació de mostra '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "enregistrant"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "reproducció"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Hi han massa arguments.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Ha fallat pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "Ha fallat io_new().\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Ha fallat pa_context_new().\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "Ha fallat pa_context_connect(): %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "Ha fallat time_new().\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Ha fallat pa_mainloop_run().\n"
@@ -1704,8 +1756,7 @@ msgstr "Ha fallat en reprendre: %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:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "S'ha rebut SIGINT, s'està sortint.\n"
@@ -1734,7 +1785,7 @@ msgstr ""
"se\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1745,33 +1796,33 @@ msgstr ""
"Compil·lat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Ha fallat en obtenir les estadÃstiques: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Actualment s'estan utilitzant: %u blocs contenent %s bytes en total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Allotjats durant el temps de vida: %u blocs contenent %s bytes en total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Mida de memòria cau de mostra: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Ha fallat en obtenir la informació del servidor: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1794,12 +1845,12 @@ msgstr ""
"Font per omissió: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Ha fallat en obtenir la informació del conducte: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1838,12 +1889,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Ha fallat en obtenir la informació de la font: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1882,20 +1933,20 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Ha fallat en obtenir informació del mòdul: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1912,12 +1963,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Ha fallat en obtenir informació: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1932,12 +1983,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Ha fallat en obtenir la informació de la targeta: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1954,22 +2005,22 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPerfils:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tPerfil actiu: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Ha fallat en obtenir informació del conducte d'entrada: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2006,12 +2057,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Ha fallat en obtenir la informació del conducte de sortida: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2040,12 +2091,12 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Ha fallat en obtenir informació de la mostra: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2076,22 +2127,21 @@ msgstr ""
"\tPropietats:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Ha fallat: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Ha fallat en pujar la mostra: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "S'ha trobat un fi de fitxer prematurament\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2138,7 +2188,7 @@ msgstr ""
" -n, --client-name=NOM Com cridar aquest client al "
"servidor\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2149,48 +2199,44 @@ msgstr ""
"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Especifiqueu un fitxer de mostra per a carregar\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Ha fallat en obrir el fitxer de so.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, 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:912
msgid "You have to specify a sample name to play\n"
msgstr "Heu d'especificar un nom de mostra a reproduir\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Heu d'especificar un nom de mostra a esborrar\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Heu d'especificar una entrada del conducte i un conducte\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Heu d'especificar una font de sortida i una font\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Heu d'especificar un nom de mòdul i els seus arguments.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Heu d'especificar un Ãndex de mòdul\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2198,25 +2244,22 @@ msgstr ""
"No harÃeu d'especificar més d'un conducte. Heu d'especifcar un valor "
"booleà .\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"No harÃeu d'especificar més d'una font. Heu d'especificar un valor booleà .\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Heu d'especificar un nom o un Ãndex de targeta i un nom de perfil\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "S'ha especificat una ordre invà lida.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Ha fallat pa_context_connect(): %s"
@@ -2302,154 +2345,48 @@ msgstr "Ha fallat en carregar les dades de la cookie\n"
msgid "Not yet implemented.\n"
msgstr "No s'ha implementat encara.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Ha fallat en matar el dimoni PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "El dimoni no respon."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Flux creat amb èxit\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "S'ha produït un error en el flux: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "S'ha establert la connexió.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [opcions] [FITXER]\n"
-"\n"
-" -h, --help Mostra aquesta ajuda\n"
-" --version Mostra la versió\n"
-"\n"
-" -v, --verbose Habilita les operacions detallades\n"
-"\n"
-" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
-"se\n"
-" -d, --device=DISPOSITIU Nom del conducte/font al qual "
-"connectar-se\n"
-" -n, --client-name=NOM Com cridar aquest client al "
-"servidor\n"
-" --stream-name=NOM Com cridar aquest flux al servidor\n"
-" --volume=VOLUM Especifica el volum inicial lineal "
-"dins el rang 0...65536\n"
-" --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz (per "
-"omissió, 44100)\n"
-" --format=FORMATMOSTRA El tipus de mostra, una de s16le, "
-"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(per omissió, s16ne)\n"
-" --channels=CANALS Número de canals, 1 per a mono, 2 "
-"per a estèreo\n"
-" (per omissió, 2)\n"
-" --channel-map=MAPACANAL Mapa de canals a utilitzar\n"
-" --fix-format Pren el format de mostra del "
-"conducte al qual s'està connectant\n"
-" el flux.\n"
-" --fix-rate Pren la velocitat de mostreig del "
-"conducte al qual\n"
-" s'està connectant el flux.\n"
-" --fix-channels Pren el número de canals i el mapa "
-"de canals del\n"
-" conducte al qual s'està connectant "
-"el flux.\n"
-" --no-remix No mesclar els canals.\n"
-" --no-remap Mapeja els canals per Ãndex enlloc "
-"de per nom .\n"
-" --latency=BYTES Especifica la latència en bytes.\n"
-" --process-time=BYTES Especifica el temps de procés per "
-"petició en bytes.\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compil·lat amb libpulse %s\n"
-"Enllaçat amb libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mapa de canals invà lid\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Ha fallat en obrir el fitxer '%s'\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "El mapa de canals no coincideix amb el fitxer.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "S'estan utilitzant les especificacions de mostra '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "No s'ha pogut accedir al bloqueig d'autospawn."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2460,7 +2397,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2471,39 +2408,134 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
#, fuzzy
msgid "PulseAudio Sound Server"
msgstr "Sistema de so PulseAudio"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Flux creat amb èxit\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "S'ha produït un error en el flux: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "S'ha establert la connexió.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [opcions] [FITXER]\n"
+#~ "\n"
+#~ " -h, --help Mostra aquesta ajuda\n"
+#~ " --version Mostra la versió\n"
+#~ "\n"
+#~ " -v, --verbose Habilita les operacions "
+#~ "detallades\n"
+#~ "\n"
+#~ " -s, --server=SERVIDOR Nom del servidor al qual "
+#~ "connectar-se\n"
+#~ " -d, --device=DISPOSITIU Nom del conducte/font al qual "
+#~ "connectar-se\n"
+#~ " -n, --client-name=NOM Com cridar aquest client al "
+#~ "servidor\n"
+#~ " --stream-name=NOM Com cridar aquest flux al "
+#~ "servidor\n"
+#~ " --volume=VOLUM Especifica el volum inicial "
+#~ "lineal dins el rang 0...65536\n"
+#~ " --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz "
+#~ "(per omissió, 44100)\n"
+#~ " --format=FORMATMOSTRA El tipus de mostra, una de s16le, "
+#~ "s16be, u8, float32le,\n"
+#~ " float32be, ulaw, alaw, s32le, "
+#~ "s32be (per omissió, s16ne)\n"
+#~ " --channels=CANALS Número de canals, 1 per a mono, 2 "
+#~ "per a estèreo\n"
+#~ " (per omissió, 2)\n"
+#~ " --channel-map=MAPACANAL Mapa de canals a utilitzar\n"
+#~ " --fix-format Pren el format de mostra del "
+#~ "conducte al qual s'està connectant\n"
+#~ " el flux.\n"
+#~ " --fix-rate Pren la velocitat de mostreig del "
+#~ "conducte al qual\n"
+#~ " s'està connectant el flux.\n"
+#~ " --fix-channels Pren el número de canals i el "
+#~ "mapa de canals del\n"
+#~ " conducte al qual s'està "
+#~ "connectant el flux.\n"
+#~ " --no-remix No mesclar els canals.\n"
+#~ " --no-remap Mapeja els canals per Ãndex "
+#~ "enlloc de per nom .\n"
+#~ " --latency=BYTES Especifica la latència en bytes.\n"
+#~ " --process-time=BYTES Especifica el temps de procés per "
+#~ "petició en bytes.\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compil·lat amb libpulse %s\n"
+#~ "Enllaçat amb libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mapa de canals invà lid\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Ha fallat en obrir el fitxer '%s'\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "El mapa de canals no coincideix amb el fitxer.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "S'estan utilitzant les especificacions de mostra '%s'\n"
+
#~ msgid ""
#~ "Called SUID root and real-time/high-priority scheduling was requested in "
#~ "the configuration. However, we lack the necessary priviliges:\n"
diff --git a/po/cs.po b/po/cs.po
index 59a583d..7d57523 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-05 08:27+0000\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-05-03 23:57+0200\n"
"Last-Translator: Petr Kovar <pknbe at volny.cz>\n"
"Language-Team: Czech <translation-team-cs at lists.sourceforge.net>\n"
@@ -17,51 +17,51 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../src/modules/alsa/alsa-util.c:530
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analogové mono"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analogové stereo"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digitálnà stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digitálnà stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analogový Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digitálnà Surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analogový Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analogový Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analogový Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digitálnà Surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analogový Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,11 +69,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
-"snd_pcm_avail() navrátil hodnotu, která je nezvykle vysoká: %lu bajtů "
-"(%lu ms).\n"
-"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". Nahlaste prosÃm tento problém vývojáÅům ALSA."
+"snd_pcm_avail() navrátil hodnotu, která je nezvykle vysoká: %lu bajtů (%lu "
+"ms).\n"
+"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosÃm tento problém vývojáÅům ALSA."
-#: ../src/modules/alsa/alsa-util.c:1649
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -81,11 +82,12 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
-"snd_pcm_delay() navrátil hodnotu, která je nezvykle vysoká: %li bajtů "
-"(%s%lu ms).\n"
-"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". Nahlaste prosÃm tento problém vývojáÅům ALSA."
+"snd_pcm_delay() navrátil hodnotu, která je nezvykle vysoká: %li bajtů (%s%lu "
+"ms).\n"
+"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosÃm tento problém vývojáÅům ALSA."
-#: ../src/modules/alsa/alsa-util.c:1695
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -93,15 +95,16 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
-"snd_pcm_mmap_begin() navrátil hodnotu, která je nezvykle vysoká: %lu bajtů "
-"(%lu ms).\n"
-"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". Nahlaste prosÃm tento problém vývojáÅům ALSA."
+"snd_pcm_mmap_begin() navrátil hodnotu, která je nezvykle vysoká: %lu bajtů (%"
+"lu ms).\n"
+"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosÃm tento problém vývojáÅům ALSA."
-#: ../src/pulsecore/sink.c:2061
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "VnitÅnà zvukový systém"
-#: ../src/pulsecore/sink.c:2067
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -171,104 +174,105 @@ msgstr "NezdaÅilo se zÃskat oprávnÄnÃ: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit odpovÄdÄl s \"%s\""
-#: ../src/daemon/main.c:137
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "ZÃskán signál %s."
-#: ../src/daemon/main.c:164
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "UkonÄovánÃ."
-#: ../src/daemon/main.c:182
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "NezdaÅilo se nalézt uživatele \"%s\"."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "NezdaÅilo se nalézt skupinu \"%s\"."
-#: ../src/daemon/main.c:191
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Nalezen uživatel \"%s\" (UID %lu) a skupina \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID uživatele \"%s\" a skupiny \"%s\" nesouhlasÃ."
-#: ../src/daemon/main.c:201
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Domovský adresáŠuživatele \"%s\" nenà \"%s\", bude ignorováno."
-#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "NezdaÅilo se vytvoÅit \"%s\": %s"
-#: ../src/daemon/main.c:216
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "NezdaÅilo se zmÄnit seznam skupin: %s"
-#: ../src/daemon/main.c:232
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "NezdaÅilo se zmÄnit GID: %s"
-#: ../src/daemon/main.c:248
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "NezdaÅilo se zmÄnit UID: %s"
-#: ../src/daemon/main.c:262
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "OprávnÄnà superuživatele úspÄÅ¡nÄ zruÅ¡ena."
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Režim celého systému nenà na této platformÄ podporován."
-#: ../src/daemon/main.c:288
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) selhalo: %s"
-#: ../src/daemon/main.c:462
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "NezdaÅila se analýza pÅÃkazového Åádku."
-#: ../src/daemon/main.c:486
+#: ../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Ä."
+msgstr ""
+"NacházÃme se ve skupinÄ \"%s\", což umožÅuje plánovánà o vysoké prioritÄ."
-#: ../src/daemon/main.c:493
+#: ../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:501
+#: ../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:504
+#: ../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:509
+#: ../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:512
+#: ../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:541
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -280,46 +284,54 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"Voláno SUID root a v nastavenà bylo požádáno o plánovánà v reálném Äase Äi o vysoké prioritÄ. Scházà nám ovÅ¡em potÅebná oprávnÄnÃ.\n"
-"Nejsme ve skupinÄ \"%s\", PolicyKit nám odmÃtá pÅidÄlit požadovaná oprávnÄnà a je nutné zvýšit omezenà zdroje RLIMIT_NICE/RLIMIT_RTPRIO.\n"
-"Plánovánà v reálném Äase Äi o vysoké prioritÄ zapnete zÃskánÃm pÅÃsluÅ¡ných oprávnÄnà PolicyKit, nebo tÃm, že se stanete Äleny \"%s\", nebo uživateli zvýšÃte omezenà zdroje RLIMIT_NICE/RLIMIT_RTPRIO."
-
-#: ../src/daemon/main.c:566
-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."
+"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:595
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "ÃspÄÅ¡nÄ zvýšeno RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:598
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO selhalo: %s"
-#: ../src/daemon/main.c:605
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Vzdávánà se CAP_NICE"
-#: ../src/daemon/main.c:612
-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: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:673
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Démon nebÄžÃ"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Démon bÄžà jako PID %u"
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zabità démona se nezdaÅilo: %s"
-#: ../src/daemon/main.c:703
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -327,153 +339,159 @@ msgstr ""
"Tento program nenà urÄen ke spuÅ¡tÄnà pod superuživatelem (nenÃ-li zadáno --"
"system)."
-#: ../src/daemon/main.c:705
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Jsou vyžadována oprávnÄnà superuživatele."
-#: ../src/daemon/main.c:710
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nepodporováno u systémových instancÃ."
-#: ../src/daemon/main.c:715
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "BÄžà v systémovém režimu, ale nenastaveno --disallow-exit!"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "BÄžà v systémovém režimu, ale nenastaveno --disallow-module-loading!"
-#: ../src/daemon/main.c:721
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "BÄžà v systémovém režimu, vynucenÄ se vypÃná režim SHM!"
-#: ../src/daemon/main.c:726
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "BÄžà v systémovém režimu, vynucenÄ se vypÃná Äas neÄinnosti ukonÄenÃ!"
-#: ../src/daemon/main.c:753
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "NezdaÅilo se zÃskánà stdio."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe selhalo: %s"
-#: ../src/daemon/main.c:764
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() selhalo: %s"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() selhalo: %s"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "SpuÅ¡tÄnà démona selhalo."
-#: ../src/daemon/main.c:786
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "SpuÅ¡tÄnà démona bylo úspÄÅ¡né."
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Toto je PulseAudio %s"
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "PÅekladový poÄÃtaÄ: %s"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "PÅekladové CFLAGS: %s"
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "BÄžà na poÄÃtaÄi: %s"
-#: ../src/daemon/main.c:864
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Nalezen následujÃcà poÄet CPU: %u."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Velikost stránky je %lu bajtů"
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "PÅeloženo s podporou Valgrind: ano"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "PÅeloženo s podporou Valgrind: ne"
-#: ../src/daemon/main.c:874
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "BÄžà v režimu valgrind: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimalizované sestavenÃ: ano"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimalizované sestavenÃ: ne"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definováno, všechny výrazy zakázány."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:904
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:887
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Všechny výrazy povoleny."
-#: ../src/daemon/main.c:891
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "NezdaÅilo se zÃskánà ID poÄÃtaÄe"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ID poÄÃtaÄe je %s."
-#: ../src/daemon/main.c:899
+#: ../src/daemon/main.c:917
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "ID poÄÃtaÄe je %s."
+
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "PoužÃván bÄhový adresáŠ%s."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "PoužÃván stavový adresáŠ%s."
-#: ../src/daemon/main.c:907
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "BÄžà v systémovém režimu: %s"
-#: ../src/daemon/main.c:922
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:956
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!"
+msgstr ""
+"Jsou dostupné výteÄné ÄasovaÄe o vysokém rozliÅ¡enÃ. Tak s chutà do toho!"
-#: ../src/daemon/main.c:936
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -481,31 +499,31 @@ 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:948
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:1010
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Selhalo spuÅ¡tÄnà démona."
-#: ../src/daemon/main.c:1015
+#: ../src/daemon/main.c:1050
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:1032
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "SpuÅ¡tÄnà démona dokonÄeno."
-#: ../src/daemon/main.c:1038
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "VypÃnánà démona spuÅ¡tÄno."
-#: ../src/daemon/main.c:1056
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Démon ukonÄen."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -585,42 +603,56 @@ msgstr ""
" --version Zobrazà verzi\n"
" --dump-conf VypÃÅ¡e výchozà nastavenÃ\n"
" --dump-modules VypÃÅ¡e seznam dostupných modulů\n"
-" --dump-resample-methods VypÃÅ¡e dostupné metody pÅevzorkovánÃ\n"
-" --cleanup-shm Vyprázdnà zastaralé Äásti sdÃlené pamÄti\n"
+" --dump-resample-methods VypÃÅ¡e dostupné metody "
+"pÅevzorkovánÃ\n"
+" --cleanup-shm Vyprázdnà zastaralé Äásti sdÃlené "
+"pamÄti\n"
" --start Spustà démona, pokud nebÄžÃ\n"
" -k --kill Zabije bÄžÃcÃho démona\n"
-" --check ZjistÃ, zda démon bÄžà (vracà pouze ukonÄovacà kód)\n"
+" --check ZjistÃ, zda démon bÄžà (vracà pouze "
+"ukonÄovacà kód)\n"
"\n"
"PÅEPÃNAÄE:\n"
" --system[=BOOLEOVSKÃ] PobÄžà jako celosystémová instance\n"
" -D, --daemonize[=BOOLEOVSKÃ] Stane se démonem po spuÅ¡tÄnÃ\n"
-" --fail[=BOOLEOVSKÃ] UkonÄà se v pÅÃpadÄ selhánà spuÅ¡tÄnÃ\n"
-" --high-priority[=BOOLEOVSKÃ] Pokusà se nastavit vysokou úroveÅ nice\n"
-" (dostupné pouze u superuživatele, v pÅÃpadÄ SUID "
-"nebo\n"
+" --fail[=BOOLEOVSKÃ] UkonÄà se v pÅÃpadÄ selhánà "
+"spuÅ¡tÄnÃ\n"
+" --high-priority[=BOOLEOVSKÃ] Pokusà se nastavit vysokou úroveÅ "
+"nice\n"
+" (dostupné pouze u superuživatele, v "
+"pÅÃpadÄ SUID nebo\n"
" se zvýšeným RLIMIT_NICE)\n"
-" --realtime[=BOOLEOVSKÃ] Pokusà se zapnout plánovánà v reálném Äase\n"
-" (dostupné pouze u superuživatele, v pÅÃpadÄ SUID "
-"nebo\n"
+" --realtime[=BOOLEOVSKÃ] Pokusà se zapnout plánovánà v "
+"reálném Äase\n"
+" (dostupné pouze u superuživatele, v "
+"pÅÃpadÄ SUID nebo\n"
" se zvýšeným RLIMIT_RTPRIO)\n"
-" --disallow-module-loading[=BOOLEOVSKÃ] Nepovolà nahránà Äi zruÅ¡enà nahránà modulu po spuÅ¡tÄnÃ\n"
+" --disallow-module-loading[=BOOLEOVSKÃ] Nepovolà nahránà Äi zruÅ¡enà "
+"nahránà modulu po spuÅ¡tÄnÃ\n"
" vyžádané uživatelem modulu\n"
-" --disallow-exit[=BOOLEOVSKÃ] Nepovolà ukonÄenà vyžádané uživatelem\n"
-" --exit-idle-time=SEKUNDY UkonÄà démona v pÅÃpadÄ neÄinnosti a po\n"
+" --disallow-exit[=BOOLEOVSKÃ] Nepovolà ukonÄenà vyžádané "
+"uživatelem\n"
+" --exit-idle-time=SEKUNDY UkonÄà démona v pÅÃpadÄ neÄinnosti a "
+"po\n"
" této dobÄ\n"
-" --module-idle-time=SEKUNDY ZruÅ¡Ã nahránà automaticky nahraných modulů v pÅÃpadÄ neÄinnosti\n"
+" --module-idle-time=SEKUNDY Zrušà nahránà automaticky nahraných "
+"modulů v pÅÃpadÄ neÄinnosti\n"
" a po této dobÄ\n"
-" --scache-idle-time=SEKUNDY ZruÅ¡Ã nahránà automaticky nahraných vzorků v pÅÃpadÄ neÄinnosti a\n"
+" --scache-idle-time=SEKUNDY Zrušà nahránà automaticky nahraných "
+"vzorků v pÅÃpadÄ neÄinnosti a\n"
" po této dobÄ\n"
-" --log-level[=ÃROVEÅ] Zvýšà nebo nastavà úroveÅ podrobnostÃ\n"
+" --log-level[=ÃROVEÅ] Zvýšà nebo nastavà úroveÅ "
+"podrobnostÃ\n"
" -v Zvýšà úroveÅ podrobnostÃ\n"
" --log-target={auto,syslog,stderr} UrÄà cÃl záznamů\n"
" --log-meta[=BOOLEOVSKÃ] Do záznamů zahrne umÃstÄnà kódu\n"
" --log-time[=BOOLEOVSKÃ] Do záznamů zahrne urÄenà Äasu\n"
" --log-backtrace=RÃMCE Do záznamů zahrne backtrace\n"
-" -p, --dl-search-path=CESTA Nastavà cestu hledánà z důvodu dynamického sdÃlenÃ\n"
+" -p, --dl-search-path=CESTA Nastavà cestu hledánà z důvodu "
+"dynamického sdÃlenÃ\n"
" objektů (zásuvných modulů)\n"
-" --resample-method=METODA Použije zadanou metodu pÅevzorkovánÃ\n"
+" --resample-method=METODA Použije zadanou metodu "
+"pÅevzorkovánÃ\n"
" (Možné hodnoty viz\n"
" --dump-resample-methods)\n"
" --use-pid-file[=BOOLEOVSKÃ] VytvoÅÃ soubor PID\n"
@@ -637,15 +669,15 @@ msgstr ""
"\n"
" -n Nenahraje výchozà soubor skriptu\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -653,52 +685,53 @@ msgstr ""
"--log-level pÅedpokládá argument protokolovacà úrovnÄ (buÄ ÄÃselný v rozmezà "
"0..4, nebo jeden z debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
-msgstr "Neplatný cÃl protokolu: použijte buÄto \"syslog\", \"stderr\" nebo \"auto\"."
+msgstr ""
+"Neplatný cÃl protokolu: použijte buÄto \"syslog\", \"stderr\" nebo \"auto\"."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Neplatná metoda pÅevzorkovánà \"%s\"."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit pÅedpokládá booleovský argument"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm pÅedpokládá booleovský argument"
@@ -737,81 +770,88 @@ msgstr "PoužitÃ: %s\n"
msgid "Load Once: %s\n"
msgstr "NaÄÃst jednou: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Cesta: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neplatný protokolovacà cÃl \"%s\"."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neplatná protokolovacà úroveŠ\"%s\"."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neplatná metoda pÅevzorkovánà \"%s\"."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neplatné rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit na této platformÄ nenà podporováno."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neplatný vzorkovacà formát \"%s\"."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neplatná vzorkovacà frekvence \"%s\"."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neplatné vzorkovacà kanály \"%s\"."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neplatná mapa kanálů \"%s\"."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neplatný poÄet fragmentů \"%s\"."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveŠnice \"%s\"."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "NezdaÅilo se otevÅÃt konfiguraÄnà soubor: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
-msgstr "Zadaná výchozà mapa kanálů obsahuje odliÅ¡ný poÄet kanálů než je zadaný výchozà poÄet kanálů."
+msgstr ""
+"Zadaná výchozà mapa kanálů obsahuje odliÅ¡ný poÄet kanálů než je zadaný "
+"výchozà poÄet kanálů."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -835,20 +875,27 @@ 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"
+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Ä."
+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."
+msgstr ""
+"Systémová pravidla znemožÅujà technologii PulseAudio zÃskat pÅÃstup k "
+"plánovánà v reálném Äase."
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
@@ -1055,8 +1102,8 @@ msgid "Top Rear Right"
msgstr "Hornà zadnà pravý"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(neplatné)"
@@ -1213,201 +1260,197 @@ msgstr "%u B"
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() selhalo"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Selhala analýza dat cookie"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Selhalo otevÅenà konfiguraÄnÃho souboru \"%s\": %s"
-#: ../src/pulse/context.c:539
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "Žádný soubor cookie nenahrán. Pokus o spojenà bez tohoto kroku."
-#: ../src/pulse/context.c:669
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:722
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1387
+#: ../src/pulse/context.c:1403
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "PÅijata zpráva pro neznámé rozÅ¡ÃÅenà \"%s\""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "NezdaÅilo se vyprázdnit proud: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Proud pÅehrávánà vyprázdnÄn.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "VyprazdÅovánà spojenà se serverem.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() selhalo: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() selhalo: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Proud úspÄÅ¡nÄ vytvoÅen.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() selhalo: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr "Metrika vyrovnávacà pamÄti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgstr ""
+"Metrika vyrovnávacà pamÄti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metrika vyrovnávacà pamÄti: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "PoužÃvána vzorkovacà specifikace \"%s\", mapa kanálů \"%s\".\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "PÅipojeno k zaÅÃzenà %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Chyba proudu: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Proudové zaÅÃzenà pozastaveno.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Proudové zaÅÃzenà obnoveno.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "PodbÄhnutà proudu.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "PÅebÄhnutà proudu.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Proud spuÅ¡tÄn.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Proud pÅesunut na zaÅÃzenà %s (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nikoliv "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ZmÄnÄny atributy vyrovnávacà pamÄti proudu.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Spojenà navázáno.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() selhalo: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() selhalo: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() selhalo: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Spojenà selhalo: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "NezdaÅilo se vyprázdnit proud: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Proud pÅehrávánà vyprázdnÄn.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "VyprazdÅovánà spojenà se serverem.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "ZÃskáno EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() selhalo: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() selhalo: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "ZÃskán signál, ukonÄovánÃ.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "NezdaÅilo se zÃskat latenci: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Äas: %0.3f sekund; latence: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() selhalo: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1433,8 +1476,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1457,6 +1502,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [pÅepÃnaÄe]\n"
"\n"
@@ -1466,36 +1516,44 @@ msgstr ""
" -r, --record VytvoÅà spojenà z důvodu nahrávánÃ\n"
" -p, --playback VytvoÅà spojenà z důvodu pÅehrávánÃ\n"
"\n"
-" -v, --verbose Zapne nakládánà s úrovnà podrobnostÃ\n"
+" -v, --verbose Zapne nakládánàs úrovnà "
+"podrobnostÃ\n"
"\n"
" -s, --server=SERVER Název pÅipojovaného serveru\n"
" -d, --device=ZAÅÃZENà Název pÅipojovaného cÃle Äi zdroje\n"
-" -n, --client-name=NÃZEV Způsob volánà tohoto klienta na serveru\n"
-" --stream-name=NÃZEV Způsob volánà tohoto proudu na serveru\n"
+" -n, --client-name=NÃZEV Způsob volánà tohoto klienta na "
+"serveru\n"
+" --stream-name=NÃZEV Způsob volánà tohoto proudu na "
+"serveru\n"
" --volume=HLASITOST UrÄà poÄáteÄnà (lineárnÃ) hlasitost "
"v rozmezà 0...65536\n"
-" --rate=VZORKOVACÃFREKVENCE Vzorkovacà frekvence v Hz (výchozà je "
-"44100)\n"
-" --format=FORMÃTVZORKU Typ vzorku, jeden z s16le, "
-"s16be, u8, float32le,\n"
+" --rate=VZORKOVACÃFREKVENCE Vzorkovacà frekvence v Hz (výchozà "
+"je 44100)\n"
+" --format=FORMÃTVZORKU Typ vzorku, jeden z s16le, s16be, "
+"u8, float32le,\n"
" float32be, ulaw, alaw, s32le, s32be "
"(výchozà je s16ne)\n"
-" --channels=KANÃLY PoÄet kanálů, u mono 1, "
-"u sterea 2\n"
+" --channels=KANÃLY PoÄet kanálů, u mono 1, u sterea 2\n"
" (výchozà je 2)\n"
-" --channel-map=MAPAKANÃLÅ® Mapa kanálů urÄená k použità namÃsto výchozÃ\n"
-" --fix-format ZÃská formát vzorku z cÃle, ke kterému se\n"
+" --channel-map=MAPAKANÃLÅ® Mapa kanálů urÄená k použità namÃsto "
+"výchozÃ\n"
+" --fix-format ZÃská formát vzorku z cÃle, ke "
+"kterému se\n"
" pÅipojuje proud.\n"
-" --fix-rate ZÃská vzorkovacà frekvenci z cÃle, ke kterému se\n"
+" --fix-rate ZÃská vzorkovacà frekvenci z cÃle, "
+"ke kterému se\n"
" pÅipojuje proud.\n"
-" --fix-channels ZÃská poÄet kanálů a mapu kanálů z cÃle, ke kterému se\n"
+" --fix-channels ZÃská poÄet kanálů a mapu kanálů z "
+"cÃle, ke kterému se\n"
" pÅipojuje proud.\n"
" --no-remix NesmÄÅ¡uje kanály.\n"
-" --no-remap Mapuje kanály dle indexu namÃsto názvu.\n"
+" --no-remap Mapuje kanály dle indexu namÃsto "
+"názvu.\n"
" --latency=BAJTY Vyžádá urÄenou latenci v bajtech.\n"
-" --process-time=BAJTY Vyžádá urÄený Äas zpracovánà na požadavek v bajtech.\n"
+" --process-time=BAJTY Vyžádá urÄený Äas zpracovánà na "
+"požadavek v bajtech.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1506,89 +1564,133 @@ msgstr ""
"PÅeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Neplatná mapa kanálů \"%s\"\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Neplatná metoda pÅevzorkovánà \"%s\"."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Neplatná mapa kanálů \"%s\"\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Neplatné upÅesnÄnà latence \"%s\"\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Neplatné upÅesnÄnà Äasu zpracovánà \"%s\"\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Neplatná metoda pÅevzorkovánà \"%s\"."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Neplatné upÅesnÄnà vzorkovánÃ\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "PÅÃliÅ¡ mnoho argumentů.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Selhalo zÃskánà informace o vzorku: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Selhalo otevÅenà zvukového souboru.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Selhalo zÃskánà informace o vzorku: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Mapa kanálů se neshoduje s upÅesnÄnÃm vzorkovánÃ\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "OtevÃránà proudu %s s upÅesnÄnÃm vzorkovánà \"%s\".\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "nahrávánÃ"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "pÅehrávánÃ"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "PÅÃliÅ¡ mnoho argumentů.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() selhalo.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() selhalo.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() selhalo.\n"
-#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
-#: ../src/utils/paplay.c:404
-#, c-format
-msgid "pa_context_connect() failed: %s"
+#: ../src/utils/pacat.c:1066
+#, fuzzy, c-format
+msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() selhalo: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() selhalo.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() selhalo.\n"
@@ -1618,8 +1720,7 @@ msgstr "NezdaÅilo se obnovenÃ: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "VAROVÃNÃ: Zvukový server nenà mÃstnÃ, nedojde k pozastavenÃ.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "ZÃskáno SIGINT, ukonÄovánÃ.\n"
@@ -1647,7 +1748,7 @@ msgstr ""
" -s, --server=SERVER Název pÅipojovaného serveru\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1658,32 +1759,32 @@ msgstr ""
"PÅeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Selhalo zÃskánà statistik: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "PrávÄ použÃváno: %u bloků obsahujÃcÃch celkem %s bajtů.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Alokováno bÄhem celého bÄhu: %u bloků obsahujÃcÃch celkem %s bajtů.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Velikost vzorkovacà vyrovnávacà pamÄti: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "NezdaÅilo se zÃskánà informacà o serveru: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1706,12 +1807,12 @@ msgstr ""
"Výchozà zdroj: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "NezdaÅilo se zÃskánà informacà o cÃli: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1750,12 +1851,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "NezdaÅilo se zÃskánà informacà o zdroji: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1794,20 +1895,20 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "nic"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Selhalo zÃskánà informacà o modulu: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1824,12 +1925,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Selhalo zÃskánà informacà o klientu: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1844,12 +1945,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Selhalo zÃskánà informacà o kartÄ: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1866,22 +1967,22 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfily:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktivnà profil: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "NezdaÅilo se zÃskánà cÃlových vstupnÃch informacÃ: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1918,12 +2019,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Selhalo zÃskánà informace o výstupu zdroje: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1952,12 +2053,12 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Selhalo zÃskánà informace o vzorku: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -1988,22 +2089,21 @@ msgstr ""
"\tVlastnosti:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "SelhánÃ: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Selhalo nahránà vzorku: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "PÅedÄasný konec souboru\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2046,9 +2146,10 @@ msgstr ""
" --version Zobrazà verzi\n"
"\n"
" -s, --server=SERVER Název pÅipojovaného serveru\n"
-" -n, --client-name=NÃZEV Způsob volánà tohoto klienta na serveru\n"
+" -n, --client-name=NÃZEV Způsob volánà tohoto klienta na "
+"serveru\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2059,70 +2160,69 @@ msgstr ""
"PÅeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
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:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Selhalo otevÅenà zvukového souboru.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, 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:912
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:911
-#, c-format
+#: ../src/utils/pactl.c:924
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:919
-#, c-format
+#: ../src/utils/pactl.c:933
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:928
-#, c-format
+#: ../src/utils/pactl.c:943
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:942
-#, c-format
+#: ../src/utils/pactl.c:958
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:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Je nutné zadat index modulu\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
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"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
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"
+msgstr ""
+"Nelze zadat vÃce než jeden zdroj. Je nutné zadat booleovskou hodnotu.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
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:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Nezadán žádný platný pÅÃkaz.\n"
+#: ../src/utils/pactl.c:1051
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() selhalo: %s"
+
#: ../src/utils/pax11publish.c:61
#, c-format
msgid ""
@@ -2138,7 +2238,8 @@ msgstr ""
"\n"
" -d Zobrazà aktuálnà data PulseAudio pÅiÅazená k displeji X11 (výchozÃ)\n"
" -e Exportuje mÃstnà data PulseAudio na displej X11\n"
-" -i Importuje data PulseAudio z displeje X11 mezi mÃstnà promÄnné prostÅedà a soubor cookie.\n"
+" -i Importuje data PulseAudio z displeje X11 mezi mÃstnà promÄnné "
+"prostÅedà a soubor cookie.\n"
" -r Odstranà data PulseAudio z displeje X11\n"
#: ../src/utils/pax11publish.c:94
@@ -2201,126 +2302,48 @@ msgstr "NezdaÅilo se nahrát data cookie\n"
msgid "Not yet implemented.\n"
msgstr "Doposud neimplementováno.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "NezdaÅilo se zabÃt démona PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Démon neodpovÃdá."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Proud úspÄÅ¡nÄ vytvoÅen\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Chyba proudu: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Spojenà navázáno.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [pÅepÃnaÄe] [SOUBOR]\n"
-"\n"
-" -h, --help Zobrazà tuto nápovÄdu\n"
-" --version Zobrazà verzi\n"
-"\n"
-" -v, --verbose Zapne nakládánà s úrovnà podrobnostÃ\n"
-"\n"
-" -s, --server=SERVER Název pÅipojovaného serveru\n"
-" -d, --device=ZAÅÃZENà Název pÅipojovaného cÃle\n"
-" -n, --client-name=NÃZEV Způsob volánà tohoto klienta na serveru\n"
-" --stream-name=NÃZEV Způsob volánà tohoto proudu na serveru\n"
-" --volume=HLASITOST UrÄà poÄáteÄnà (lineárnÃ) hlasitost "
-"v rozmezà 0...65536\n"
-" --channel-map=MAPAKANÃLÅ® Nastavà mapu kanálů urÄenou k použitÃ\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"PÅeloženo s libpulse %s\n"
-"Propojeno s libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Neplatná mapa kanálů\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Selhalo otevÅenà souboru \"%s\"\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Mapa kanálů neodpovÃdá souboru.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "PoužÃvá se vzorkovacà specifikace \"%s\"\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Nelze pÅistoupit k zámku automatického spouÅ¡tÄnÃ."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:535
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2330,13 +2353,14 @@ msgid ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
msgstr ""
-"ALSA nás probudila z důvodu zápisu nových dat na zaÅÃzenÃ, ale ve skuteÄnosti "
-"nebylo co zapisovat.\n"
-"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". Nahlaste prosÃm tento problém vývojáÅům ALSA.\n"
-"Probudilo nás nastavenà POLLOUT - nicménÄ následné snd_pcm_avail() "
-"vrátilo 0 Äi jinou hodnotu < min_avail."
+"ALSA nás probudila z důvodu zápisu nových dat na zaÅÃzenÃ, ale ve "
+"skuteÄnosti nebylo co zapisovat.\n"
+"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosÃm tento problém vývojáÅům ALSA.\n"
+"Probudilo nás nastavenà POLLOUT - nicménÄ následné snd_pcm_avail() vrátilo 0 "
+"Äi jinou hodnotu < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:510
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2348,39 +2372,108 @@ msgid ""
msgstr ""
"ALSA nás probudila z důvodu Ätenà nových dat ze zaÅÃzenÃ, ale ve skuteÄnosti "
"nebylo co ÄÃst.\n"
-"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". Nahlaste prosÃm tento problém vývojáÅům ALSA.\n"
-"Probudilo nás nastavenà POLLIN - nicménÄ následné snd_pcm_avail() "
-"vrátilo 0 Äi jinou hodnotu < min_avail."
+"S nejvÄtÅ¡Ã pravdÄpodobnostà se jedná o chybu v ovladaÄi ALSA \"%s\". "
+"Nahlaste prosÃm tento problém vývojáÅům ALSA.\n"
+"Probudilo nás nastavenà POLLIN - nicménÄ následné snd_pcm_avail() vrátilo 0 "
+"Äi jinou hodnotu < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Výstup %s + vstup %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Výstup %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Vstup %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1864
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Vypnuto"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1834
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "PÅehrávánà s velmi vÄrnou reprodukcà (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1849
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplexnà telefonie (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:125
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Zvukový server PulseAudio"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Proud úspÄÅ¡nÄ vytvoÅen\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Chyba proudu: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Spojenà navázáno.\n"
+
+#~ msgid ""
+#~ "%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 [pÅepÃnaÄe] [SOUBOR]\n"
+#~ "\n"
+#~ " -h, --help Zobrazà tuto nápovÄdu\n"
+#~ " --version Zobrazà verzi\n"
+#~ "\n"
+#~ " -v, --verbose Zapne nakládánàs úrovnà "
+#~ "podrobnostÃ\n"
+#~ "\n"
+#~ " -s, --server=SERVER Název pÅipojovaného serveru\n"
+#~ " -d, --device=ZAÅÃZENà Název pÅipojovaného cÃle\n"
+#~ " -n, --client-name=NÃZEV Způsob volánà tohoto klienta na "
+#~ "serveru\n"
+#~ " --stream-name=NÃZEV Způsob volánà tohoto proudu na "
+#~ "serveru\n"
+#~ " --volume=HLASITOST UrÄà poÄáteÄnà (lineárnÃ) "
+#~ "hlasitost v rozmezà 0...65536\n"
+#~ " --channel-map=MAPAKANÃLÅ® Nastavà mapu kanálů urÄenou k "
+#~ "použitÃ\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "PÅeloženo s libpulse %s\n"
+#~ "Propojeno s libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Neplatná mapa kanálů\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Selhalo otevÅenà souboru \"%s\"\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Mapa kanálů neodpovÃdá souboru.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "PoužÃvá se vzorkovacà specifikace \"%s\"\n"
diff --git a/po/de.po b/po/de.po
index 222fe78..698c537 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-18 12:43+0100\n"
"Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de at redhat.com>\n"
@@ -19,51 +19,51 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analog Mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analog Stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digital Stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digital Stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analog Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digital Surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analog Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analog Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analog Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digital Surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analog Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -76,7 +76,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -89,7 +89,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -102,11 +102,11 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -176,107 +176,107 @@ msgstr "Keine Authorisierung erhalten: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit antwortete mit '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität "
"ermöglicht."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Richtlinien gewähren das Recht aquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Richtlinien verweigern das Recht acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, fuzzy, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -292,44 +292,44 @@ msgstr ""
"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Verwerfe CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -337,191 +337,191 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "System-Modus aktiv, jedoch --disallow-module-loading nicht gesetzt!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "SeitengröÃe ist %lu Bytes."
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
#, fuzzy
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
#, fuzzy
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
#, fuzzy
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Daemon beendet."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -660,15 +660,15 @@ msgstr ""
"\n"
" -n Standardskript nicht laden\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "Option --daemonize erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "Option --fail erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -676,53 +676,53 @@ msgstr ""
"--log-level erfordert Wert für Grad der Protokollierung (entweder numerisch "
"im Bereich 0..4 or einen dieser: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "Option --high-priority erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "Option --realtime erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "Option --disallow-module-loading erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "Option --use-pid-file erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Ungültiges Log-Ziel: Benutzen Sie entweder 'syslog', 'stderr' oder 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--realtime erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta erfordert boolschen Wert"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Ungültige Resample-Methode '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--System erwartet Boolean-Argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "Option --no-cpu-limit erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "Option --disable-shm erfordert bool'schen Wert"
@@ -761,77 +761,82 @@ msgstr "Verwendung: %s\n"
msgid "Load Once: %s\n"
msgstr "Lade einmalig: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige FragmentgröÃe '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
#, fuzzy
msgid ""
"The specified default channel map has a different number of channels than "
@@ -1091,8 +1096,8 @@ msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(ungültig)"
@@ -1277,173 +1282,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Wiedergabe-Stream entleert.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Draining connection to server.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Stream wurde erfolgreich erstellt.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Stream-Fehler: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Stream-Gerät ausgesetzt.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Stream-Gerät reaktiviert.%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Stream unterlaufen.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Stream überlief.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Stream gestartet: %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nicht "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Verbindung hergestellt.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Verbindungsfehler: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Wiedergabe-Stream entleert.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Draining connection to server.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF empfangen.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Signal empfangen, beende.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Erhalten der Latenz fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1469,8 +1469,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1493,6 +1495,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1534,7 +1541,7 @@ msgstr ""
" --process-time=BYTES Diese Prozesszeit pro Anfrage "
"verwenden.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1545,88 +1552,133 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Ungültige Kanal-Zuweisung '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Ungültige Latenz-Angaben '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Ungültige Prozesszeit-Angaben '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Ungültige Sample-Angaben\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Zu viele Argumente.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ãffnen der Audio-Datei fehlgeschlagen.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Ãffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "aufnehmen"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "abspielen"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Zu viele Argumente.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() fehlgeschlagen: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() fehlgeschlagen.\n"
@@ -1656,8 +1708,7 @@ msgstr "Resume fehlgeschlagen: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "WARNUNG: Sound-Server läuft nicht lokal, nicht ausgesetzt.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT empfangen, beende.\n"
@@ -1685,7 +1736,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1696,32 +1747,32 @@ msgstr ""
"kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Beziehen der Statistik fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Momentane Nutzung: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Während gesamter Laufzeit: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Sample-Pufferspeichergrösse: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1744,12 +1795,12 @@ msgstr ""
"-Standard-Quelle: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1788,12 +1839,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1832,20 +1883,20 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "k. A."
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1862,12 +1913,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1882,12 +1933,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1904,22 +1955,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktive Profile: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1956,12 +2007,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1990,12 +2041,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2026,22 +2077,21 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Hochladen des Sample fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Dateiende ist zu früh aufgetreten\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2086,7 +2136,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2097,49 +2147,45 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Geben Sie eine zu öffnende Sample-Datei an\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Ãffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Ãffne eine %s-Stream mit Sample-Angabe '%s'.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr ""
"Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Sie müssen einen Indexwert für ein Modul angeben\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2147,8 +2193,7 @@ msgstr ""
"Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2156,17 +2201,15 @@ msgstr ""
"Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Kein gültiger Befehl angegeben.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() fehlgeschlagen: %s"
@@ -2250,126 +2293,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Stream erfolgreich erzeugt\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Stream-Fehler: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Verbindung hergestellt.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Zeige diese Hilfe\n"
-" --version Zeige Version\n"
-"\n"
-" -v, --verbose Ausführliche Meldungen\n"
-"\n"
-" -s, --server=SERVER Name des Zielservers\n"
-" -d, --device=DEVICE Name des Ziel-Sink\n"
-" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-" --stream-name=NAME Rufname des Streams auf dem Server\n"
-" --volume=VOLUME Initiale (lineare) Lautstärke "
-"zwischen 0...65536\n"
-" --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompliert mit libpulse %s\n"
-"Gelinkt mit libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Ungültige Kanal-Zuweisung\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Ãffnen der Datei '%s' fehlgeschlagen\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Sampling-Angabe '%s' wird benutzt\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2380,7 +2345,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2391,38 +2356,105 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Ausgabe %s + Eingabe %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Ausgang %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Eingang %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Stream erfolgreich erzeugt\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Stream-Fehler: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Verbindung hergestellt.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Zeige diese Hilfe\n"
+#~ " --version Zeige Version\n"
+#~ "\n"
+#~ " -v, --verbose Ausführliche Meldungen\n"
+#~ "\n"
+#~ " -s, --server=SERVER Name des Zielservers\n"
+#~ " -d, --device=DEVICE Name des Ziel-Sink\n"
+#~ " -n, --client-name=NAME Rufname des Clients auf dem "
+#~ "Server\n"
+#~ " --stream-name=NAME Rufname des Streams auf dem "
+#~ "Server\n"
+#~ " --volume=VOLUME Initiale (lineare) Lautstärke "
+#~ "zwischen 0...65536\n"
+#~ " --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Kompliert mit libpulse %s\n"
+#~ "Gelinkt mit libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Ungültige Kanal-Zuweisung\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Ãffnen der Datei '%s' fehlgeschlagen\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Sampling-Angabe '%s' wird benutzt\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/de_CH.po b/po/de_CH.po
index 68076bd..3c1f429 100644
--- a/po/de_CH.po
+++ b/po/de_CH.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-18 12:55+0100\n"
"Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de at redhat.com>\n"
@@ -18,51 +18,51 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swiss German\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analog Mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analog Stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digital Stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digital Stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analog Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digital Surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analog Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analog Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analog Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digital Surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analog Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -75,7 +75,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -88,7 +88,7 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -101,11 +101,11 @@ msgstr ""
"Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie "
"diesen Punkt den ALSA-Entwicklern."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -175,107 +175,107 @@ msgstr "Keine Authorisierung erhalten: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit antwortete mit '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität "
"ermöglicht."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Richtlinien gewähren das Recht aquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Richtlinien verweigern das Recht acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, fuzzy, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -291,44 +291,44 @@ msgstr ""
"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Verwerfe CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -336,191 +336,191 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "System-Modus aktiv, jedoch --disallow-module-loading nicht gesetzt!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Seitengrösse ist %lu Bytes."
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
#, fuzzy
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
#, fuzzy
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
#, fuzzy
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Daemon beendet."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -659,15 +659,15 @@ msgstr ""
"\n"
" -n Standardskript nicht laden\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "Option --daemonize erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "Option --fail erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -675,53 +675,53 @@ msgstr ""
"--log-level erfordert Wert für Grad der Protokollierung (entweder numerisch "
"im Bereich 0..4 or einen dieser: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "Option --high-priority erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "Option --realtime erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "Option --disallow-module-loading erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "Option --use-pid-file erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Ungültiges Log-Ziel: Benutzen Sie entweder 'syslog', 'stderr' oder 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--realtime erfordert boolsches Argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta erfordert boolschen Wert"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Ungültige Resample-Methode '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--System erwartet Boolean-Argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "Option --no-cpu-limit erfordert bool'schen Wert"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "Option --disable-shm erfordert bool'schen Wert"
@@ -760,77 +760,82 @@ msgstr "Verwendung: %s\n"
msgid "Load Once: %s\n"
msgstr "Lade einmalig: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
#, fuzzy
msgid ""
"The specified default channel map has a different number of channels than "
@@ -1093,8 +1098,8 @@ msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(ungültig)"
@@ -1280,173 +1285,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Wiedergabe-Stream entleert.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Draining connection to server.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Stream wurde erfolgreich erstellt.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Stream-Fehler: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Stream-Gerät ausgesetzt.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Stream-Gerät reaktiviert.%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Stream unterlaufen.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Stream überlief.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Stream gestartet: %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nicht "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Verbindung hergestellt.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Verbindungsfehler: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Entleeren des Streams fehlgeschlagen: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Wiedergabe-Stream entleert.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Draining connection to server.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF empfangen.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Signal empfangen, beende.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Erhalten der Latenz fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1472,8 +1472,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1496,6 +1498,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1537,7 +1544,7 @@ msgstr ""
" --process-time=BYTES Diese Prozesszeit pro Anfrage "
"verwenden.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1548,88 +1555,133 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Ungültige Kanal-Zuweisung '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Ungültige Latenz-Angaben '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Ungültige Prozesszeit-Angaben '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ungültige Resample-Methode '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Ungültige Sample-Angaben\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Zu viele Argumente.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ãffnen der Audio-Datei fehlgeschlagen.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Ãffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "aufnehmen"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "abspielen"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Zu viele Argumente.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() fehlgeschlagen: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() fehlgeschlagen.\n"
@@ -1659,8 +1711,7 @@ msgstr "Resume fehlgeschlagen: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "WARNUNG: Sound-Server läuft nicht lokal, nicht ausgesetzt.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT empfangen, beende.\n"
@@ -1688,7 +1739,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1699,32 +1750,32 @@ msgstr ""
"kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Beziehen der Statistik fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Momentane Nutzung: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Während gesamter Laufzeit: %u Blöcke mit insgesamt %s Bytes.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Sample-Pufferspeichergrösse: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1747,12 +1798,12 @@ msgstr ""
"-Standard-Quelle: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1791,12 +1842,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1835,20 +1886,20 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "k. A."
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1865,12 +1916,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1885,12 +1936,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1907,22 +1958,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktive Profile: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1959,12 +2010,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1993,12 +2044,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2029,22 +2080,21 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Hochladen des Sample fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Dateiende ist zu früh aufgetreten\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2089,7 +2139,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2100,49 +2150,45 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Geben Sie eine zu öffnende Sample-Datei an\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Ãffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Ãffne eine %s-Stream mit Sample-Angabe '%s'.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr ""
"Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Sie müssen einen Indexwert für ein Modul angeben\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2150,8 +2196,7 @@ msgstr ""
"Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2159,17 +2204,15 @@ msgstr ""
"Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Kein gültiger Befehl angegeben.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() fehlgeschlagen: %s"
@@ -2253,126 +2296,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Stream erfolgreich erzeugt\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Stream-Fehler: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Verbindung hergestellt.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Zeige diese Hilfe\n"
-" --version Zeige Version\n"
-"\n"
-" -v, --verbose Ausführliche Meldungen\n"
-"\n"
-" -s, --server=SERVER Name des Zielservers\n"
-" -d, --device=DEVICE Name des Ziel-Sink\n"
-" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-" --stream-name=NAME Rufname des Streams auf dem Server\n"
-" --volume=VOLUME Initiale (lineare) Lautstärke "
-"zwischen 0...65536\n"
-" --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompliert mit libpulse %s\n"
-"Gelinkt mit libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Ungültige Kanal-Zuweisung\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Ãffnen der Datei '%s' fehlgeschlagen\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Sampling-Angabe '%s' wird benutzt\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2390,7 +2355,7 @@ msgstr ""
"von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < "
"min_avail ist."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2408,38 +2373,105 @@ msgstr ""
"von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < "
"min_avail ist."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Ausgabe %s + Eingabe %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Ausgang %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Eingang %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Stream erfolgreich erzeugt\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Stream-Fehler: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Verbindung hergestellt.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Zeige diese Hilfe\n"
+#~ " --version Zeige Version\n"
+#~ "\n"
+#~ " -v, --verbose Ausführliche Meldungen\n"
+#~ "\n"
+#~ " -s, --server=SERVER Name des Zielservers\n"
+#~ " -d, --device=DEVICE Name des Ziel-Sink\n"
+#~ " -n, --client-name=NAME Rufname des Clients auf dem "
+#~ "Server\n"
+#~ " --stream-name=NAME Rufname des Streams auf dem "
+#~ "Server\n"
+#~ " --volume=VOLUME Initiale (lineare) Lautstärke "
+#~ "zwischen 0...65536\n"
+#~ " --channel-map=CHANNELMAP Diese Kanalzuordnung nutzen\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Kompliert mit libpulse %s\n"
+#~ "Gelinkt mit libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Ungültige Kanal-Zuweisung\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Ãffnen der Datei '%s' fehlgeschlagen\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Kanal-Zuweisung stimmt mit Datei nicht überein.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Sampling-Angabe '%s' wird benutzt\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/el.po b/po/el.po
index cc1baae..b66ca5b 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: el\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2008-08-22 19:40+0300\n"
"Last-Translator: Dimitris Glezos <dimitris at glezos.com>\n"
"Language-Team: Greek <fedora-trans-el at redhat.com>\n"
@@ -16,51 +16,51 @@ msgstr ""
"X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,7 +69,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -78,7 +78,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -87,11 +87,11 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr ""
@@ -161,104 +161,104 @@ msgstr ""
msgid "PolicyKit responded with '%s'"
msgstr ""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr ""
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ÎξοδοÏ."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "ÎÏοÏÏ
Ïία εÏÏεÏÎ·Ï ÏÏήÏÏη '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "ÎÏοÏÏ
Ïία εÏÏεÏÎ·Ï Î¿Î¼Î¬Î´Î±Ï ÏÏηÏÏÏν '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr ""
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -271,201 +271,201 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr ""
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "ÎÏ
ÏÏ ÎµÎ¯Î½Î±Î¹ Ïο PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -473,31 +473,31 @@ msgstr ""
"ÎικΠμοÏ
, ο ÏÏ
ÏÎ®Î½Î±Ï ÏοÏ
είναι για Ïα μÏάζα! Î ÏÏÏÏαÏη ÏοÏ
ÏÎµÏ ÏήμεÏα είναι "
"Linux με ενεÏγοÏοιημÎνα Ïα high-resolution timers!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr ""
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -571,66 +571,66 @@ msgid ""
" -n Don't load default script file\n"
msgstr ""
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
msgstr ""
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr ""
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr ""
@@ -669,77 +669,82 @@ msgstr ""
msgid "Load Once: %s\n"
msgstr ""
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr ""
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -989,8 +994,8 @@ msgid "Top Rear Right"
msgstr ""
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr ""
@@ -1175,172 +1180,167 @@ msgstr ""
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr ""
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr ""
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr ""
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr ""
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr ""
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1367,8 +1367,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1391,9 +1393,14 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1401,88 +1408,130 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
#, c-format
-msgid "Invalid channel map '%s'\n"
+msgid "Invalid client name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:776
#, c-format
-msgid "Invalid latency specification '%s'\n"
+msgid "Invalid stream name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:813
#, c-format
-msgid "Invalid process time specification '%s'\n"
+msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:842
#, c-format
-msgid "Invalid sample specification\n"
+msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:849
#, c-format
-msgid "Channel map doesn't match sample specification\n"
+msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:861
#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+msgid "Invalid property '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "recording"
+#: ../src/utils/pacat.c:878
+#, c-format
+msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "playback"
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:736
+#: ../src/utils/pacat.c:907
#, c-format
msgid "open(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:741
+#: ../src/utils/pacat.c:912
#, c-format
msgid "dup2(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:751
-#, c-format
+#: ../src/utils/pacat.c:919
msgid "Too many arguments.\n"
msgstr ""
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:930
+msgid "Failed to generate sample specification for file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:950
+msgid "Failed to open audio file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+msgid "Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
#, c-format
-msgid "pa_mainloop_new() failed.\n"
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
msgstr ""
-#: ../src/utils/pacat.c:785
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr ""
@@ -1512,8 +1561,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1535,7 +1583,7 @@ msgid ""
"\n"
msgstr ""
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1543,32 +1591,32 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1582,12 +1630,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1609,12 +1657,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1636,20 +1684,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1660,12 +1708,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1675,12 +1723,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1691,22 +1739,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1727,12 +1775,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1749,12 +1797,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -1772,22 +1820,21 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1813,7 +1860,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -1821,71 +1868,63 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr ""
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr ""
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr ""
@@ -1962,109 +2001,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr ""
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr ""
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2075,7 +2053,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2086,34 +2064,34 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
diff --git a/po/es.po b/po/es.po
index d3221d3..841f990 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-18 12:45-0300\n"
"Last-Translator: Domingo Becker <domingobecker at gmail.com>\n"
"Language-Team: Fedora Spanish <fedora-trans-es at redhat.com>\n"
@@ -17,51 +17,51 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Spanish\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Mono Analógico"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Estéreo Analógico"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Estéreo Digital (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Estéreo Digital (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Análogo Envolvente 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digital Envolvente 4.0 (IEC9588/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Análogo Envolvente 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Análogo Envolvente 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Análogo Envolvente 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digital Envolvente 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Análogo Envolvénte 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -74,7 +74,7 @@ msgstr ""
"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
"informe ésto a los desarrolladores de ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +87,7 @@ msgstr ""
"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
"informe ésto a los desarrolladores de ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +100,11 @@ msgstr ""
"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
"informe ésto a los desarrolladores de ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Audio Interno"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Módem"
@@ -174,104 +174,104 @@ msgstr "No se pudo obtener auth: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit respondió con '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Se obtuvo la señal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Saliendo."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falló al buscar usuario '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falló al buscar grupo '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Se encontró el usuario '%s' (UID %lu) y el grupo '%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID del usuario '%s' y del grupo '%s' no son similares."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "El directorio de inicio del usuario '%s' no es '%s', ignorando."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falló al crear '%s': %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falló al cambiar la lista de grupo: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falló al cambiar GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falló al cambiar UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Se han liberado con éxitos los privilegios de root."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "El modo a nivel de sistema no es soportado en esta plataforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falló: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Falló al analizar la lÃnea de comando."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -293,48 +293,48 @@ msgstr ""
"o aumente los lÃmites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este "
"usuario."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitadada la planificación de prioridad alta, pero no están "
"permitidas por la polÃtica."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Fallo en RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitada la planificación en tiempo real, pero no está permitido por "
"la polÃtica."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "El demonio no está funcionando"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "El demonio está funcionando como PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "No se ha podido detener el demonio: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -342,165 +342,165 @@ msgstr ""
"Este programa no tiene por qué ser ejecutado como root (a menos que --system "
"sea especificado)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Se necesitan privilegios de root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start no está soportado para las instancias del sistema."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-exit! "
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-"
"module-loading!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente el modo SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente exit idle time!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Fallo al intentar adquirir stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Falló el pipe: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Falló el fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Falló la operación read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Falló el inicio del demonio. "
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "El demonio se inició exitosamente."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Esto es PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilación: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilación CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Ejecutándose en el host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Se encontraron %u CPUs."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "El tamaño de la página es de %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Soporte para compilar con Valgrind: si"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Soporte para compilar con Valgrind: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Ejecutándose en modo valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Build optimizado: si"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Build optimizado: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todos los chequeos deshabilitados."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definido, sólo se deshabilitan los chequeos fast path."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Todos los chequeos habilitados."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Fallo al intentar obtener el ID de la máquina"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilizando directorio de tiempo de ejecución %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon "
"appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -508,33 +508,33 @@ msgstr ""
"¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el "
"chef es Linux con cronómetros de alta resolución activados! "
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a "
"funcionar."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -686,15 +686,15 @@ msgstr ""
" -n No carga el archivo script "
"predeterminado\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize espera un argumento booleano"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail espera un argumento booleano"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -703,52 +703,52 @@ msgstr ""
"caiga en el rango de 0..4; ya sea uno de debug, info, notice, warn, o "
"error). "
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority espera un argumento booleano"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime espera un argumento booleano"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera un argumento booleano"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit espera un argumento booleano"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use pid-file espera un argumento booleano"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Log target inválido: use o \"syslog\", o \"stderr\", o \"auto\"."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time espera un argumento booleano"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta espera un argumento booleano"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Método de remuestreo inválido '%s'"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system espera un argumento booleano"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit espera un argumento booleano"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm espera un argumento booleano"
@@ -787,77 +787,82 @@ msgstr "Uso: %s\n"
msgid "Load Once: %s\n"
msgstr "Carga una vez: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destino de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de remuestreo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] Rlimit no soportado en esta plataforma."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de muestra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Tasa de muestra inválida '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canal inválido '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamaño inválido de fragmento '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "No se pudo abrir el archivo de configuración: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1115,8 +1120,8 @@ msgid "Top Rear Right"
msgstr "Posterior derecho superior"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(inválido)"
@@ -1301,173 +1306,168 @@ msgstr "waitpid(:) %s"
msgid "Received message for unknown extension '%s'"
msgstr "Se ha recibido un mensaje para una extensión desconocida '%s'"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Error al drenar el flujo: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "El flujo de platback se ha drenado.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Drenando conexión con el servidor.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() falló: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() falló: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Se ha creado exitosamente el flujo (stream).\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() falló: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Métrica del búfer: maxlenght=%u, tlenghth=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Métrica del búfer: maxlenght=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Utilizando especificaciones de muestra '%s', mapa del canal '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Conectado al dispositivo %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Error de flujo: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Dispositivo de flujo suspendido. %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Dispositivo de flujo reestablecido. %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Flujo agotado. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Flujo saturado.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Flujo iniciado. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Fujo trasladado al dispositivo %s (%u, %ssuspended). %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Los atributos del buffer de flujo cambiaron. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Conexión establecida. %s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() falló; %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() falló: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falló: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Error en la conexión: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Error al drenar el flujo: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "El flujo de platback se ha drenado.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Drenando conexión con el servidor.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Hay EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() falló: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() falló: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Hay señal, saliendo (exiting).\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "No se pudo obtener latencia: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tiempo: %0.3f sec; Latencia: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() falló: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1493,8 +1493,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1517,6 +1519,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opciones]\n"
"\n"
@@ -1568,7 +1575,7 @@ msgstr ""
" --process-time=BYTES Solicitar los procesos de tiempo por "
"pedido especificados en bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1579,88 +1586,133 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mapa de canales inválido '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Método de remuestreo inválido '%s'"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canales inválido '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificación de latencia inválida '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificación de tiempo de proceso inválida '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Método de remuestreo inválido '%s'"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Especificación de muestra inválida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open() %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Demasiados argumentos.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Error al intentar obtener información de muestra: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Error al intentar abrir el archivo de sonido.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Error al intentar obtener información de muestra: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "El mapa del canal no se corresponde con la especificación de muestra\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Abriendo un %s flujo con las especificaciones de muestra '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "grabando"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "playback"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open() %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Demasiados argumentos.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falló.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() falló.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falló.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() falló: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() falló.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falló.\n"
@@ -1690,8 +1742,7 @@ msgstr "Error al continuar: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "AVISO: El servidor de sonido no es local, no se suspende.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Hay SIGINT, saliendo.\n"
@@ -1720,7 +1771,7 @@ msgstr ""
"conectarse\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1731,34 +1782,34 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Error al intentar obtener estadÃsticas: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Actualmente en uso: %u bloques conteniendo %s bytes en total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Ubicados durante a lo largo del tiempo: %u bloques conteniendo %s bytes en "
"total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Tamaño del cache de muestra: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Error al intentar obtener información del servidor: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1781,12 +1832,12 @@ msgstr ""
"Fuente por defecto: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Error al intentar obtener información del destino: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1825,12 +1876,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Error al intentar obtener información de la fuente: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1869,20 +1920,20 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Error al intentar obtener información del módulo: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1899,12 +1950,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Error al intentar obtener información del cliente: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1919,12 +1970,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Fallo al obtener la información de la placa: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1941,22 +1992,22 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPerfiles:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tPerfil Activo: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Error al intentar obtener información de entrada del destino: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1993,13 +2044,13 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
"Error al intentar obtener información acerca de la salida de la fuenta: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2028,12 +2079,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Error al intentar obtener información de muestra: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2064,22 +2115,21 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Falla: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Fallo al cargar muestra: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Fin prematuro del archivo\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2126,7 +2176,7 @@ msgstr ""
" -n, --client-name=NAME El nombre de este cliente en el "
"servidor\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2137,50 +2187,46 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linked con libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Por favor, especifique un archivo de muestra a cargar\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Error al intentar abrir el archivo de sonido.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, 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:912
msgid "You have to specify a sample name to play\n"
msgstr "Debe especificar un nombre de muestra para ser escuchado\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Debe especificar un nombre de muestra para ser eliminado\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Debe especificar un Ãndice para las entradas del destino y un destino\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr ""
"Debe especificar un Ãndice para las salidas de la fuente, y una fuente\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Debe especificar un nombre de módulo y los argumentos\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Debe especificar un Ãndice de módulo\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2188,8 +2234,7 @@ msgstr ""
"No puede especificar más de un sumidero. Tiene que especificar un valor "
"booleano.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2197,17 +2242,15 @@ msgstr ""
"No puede especificar más de una fuente. Tiene que especificar un valor "
"booleano.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Debe especificar un nombre de placa/Ãndice y un nombre de perfil\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "No se ha especificadfo ningún comando válido.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() falló: %s"
@@ -2292,132 +2335,48 @@ msgstr "Error al cargar datos de cookie\n"
msgid "Not yet implemented.\n"
msgstr "Aún no se ha implementado.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Error al intentar detener el demonio de PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "El demonio no responde."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Se ha creado el flujo exitosamente\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Error de flujo: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Conección establecida.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Muestra esta ayuda\n"
-" --version Muestra la versión\n"
-"\n"
-" -v, --verbose Habilita operación con vocabulario "
-"más detallado\n"
-"\n"
-" -s, --server=SERVER El nombre del servidor al que "
-"conectarse\n"
-" -d, --device=DEVICE El nombre del destino al que "
-"conectarse\n"
-" -n, --client-name=NAME Cómo llamar a este cliente en el "
-"servidor\n"
-" --stream-name=NAME Cómo llamar a este flujo en el "
-"servidor\n"
-" --volume=VOLUME Especifica el volumen inicial "
-"(linear)en el rango de 0...65536\n"
-" --channel-map=CHANNELMAP Establece el mapa del canal para el "
-"uso\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilado con libpulse %s\n"
-"Linked con libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mapa de canal inválido\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Error al intentar abrir el archivo '%s'\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "El mapa del canal no se corresponde con el archivo.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Utilizando especificaciones de muestra '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "No se puede acceder al candado de autogeneración."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2434,7 +2393,7 @@ msgstr ""
"Nos despertaron con POLLOUT puesto -- sin embargo, una llamada a "
"snd_pcm_avail() devolvió 0 u otro valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2451,38 +2410,109 @@ msgstr ""
"Nos despertaron con POLLIN puesto -- sin embargo, una llamada a snd_pcm_avail"
"() devolvió 0 u otro valor < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Salida %s + Entrada %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Salida %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Entrada %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Apagado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "Reproducción de Alta Fidelidad (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "TelefonÃa Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Servidor de Sonido PulseAudio"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Se ha creado el flujo exitosamente\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Error de flujo: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Conección establecida.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Muestra esta ayuda\n"
+#~ " --version Muestra la versión\n"
+#~ "\n"
+#~ " -v, --verbose Habilita operación con "
+#~ "vocabulario más detallado\n"
+#~ "\n"
+#~ " -s, --server=SERVER El nombre del servidor al que "
+#~ "conectarse\n"
+#~ " -d, --device=DEVICE El nombre del destino al que "
+#~ "conectarse\n"
+#~ " -n, --client-name=NAME Cómo llamar a este cliente en el "
+#~ "servidor\n"
+#~ " --stream-name=NAME Cómo llamar a este flujo en el "
+#~ "servidor\n"
+#~ " --volume=VOLUME Especifica el volumen inicial "
+#~ "(linear)en el rango de 0...65536\n"
+#~ " --channel-map=CHANNELMAP Establece el mapa del canal para "
+#~ "el uso\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilado con libpulse %s\n"
+#~ "Linked con libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mapa de canal inválido\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Error al intentar abrir el archivo '%s'\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "El mapa del canal no se corresponde con el archivo.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Utilizando especificaciones de muestra '%s'\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/fi.po b/po/fi.po
index 5b72a3d..f5e27bb 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-05 16:24+0300\n"
"Last-Translator: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu at lokalisointi.org>\n"
@@ -16,51 +16,51 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analoginen mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analoginen stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digitaalinen stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digitaalinen stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analoginen tilaääni 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digitaalinen tilaääni 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analoginen tilaääni 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analoginen tilaääni 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analoginen tilaääni 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digitaalinen tilaääni 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analoginen tilaääni 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -72,7 +72,7 @@ msgstr ""
"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa â%sâ. Ilmoita tästä "
"ongelmasta ALSA-kehittäjille."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +85,7 @@ msgstr ""
"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa â%sâ. Ilmoita tästä "
"ongelmasta ALSA-kehittäjille."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -98,11 +98,11 @@ msgstr ""
"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa â%sâ. Ilmoita tästä "
"ongelmasta ALSA-kehittäjille."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Sisäinen äänentoisto"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modeemi"
@@ -172,104 +172,104 @@ msgstr "Tunnistautumista ei saada: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit vastasi â%sâ"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Saatiin signaali %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Poistutaan."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Käyttäjää â%sâ ei löydetty."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ryhmää â%sâ ei löydetty."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Löydettiin käyttäjä â%sâ (UID %lu) ja ryhmä â%sâ (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "Käyttäjän â%sâ ja ryhmän â%sâ GID:t eivät vastaa toisiaan."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Käyttäjän â%sâ kotihakemisto ei ole â%sâ, ohitetaan."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Hakemiston â%sâ luominen epäonnistui: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ryhmäluettelon vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root-oikeuksista luopuminen onnistui."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Järjestelmänlaajuista tilaa ei tueta tällä alustalla."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) epäonnistui: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Komentorivin jäsentäminen epäonnistui."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Ollaan ryhmässä â%sâ, korkean prioriteetin ajoitus on sallittua."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Ollaan ryhmässä â%sâ, tosiaikainen vuorottaminen on sallittua."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit myöntää acquire-high-priority-oikeuden."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ei myönnä acquire-high-priority-oikeutta."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit myöntää acquire-real-time-oikeuden."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ei myönnä acquire-real-time-oikeutta."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -290,48 +290,48 @@ msgstr ""
"käyttäjän RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja reaaliaikaisen ja/tai "
"korkean prioriteetin ajoituksen ottamiseksi käyttöön."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Korkean prioriteetin ajoitus otettu käyttöön asetuksissa, mutta käytännöt "
"eivät salli sitä."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO:n kasvatus onnistui"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO epäonnistui: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Luovutaan CAP_NICE:stä"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Tosiaikainen ajoitus otettu käyttöön asetuksissa, mutta käytännöt eivät "
"salli sitä."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Taustaprosessi ei ole käynnissä"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Taustaprosessi käynnissä prosessitunnisteella %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Taustaprosessin lopettaminen epäonnistui: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -339,164 +339,164 @@ msgstr ""
"Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --"
"system ole määritelty)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Pääkäyttäjän (root) oikeudet vaaditaan."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start-valitsinta ei tueta järjestelmätilassa."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Suoritetaan järjestelmätilassa, mutta --disallow-exit ei ole asetettuna!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Suoritetaan järjestelmätilassa, mutta -disallow-module-loading ei ole "
"asetettuna!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"Suoritetaan järjestelmätilassa, otetaan SHM-tila pakotetusti pois käytöstä."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Suoritetaan järjestelmätilassa, otetaan poistumisen joutenoloaika "
"pakotetusti pois käytöstä."
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio:n saaminen epäonnistui."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "putki epäonnistui: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() epäonnistui: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() epäonnistui: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Taustaprosessin käynnistys epäonnistui."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Taustaprosessin käynnistys onnistui."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Tämä on PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Käännöksen isäntäkone: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Käännösaikaiset C-liput (CFLAGS): %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Käynnissä isäntäkoneella: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Löydettiin %u CPU:ta."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Sivun koko on %lu tavua"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Käännetty Valgrind-tuella: kyllä"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Käännetty Valgrind-tuella: ei"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Käynnissä valgrind-tilassa: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimoitu rakentaminen: kyllä"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimoitu rakentaminen: ei"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG on määritelty, kaikki assertit ovat poissa käytöstä."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH on määritelty, vain fast path -assertit ovat poissa käytöstä."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Kaikki assertit ovat käytössä."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Konetunnisteen nouto epäonnistui"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() epäonnistui."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -504,33 +504,33 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() epäonnistui."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"Taustaprosessin käynnistys ilman ladattavia moduuleita, kieltäydytään "
"toiminnasta."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -685,15 +685,15 @@ msgstr ""
" -n Ãlä lataa oletuskomentosarja-\n"
" tiedostoa\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -701,54 +701,54 @@ msgstr ""
"--log-level vaatii lokikirjoituksen tason argumentiksi (joko numero väliltä "
"0..4 tai yksi seuraavista: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Virheellinen lokikirjoituksen kohde: käytä jotain seuraavista: âsyslogâ, "
"âstderrâ tai âautoâ."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Virheellinen uudelleennäytteistyksen tapa â%sâ."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit vaatii totuusarvoisen argumentin"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm vaatii totuusarvoisen argumentin"
@@ -787,77 +787,82 @@ msgstr "Käyttö: %s\n"
msgid "Load Once: %s\n"
msgstr "Lataa kerran: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Polku: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde â%sâ."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen taso â%sâ."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa â%sâ."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Virheellinen rlimit â%sâ."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimitiä ei tueta tällä alustalla."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Virheellinen näytemuoto â%sâ."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Virheellinen näytteenottotaajuus â%sâ."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Virheelliset näytekanavat â%sâ."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Virheellinen kanavakartta â%sâ."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Virheellinen fragmenttimäärä â%sâ."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Virheellinen fragmenttikoko â%sâ."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Virheellinen nice-taso â%sâ."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1114,8 +1119,8 @@ msgid "Top Rear Right"
msgstr "Oikea ylä taka"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(virheellinen)"
@@ -1300,173 +1305,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Saatiin viesti tuntemattomalle laajennokselle â%sâ"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Virran tyhjentäminen epäonnistui: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Toistovirta on tyhjennetty.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Tyhjennetään yhteyttä palvelimelle.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Virran luonti onnistui.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Puskuritiedot: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Puskuritiedot: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Käytetään näytemäärittelyä â%sâ, kanavakarttaa â%sâ.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Yhdistetty laitteeseen %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Virtavirhe: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Virtalaite keskeytetty.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Virtalaite palautettu.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Virran alivuoto.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Virran ylivuoto.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Virta käynnistetty.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Virta siirretty laitteelle %s (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "ei "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Virran puskuriattribuutteja muutettu.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Yhteys muodostettu.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Yhteysvirhe: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Virran tyhjentäminen epäonnistui: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Toistovirta on tyhjennetty.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Tyhjennetään yhteyttä palvelimelle.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Saatiin EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Saatiin signaali, lopetetaan.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Latenssin selvittäminen epäonnistui: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Aika: %0.3f s; latenssi: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1492,8 +1492,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1516,6 +1518,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [valitsimet]\n"
"\n"
@@ -1564,7 +1571,7 @@ msgstr ""
" --process-time=TAVUA Pyydä määritettyä prosessiaikaa "
"pyyntöä kohti tavuissa.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1575,88 +1582,133 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Virheellinen kanavakartta â%sâ\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Virheellinen uudelleennäytteistyksen tapa â%sâ."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Virheellinen kanavakartta â%sâ\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Virheellinen latenssimääritys â%sâ\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Virheellinen prosessiajan määritys â%sâ\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Virheellinen uudelleennäytteistyksen tapa â%sâ."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Virheellinen näytemääritys\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Liian monta argumenttia.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Näytetietojen nouto epäonnistui: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ãänitiedoston avaaminen epäonnistui.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Näytetietojen nouto epäonnistui: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Kanavakartta ei vastaa näytemääritystä\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Avataan %svirta näytemäärityksellä â%sâ.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "nauhoitus"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "toisto"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Liian monta argumenttia.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() epäonnistui: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() epäonnistui.\n"
@@ -1686,8 +1738,7 @@ msgstr "Palautus epäonnistui: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "VAROITUS: Ãänipalvelin ei ole paikallinen, ei keskeytetä.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Saatiin SIGINT, lopetetaan.\n"
@@ -1716,7 +1767,7 @@ msgstr ""
" yhdistetään\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1727,32 +1778,32 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Tilastojen selvittäminen epäonnistui: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Nyt käytössä: %u lohkoa sisältäen yhteensä %s tavua.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Koko käyttöaikana varattu: %u lohkoa sisältäen yhteensä %s tavua.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Näytevälimuistin koko: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Palvelintietojen selvittäminen epäonnistui: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1775,12 +1826,12 @@ msgstr ""
"Oletuslähde: %s\n"
"Eväste: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Nielun tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1819,12 +1870,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Lähteen tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1863,20 +1914,20 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "-"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Moduulin tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1893,12 +1944,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Asiakkaan tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1913,12 +1964,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Kortin tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1935,22 +1986,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiilit:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktiivinen profiili: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Nielun sisääntulon tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1987,12 +2038,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Lähteen ulostulon tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2021,12 +2072,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Näytetietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2057,22 +2108,21 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Epäonnistuminen: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Näytteen lähettäminen epäonnistui: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Ennenaikainen tiedoston päättyminen\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2119,7 +2169,7 @@ msgstr ""
" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa\n"
" kutsutaan palvelimella\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2130,71 +2180,64 @@ msgstr ""
"Käännetty libpulsen versiolle %s\n"
"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Anna ladattava näytetiedosto\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Ãänitiedoston avaaminen epäonnistui.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Avataan %svirta näytemäärityksellä â%sâ.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Soitettavan näytteen nimi on annettava\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Poistettavan näytteen nimi on annettava\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Nielun syöteindeksi ja nielu on annettava\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Lähteen ulostuloindeksi ja lähde on annettava\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Moduulin nimi ja argumentit on annettava.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Moduulin indeksi on annettava\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "Ei voi antaa enempää kuin yhden nielun. Totuusarvo on annettava.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "Ei voi antaa enempää kuin yhden lähteen. Totuusarvo on annettava.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Mitään kelvollista komentoa ei annettu.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() epäonnistui: %s"
@@ -2280,130 +2323,48 @@ msgstr "Evästetietojen lataaminen epäonnistui\n"
msgid "Not yet implemented.\n"
msgstr "Toteutusta ei vielä ole.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio-taustaprosessin lopettaminen epäonnistui."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Taustaprosessi ei vastaa."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Virran luonti onnistui\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Virtavirhe: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Yhteys muodostetettu.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [valitsimet] [TIEDOSTO]\n"
-"\n"
-" -h, --help Näytä tämä ohje\n"
-" --version Näytä tiedostot\n"
-"\n"
-" -v, --verbose Yksityiskohtaiset tulosteet\n"
-"\n"
-" -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
-" yhdistetään\n"
-" -d, --device=LAITE Sen nielun nimi, johon yhdistetään\n"
-" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa "
-"kutsutaan\n"
-" palvelimella\n"
-" --stream-name=NIMI Kuinka tätä virtaa kutsutaan\n"
-" palvelimella\n"
-" --volume=ÃÃNENVOIMAKKUUS Määritä (lineaarinen) aloitusäänen-\n"
-" voimakkuus väliltä 0...65536\n"
-" --channel-map=KANAVAKARTTA Aseta käytettävä kanavakartta\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Käännetty libpulsen versiolle %s\n"
-"Linkitetty libpulsen versiolle %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Virheellinen kanavakartta\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Tiedoston â%sâ avaaminen epäonnistui\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Kanavakartta ei täsmää tiedostoon.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Käytetään näytemäärittelyä â%sâ\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Automaattisen käynnistyksen lukkoa ei voida käyttää."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2420,7 +2381,7 @@ msgstr ""
"asetettuna, snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, "
"joka on < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2436,38 +2397,109 @@ msgstr ""
"ongelmasta ALSA-kehittäjille. Taustaprosessi herätettiin POLLIN asetettuna, "
"snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, on < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Ulostulo %s + Sisääntulo %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Ulostulo %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Sisääntulo %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Poissa"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "Korkean äänenlaadun toisto (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio-äänipalvelin"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Virran luonti onnistui\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Virtavirhe: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Yhteys muodostetettu.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [valitsimet] [TIEDOSTO]\n"
+#~ "\n"
+#~ " -h, --help Näytä tämä ohje\n"
+#~ " --version Näytä tiedostot\n"
+#~ "\n"
+#~ " -v, --verbose Yksityiskohtaiset tulosteet\n"
+#~ "\n"
+#~ " -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
+#~ " yhdistetään\n"
+#~ " -d, --device=LAITE Sen nielun nimi, johon "
+#~ "yhdistetään\n"
+#~ " -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa "
+#~ "kutsutaan\n"
+#~ " palvelimella\n"
+#~ " --stream-name=NIMI Kuinka tätä virtaa kutsutaan\n"
+#~ " palvelimella\n"
+#~ " --volume=ÃÃNENVOIMAKKUUS Määritä (lineaarinen) "
+#~ "aloitusäänen-\n"
+#~ " voimakkuus väliltä 0...65536\n"
+#~ " --channel-map=KANAVAKARTTA Aseta käytettävä kanavakartta\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Käännetty libpulsen versiolle %s\n"
+#~ "Linkitetty libpulsen versiolle %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Virheellinen kanavakartta\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Tiedoston â%sâ avaaminen epäonnistui\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Kanavakartta ei täsmää tiedostoon.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Käytetään näytemäärittelyä â%sâ\n"
+
#~ msgid "muted"
#~ msgstr "vaimennettu"
diff --git a/po/fr.po b/po/fr.po
index f9a2e91..06ec5a1 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,106 +5,109 @@
# Michaël Ughetto <telimektar esraonline com>, 2008.
# Pablo Martin-Gomez <pablo.martin-gomez at laposte.net>, 2008.
# Corentin Perard <corentin.perard at gmail.com>, 2009.
-#
-#
+#
+#
msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-05 08:27+0000\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-26 17:22+0200\n"
"Last-Translator: Corentin Perard <corentin.perard at gmail.com>\n"
"Language-Team: French <fedora-trans-fr at 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;"
+"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../src/modules/alsa/alsa-util.c:530
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Mono analogique"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Stéréo analogique"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Stéréo numérique (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Stéréo numérique (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Surround analogique 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Surround numérique 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Surround analogique 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Surround analogique 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Surround analogique 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Surround numérique 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Surround analogique 7.1"
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1769
#, 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() a retourné une valeur qui est exceptionnellement large : %lu octets (%lu "
-"ms).\n"
-"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez rapporter ce "
-"problème aux développeurs d'ALSA."
+msgstr ""
+"snd_pcm_avail() a retourné une valeur qui est exceptionnellement large : %lu "
+"octets (%lu ms).\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1649
+#: ../src/modules/alsa/alsa-util.c:1810
#, 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() a retourné une valeur qui est exceptionnellement large : %li octets (%s%"
-"lu ms).\n"
-"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez rapporter ce "
-"problème aux développeurs d'ALSA."
+msgstr ""
+"snd_pcm_delay() a retourné une valeur qui est exceptionnellement large : %li "
+"octets (%s%lu ms).\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1695
+#: ../src/modules/alsa/alsa-util.c:1857
#, 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() a retourné une valeur qui est exceptionnellement large : %lu octets "
-"(%lu·ms).\n"
-"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez rapporter ce "
-"problème aux développeurs d'ALSA."
+msgstr ""
+"snd_pcm_mmap_begin() a retourné une valeur qui est exceptionnellement "
+"large : %lu octets (%lu·ms).\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA."
-#: ../src/pulsecore/sink.c:2061
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Audio interne"
-#: ../src/pulsecore/sink.c:2067
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -174,108 +177,108 @@ msgstr "Impossible d'obtenir l'authentification : %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit a renvoyé « %s »"
-#: ../src/daemon/main.c:137
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Signal %s obtenu."
-#: ../src/daemon/main.c:164
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Fermeture."
-#: ../src/daemon/main.c:182
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Impossible de trouver l'utilisateur « %s »."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Impossible de trouver le groupe « %s »."
-#: ../src/daemon/main.c:191
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Utilisateur « %s â (UID %lu) et groupe « %s » (GID %lu) trouvé."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
"Le GID de l'utilisateur « %s » et du groupe « %s » ne sont pas identiques."
-#: ../src/daemon/main.c:201
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Le dossier personnel de l'utilisateur « %s » n'est pas « %s », ignoré."
-#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Ãchec lors de la création de « %s » : %s"
-#: ../src/daemon/main.c:216
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ãchec lors du changement de la liste du groupe : %s"
-#: ../src/daemon/main.c:232
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Ãchec lors du changement de GIDÂ : %s"
-#: ../src/daemon/main.c:248
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Ãchec lors du changement d'UIDÂ : %s"
-#: ../src/daemon/main.c:262
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Les privilèges root ont été correctement abandonnés."
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Mode système étendu non pris en charge sur cette plateforme."
-#: ../src/daemon/main.c:288
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) a échoué : %s"
-#: ../src/daemon/main.c:462
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Ãchec lors de l'analyse de la ligne de commande"
-#: ../src/daemon/main.c:486
+#: ../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:493
+#: ../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:501
+#: ../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:504
+#: ../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:509
+#: ../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:512
+#: ../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:541
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -286,52 +289,60 @@ msgid ""
"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:566
+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:595
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Augmentation de RLIMIT_RTPRIO réussie"
-#: ../src/daemon/main.c:598
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO a échoué : %s"
-#: ../src/daemon/main.c:605
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abandon de CAP_NICE"
-#: ../src/daemon/main.c:612
+#: ../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:673
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Lé démon n'est pas lancé"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Le démon est lancé avec le PID %u"
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Impossible de tuer le démon : %s"
-#: ../src/daemon/main.c:703
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -339,159 +350,165 @@ msgstr ""
"Le programme n'est pas conçu pour être lancé en tant que root (sauf si --"
"system est renseigné)."
-#: ../src/daemon/main.c:705
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Les privilèges root sont nécessaires."
-#: ../src/daemon/main.c:710
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start n'est pas pris en charge pour les instances système."
-#: ../src/daemon/main.c:715
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Le démon s'exécute en mode système, mais --disallow-exit n'est pas défini."
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Le démon s'exécute en mode système, mais --disallow-module-loading n'est pas "
"défini."
-#: ../src/daemon/main.c:721
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Le démon s'exécute en mode système, désactivation forcée du mode SHM."
-#: ../src/daemon/main.c:726
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Le démon s'exécute en mode système, désactivation forcée de la fermeture "
"après délai d'inactivité."
-#: ../src/daemon/main.c:753
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Ãchec lors de l'acquisition de stdio."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Ãchec du tube : %s"
-#: ../src/daemon/main.c:764
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Ãchec de fork()Â : %s"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Ãchec de read()Â : %s"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Ãchec lors du démarrage du démon."
-#: ../src/daemon/main.c:786
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Démarrage du démon réussi."
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Pulseaudio %s"
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Hôte de compilation : %s"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilation : %s"
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Exécution sur l'hôte : %s"
-#: ../src/daemon/main.c:864
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u processeurs trouvés."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "La taille de la page est de %lu octets"
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilé avec la prise en charge Valgrind : oui"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilé avec la prise en charge Valgrind : non"
-#: ../src/daemon/main.c:874
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Exécution en mode valgrind : %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Construction optimisée : oui"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Construction optimisée : non"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG défini, tous les messages d'erreur sont désactivés."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
-msgstr "FASTPATH défini, seuls les messages d'erreur fastpath ont été désactivés."
+msgstr ""
+"FASTPATH défini, seuls les messages d'erreur fastpath ont été désactivés."
-#: ../src/daemon/main.c:887
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Tous les messages d'erreur sont activés."
-#: ../src/daemon/main.c:891
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Ãchec lors de l'obtention de l'ID de la machine"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:899
+#: ../src/daemon/main.c:917
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "L'ID de la machine est %s."
+
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
-#: ../src/daemon/main.c:907
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:922
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "Ãchec de pa_pid_file_create()."
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:936
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -499,31 +516,31 @@ 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:948
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "Ãchec de pa_core_new()."
-#: ../src/daemon/main.c:1010
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Ãchec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:1015
+#: ../src/daemon/main.c:1050
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:1032
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:1038
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:1056
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Démon terminé."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -611,8 +628,8 @@ msgstr ""
" --start Démarre le démon s'il n'est pas "
"lancé\n"
" -k --kill Tue un démon en cours d'exécution\n"
-" --check Vérifie s'il existe un démon en cours "
-"d'exécution (ne retourne que le code de sortie)\n"
+" --check Vérifie s'il existe un démon en "
+"cours d'exécution (ne retourne que le code de sortie)\n"
"\n"
"OPTIONSÂ :\n"
" --system[=BOOL] Exécuter en tant qu'instance "
@@ -651,10 +668,12 @@ msgstr ""
"verbosité\n"
" -v Augmente le niveau de verbosité\n"
" --log-target={auto,syslog,stderr} Indique la cible du journal\n"
-" --log-meta[=BOOL] Inclure la position du code dans les messages ·"
-"du journal\n"
-" --log-time[=BOOL] Inclure la date dans les messages du journal\n"
-" --log-backtrace=TRAMES Inclure un traçage de la pile dans les messages du journal\n"
+" --log-meta[=BOOL] Inclure la position du code dans les "
+"messages ·du journal\n"
+" --log-time[=BOOL] Inclure la date dans les messages du "
+"journal\n"
+" --log-backtrace=TRAMES Inclure un traçage de la pile dans "
+"les messages du journal\n"
" -p, --dl-search-path=CHEMIN Définit le chemin de recherche pour "
"les objets dynamiques\n"
" partagés (extensions)\n"
@@ -682,15 +701,15 @@ msgstr ""
" -n Ne pas charger les fichiers de "
"scripts par défaut\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -698,52 +717,52 @@ msgstr ""
"--log-level requiert un paramètre de niveau de journal (soit numérique entre "
"0 et 4, soit de débogage : info, notice, warn , error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Cible du journal invalide : utilisez « syslog », « stderr » ou « auto »."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Méthode de rééchantillonnage invalide « %s »."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit requiert un paramètre booléen"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm requiert un paramètre booléen"
@@ -782,82 +801,89 @@ msgstr "Utilisation : %s\n"
msgid "Load Once: %s\n"
msgstr "Chargement unique : %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Chemin : %s\n"
# dans les lignes suivantes [%s = nom de fichier: %u = ligne dans celui-ci]
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Cible du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Niveau du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit « %s » invalide."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit n'est pas pris en charge sur cette plateforme."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format d'échantillon « %s » invalide."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Plan de canaux « %s » invalide."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments « %s » invalide."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Taille du fragment « %s » invalide."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãchec lors de l'ouverture du fichier de configuration : %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
-msgstr "Le plan de canaux spécifié par défaut a un nombre de canaux différent du nombre spécifié par défaut."
+msgstr ""
+"Le plan de canaux spécifié par défaut a un nombre de canaux différent du "
+"nombre spécifié par défaut."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -883,7 +909,9 @@ 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"
+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"
@@ -892,11 +920,15 @@ 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é"
+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"
+msgstr ""
+"La politique du système empêche PulseAudio d'acquérir un ordonnancement en "
+"temps réel"
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
@@ -1103,8 +1135,8 @@ msgid "Top Rear Right"
msgstr "Arrière droit haut"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(invalide)"
@@ -1261,198 +1293,193 @@ msgstr "%u B"
msgid "XOpenDisplay() failed"
msgstr "Ãchec de XOpenDisplay()"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Ãchec lors de l'analyse des données du cookie"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, 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:539
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "Aucun cookie chargé. Tentative de connexion sans celui-ci."
-#: ../src/pulse/context.c:669
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork()Â : %s"
-#: ../src/pulse/context.c:722
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid()Â : %s"
-#: ../src/pulse/context.c:1387
+#: ../src/pulse/context.c:1403
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Message reçu pour une extension inconnue « %s »"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Ãchec lors du vidage du flux : %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Flux de lecture vidé.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Vidage de la connexion au serveur.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain()Â : %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Ãchec de pa_stream_write()Â : %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Ãchec de pa_stream_peek()Â : %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Création du flux réussie.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "Ãchec de pa_stream_get_buffer_attr()Â : %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Mesures du tampon : maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Mesures du tampon : maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
"Utilisation de la spécification d'échantillon « %s », plan des canaux « %s ».\n"
# l'espace manquant entre %s et suspended est voulu
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Connecté au périphérique %s (%u, %ssuspendu).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Erreur du flux : %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Périphérique de flux suspendu %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Périphérique de flux repris %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Flux vide %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Flux saturé %s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Flux démarré %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Flux déplacé vers le périphérique %s (%u, %ssuspendu).%s \n"
# suspendu ou non suspendu
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "non "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Des attributs du tampon de flux ont changé. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Connection établie.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Ãchec de pa_stream_new()Â : %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Ãchec de pa_stream_connect_playback()Â : %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Ãchec de pa_stream_connect_record()Â : %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ãchec lors de la connexion : %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Ãchec lors du vidage du flux : %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Flux de lecture vidé.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Vidage de la connexion au serveur.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF obtenu.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain()Â : %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "Ãchec de read()Â : %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "Ãchec de write()Â : %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Signal obtenu, fermeture.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Ãchec lors de l'obtention de la latence : %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Durée : %0.3f s ; Latency : %0.0f µs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Ãchec de pa_stream_update_timing_info()Â : %s\n"
@@ -1460,8 +1487,8 @@ msgstr "Ãchec de pa_stream_update_timing_info()Â : %s\n"
# downmix = par ex. convertir 5 canaux en 2 canaux
# upmixer = par ex. convertir 2 canaux en 5 canaux
# https://bugzilla.redhat.com/show_bug.cgi?id=460798
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1487,8 +1514,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1511,6 +1540,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1564,7 +1598,7 @@ msgstr ""
" --process-time=OCTETS Demande le temps de traitement "
"indiqué par requête en octets.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1575,90 +1609,134 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Plan des canaux invalide « %s »\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Méthode de rééchantillonnage invalide « %s »."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Plan des canaux invalide « %s »\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Spécification de latence invalide « %s »\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Spécification de temps de traitement invalide « %s »\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Méthode de rééchantillonnage invalide « %s »."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Spécification d'échantillon invalide\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open()Â : %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2()Â : %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Trop de paramètres.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Ãchec lors de l'obtention des informations de l'échantillon : %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ãchec lors de l'ouverture du fichier audio.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Ãchec lors de l'obtention des informations de l'échantillon : %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr ""
"Le plan des canaux ne correspond pas à la spécification d'échantillon\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "enregistrement"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "lecture"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open()Â : %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2()Â : %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Trop de paramètres.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Ãchec de pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "Ãchec de io_new().\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Ãchec de pa_context_new().\n"
-#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
-#: ../src/utils/paplay.c:404
-#, c-format
-msgid "pa_context_connect() failed: %s"
+#: ../src/utils/pacat.c:1066
+#, fuzzy, c-format
+msgid "pa_context_connect() failed: %s\n"
msgstr "Ãchec de pa_context_connect() : %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "Ãchec de time_new().\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Ãchec de pa_mainloop_run().\n"
@@ -1689,8 +1767,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"AVERTISSEMENT : le serveur de son n'est pas local, suspension annulée.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT reçu, fermeture.\n"
@@ -1719,7 +1796,7 @@ msgstr ""
"connecter\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1730,34 +1807,34 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Ãchec lors de l'obtention des statistiques : %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "En cours d'utilisation : %u blocs contenant au total %s octets.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Alloué pendant l'ensemble de la durée d'exécution : %u blocs contenant au "
"total %s octets.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Taille du cache de l'échantillon : %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Ãchec lors de l'obtention des informations du serveur : %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1780,13 +1857,13 @@ msgstr ""
"Source par défaut : %s\n"
"Cookie : %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Ãchec lors de l'obtention des informations sur la destination : %s\n"
# demander à Lennart s'il s'agit de monitor of source
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1806,7 +1883,8 @@ msgid ""
"\tFlags: %s%s%s%s%s%s\n"
"\tProperties:\n"
"\t\t%s\n"
-msgstr "Destination #%u\n"
+msgstr ""
+"Destination #%u\n"
"\tÃtat : %s\n"
"\tNom : %s\n"
"\tDescription : %s\n"
@@ -1824,12 +1902,12 @@ msgstr "Destination #%u\n"
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Ãchec lors de l'obtention des informations sur la source : %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1868,20 +1946,20 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Ãchec lors de l'obtention des informations du module : %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1898,12 +1976,12 @@ msgstr ""
"\tPropriétés : \n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Ãchec lors de l'obtention des informations du client : %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1918,13 +1996,12 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
-msgstr ""
-"Impossible d'obtenir des informations sur la carte : %s\n"
+msgstr "Impossible d'obtenir des informations sur la carte : %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1941,24 +2018,24 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfils :\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tProfil actif : %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
"Ãchec lors de l'obtention des informations de l'entrée de la destination : %"
"s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1995,13 +2072,13 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
"Ãchec lors de l'obtention des informations de la sortie de la source : %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2030,7 +2107,7 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Ãchec lors de l'obtention des informations de l'échantillon : %s\n"
@@ -2038,7 +2115,7 @@ msgstr "Ãchec lors de l'obtention des informations de l'échantillon : %s\n"
# Lazy ?
# load-sample-lazy = Create a new entry in the sample cache, but don't load
# the sample immediately. The sample is loaded only when it is first used
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2069,22 +2146,21 @@ msgstr ""
"\tPropriétés :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Ãchec : %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Ãchec lors de l'envoi de l'échantillon : %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Fin prématurée du fichier\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2131,7 +2207,7 @@ msgstr ""
" -n, --client-name=NOM Définit le nom de ce client sur le "
"serveur\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2142,49 +2218,45 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Veuillez indiquer un fichier d'échantillon à charger\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Ãchec lors de l'ouverture du fichier audio.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Vous devez indiquer un nom d'échantillon à lire\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Vous devez indiquer un nom d'échantillon à supprimer\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Vous devez indiquer un index de sortie de destination et une destination\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Vous devez indiquer un index de sortie de source et une source\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Vous devez indiquer un nom de module et des paramètres.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Vous devez indiquer un index de module\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2192,26 +2264,27 @@ msgstr ""
"Vous ne pouvez pas indiquer plus d'une destination. Vous devez indiquer une "
"valeur booléenne.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-"Vous ne pouvez pas indiquer plus d'une source. Vous devez indiquer une valeur "
-"booléenne.\n"
+"Vous ne pouvez pas indiquer plus d'une source. Vous devez indiquer une "
+"valeur booléenne.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
-msgstr ""
-"Vous devez indiquer un nom/un index de carte et un nom de profil\n"
+msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Aucune commande valide indiquée.\n"
+#: ../src/utils/pactl.c:1051
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "Ãchec de pa_context_connect() : %s"
+
#: ../src/utils/pax11publish.c:61
#, c-format
msgid ""
@@ -2295,131 +2368,48 @@ msgstr "Ãchec lors du chargement des données du cookie\n"
msgid "Not yet implemented.\n"
msgstr "Pas encore implémenté.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0)Â : %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect()Â : %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Impossible de tuer le démon PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Le démon ne répond pas."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select()Â : %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read()Â : %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write()Â : %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Création du flux réussie\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Erreur du flux : %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Connexion établie.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FICHIER]\n"
-"\n"
-" -h, --help Affiche cette aide\n"
-" --version Affiche la version\n"
-"\n"
-" -v, --verbose Active le mode verbeux\n"
-"\n"
-" -s, --server=SERVEUR Le nom du serveur auquel se "
-"connecter\n"
-" -d, --device=PÃRIPHÃRIQUE Le nom de la destination à laquelle "
-"se connecter\n"
-" -n, --client-name=NOM Définit le nom de ce client sur le "
-"serveur\n"
-" --stream-name=NOM Définit le nom de ce flux sur le "
-"serveur\n"
-" --volume=VOLUME Définit le volume initial (linéaire) "
-"entre 0 et 65536\n"
-" --channel-map=PLANDESCANAUX Définit le plan des canaux à "
-"utiliser\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilé avec libpulse %s\n"
-"Lié avec libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Plan des canaux invalide\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Ãchec lors de l'ouverture du fichier « %s »\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Le plan des canaux ne correspond pas au fichier.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Utilisation de la spécification de l'échantillon « %s »\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Impossible d'accèder au verrou autonome."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:535
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2428,14 +2418,15 @@ msgid ""
"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 nous a réveillé pour lire de nouvelles données à partir du périphérique, mais il n'y "
-"avait en fait rien à écrire !\n"
-"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez rapporter ce "
-"problème aux développeurs d'ALSA."
-"Nous avons été réveillés avec le jeu POLLOUT -- cependant un snd_pcm_avail() ultérieur a "
-"retourné 0 ou une autre valeur < min_avail."
+msgstr ""
+"ALSA nous a réveillé pour lire de nouvelles données à partir du "
+"périphérique, mais il n'y avait en fait rien à écrire !\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA.Nous avons été réveillés avec "
+"le jeu POLLOUT -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une "
+"autre valeur < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:510
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2444,48 +2435,115 @@ msgid ""
"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 nous a réveillé pour lire de nouvelles données à partir du périphérique, mais il n'y "
-"avait en fait rien à lire !\n"
-"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez rapporter ce "
-"problème aux développeurs d'ALSA."
-"Nous avons été réveillés avec le jeu POLLIN -- cependant un snd_pcm_avail() ultérieur a "
-"retourné 0 ou une autre valeur < min_avail."
+msgstr ""
+"ALSA nous a réveillé pour lire de nouvelles données à partir du "
+"périphérique, mais il n'y avait en fait rien à lire !\n"
+"Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez "
+"rapporter ce problème aux développeurs d'ALSA.Nous avons été réveillés avec "
+"le jeu POLLIN -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une "
+"autre valeur < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Sortie %s + Entrée %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Sortie %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Entrée %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1864
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Ãteint"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1834
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "Lecture haute fidélité (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1849
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephonie en duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:125
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Serveur de son PulseAudio"
-#, fuzzy
-#~ msgid "Session ID is %s."
-#~ msgstr "L'ID de la machine est %s."
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Création du flux réussie\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Erreur du flux : %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Connexion établie.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FICHIER]\n"
+#~ "\n"
+#~ " -h, --help Affiche cette aide\n"
+#~ " --version Affiche la version\n"
+#~ "\n"
+#~ " -v, --verbose Active le mode verbeux\n"
+#~ "\n"
+#~ " -s, --server=SERVEUR Le nom du serveur auquel se "
+#~ "connecter\n"
+#~ " -d, --device=PÃRIPHÃRIQUE Le nom de la destination à "
+#~ "laquelle se connecter\n"
+#~ " -n, --client-name=NOM Définit le nom de ce client sur "
+#~ "le serveur\n"
+#~ " --stream-name=NOM Définit le nom de ce flux sur le "
+#~ "serveur\n"
+#~ " --volume=VOLUME Définit le volume initial "
+#~ "(linéaire) entre 0 et 65536\n"
+#~ " --channel-map=PLANDESCANAUX Définit le plan des canaux à "
+#~ "utiliser\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilé avec libpulse %s\n"
+#~ "Lié avec libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Plan des canaux invalide\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Ãchec lors de l'ouverture du fichier « %s »\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Le plan des canaux ne correspond pas au fichier.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Utilisation de la spécification de l'échantillon « %s »\n"
#, fuzzy
#~ msgid ""
diff --git a/po/gu.po b/po/gu.po
index 2a0906f..bcd5d83 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-07 14:27+0530\n"
"Last-Translator: Sweta Kothari <swkothar at redhat.com>\n"
"Language-Team: Gujarati\n"
@@ -17,51 +17,51 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "àªàª¨àª¾àª²à«àª મà«àª¨à«"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "àªàª¨àª¾àª²à«àª સà«àªà«àª°àª¿àª"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "ડિàªàª¿àªàª² સà«àªà«àª°àª¿àª (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "ડિàªàª¿àªàª² સà«àªà«àª°àª¿àª (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "àªàª¨àª¾àª²à«àª સરાàªàª¨à«àª¡ 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "àªàª¨àª¾àª²à«àª સરાàªàª¨à«àª¡ 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "àªàª¨àª¾àª²à«àª સરાàªàª¨à«àª¡ 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "àªàª¨àª¾àª²à«àª સરાàªàª¨à«àª¡ 4.2"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "àªàª¨àª¾àª²à«àª સરાàªàª¨à«àª¡ 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "àªàª¨àª¾àª²à«àª સરાàªàª¨à«àª¡ 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "àªàª¨àª¾àª²à«àª સરાàªàª¨à«àª¡ 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +73,7 @@ msgstr ""
"ALSA ડà«àª°àª¾àªàªµàª° '%s' માઠમà«àªà«àªàª¾àªà« ઠàªà«àª² àªà«àªµà« àªà«. ALSA ડà«àªµàª²à«àªªàª°à«àª®àª¾àª ઠસમસà«àª¯àª¾àª¨à« મહà«àª°àª¬àª¾àª¨à« àªàª°à«àª¨à« "
"àª
હà«àªµàª¾àª² àªàª°à«."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -86,7 +86,7 @@ msgstr ""
"ALSA ડà«àª°àª¾àªàªµàª° '%s' માઠમà«àªà«àªàª¾àªà« ઠàªà«àª² àªà«àªµà« àªà«. ALSA ડà«àªµàª²à«àªªàª°à«àª®àª¾àª ઠસમસà«àª¯àª¾àª¨à« મહà«àª°àª¬àª¾àª¨à« àªàª°à«àª¨à« "
"àª
હà«àªµàª¾àª² àªàª°à«."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -99,11 +99,11 @@ msgstr ""
"ALSA ડà«àª°àª¾àªàªµàª° '%s' માઠમà«àªà«àªàª¾àªà« ઠàªà«àª² àªà«àªµà« àªà«. ALSA ડà«àªµàª²à«àªªàª°à«àª®àª¾àª ઠસમસà«àª¯àª¾àª¨à« મહà«àª°àª¬àª¾àª¨à« àªàª°à«àª¨à« "
"àª
હà«àªµàª¾àª² àªàª°à«."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "àªàªàª¤àª°àª¿àª àªàª¡àª¿àª¯à«"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "મà«àª¡à«àª®"
@@ -173,104 +173,104 @@ msgstr "auth મà«àª³àªµàª¾ શàªàª¾àª¤à« નથà«: %s"
msgid "PolicyKit responded with '%s'"
msgstr "'%s' સાથૠPolicyKit ઠપà«àª°àª¤à«àª¯à«àª¤à«àª¤àª° àªàªªà«àª² àªà«"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "સàªàªà«àª¤ %s મળà«àª¯à«."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "બહાર નà«àªàª³à« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "વપરાશàªàª°à«àª¤àª¾ '%s' નૠશà«àª§àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "àªà«àª¥ '%s' નૠશà«àª§àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "વપરાશàªàª°à«àª¤àª¾ '%s' (UID %lu) àª
નૠàªà«àª¥ '%s' (GID %lu) શà«àª§àª¾àª¯à«."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "વપરાશàªàª°à«àª¤àª¾ '%s' àª
નૠàªà«àª¥ '%s' નૠGID બàªàª§àª¬à«àª¸àª¤à« નથà«."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "વપરાશàªàª°à«àª¤àª¾àª '%s' નૠàªàª° ડિરà«àªà«àªàª°à« '%s' નથà«, àª
વàªàª£à« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' નૠબનાવવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "àªà«àª¥ યાદà«àª¨à« બદલવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID નૠબદલવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID નૠબદલવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "સફળતાપà«àª°à«àªµàª àªà«àª¡à« દà«àª§à«àª² રà«àª àª
ધિàªàª¾àª°à«."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "ઠપà«àª²à«àªàª«à«àª°à«àª® પર બિનàªàª§àª¾àª°àªà«àª¤ સિસà«àªàª® વિશાળ સà«àª¥àª¿àª¤àª¿."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "àªàª¦à«àª¶ વાàªà«àª¯àª¨à« પદàªà«àªà«àª¦àª¨ àªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "àªàªªàª£à« àªà«àª¥ '%s' માઠàªà«àª, high-priority àªà«àª વવાનૠપરવાનàªà« àªàªªà« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "àªàªªàª£à« àªà«àª¥ '%s' માઠàªà«àª, સાàªàª¾ સમયૠàªà«àª વવાનૠપરવાનàªà« àªàªªà« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit àªàªªàª£àª¨à« acquire-high-priority àª
ધિàªàª¾àª°àª¨à« મàªàªà«àª°à« àªàªªà« àªà«."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ઠacquire-high-priority àª
ધિàªàª¾àª°àª¨à« ફરà«àª¥à« શરૠàªàª°à« àªà«."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit ઠacquire-real-time àª
ધિàªàª¾àª°àª¨à« મàªàªà«àª°à« àªàªªà« àªà«."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ઠacquire-real-time àª
ધિàªàª¾àª°àª¨à« ફરૠશરૠàªàª°à« àªà«."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -290,206 +290,206 @@ msgstr ""
"àª
ધિàªàª¾àª°à«àª¨à« મà«àª³àªµà«, àª
થવા '%s' નાઠસàªà«àª¯ બનà«, àª
થવા ઠવપરાશàªàª°à«àª¤àª¾ માàªà« RLIMIT_NICE/"
"RLIMIT_RTPRIO સà«àª¤à«àª°à«àª¤ મરà«àª¯àª¾àª¦àª¾àªàª¨à« વધારà«."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"High-priority àªà«àª વવાનà«àª રà«àªªàª°à«àªàª¾àªàªàª¨àª®àª¾àª સàªà«àª°àª¿àª¯ થયà«àª² àªà« પરàªàª¤à« પà«àª²àª¿àª¸à« દà«àª¦àª¾àª°àª¾ પરવાનàªà« àªàªªà«àª² નથà«."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "સફળતાપà«àª°à«àªµàª વધારà«àª² RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE નૠàªà«àª¡à« રહà«àª¯àª¾ àªà«"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Real-time àªà«àª વવાનà«àª ઠરà«àªªàª°à«àªàª¾àªàªàª¨àª®àª¾àª સàªà«àª°àª¿àª¯ થયà«àª² àªà« પરàªàª¤à« પà«àª²àª¿àª¸à« દà«àª¦àª¾àª°àª¾ પરવાનàªà« àªàªªà«àª² નથà«."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ડિમન àªàª¾àª²à« રહà«àª¯à« નથà«"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u તરà«àªà« ડિમન àªàª¾àª²à« રહà«àª¯à« àªà«"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ડિમનનૠમારવાનà«àª નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"ઠપà«àª°àªà«àª°àª¿àª¯àª¾àª¨à« રà«àª તરà«àªà« àªàª²àª¾àªµàªµàª¾ માàªà« વિàªàª¾àª° થયà«àª² નથૠ(નહિઠતૠ--system ઠસà«àªªàª·à«àª થયà«àª² àªà«)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "રà«àª àª
ધિàªàª¾àª°à« àªàª°à«àª°à« àªà«."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start ઠસિસà«àªàª® àªàª¦àª¾àª¹àª°àª£à« માàªà« àªàª§àª¾àª°àªà«àª¤ નથà«."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, પરàªàª¤à« --disallow-exit સà«àª¯à«àªàª¿àª¤ નથà«!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, પરàªàª¤à« --disallow-module-loading ઠસà«àª¯à«àªàª¿àª¤ નથà«!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, SHM સà«àª¥àª¿àª¤àª¿àª¨à« દબાણપà«àª°à«àªµàª નિષà«àªà«àª°àª¿àª¯ àªàª°à« રહà«àª¯àª¾ àªà«!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, બહાર નà«àªàª³àªµàª¨àª¾àª નિષà«àªàª¾àª°à«àª¯ સમયનૠદબાણપà«àª°à«àªµàª નિષà«àªà«àª°àª¿àª¯ àªàª°à« "
"રહà«àª¯àª¾ àªà«!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio નૠમà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "પાàªàªª નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ડિમન શરà«àªàª¤ નિષà«àª«àª³."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "ડિમન શરà«àªàª¤ àªàª°àªµà« સફળ àªà«."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "ઠPulseAudio %s àªà«"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "àªàª®à«àªªàª¾àªàª²à«àª¶àª¨ યàªàª®àª¾àª¨: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "àªàª®à«àªªàª¾àªàª²à«àª¶àª¨ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "યàªàª®àª¾àª¨ પર àªàª¾àª²à« રહà«àª¯à« àªà«: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs શà«àª§àª¾àª¯à«."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "પાનાàªàª¨à« માપ %lu બાàªàªà« àªà«"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind àªàª§àª¾àª° સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«: હા"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind àªàª§àª¾àª° સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«: ના"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "શà«àª°à«àª·à«àª થયà«àª² બિલà«àª¡: હા"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "શà«àª°à«àª·à«àª થયà«àª² બિલà«àª¡: ના"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG વà«àª¯àª¾àªà«àª¯àª¾àª¯àª¿àª¤ થયà«àª² àªà«, બધા હàªà« નિષà«àªà«àª°àª¿àª¯ થયà«àª² àªà«."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH વà«àª¯àª¾àªà«àª¯àª¾àª¯àª¿àª¤ થયà«àª² àªà«, ફàªà«àª¤ àªàª¡àªªà« પાથનાઠહàªà« નિષà«àªà«àª°àª¿àª¯ થયà«àª² àªà«."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "બધા હàªà« સàªà«àª°àª¿àª¯ થયà«àª² àªà«."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "મશà«àª¨ ID નૠમà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "મશà«àª¨ ID %s àªà«."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "મશà«àª¨ ID %s àªà«."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "રનàªàª¾àªàª® ડિરà«àªà«àªàª°à« %s નૠવાપરૠરહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "સà«àª¥àª¿àª¤àª¿ ડિરà«àªà«àªàª°à« %s નૠવાપરૠરહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() નિષà«àª«àª³."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "તાàªà« high-resolution àªàª¾àªàª®àª°à« àªàªªàª²à«àª¬àª§ àªà«! બà«àª¨ àªàªªà«àªàª¾àªàª!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -497,31 +497,31 @@ msgstr ""
"મિતà«àª°, તમારૠàªàª°à«àª¨àª²àª®àª¾àª àªàª¡àª¬àª¡ àªà«! રસà«àªàª¯àª¾àª¨à«àª àªàªà« àªàª²àª¾àª®àª£ ઠસàªà«àª°àª¿àª¯ થયà«àª² high-resolution "
"àªàª¾àªàª®àª°à« સાથૠLinux નà«àª àªà«!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() નિષà«àª«àª³."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "ડિમનનૠશરૠàªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "àªà«àªàªªàª£ લà«àª¡ થયà«àª² મà«àª¡à«àª¯à«àª²à« વàªàª° ડિમનનૠશરૠàªàª°à«, àªàª¾àª® àªàª°àªµàª¾ માàªà« ફરૠશરૠàªàª°à« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ડિમન પારàªàª àªàª°àªµàª¾àª¨à«àª સમાપà«àª¤ àªà«."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ડિમનનૠબàªàª§ àªàª°àªµàª¾àª¨à«àª પà«àª°àª¾àª°àªàª થયà«àª² àªà«."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "ડિમનનૠàª
àªàª¤ àªàªµà«àª² àªà«."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -663,15 +663,15 @@ msgstr ""
"\n"
" -n મà«àª³àªà«àª¤ સà«àªà«àª°àª¿àªªà«àª ફાàªàª²àª¨à« લà«àª¡ àªàª°à« નહિàª\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -679,52 +679,52 @@ msgstr ""
"--log-level ઠલà«àª સà«àª¤àª° દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà« (àªà«àª¯àª¾àªàª¤à« સà«àª®àª¾ 0..4 માઠપà«àª°à«àª£àª¸àªàªà«àª¯àª¾ àªà« àª
થવા "
"ડિબàª, àªàª¾àª£àªàª¾àª°à«, સà«àªàª¨àª¾, àªà«àª¤àªµàª£à«, àªà«àª² નà«àª àªàª)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "àª
યà«àªà«àª¯ લà«àª લàªà«àª·à«àª¯: àªà«àª¯àª¾àªàª¤à« 'syslog', 'stderr' àª
થવા 'auto' નૠવાપરà«."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "àª
યà«àªà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm ઠબà«àª²àª¿àª¯àª¨ દલà«àª²àª¨à« àªàªà«àªàª¾ રાàªà« àªà«"
@@ -763,77 +763,82 @@ msgstr "વપરાશ: %s\n"
msgid "Load Once: %s\n"
msgstr "àªàªàªµàª¾àª° લà«àª¡ àªàª°à«: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "પાથ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ લà«àª લàªà«àª·à«àª¯ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ લà«àª સà«àª¤àª° '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ઠઠપà«àª²à«àªàª«à«àª°à«àª® પર àªàª§àª¾àª°àªà«àª¤ નથà«."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ નમà«àª¨àª¾ બàªàª§àª¾àª°àª£ '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ નમà«àª¨àª¾ દર '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ નમà«àª¨àª¾ àªà«àª¨àª²à« '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ àªà«àª¨àª² મà«àªª '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ ફà«àª°à«àªàª®à«àª¨à«àªà«àª¨àª¾àª નàªàª¬àª° '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ ફà«àª°à«àªàª®à«àª¨à«àª માપ '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ સારૠસà«àª¤àª° '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "રà«àªªàª°à«àªàª¾àªàªàª¨ ફાàªàª²àª¨à« àªà«àª²àªµàª¾àª¨à«àª નિષà«àª«àª³: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1085,8 +1090,8 @@ msgid "Top Rear Right"
msgstr "àªàªªàª° રિàª
ર àªàª®àª£à«"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(àª
યà«àªà«àª¯)"
@@ -1271,173 +1276,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "àª
àªà«àªàª¾àª¤ àªàªà«àª¸àªà«àª¨à«àª¶àª¨ '%s' માàªà« મળà«àª² સàªàª¦à«àª¶"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "સà«àªà«àª°à«àª®àª¨à« નિàªàª¾àª² àªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "પà«àª²à«àª¬à«àª સà«àªà«àª°à«àª® નૠનિàªàª¾àª² àªàª°à«àª² àªà«.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "સરà«àªµàª°àª®àª¾àª àªà«àª¡àª¾àª£àª¨à« નિàªàª¾àª² àªàª°à« રહà«àª¯àª¾ àªà«.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "સà«àªà«àª°à«àª® સફળતાપà«àª°à«àªµàª બનાવà«àª² àªà«.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "બફર મà«àªà«àª°àª¿àªà«àª¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "બફર મà«àªà«àª°àª¿àªà«àª¸: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "નમà«àª¨à« spec '%s' નૠવાપરૠરહà«àª¯àª¾ àªà«, àªà«àª¨àª² મà«àªª '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "àªàªªàªàª°àª£ %s (%u, %ssuspended) સાથૠàªà«àª¡àª¾àª¯à«àª² àªà«.\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "સà«àªà«àª°à«àª® àªà«àª²: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "સà«àªà«àª°à«àª® àªàªªàªàª°àª£ નૠથà«àª¡àª¾ સમય માàªà« બàªàª§ રાàªà«àª² àªà«.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "સà«àªà«àª°à«àª® àªàªªàªàª°àª£àª¨à« ફરૠશરૠàªàª°à«àª² àªà«.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "સà«àªà«àª°à«àª® àªàª²àª¾àªµàªµàª¾ હà«àª ળ àªà«.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "સà«àªà«àª°à«àª® àªàªªàª° àªàª¾àª²à« àªà«.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "સà«àªà«àª°à«àª® શરૠથયà«àª² àªà«.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "સà«àªà«àª°à«àª® ઠàªàªªàªàª°àª£ %s (%u, %ssuspended) માઠàªàª¸à«àª¡à«àª² àªà«.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "નથૠ"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "સà«àªà«àª°à«àª® બફર àªà«àª£àª§àª°à«àª®à« બદલાયà«àª² àªà«.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "àªà«àª¡àª¾àª£ સà«àª¥àª¾àªªàª¿àª¤ થયà«àª² àªà«.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "àªà«àª¡àª¾àª£ નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "સà«àªà«àª°à«àª®àª¨à« નિàªàª¾àª² àªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "પà«àª²à«àª¬à«àª સà«àªà«àª°à«àª® નૠનિàªàª¾àª² àªàª°à«àª² àªà«.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "સરà«àªµàª°àª®àª¾àª àªà«àª¡àª¾àª£àª¨à« નિàªàª¾àª² àªàª°à« રહà«àª¯àª¾ àªà«.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF મળà«àª¯à«.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "સàªàªà«àª¤ મળà«àª¯à«àª, બહાર નà«àªàª³à« રહà«àª¯àª¾ àªà«.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "àªà«àªªà«àª¤àª¤àª¾ મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Time: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() નિષà«àª«àª³: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1463,8 +1463,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1487,6 +1489,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1537,7 +1544,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1548,88 +1555,133 @@ msgstr ""
"libpulse %s સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«\n"
"libpulse %s સાથૠàªàª¡à« થયà«àª² àªà«\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "àª
યà«àªà«àª¯ àªà«àª¨àª² મà«àªª '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "àª
યà«àªà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "àª
યà«àªà«àª¯ àªà«àª¨àª² મà«àªª '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "àª
યà«àªà«àª¯ àªà«àªªà«àª¤àª¤àª¾ સà«àªªàª·à«àªà«àªàª°àª£ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "àª
યà«àªà«àª¯ પà«àª°àªà«àª°àª¿àª¯àª¾ સમય સà«àªªàª·à«àªà«àªàª°àª£ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "àª
યà«àªà«àª¯ resample પદà«àª¦àª¤àª¿ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "àª
યà«àªà«àª¯ નમà«àª¨àª¾ સà«àªªàª·à«àªà«àªàª°àª£\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "àªàª£à« બધૠદલà«àª²à« àªà«.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "નમà«àª¨àª¾ àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "સાàªàª¨à«àª¡ ફાàªàª²àª¨à« àªà«àª²àªµàª¾àª®àª¾àª નિષà«àª«àª³.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "નમà«àª¨àª¾ àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "àªà«àª¨àª² મà«àªª ઠસà«àªªàª·à«àªà«àªàª°àª£ નમà«àª¨àª¾àª¨à« બàªàª§àª¬à«àª¸àª¤à« નથà«\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "નમà«àª¨àª¾ સà«àªªàª·à«àªà«àªàª°àª£ '%s' સાથૠ%s સà«àªà«àª°à«àª®àª¨à« àªà«àª²à« રહà«àª¯àª¾ àªà«.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "રà«àªà«àª°à«àª¡ àªàª°à« રહà«àª¯àª¾ àªà«"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "પà«àª²à«àª¬à«àª"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "àªàª£à« બધૠદલà«àª²à« àªà«.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() નિષà«àª«àª³: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() નિષà«àª«àª³.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() નિષà«àª«àª³.\n"
@@ -1659,8 +1711,7 @@ msgstr "ફરૠશરૠàªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³àª¤àª¾: %s\n
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "àªà«àª¤àªµàª£à«: સાàªàª¨à«àª¡ સરà«àªµàª° ઠસà«àª¥àª¾àª¨àª¿àª નથà«, થà«àª¡àª¾ સમય માàªà« બàªàª§ àªàª°àªµàª¾àª®àª¾àª àªàªµà«àª¯à« નથà«.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT મળà«àª¯à«, બહાર નà«àªàª³à« રહà«àª¯àª¾ àªà«.\n"
@@ -1688,7 +1739,7 @@ msgstr ""
" -s, --server=SERVER àªà«àª¡àª¾àªµàªµàª¾ માàªà« સરà«àªµàª°àª¨à«àª નામ\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1699,32 +1750,32 @@ msgstr ""
"libpulse %s સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«\n"
"libpulse %s સાથૠàªàª¡à« થયà«àª² àªà«\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "પરિસà«àª¥àª¿àª¤àª¿àªàª¨à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "હાલમાઠવપરાશમાઠàªà«: %u બà«àª²à«àªà« %s àªà«àª² બાàªàªà«àª¨à« સમાવૠરહà«àª¯àª¾ àªà«.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "àªàªà« àªà«àªàª¦àªà« દરમà«àª¯àª¾àª¨ ફાળવà«àª² àªà«: %u બà«àª²à«àªà« %s àªà«àª² બાàªàªà«àª¨à« સમાવૠરહà«àª¯àª¾ àªà«.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "નમà«àª¨àª¾ àªà«àª¶ માપ: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "સરà«àªµàª° àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³àª¤àª¾: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1747,12 +1798,12 @@ msgstr ""
"મà«àª³àªà«àª¤ સà«àª¤à«àª°à«àª¤: %s\n"
"àªà«àªà«: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "સિàªàª àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1791,12 +1842,12 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "સà«àª¤à«àª°à«àª¤ àªàª¾àª£àªàª¾àª°à«àª¨à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1835,20 +1886,20 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "મà«àª¡à«àª¯à«àª²àª¨à« àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1865,12 +1916,12 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "àªà«àª²àª¾àªàª¨à«àª àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1885,12 +1936,12 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "àªàª¾àª°à«àª¡ àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1907,22 +1958,22 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tરà«àªªàª°à«àªàª¾àª:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tસàªà«àª°àª¿àª¯ રà«àªªàª°à«àªàª¾: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "સિàªàª àªàª¨àªªà«àª àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³àª¤àª¾: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1959,12 +2010,12 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "સà«àª¤à«àª°à«àª¤ àªàªàªàªªà«àª àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1993,12 +2044,12 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "નમà«àª¨àª¾ àªàª¾àª£àªàª¾àª°à« મà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2029,22 +2080,21 @@ msgstr ""
"\tàªà«àª£àª§àª°à«àª®à«:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "નિષà«àª«àª³àª¤àª¾: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "નમà«àª¨àª¾àª¨à« àª
પલà«àª¡ àªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "ફાàªàª²àª¨à« નિયત સમય પહà«àª²àª¾ àª
àªàª¤\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2089,7 +2139,7 @@ msgstr ""
" -s, --server=SERVER àªà«àª¡àª¾àªµàª¾ માàªà« સરà«àªµàª° નà«àª નામ\n"
" -n, --client-name=NAME સરà«àªµàª° પર ઠàªà«àª²àª¾àªàª¨à«àªàª¨à« àªà«àªµà« રà«àª¤à« àªà«àª² àªàª°àª¶à«\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2100,73 +2150,66 @@ msgstr ""
"libpulse %s સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«\n"
"libpulse %s સાથૠàªàª¡à« થયà«àª² àªà«\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "મહà«àª°àª¬àª¾àª¨à« àªàª°à«àª¨à« લà«àª¡ àªàª°àªµàª¾ માàªà« નમà«àª¨àª¾ ફાàªàª²àª¨à« સà«àªªàª·à«àª àªàª°à«\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "સાàªàª¨à«àª¡ ફાàªàª²àª¨à« àªà«àª²àªµàª¾àª®àª¾àª નિષà«àª«àª³.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "નમà«àª¨àª¾ સà«àªªàª·à«àªà«àªàª°àª£ '%s' સાથૠ%s સà«àªà«àª°à«àª®àª¨à« àªà«àª²à« રહà«àª¯àª¾ àªà«.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "વàªàª¾àª¡àªµàª¾ માàªà« તમારૠનમà«àª¨àª¾ નામનૠસà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "દà«àª° àªàª°àªµàª¾ માàªà« તમારૠનમà«àª¨àª¾ નામનૠસà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "સિàªàª àªàª¨àªªà«àª àª
નà«àªà«àª°àª®àª£àª¿àªàª¾ àª
નૠસિàªàªàª¨à« તમારૠસà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "તમારૠસà«àª¤à«àª°à«àª¤ àªàªàªàªªà«àª àª
નà«àªà«àª°àª®àª£àª¿àªàª¾ àª
નૠસà«àª¤à«àª°à«àª¤àª¨à« સà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "તમારૠમà«àª¡à«àª¯à«àª² નામ àª
નૠદલà«àª²à«àª¨à« સà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "તમારૠમà«àª¡à«àª¯à«àª² àª
નà«àªà«àª°àª®àª£àª¿àªàª¾àª¨à« સà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"તમૠàªàª સિàªàª àªàª°àª¤àª¾ વધારૠસà«àªªàª·à«àª àªàª°à« શàªàª¶à« નહિàª. તમારૠબà«àª²àª¿àª¯àª¨ àªàª¿àªàª®àª¤àª¨à« સà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"તમૠàªàª સà«àª¤à«àª°à«àª¤ àªàª°àª¤àª¾ વધારૠસà«àªªàª·à«àª àªàª°à« શàªàª¶à« નહિàª. તમારૠબà«àª²àª¿àª¯àª¨ àªàª¿àªàª®àª¤àª¨à« સà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "તમારૠàªàª¾àª°à«àª¡ નામ/àª
નà«àªà«àª°àª®àª£àª¿àªàª¾ àª
નૠરà«àªªàª°à«àªàª¾ નામનૠસà«àªªàª·à«àª àªàª°àªµà« ઠપડશà«\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "યà«àªà«àª¯ àªàª¦à«àª¶ સà«àªªàª·à«àª થયà«àª² નથà«.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() નિષà«àª«àª³: %s"
@@ -2250,126 +2293,48 @@ msgstr "àªà«àªà« માહિતà«àª¨à« લà«àª¡ àªàª°àªµàª¾àª®àª¾àª
msgid "Not yet implemented.\n"
msgstr "હàªà« àª
મલà«àªàª°àª£ થયà«àª² નથà«.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ડિમનનૠમારવામાઠનિષà«àª«àª³."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ડિમન ઠàªàªµàª¾àª¬ àªàªªàª¤à« નથà«."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "સà«àªà«àª°à«àª® સફળતાપà«àª°à«àªµàª બનાવà«àª² àªà«\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "સà«àªà«àª°à«àª® àªà«àª²: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "àªà«àª¡àª¾àª£ સà«àª¥àª¾àªªàª¿àª¤ થયà«àª² àªà«.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help ઠમદદનૠબતાવà«\n"
-" --version àªàªµà«àª¤à«àª¤àª¿àª¨à« બતાવà«\n"
-"\n"
-" -v, --verbose વરà«àª¬à«àª¸ àªà«àª°àª¿àª¯àª¾àª¨à« સàªà«àª°àª¿àª¯ àªàª°à«\n"
-"\n"
-" -s, --server=SERVER àªà«àª¡àª¾àªµàª¾ માàªà« સરà«àªµàª°àª¨à«àª નામ\n"
-" -d, --device=DEVICE àªà«àª¡àª¾àªµàª¾ માàªà« સિàªàªàª¨à«àª નામ\n"
-" -n, --client-name=NAME સરà«àªµàª° પર ઠàªà«àª²àª¾àªàª¨à«àªàª¨à« àªà«àªµà« રà«àª¤à« àªà«àª² àªàª°àª¶à«\n"
-" --stream-name=NAME સરà«àªµàª° પર ઠસà«àªà«àª°à«àª®àª¨à« àªà«àªµà« રà«àª¤à« àªà«àª² àªàª°àª¶à«\n"
-" --volume=VOLUME સà«àª®àª¾ 0...65536 માઠપà«àª°àª¾àª°àªàªàª¨àª¾àª (àªàª સરàªàª¾) "
-"વà«àª²à«àª¯à«àª®àª¨à« સà«àªªàª·à«àª àªàª°à«\n"
-" --channel-map=CHANNELMAP વાપરવા માàªà« àªà«àª¨àª² મà«àªªàª¨à« સà«àª¯à«àªàª¿àª¤ àªàª°à«\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse %s સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«\n"
-"libpulse %s સાથૠàªàª¡à« થયà«àª² àªà«\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "àª
યà«àªà«àª¯ àªà«àª¨àª² મà«àªª\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ફાàªàª² '%s' àªà«àª²àªµàª¾àª®àª¾àª નિષà«àª«àª³\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "àªà«àª¨àª² મà«àªª ફાàªàª² સાથૠબàªàª§àª¬à«àª¸àª¤à« નથà«.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "નમà«àª¨àª¾ spec '%s' નૠવાપરૠરહà«àª¯àª¾ àªà«\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn તાળાનૠદાàªàª² àªàª°à« શàªàª¾àª¤à« નથà«."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2386,7 +2351,7 @@ msgstr ""
"POLLOUT સà«àª¯à«àªàª¨ સાથૠàªàªªàª£à« àªàª¾àªà«àª² હતા -- àªàª¤àª¾àªàªªàª£ ના પàªà«àª¨à«àª snd_pcm_avail() નૠ0 પાàªà« મળૠ"
"àªà« àª
થવા બà«àªà« àªàª¿àªàª®àª¤ < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2403,34 +2368,101 @@ msgstr ""
"POLLOUT સà«àª¯à«àªàª¨ સાથૠàªàªªàª£à« àªàª¾àªà«àª² હતા -- àªàª¤àª¾àªàªªàª£ ના પàªà«àª¨à«àª snd_pcm_avail() નૠ0 પાàªà« મળૠ"
"àªà« àª
થવા બà«àªà« àªàª¿àªàª®àª¤ < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "àªàªàªàªªà«àª %s + àªàª¨àªªà«àª %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "àªàªàªàªªà«àª %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "àªàª¨àªªà«àª %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "બàªàª§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio સાàªàª¨à«àª¡ સરà«àªµàª°"
+
+#~ msgid "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/it.po b/po/it.po
index 2781939..a54f3ea 100644
--- a/po/it.po
+++ b/po/it.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-20 22:34+0200\n"
"Last-Translator: mario_santagiuliana <mario at marionline.it>\n"
"Language-Team: Italian <fedora-trans-it at redhat.com>\n"
@@ -19,51 +19,51 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Mono analogico"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Stereo analogico"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Stereo digitale (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Stereo digitale (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Surround analogico 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Surround digitale 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Surround analogico 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Surround analogico 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Surround analogico 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Surround digitale 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Surround analogico 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -75,7 +75,7 @@ msgstr ""
"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +87,7 @@ msgstr ""
"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +100,11 @@ msgstr ""
"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
"questo problema agli sviluppatori ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Audio interno"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -174,105 +174,105 @@ msgstr "Impossibile ottenere l'autorizzazione: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ha risposto con \"%s\""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Ottenuto il segnale %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Uscita."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ricerca dell'utente \"%s\" non riuscita."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ricerca del gruppo \"%s\" non riuscita."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Trovato l'utente \"%s\" (UID %lu) e il gruppo \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "Il GID dell'utente \"%s\" e del gruppo \"%s\" non corrispondono."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "La directory home dell'utente \"%s\" non è \"%s\", ignorato."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Creazione di \"%s\" non riuscita: %s"
# group list ????
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Cambio dell'elenco di gruppo non riuscito: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Cambio di GID non riuscito: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Cambio di UID non riuscito: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Privilegi di root abbandonati con successo."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Modalità \"system wide\" non supportata su questa piattaforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Analisi della riga di comando non riuscita."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling high-priority."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling real-time."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority assegnati da PolicyKit."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Privilegi acquire-real-time assegnati da PolicyKit."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Privilegi acquire-real-time rifiutati da PolicyKit."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -293,49 +293,49 @@ msgstr ""
"PolicyKit appropriati, diventare un membro di «%s» oppure incrementare i "
"limiti RLIMIT_NICE/RLIMIT_RTPRIO della risorsa per questo utente."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Scheduling high-priority abilitato nella configurazione, ma non ammesso "
"dalla politica."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Incremento di RLIMIT_RTPRIO riuscito"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO non riuscito: %s"
# abbandono??
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abbandono del CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Scheduling real-time abilitato nella configurazione, ma non ammesso dalla "
"politica."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Demone non in esecuzione"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demone in esecuzione con PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Terminazione del demone non riuscita: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -343,168 +343,168 @@ msgstr ""
"Questo programma non è pensato per essere eseguito come root (a meno di "
"specificare --system)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Richiesti privilegi di root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start non supportato per le istanze di sistema."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "In esecuzione in modalità sistema, ma --disallow-exit non impostato."
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"In esecuzione in modalità sistema, ma --disallow-module-loading non "
"impostato."
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"In esecuzione in modalità sistema, disabilitata in modo forzoso la modalità "
"SHM."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"In esecuzione in modalità sistema, disabilitato in modo forzoso il tempo di "
"uscita per inattività ."
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Acquisizione di STDIO non riuscita."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe non riuscita: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() non riuscita: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() non riuscita: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Avvio del demone non riuscito."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Avvio del demone riuscito."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Questo è PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host di compilazione: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS di compilazione: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "In esecuzione sull'host: %s"
# evviva il rispetto della l10n!!!
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Trovate %u CPU."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "La dimensione di pagina è %lu byte"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilato con supporto a Valgrind: sì"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilato con supporto a Valgrind: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "In esecuzione in modalità valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Build ottimizzata: sì"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Build ottimizzata: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definito, tutte le dichiarazioni sono disabilitate."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH definito, solo le dichiarazioni veloci di path sono disabilitate."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Tutte le dichiarazioni sono abilitate."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Recupero dell'ID della macchina non riuscito"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "In uso directory di runtime %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Disponibili timer high-resolution freschi freschi! Buon appetito!"
# $REPEAT_PREVIOUS_COMMENT_HERE
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -512,32 +512,32 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Avvio del demone senza alcun modulo caricato, rifiuta di lavorare."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Demone terminato."
# mamma mia che impressione
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -709,15 +709,15 @@ msgstr ""
" -n Non carica il file script "
"predefinito\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -726,54 +726,54 @@ msgstr ""
"nell'intervallo numerico 0..4 oppure uno tra debug, info, notice, warn, "
"error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Destinazione del registro non valida: usare \"syslog\", \"stderr\" o \"auto"
"\"."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit richiede un argomento booleano"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm richiede un argomento booleano"
@@ -813,78 +813,83 @@ msgstr "Uso: %s\n"
msgid "Load Once: %s\n"
msgstr "Caricato una sola volta: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Percorso: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destinazione di registro \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Livello di registro \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit non supportato su questa piattaforma."
# o campionamento?? ma campionamento non è sampling?
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato di campionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Frequenza di campionamento '%s' non valida."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mappa del canale \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Numero di frammenti \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1144,8 +1149,8 @@ msgid "Top Rear Right"
msgstr "Superiore posteriore destro"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(non valido)"
@@ -1330,176 +1335,171 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Svuotamento dello stream non riuscito: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Stream di riproduzione svuotato.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Svuotamento della connessione sul server.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() non riuscita: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() non riuscita: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Creazione dello stream riuscita.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() non riuscita: %s\n"
# maxlength, fragsize e gli altri non so se vanno tradotti...
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metriche del buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
# maxlength e fragsize non so se vanno tradotti...
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metriche del buffer: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "In uso specifica di campionamento \"%s\", mappa di canali \"%s\".\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Connesso al device %s (%u, %ssospeso).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Errore di stream: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Device stream sospeso.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Device stream ripristinato.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Underrun dello stream.%s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Overrun dello stream.%s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Stream avviato.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Stream spostato sul device %s (%u, %ssospeso).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "non "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Attributi del buffer di stream cambiati.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Connessione stabilita.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() non riuscita: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() non riuscita: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() non riuscita: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Connessione non riuscita: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Svuotamento dello stream non riuscito: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Stream di riproduzione svuotato.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Svuotamento della connessione sul server.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Ricevuto EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() non riuscita: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() non riuscita: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Ricevuto il segnale, uscita.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Recupero della latenza non riuscito: %s\n"
# dubbio: tempo o durata??
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tempo: %0.3f sec; Latenza: %0.0f microsec. \\r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() non riuscita: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1525,8 +1525,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1549,6 +1551,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [OPZIONI]\n"
"\n"
@@ -1611,7 +1618,7 @@ msgstr ""
"per\n"
" richiesta specificato in byte.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1622,89 +1629,134 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mappa di canali \"%s\" non valida\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Metodo di ricampionamento \"%s\" non valido."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mappa di canali \"%s\" non valida\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Specifica di latenza \"%s\" non valida\n"
# esecuzione???
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Specifica di tempo di elaborazione \"%s\" non valida\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Metodo di ricampionamento \"%s\" non valido."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Specifica di campionamento non valida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Troppi argomenti.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Apertura del file audio non riuscita.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "La mappa di canali non corrisponde alla specifica di campionamento\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "registrazione"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "riproduzione"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Troppi argomenti.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() non riuscita.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() non riuscita.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() non riuscita.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() non riuscita: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() non riuscita.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() non riuscita.\n"
@@ -1735,8 +1787,7 @@ msgstr "Ripristino non riuscito: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ATTENZIONE: server audio non locale, impossibile sospendere.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Ricevuto SIGINT, in uscita.\n"
@@ -1765,7 +1816,7 @@ msgstr ""
"connettersi\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1776,34 +1827,34 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Recupero delle statistiche non riuscito: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Attualmente in uso: %u blocchi contenenti %s byte in totale.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Allocati durante l'intera esecuzione: %u blocchi contenenti %s byte in "
"totale.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Dimensione della cache dei campioni: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Recupero delle informazioni del server non riuscito: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1826,7 +1877,7 @@ msgstr ""
"Sorgente predefinita: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Recupero delle informazioni del sink non riuscito: %s\n"
@@ -1834,7 +1885,7 @@ msgstr "Recupero delle informazioni del sink non riuscito: %s\n"
# nel relativo messaggio per il source
# c'è "monitor of sink", quindi assumo che
# qui dovesse essere "monitor of source"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1873,12 +1924,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Recupero delle informazioni della sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1917,20 +1968,20 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "N/D"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Recupero delle informazioni del modulo non riuscito: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1947,12 +1998,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Recupero delle informazioni del client non riuscito: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1967,12 +2018,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Recupero delle informazioni della scheda non riuscito: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1989,12 +2040,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfili:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tProfilo attivo: %s\n"
@@ -2003,13 +2054,13 @@ msgstr "\tProfilo attivo: %s\n"
# A stream that is connected to an output device, i.e. an input for a sink.
#
# from http://pulseaudio.org/wiki/WritingVolumeControlUIs
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
"Recupero delle informazioni dell'ingresso per il sink non riuscito: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2050,13 +2101,13 @@ msgstr ""
# A stream that is connected to an input device, i.e. an output of a source.
#
# from http://pulseaudio.org/wiki/WritingVolumeControlUIs
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
"Recupero delle informazioni dell'uscita per la sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2085,13 +2136,13 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
# campiona lazy??
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2122,22 +2173,21 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Fallimento: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Caricamento del campione non riuscito: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Fine del file prematura\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2182,7 +2232,7 @@ msgstr ""
" -s, --server=SERVER Il nome del server a cui connettersi\n"
" -n, --client-name=NOME Come chiamare questo client sul server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2193,48 +2243,44 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Specificare un file campione da caricare\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Apertura del file audio non riuscita.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Ã necessario specificare un nome di campione da riprodurre\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Ã necessario specificare un nome di campione da rimuovere\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Ã necessario specificare un ingresso per sink e un sink\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Ã necessario specificare una uscita per sorgente e una sorgente\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Ã necessario specificare un nome di modulo e gli argomenti.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Ã necessario specificare un indice di modulo\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2242,8 +2288,7 @@ msgstr ""
"Non è possibile specificare più di un sink. à necessario specificare un "
"valore booleano.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2251,18 +2296,16 @@ msgstr ""
"Non è possibile specificare più di una sorgente. à necessario specificare un "
"valore booleano.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"Ã necessario specificare un nome/indice di scheda e un nome di profilo.\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Nessun comando valido specificato.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() non riuscita: %s"
@@ -2348,131 +2391,48 @@ msgstr "Caricamento dei dati cookie non riuscito\n"
msgid "Not yet implemented.\n"
msgstr "Non ancora implementato.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Uccisione del demone PulseAudio non riuscita."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Il demone non sta rispondendo."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Creazione dello stream riuscita\n"
-
-# fixme!!! errror
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Errore nello stream: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Connessione stabilita.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [OPZIONI] [FILE]\n"
-"\n"
-" -h, --help Mostra questo aiuto\n"
-" --version Mostra la versione\n"
-"\n"
-" -v, --verbose Abilita la modalità prolissa\n"
-"\n"
-" -s, --server=SERVER Il nome del server a cui "
-"connettersi\n"
-" -d, --device=DEVICE Il nome del sink a cui connettersi\n"
-" -n, --client-name=NOME Come chiamare questo client sul "
-"server\n"
-" --stream-name=NOME Come chiamare questo stream sul "
-"server\n"
-" --volume=VOLUME Specifica il volume iniziale "
-"(lineare) \n"
-" nell'intervallo 0...65536\n"
-" --channel-map=MAPPA_CANALI Imposta la mappa di canali da usare\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilato con libpulse %s\n"
-"Link eseguito con libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mappa dei canali non valida\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Apertura del file \"%s\" non riuscita\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "La mappa dei canali non corrisponde al file.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "In uso la specifica di campionamento \"%s\"\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Impossibile accedere al lock di autospawn."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2489,7 +2449,7 @@ msgstr ""
"Ci si è alzati con impostato POLLOUT -- come sempre un subsequent "
"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2506,34 +2466,106 @@ msgstr ""
"Ci si è alzati con impostato POLLIN -- come sempre un subsequent "
"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Output %s + Input %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Output %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Input %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Spento"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "Playback ad alta fidabilità (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Doppino Telefonico (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Server sonoro PulseAudio"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Creazione dello stream riuscita\n"
+
+# fixme!!! errror
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Errore nello stream: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Connessione stabilita.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [OPZIONI] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Mostra questo aiuto\n"
+#~ " --version Mostra la versione\n"
+#~ "\n"
+#~ " -v, --verbose Abilita la modalità prolissa\n"
+#~ "\n"
+#~ " -s, --server=SERVER Il nome del server a cui "
+#~ "connettersi\n"
+#~ " -d, --device=DEVICE Il nome del sink a cui "
+#~ "connettersi\n"
+#~ " -n, --client-name=NOME Come chiamare questo client sul "
+#~ "server\n"
+#~ " --stream-name=NOME Come chiamare questo stream sul "
+#~ "server\n"
+#~ " --volume=VOLUME Specifica il volume iniziale "
+#~ "(lineare) \n"
+#~ " nell'intervallo 0...65536\n"
+#~ " --channel-map=MAPPA_CANALI Imposta la mappa di canali da "
+#~ "usare\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilato con libpulse %s\n"
+#~ "Link eseguito con libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mappa dei canali non valida\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Apertura del file \"%s\" non riuscita\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "La mappa dei canali non corrisponde al file.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "In uso la specifica di campionamento \"%s\"\n"
diff --git a/po/kn.po b/po/kn.po
index 0a5ba6b..9752be3 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-07 11:13+0530\n"
"Last-Translator: Shankar Prasad <svenkate at redhat.com>\n"
"Language-Team: Kannada <en at li.org>\n"
@@ -17,51 +17,51 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "à²
ನಲಾà²à³ ಮà³à²¨à³"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "à²
ನಲಾà²à³ ಸà³à²à³à²°à²¿à²¯à³"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "ಡಿà²à²¿à²à²²à³ ಸà³à²à³à²°à²¿à²¯à³ (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "ಡಿà²à²¿à²à²²à³ ಸà³à²à³à²°à²¿à²¯à³ (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "à²
ನಲಾà²à³ 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "ಡಿà²à²¿à²à²²à³ ಸರà³à²à²¡à³ 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "à²
ನಲಾà²à³ ಸರà³à²à²¡à³ 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "à²
ನಲಾà²à³ ಸರà³à²à²¡à³ 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "à²
ನಲಾà²à³ ಸರà³à²à²¡à³ 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "ಡಿà²à²¿à²à²²à³ ಸರà³à²à²¡à³ 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "ಡಿà²à²¿à²à²²à³ ಸರà³à²à²¡à³ 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +73,7 @@ msgstr ""
"à²à²¦à²à³à²à³ ALSA à²à²¾à²²à² '%s' ದಲà³à²²à²¿à²¨ à²à²à²¦à³ ದà³à²·à²¦ à²à²¾à²°à²£à²µà²¿à²°à²¬à²¹à³à²¦à³. ದಯವಿà²à³à²à³à² ತà³à²à²¦à²°à³à²¯à²¨à³à²¨à³ ALSA "
"ವಿà²à²¸à²¨à²à²¾à²°à²° à²à²®à²¨à²à³à²à³ ತನà³à²¨à²¿."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +85,7 @@ msgstr ""
"à²à²¦à²à³à²à³ ALSA à²à²¾à²²à² '%s' ದಲà³à²²à²¿à²¨ à²à²à²¦à³ ದà³à²·à²¦ à²à²¾à²°à²£à²µà²¿à²°à²¬à²¹à³à²¦à³. ದಯವಿà²à³à²à³à² ತà³à²à²¦à²°à³à²¯à²¨à³à²¨à³ ALSA "
"ವಿà²à²¸à²¨à²à²¾à²°à²° à²à²®à²¨à²à³à²à³ ತನà³à²¨à²¿."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +97,11 @@ msgstr ""
"à²à²¦à²à³à²à³ ALSA à²à²¾à²²à² '%s' ದಲà³à²²à²¿à²¨ à²à²à²¦à³ ದà³à²·à²¦ à²à²¾à²°à²£à²µà²¿à²°à²¬à²¹à³à²¦à³. ದಯವಿà²à³à²à³à² ತà³à²à²¦à²°à³à²¯à²¨à³à²¨à³ ALSA "
"ವಿà²à²¸à²¨à²à²¾à²°à²° à²à²®à²¨à²à³à²à³ ತನà³à²¨à²¿."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à²à²à²¤à²°à²¿à² à²à²¡à²¿à²¯à³"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "ಮಾಡà³à²®à³:"
@@ -171,105 +171,105 @@ msgstr "auth à²
ನà³à²¨à³ ಪಡà³à²¯à²²à³ ಸಾಧà³à²¯à²µà²¾à²à²¿à²²
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit '%s' ನà³à²à²¦à²¿à²à³ ಪà³à²°à²¤à³à²¯à³à²¤à³à²¤à²°à²¿à²¸à²¿à²¦à³"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "%s ನಿà²à²¦ ಸà²à²à³à²¤à²µà³ ದà³à²°à³à²¤à²¿à²¦à³."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ನಿರà³à²à²®à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' à²
ನà³à²¨à³ ಪತà³à²¤à³ ಮಾಡಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "à²à³à²à²ªà³ '%s' à²
ನà³à²¨à³ ಪತà³à²¤à³ ಮಾಡಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' (UID %lu) ಹಾà²à³ à²à³à²à²ªà³ '%s' (GID %lu) à²à²à²¡à³à²¬à²à²¦à²¿à²¦à³."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' ರ GID ಹಾà²à³ à²à³à²à²ªà³ '%s' ತಾಳà³à²¯à²¾à²à³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' ರ ನà³à²²à³ à²à³à²¶à²µà³ '%s' à²à²à²¿à²²à³à²², à²à²²à²à³à²·à²¿à²¸à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' à²
ನà³à²¨à³ ರà²à²¿à²¸à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "à²à³à²à²ªà²¿à²¨ ಪà²à³à²à²¿à²¯à²¨à³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID à²
ನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID à²
ನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ರà³à²à³ ಸವಲತà³à²¤à³à²à²³à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ ಬಿಡಲಾà²à²¿à²¦à³."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³à²¯à²¾à²¦à³à²¯à²à²¤à²¦ à²à³à²°à²®à²à³à²à³ ಠಪà³à²²à²¾à²à³âಫಾರà³à²®à²¿à²¨à²²à³à²²à²¿ ಬà³à²à²¬à²²à²µà²¿à²²à³à²²."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "à²à²à³à²à²¾ ಸಾಲನà³à²¨à³ ಪಾರà³à²¸à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"ನಾವೠ'%s' à²à³à²à²ªà²¿à²¨à²²à³à²²à²¿à²¦à³à²¦à³à²µà³, ಹಾà²à³ ಹà³à²à³à²à³-à²à²¦à³à²¯à²¤à³ ಶà³à²¡à³à²¯à³à²²à²¿à²à²à³ à²
ನà³à²¨à³ à²
ನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à³à²µà³."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "ನಾವೠ'%s' à²à³à²à²ªà²¿à²¨à²²à³à²²à²¿à²¦à³à²¦à³à²µà³, ಹಾà²à³ ರಿಯಲà³-à²à³à²®à³ ಶà³à²¡à³à²¯à³à²²à²¿à²à²à³ à²
ನà³à²¨à³ à²
ನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à³à²µà³."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "ಹà³à²à³à²à³-à²à²¦à³à²¯à²¤à³ ಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡà³à²¦à³à²à³ à²
ನà³à²¨à³ PolicyKit à²
ನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à²¦à³."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "ಹà³à²à³à²à³-à²à²¦à³à²¯à²¤à³ ಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡà³à²¦à³à²à³ à²
ನà³à²¨à³ PolicyKit ನಿರಾà²à²°à²¿à²¸à³à²¤à³à²¤à²¦à³."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "ರಿಯಲà³-à²à³à²®à³ ಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡà³à²¦à³à²à³ à²
ನà³à²¨à³ PolicyKit à²
ನà³à²®à²¤à²¿à²¸à³à²¤à³à²¤à²¦à³."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "ರಿಯಲà³-à²à³à²®à³ ಸವಲತà³à²¤à²¨à³à²¨à³ ಪಡà³à²¦à³à²à³ à²
ನà³à²¨à³ PolicyKit ನಿರಾà²à²°à²¿à²¸à³à²¤à³à²¤à²¦à³."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -290,47 +290,47 @@ msgstr ""
"PolicyKit ಸವಲತà³à²¤à³à²à²³à²¨à³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à²¿, à²
ಥವ '%s' ನ ಸದಸà³à²¯à²°à²¾à²à²¿, à²
ಥವ ಠಬಳà²à³à²¦à²¾à²°à²¨à²¿à²à²¾à²à²¿ "
"RLIMIT_NICE/RLIMIT_RTPRIO ಸà²à²ªà²¨à³à²®à³à²² ಮಿತಿಯನà³à²¨à³ ಹà³à²à³à²à²¿à²¸à²¿."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ಸà²à²°à²à²¨à³à²¯à²²à³à²²à²¿ ಹà³à²à³à²à³-à²à²¦à³à²¯à²¤à³à²¯ ಶà³à²¡à³à²¯à³à²²à²¿à²à²à³ à²
ನà³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³ à²à²¦à²°à³ ಪಾಲಿಸಿಯಿà²à²¦ à²
ನà³à²®à²¤à²¿ "
"à²à²²à³à²²."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO à²
ನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ ಹà³à²à³à²à²¿à²¸à²²à²¾à²à²¿à²¦à³"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE à²
ನà³à²¨à³ ಬಿಡಲಾà²à³à²¤à³à²¤à²¿à²¦à³"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ಸà²à²°à²à²¨à³à²¯à²²à³à²²à²¿ ರಿಯಲà³-à²à³à²®à³ ಶà³à²¡à³à²¯à³à²²à²¿à²à²à³ à²
ನà³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³ à²à²¦à²°à³ ಪಾಲಿಸಿಯಿà²à²¦ à²
ನà³à²®à²¤à²¿ à²à²²à³à²²."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ಡà³à²®à²¨à³ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "ಡà³à²®à²¨à³ PID %u ಯಾà²à²¿ à²à²²à²¾à²¯à²¿à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²à³à²²à³à²²à²²à³ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -338,166 +338,166 @@ msgstr ""
"ಠಪà³à²°à³à²à³à²°à²¾à²®à²¨à³à²¨à³ ರà³à²à³â à²à²à²¿ à²à²²à²¾à²¯à²¿à²¸à³à²µ à²à²¦à³à²§à³à²¶à²µà²¨à³à²¨à³ ಹà³à²à²¦à²¿à²²à³à²² (--system à²
ನà³à²¨à³ ಸà³à²à²¿à²¸à²¦à³ "
"à²à²¦à³à²¦à²²à³à²²à²¿ ಮಾತà³à²°)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ನಿರà³à²µà²¾à²¹à² ಸವಲತà³à²¤à³à²à²³ à²
à²à²¤à³à²¯à²µà²¿à²¦à³."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³à²¯ ಸನà³à²¨à²¿à²µà³à²¶à²¦à²¿à²à²¦ --start ಬà³à²à²¬à²²à²¿à²¤à²µà²¾à²à²¿à²²à³à²²."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³, à²à²¦à²°à³ --disallow-exit à²
ನà³à²¨à³ ಹà³à²à²¦à²¿à²¸à²²à²¾à²à²¿à²²à³à²²!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³, à²à²¦à²°à³ --disallow-module-loading à²
ನà³à²¨à³ "
"ಹà³à²à²¦à²¿à²¸à²²à²¾à²à²¿à²²à³à²²!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, SHM à²à³à²°à²®à²µà²¨à³à²¨à³ à²à²¤à³à²¤à²¾à²¯à²ªà³à²°à³à²µà²à²µà²¾à²à²¿ "
"à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, ನಿರà³à²à²®à²¿à²¸à³à²µ à²à²¡ ಸಮಯವನà³à²¨à³ à²à²¤à³à²¤à²¾à²¯à²ªà³à²°à³à²µà²à²µà²¾à²à²¿ "
"à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio à²
ನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "ಪà³à²ªà³â ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ಡà³à²®à²¨à³ à²à²°à²à²à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ à²à²°à²à²à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à²à²¦à³ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "à²à²à²ªà³à²²à³ ಮಾಡà³à²µ à²
ತಿಥà³à²¯: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à²à²à²ªà³à²²à³ ಮಾಡà³à²µ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "à²
ತಿಥà³à²¯à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUà²à²³à³ à²à²à²¡à³à²¬à²à²¦à²¿à²µà³."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "ಪà³à²à²¦ à²à²¾à²¤à³à²°à²µà³ %lu ಬà³à²à³âà²à²³à²¾à²à²¿à²µà³"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ಬà³à²à²¬à²²à²¦à³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³: ಹà³à²¦à³"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ಬà³à²à²¬à²²à²¦à³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³: à²à²²à³à²²"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¸à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: ಹà³à²¦à³"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: à²à²²à³à²²"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG à²
ನà³à²¨à³ ಸà³à²à²¿à²¸à²²à²¾à²à²¿à²¦à³, à²à²²à³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³à²à²³à²¨à³à²¨à³ à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH à²
ನà³à²¨à³ ಸà³à²à²¿à²¸à²²à²¾à²à²¿à²¦à³, à²à³à²µà²² ವà³à² ಮಾರà³à²à²¦ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³à²à²³à²¨à³à²¨à³ à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "à²à²²à³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³à²à²³à²¨à³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "ಮà³à²¶à³à²¨à³ ID ಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ಮà³à²¶à³à²¨à³ ID ಯೠ%s à²à²à²¿à²¦à³."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ಮà³à²¶à³à²¨à³ ID ಯೠ%s à²à²à²¿à²¦à³."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "à²à²²à²¾à²µà²£à²¾à²¸à²®à²¯(ರನà³âà²à³à²®à³) à²à³à²¶ %s à²
ನà³à²¨à³ ಬಳಸಿà²à³à²à²¡à³."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "ಸà³à²¥à²¿à²¤à²¿ à²à³à²¶ %s à²
ನà³à²¨à³ ಬಳಸಿà²à³à²à²¡à³."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¸à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ತಾà²à²¾ ರà³à²¸à²²à³à²¯à³à²¶à²¨à³ à²à³à²®à²°à³ ಲà²à³à²¯à²µà²¿à²¦à³! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -505,31 +505,31 @@ msgstr ""
"ಮಹಾಶಯರà³, ನಿಮà³à²® à²à²°à³à²¨à²²à³ à²à³à²³à³à²¤à³à²¹à³à²à²¿à²¦à³! à²
ತà³à²¯à³à²¤à³à²¤à²® ರà³à²¸à²²à³à²¯à³à²¶à²¨à³ à²à³à²®à²°à³ à²
ನà³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²¦ "
"ಲಿನà²à³à²¸à²¨à³à²¨à³ ಬಳಸà³à²µà²à²¤à³ à²
ಡà³à²à³à²¯à²µà²°à³ ಸಲಹೠಮಾಡà³à²¤à³à²¤à²¿à²¦à³à²¦à²¾à²°à³!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²à²°à²à²à²¿à²¸à²²à³ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ಲà³à²¡à³ ಮಾಡಲಾದ ಯಾವà³à²¦à³ ಡà³à²®à²¨à³ à²à²²à³à²²à²¦à³ à²à²°à²à²à²à³à²à²¡à²¿à²¦à³, à²à³à²²à²¸ ಮಾಡಲೠನಿರಾà²à²°à²¿à²¸à²¿à²¦à³."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ಡà³à²®à²¨à³ à²à²°à²à²à²à³à²³à²¿à²à³ ಪà³à²°à³à²£à²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ಡà³à²®à²¨à³ ಸà³à²¥à²à²¿à²¤à²à³à²³à²¿à²à³à²¯à²¨à³à²¨à³ à²à²°à²à²à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²
à²à²¤à³à²¯à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -677,15 +677,15 @@ msgstr ""
" -n ಪà³à²°à³à²µà²¨à²¿à²¯à³à²à²¿à²¤ ಸà³à²à³à²°à²¿à²ªà³à²à²¿à²¨ à²à²¡à²¤à²µà²¨à³à²¨à³ ಲà³à²¡à³ "
"ಮಾಡಬà³à²¡\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -693,52 +693,52 @@ msgstr ""
"--log-level ದಾà²à²²à³ ಮà²à³à²à²¦ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³ (0..4 ವà³à²¯à²¾à²ªà³à²¤à²¿à²¯à²²à³à²²à²¿à²¨ à²
à²à²à³à²¯à²¨à³à²¨à³ "
"à²
ಥವ debug, info, notice, warn, error à²
ನà³à²¨à³)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ ದಾà²à²²à³ à²à³à²°à²¿: 'syslog', 'stderr' à²
ಥವ 'auto' à²
ನà³à²¨à³ ಬಳಸಿ."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³à²¨à³ ವಿಧಾನ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm ಬà³à²²à²¿à²¯à²¨à³ à²à²°à³à²à³à²®à³à²à²à²¨à³à²¨à³ ನಿರà³à²à³à²·à²¿à²¸à³à²¤à³à²¤à²¦à³"
@@ -777,77 +777,82 @@ msgstr "ಬಳà²à³: %s\n"
msgid "Load Once: %s\n"
msgstr "à²à²®à³à²®à³ ಲà³à²¡à³ ಮಾಡà³: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ಮಾರà³à²: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ದಾà²à²²à³ à²à³à²°à²¿ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ದಾà²à²²à³ ಮà²à³à² '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³à²¨à³ ವಿಧಾನ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à²à³ ಠಪà³à²²à²¾à²à³âಫಾರà³à²®à²¿à²¨à²²à³à²²à²¿ ಬà³à²à²¬à²²à²µà²¿à²²à³à²²."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ನಮà³à²¨à³ ರà²à²¨à³ '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ನಮà³à²¨à³ ದರ '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ನಮà³à²¨à³ à²à²¾à²¨à²²à³âà²à²³à³ '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ à²à²¾à²¨à²²à³ ನà²à³à²·à³ '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¤à²µà²¾à²¦ ಫà³à²°à²¾à²à³à²®à³à²à²à³à²à²³ ಸà²à²à³à²¯à³ '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ಫà³à²°à²¾à²à³à²®à³à²à²à³ à²à²¾à²¤à³à²° '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ನà³à²¸à³â ಹà²à²¤ '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ಸà²à²°à²à²¨à²¾ à²à²¡à²¤à²µà²¨à³à²¨à³ ತà³à²°à³à²¯à²²à³ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1102,8 +1107,8 @@ msgid "Top Rear Right"
msgstr "ಮà³à²²à²¿à²¨ ಹಿà²à²¬à²¦à²¿à²¯ ಬಲà²à²¾à²"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(à²
ಮಾನà³à²¯)"
@@ -1289,173 +1294,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "à²
à²à³à²à²¾à²¤ ವಿಸà³à²¤à²°à²£à³ '%s' à²à²à²¦ ಸà²à²¦à³à²¶à²µà²¨à³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à²²à²¾à²à²¿à²¦à³"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ಸà³à²à³à²°à³à²®à²¨à³à²¨à³ ಬರಿದಾà²à²¿à²¸à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "ಪà³à²²à³à²¬à³à²¯à²¾à²à³ ಸà³à²à³à²°à³à²®à²¨à³à²¨à³ ಬರಿದಾà²à²¿à²¸à²²à²¾à²à²¿à²¦à³.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "ಪರಿà²à²¾à²°à²à²à³à²à³ ಬರಿದಾà²à²¿à²¸à³à²µ ಸà²à²ªà²°à³à².\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() failed: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() failed: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ಸà³à²à³à²°à³à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ ನಿರà³à²®à²¿à²¸à²²à²¾à²à²¿à²¦à³.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() failed: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "ಬಫರೠಮà³à²à³à²°à²¿à²à³âà²à²³à³: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "ಬಫರೠಮà³à²à³à²°à²¿à²à³âà²à²³à³: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ನಮà³à²¨à³à²¯ ವಿವರ '%s' à²
ನà³à²¨à³ ಬಳಸಿà²à³à²à²¡à³, à²à²¾à²¨à²²à³â ನà²à³à²·à³ '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ಸಾಧನ %s à²à³à²à³ ಸà²à²ªà²°à³à² à²à³à²¡à²¿à²¸à²²à²¾à²à²¿à²¦à³ (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ಸà³à²à³à²°à³à²®à³ ದà³à²·: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ಸà³à²à³à²°à³à²®à³ ಸಾಧನವನà³à²¨à³ ತಾತà³à²à²¾à²²à²¿à²à²µà²¾à²à²¿ ತಡà³à²¹à²¿à²¡à²¿à²¯à²²à²¾à²à²¿à²¦à³.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ಸà³à²à³à²°à³à²®à³ ಸಾಧನವನà³à²¨à³ ಮರಳಿ à²à²°à²à²à²¿à²¸à²²à²¾à²à²¿à²¦à³.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ಸà³à²à³à²°à³à²®à³ à²
ನà³à²¨à³ à²à²¡à²¿à²®à³ à²à²²à²¾à²¯à²¿à²¸à²²à²¾à²à²¿à²¦à³.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ಸà³à²à³à²°à³à²®à³ à²
ನà³à²¨à³ ಹà³à²à³à²à³ à²à²²à²¾à²¯à²¿à²¸à²²à²¾à²à²¿à²¦à³.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ಸà³à²à³à²°à³à²®à³ à²
ನà³à²¨à³ à²à²°à²à²à²¿à²¸à²²à²¾à²à²¿à²¦à³.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ಸಾಧನ %s à²
ನà³à²¨à³ ಸà³à²à³à²°à³à²®à³â ಸà³à²¥à²³à²¾à²à²¤à²°à²¿à²¸à²²à²¾à²à²¿à²¦à³ (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "à²à²²à³à²² "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ಸà³à²à³à²°à³à²®à³ ಬಫರೠà²à³à²£à²µà²¿à²¶à³à²·à²¤à³à²à²³à²¨à³à²¨à³ ಬದಲಾಯಿಸಲಾà²à²¿à²¦à³.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "ಸà²à²ªà²°à³à²à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾà²à²¿à²¦à³.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() failed: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() failed: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() failed: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "ಸà²à²ªà²°à³à²à²¦ ವಿಫಲತà³: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ಸà³à²à³à²°à³à²®à²¨à³à²¨à³ ಬರಿದಾà²à²¿à²¸à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "ಪà³à²²à³à²¬à³à²¯à²¾à²à³ ಸà³à²à³à²°à³à²®à²¨à³à²¨à³ ಬರಿದಾà²à²¿à²¸à²²à²¾à²à²¿à²¦à³.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "ಪರಿà²à²¾à²°à²à²à³à²à³ ಬರಿದಾà²à²¿à²¸à³à²µ ಸà²à²ªà²°à³à².\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF à²
ನà³à²¨à³ ಪಡà³à²¯à²²à²¾à²à²¿à²¦à³.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "à²à²¦à³à²µà²¿à²à³() ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "ಬರà³à²¯à³à²µà²¿à²à³() ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "ಸà²à²à³à²¤ ದà³à²°à³à²¤à²¿à²¦à³, ನಿರà³à²à²®à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "à²
à²à³à²à²°à²¤à³à²¯à²¨à³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ಸಮಯ: %0.3f sec; à²
à²à³à²à²°à²¤à³: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() failed: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1481,8 +1481,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1505,6 +1507,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [à²à²¯à³à²à³à²à²³à³]\n"
"\n"
@@ -1552,7 +1559,7 @@ msgstr ""
" --process-time=BYTES ಸà³à²à²¿à²¸à²²à²¾à²¦ ಪà³à²°à²¤à²¿ ಮನವಿಯ ಪà³à²°à²à³à²°à²¿à²¯à³à²¯ ಸಮಯವನà³à²¨à³ "
"ಬà³à²à³âà²à²³à²²à³à²²à²¿ ಮನವಿ ಮಾಡà³.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1563,88 +1570,133 @@ msgstr ""
"libpulse %s ನà³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³\n"
"libpulse %s ನà³à²à²¦à²¿à²à³ à²à³à²¡à²¿à²¸à²²à²¾à²à²¿à²¦à³\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ à²à²¾à²¨à²²à³ ನà²à³à²·à³ '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³à²¨à³ ವಿಧಾನ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ à²à²¾à²¨à²²à³ ನà²à³à²·à³ '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ à²
à²à³à²à²°à²¤à³ ವಿವರಣೠ'%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ ಪà³à²°à²à³à²°à²¿à²¯à³ ಸಮಯದ ವಿವರಣೠ'%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ ಮರà³à²¨à²®à³à²¨à³ ವಿಧಾನ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ ನಮà³à²¨à³ ವಿವರ\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "ತà³à²°à³(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "ಬಹಳಷà³à²à³ à²à²°à³à²à³à²®à³à²à²à³âà²à²³à³.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "ನಮà³à²¨à³à²¯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ಧà³à²µà²¨à²¿ à²à²¡à²¤à²µà²¨à³à²¨à³ ತà³à²°à³à²¯à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "ನಮà³à²¨à³à²¯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "à²à²¾à²¨à²²à³ ನà²à³à²·à³à²¯à³ ನಮà³à²¨à³à²¯ ವಿವರಣà³à²¯à³à²à²¦à²¿à²à³ ತಾಳà³à²¯à²¾à²à³à²¤à³à²¤à²¿à²²à³à²²\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "à²à²à²¦à³ %s ಸà³à²à³à²°à³à²®à³â à²
ನà³à²¨à³ ನಮà³à²¨à³ ವಿವರಣೠ'%s' ಯà³à²à²¦à²¿à²à³ ತà³à²°à³à²¯à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "ರà³à²à²¾à²°à³à²¡à²¿à²à²à³"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "ಪà³à²²à³à²¬à³à²¯à²¾à²à³â"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "ತà³à²°à³(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "ಬಹಳಷà³à²à³ à²à²°à³à²à³à²®à³à²à²à³âà²à²³à³.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() failed.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() ವಿಫಲà²à³à²à²¡à²¿à²¦à³.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() failed.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() failed: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() failed.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() failed.\n"
@@ -1674,8 +1726,7 @@ msgstr "ಮರಳಿ à²à²°à²à²à²¿à²¸à²²à³ ವಿಫಲà²à³à²à²¡à²¿à²¦à³:
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "à²à²à³à²à²°à²¿à²à³: ಧà³à²µà²¨à²¿ ಪರಿà²à²¾à²°à²à²µà³ ಸà³à²¥à²³à³à²¯à²µà²¾à²à²¿à²²à³à²², ತಾತà³à²à²¾à²²à²¿à²à²µà²¾à²à²¿ ತಡà³à²¹à²¿à²¡à²¿à²¯à²²à²¾à²à³à²¤à³à²¤à²¿à²²à³à²².\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ದà³à²°à³à²¤à²¿à²¦à³, ನಿರà³à²à²®à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³.\n"
@@ -1703,7 +1754,7 @@ msgstr ""
" -s, --server=SERVER ಸà²à²ªà²°à³à²à²¸à²¾à²§à²¿à²¸à²¬à³à²à²¿à²°à³à²µ ಪರಿà²à²¾à²°à²à²¦ ಹà³à²¸à²°à³\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1714,34 +1765,34 @@ msgstr ""
"libpulse %s ನà³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³\n"
"libpulse %s ನà³à²à²¦à²¿à²à³ à²à³à²¡à²¿à²¸à²²à²¾à²à²¿à²¦à³\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "à²
à²à²à²¿à²
à²à²¶à²à²³à²¨à³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ಪà³à²°à²¸à²à³à²¤ ಬಳà²à³à²¯à²²à³à²²à²¿à²°à³à²µà³à²¦à³: %u à²à²à²¡à²à²³à³ à²à²à³à²à³ %s ಬà³à²à³âà²à²³à²¨à³à²¨à³ ಹà³à²à²¦à²¿à²¦à³.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"ಸà²à²ªà³à²°à³à²£ à²à³à²µà²¿à²¤à²¾à²µà²§à²¿à²¯ ಸಮಯದಲà³à²²à²¿ ನಿಯà³à²à²¿à²¸à²²à²¾à²à²¿à²¦à³à²¦à³: %u à²à²à²¡à²à²³à³ à²à²à³à²à³ %s ಬà³à²à³âà²à²³à²¨à³à²¨à³ "
"ಹà³à²à²¦à²¿à²¦à³.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ನಮà³à²¨à³à²¯ à²à³à²¯à²¾à²¶à³ à²à²¾à²¤à³à²°: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "ಪರಿà²à²¾à²°à²à²¦ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1764,12 +1815,12 @@ msgstr ""
"ಪà³à²°à³à²µà²¨à²¿à²¯à³à²à²¿à²¤ à²à²à²°: %s\n"
"à²à³à²à²¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "ಸಿà²à²à³â ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1808,12 +1859,12 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "à²à²à²°à²¦ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1852,20 +1903,20 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "à²
ನà³à²µà²¯à²¿à²¸à³à²µà³à²¦à²¿à²²à³à²²"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "à²à²à²à²¦ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1882,12 +1933,12 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à²à³à²²à³à²à²à²¿à²¨ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1902,12 +1953,12 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à²à²¾à²°à³à²¡à²¿à²¨ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1924,22 +1975,22 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tಪà³à²°à³à²«à³à²²à³à²à²³à³:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tಸà²à³à²°à²¿à²¯ ಪà³à²°à³à²«à³à²²à³à²à²³à³: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "ಸಿà²à²à³â à²à²¨à³âಪà³à²à³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1976,12 +2027,12 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "à²à²à²°à²¦ à²à²à³âಪà³à²à³ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2010,12 +2061,12 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "ನಮà³à²¨à³à²¯ ಮಾಹಿತಿಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2046,22 +2097,21 @@ msgstr ""
"\tà²à³à²£à²à²³à³:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "ವಿಫಲತà³: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ನಮà³à²¨à³à²¯à²¨à³à²¨à³ à²
ಪà³âಲà³à²¡à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "à²à²¡à²¤à²¦ à²
ಪà³à²°à²¾à²ªà³à²¤ ಸಮಯದಲà³à²²à²¿ à²
à²à²¤à³à²¯\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2107,7 +2157,7 @@ msgstr ""
" -n, --client-name=NAME ಪರಿà²à²¾à²°à²à²¦à²²à³à²²à²¿ ಠà²à³à²²à³à²à²à²¿à²¨à²²à³à²²à²¿ à²à²¨à³à²à²¦à³ "
"à²à²°à³à²¯à²¬à³à²à³\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2118,48 +2168,44 @@ msgstr ""
"libpulse %s ನà³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³\n"
"libpulse %s ನà³à²à²¦à²¿à²à³ à²à³à²¡à²¿à²¸à²²à²¾à²à²¿à²¦à³\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "ಲà³à²¡à³ ಮಾಡಬà³à²à²¿à²°à³à²µ à²à²à²¦à³ à²à²¡à²¤à²¦ ನಮà³à²¨à³à²¯à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²¿\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "ಧà³à²µà²¨à²¿ à²à²¡à²¤à²µà²¨à³à²¨à³ ತà³à²°à³à²¯à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "à²à²à²¦à³ %s ಸà³à²à³à²°à³à²®à³â à²
ನà³à²¨à³ ನಮà³à²¨à³ ವಿವರಣೠ'%s' ಯà³à²à²¦à²¿à²à³ ತà³à²°à³à²¯à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "à²à²²à²¾à²¯à²¿à²¸à²²à³ ನà³à²µà³ à²à²à²¦à³ ನಮà³à²¨à³à²¯ ಹà³à²¸à²°à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²¬à³à²à²¾à²à³à²¤à³à²¤à²¦à³\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "ತà³à²à³à²¦à³ ಹಾà²à²²à³ ನà³à²µà³ à²à²à²¦à³ ನಮà³à²¨à³à²¯ ಹà³à²¸à²°à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²¬à³à²à³\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "ನà³à²µà³ à²à²à²¦à³ ಸಿà²à²à³ à²à²¨à³âಪà³à²à³ ಸà³à²à²¿à²¯à²¨à³à²¨à³ ಹಾà²à³ à²à²à²¦à³ ಸಿà²à²à³â à²
ನà³à²¨à³ ಸà³à²à²¿à²¸à²¬à³à²à³.\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "ನà³à²µà³ à²à²à²¦à³ à²à²à²° à²à²à³âಪà³à²à³ ಸà³à²à²¿à²¯à²¨à³à²¨à³ ಹಾà²à³ à²à²à²¦à³ à²à²à²°à²µà²¨à³à²¨à³ ಸà³à²à²¿à²¸à²¬à³à²à³.\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "ನà³à²µà³ à²à²à²¦à³ à²à²à²à²¦ ಹà³à²¸à²°à²¨à³à²¨à³ ಹಾà²à³ à²à²°à³à²à³à²®à³à²à²à³à²à²³à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²¬à³à²à³\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "ನà³à²µà³ à²à²à²¦à³ à²à²à² ಸà³à²à²¿à²¯à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²¬à³à²à³\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2167,8 +2213,7 @@ msgstr ""
"ನà³à²µà³ à²à²à²¦à²à³à²à²¿à²à²¤ ಹà³à²à³à²à²¿à²¨ ಸಿà²à²à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²²à²¾à²à³à²µà³à²¦à²¿à²²à³à²². ನà³à²µà³ à²à²à²¦à³ ಬà³à²²à²¿à²¯à²¨à³â ಮà³à²²à³à²¯à²µà²¨à³à²¨à³ "
"ಸà³à²à²¿à²¸à²¬à³à²à²¾à²à³à²¤à³à²¤à²¦à³.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2176,17 +2221,15 @@ msgstr ""
"ನà³à²µà³ à²à²à²¦à²à³à²à²¿à²à²¤ ಹà³à²à³à²à²¿à²¨ à²à²à²°à²µà²¨à³à²¨à³ ಸà³à²à²¿à²¸à²²à²¾à²à³à²µà³à²¦à²¿à²²à³à²². ನà³à²µà³ à²à²à²¦à³ ಬà³à²²à²¿à²¯à²¨à³â ಮà³à²²à³à²¯à²µà²¨à³à²¨à³ "
"ಸà³à²à²¿à²¸à²¬à³à²à²¾à²à³à²¤à³à²¤à²¦à³.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "à²à²à²¦à³ à²à²¾à²°à³à²¡à²¿à²¨ ಹà³à²¸à²°à³/ಸà³à²à²¿à²¯à²¨à³à²¨à³ ಹಾà²à³ ಪà³à²°à³à²«à³à²²à³â ಹà³à²¸à²°à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²¬à³à²à³\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "ಯಾವà³à²¦à³ à²à²à³à²à³à²¯à²¨à³à²¨à³ ಸà³à²à²¿à²¸à²²à²¾à²à²¿à²²à³à²².\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() failed: %s"
@@ -2271,128 +2314,48 @@ msgstr "à²à³à²à²¿ ದತà³à²¤à²¾à²à²¶à²µà²¨à³à²¨à³ ಲà³à²¡à³ ಮಾಡ
msgid "Not yet implemented.\n"
msgstr "à²à²¨à³à²¨à³ ಸಹ à²
ನà³à²µà²¯à²¿à²¸à²²à²¾à²à²¿à²²à³à²².\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ಸಾà²à³à²à³(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "ಸà²à²ªà²°à³à²à²¿à²¸à³(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²à³à²²à³à²²à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ಡà³à²®à²¨à³ ಪà³à²°à²¤à²¿à²à³à²°à²¿à²¯à²¿à²¸à³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "à²à²¯à³à²à³à²®à²¾à²¡à³(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "à²à²¦à³(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "ಬರà³(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ಸà³à²à³à²°à³à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ ನಿರà³à²®à²¿à²¸à²²à²¾à²à²¿à²¦à³\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ಸà³à²à³à²°à³à²®à³ ದà³à²·: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "ಸà²à²ªà²°à³à²à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾà²à²¿à²¦à³.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [à²à²¯à³à²à³à²à²³à³] [FILE]\n"
-"\n"
-" -h, --help ಠನà³à²°à²µà²¨à³à²¨à³ ತà³à²°à²¿à²¸à³\n"
-" --version à²à²µà³à²¤à³à²¤à²¿à²¯à²¨à³à²¨à³ ತà³à²°à²¿à²¸à³\n"
-"\n"
-" -v, --verbose ವರà³à²¬à³à²¸à³ à²à²¾à²°à³à²¯à²µà²¨à³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à³\n"
-"\n"
-" -s, --server=SERVER ಸà²à²ªà²°à³à²à²¸à²¾à²§à²¿à²¸à²¬à³à²à²¿à²°à³à²µ ಪರಿà²à²¾à²°à²à²¦ ಹà³à²¸à²°à³\n"
-" -d, --device=DEVICE ಸà²à²ªà²°à³à²à²¸à²¾à²§à²¿à²¸à²¬à³à²à²¿à²°à³à²µ ಸಿà²à²à²¿à²¨ ಹà³à²¸à²°à³\n"
-" -n, --client-name=NAME ಪರಿà²à²¾à²°à²à²¦à²²à³à²²à²¿ ಠà²à³à²²à³à²à²à²¿à²¨à²²à³à²²à²¿ à²à²¨à³à²à²¦à³ "
-"à²à²°à³à²¯à²¬à³à²à³\n"
-" --stream-name=NAME ಪರಿà²à²¾à²°à²à²¦à²²à³à²²à²¿ ಠಸà³à²à³à²°à³à²®à²¿à²¨à²²à³à²²à²¿ à²à²¨à³à²à²¦à³ "
-"à²à²°à³à²¯à²¬à³à²à³\n"
-" --volume=VOLUME à²à²°à²à²à²¿à² (ರà³à²à³à²¯) ಪರಿಮಾಣವನà³à²¨à³ 0...65536 "
-"ವà³à²¯à²¾à²ªà³à²¤à²¿à²¯à²²à³à²²à²¿ ತà³à²°à²¿à²¸à³\n"
-" --channel-map=CHANNELMAP ಬಳà²à³à²à²¾à²à²¿ à²à²¾à²¨à²²à³ ನà²à³à²·à³à²¯à²¨à³à²¨à³ ಹà³à²à²¦à²¿à²¸à³\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse %s ನà³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³\n"
-"libpulse %s ನà³à²à²¦à²¿à²à³ à²à³à²¡à²¿à²¸à²²à²¾à²à²¿à²¦à³\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ à²à²¾à²¨à²²à³ ನà²à³à²·à³\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "à²à²¡à²¤ '%s' à²
ನà³à²¨à³ ತà³à²°à³à²¯à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "ಮಾರà³à²à²¦ ನà²à³à²·à³à²¯à³ à²à²¡à²¤à²à³ ಹà³à²à²¦à²¿à²à³à²¯à²¾à²à³à²¤à³à²¤à²¿à²²à³à²².\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ಸರಳ ವಿವರಣà³(ಸà³à²ªà³à²à³) '%s' à²
ನà³à²¨à³ ಬಳಸಿà²à³à²à²¡à³\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "ಸà³à²µà²¯à²à²¹à³à²à³à²à²¿à²¸à³à²µà²¿à²à³à²¯ ಲಾà²à³ à²
ನà³à²¨à³ ನಿಲà³à²à²¿à²¸à²¿à²à³à²³à³à²³à²²à³ ಸಾಧà³à²¯à²µà²¿à²²à³à²²."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2407,7 +2370,7 @@ msgstr ""
"ವಿà²à²¸à²¨à²à²¾à²°à²° à²à²®à²¨à²à³à²à³ ತನà³à²¨à²¿.POLLOUT ಸà³à²à³âನಿà²à²¦ ನಾವೠà²à²à³à²à³à²¤à³à²¤à³à²à³à²à²¡à²¿à²¦à³à²¦à³à²µà³ -- à²à²¦à²°à³ ನà²à²¤à²°à²¦ "
"snd_pcm_avail() 0 à²
ಥವ min_avail à²à³à²à²¿à²à²¤ à²à²¿à²à³à²à²¦à²¾à²¦ à²à²¨à³à²¨à³à²à²¦à³ ಮà³à²²à³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದà³."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2422,34 +2385,101 @@ msgstr ""
"ವಿà²à²¸à²¨à²à²¾à²°à²° à²à²®à²¨à²à³à²à³ ತನà³à²¨à²¿.POLLIN ಸà³à²à³âನಿà²à²¦ ನಾವೠà²à²à³à²à³à²¤à³à²¤à³à²à³à²à²¡à²¿à²¦à³à²¦à³à²µà³ -- à²à²¦à²°à³ ನà²à²¤à²°à²¦ "
"snd_pcm_avail() 0 à²
ಥವ min_avail à²à³à²à²¿à²à²¤ à²à²¿à²à³à²à²¦à²¾à²¦ à²à²¨à³à²¨à³à²à²¦à³ ಮà³à²²à³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದà³."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "à²à²à³âಪà³à²à³ %s + à²à²¨à³âಪà³à²à³ %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "à²à²à³âಪà³à²à³ %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "à²à²¨à³âಪà³à²à³ %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "à²à²¡"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "ಹೠಫಿಡಿಲಿà²à²¿ ಪà³à²²à³à²¬à³à²¯à²¾à²à³ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à²à³à²²à²¿à²«à³à²¨à²¿ ಡà³à²¯à³à²ªà³à²²à³à²à³à²¸à³â (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "ಪಲà³à²¸à³âà²à²¡à²¿à²¯à³ ಧà³à²µà²¨à²¿ ಪರಿà²à²¾à²°à²"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "ಸà³à²à³à²°à³à²®à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ ನಿರà³à²®à²¿à²¸à²²à²¾à²à²¿à²¦à³\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "ಸà³à²à³à²°à³à²®à³ ದà³à²·: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "ಸà²à²ªà²°à³à²à²µà²¨à³à²¨à³ ಸಾಧಿಸಲಾà²à²¿à²¦à³.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [à²à²¯à³à²à³à²à²³à³] [FILE]\n"
+#~ "\n"
+#~ " -h, --help ಠನà³à²°à²µà²¨à³à²¨à³ ತà³à²°à²¿à²¸à³\n"
+#~ " --version à²à²µà³à²¤à³à²¤à²¿à²¯à²¨à³à²¨à³ ತà³à²°à²¿à²¸à³\n"
+#~ "\n"
+#~ " -v, --verbose ವರà³à²¬à³à²¸à³ à²à²¾à²°à³à²¯à²µà²¨à³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à³\n"
+#~ "\n"
+#~ " -s, --server=SERVER ಸà²à²ªà²°à³à²à²¸à²¾à²§à²¿à²¸à²¬à³à²à²¿à²°à³à²µ ಪರಿà²à²¾à²°à²à²¦ ಹà³à²¸à²°à³\n"
+#~ " -d, --device=DEVICE ಸà²à²ªà²°à³à²à²¸à²¾à²§à²¿à²¸à²¬à³à²à²¿à²°à³à²µ ಸಿà²à²à²¿à²¨ ಹà³à²¸à²°à³\n"
+#~ " -n, --client-name=NAME ಪರಿà²à²¾à²°à²à²¦à²²à³à²²à²¿ ಠà²à³à²²à³à²à²à²¿à²¨à²²à³à²²à²¿ à²à²¨à³à²à²¦à³ "
+#~ "à²à²°à³à²¯à²¬à³à²à³\n"
+#~ " --stream-name=NAME ಪರಿà²à²¾à²°à²à²¦à²²à³à²²à²¿ ಠಸà³à²à³à²°à³à²®à²¿à²¨à²²à³à²²à²¿ à²à²¨à³à²à²¦à³ "
+#~ "à²à²°à³à²¯à²¬à³à²à³\n"
+#~ " --volume=VOLUME à²à²°à²à²à²¿à² (ರà³à²à³à²¯) ಪರಿಮಾಣವನà³à²¨à³ "
+#~ "0...65536 ವà³à²¯à²¾à²ªà³à²¤à²¿à²¯à²²à³à²²à²¿ ತà³à²°à²¿à²¸à³\n"
+#~ " --channel-map=CHANNELMAP ಬಳà²à³à²à²¾à²à²¿ à²à²¾à²¨à²²à³ ನà²à³à²·à³à²¯à²¨à³à²¨à³ ಹà³à²à²¦à²¿à²¸à³\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "libpulse %s ನà³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³\n"
+#~ "libpulse %s ನà³à²à²¦à²¿à²à³ à²à³à²¡à²¿à²¸à²²à²¾à²à²¿à²¦à³\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "à²
ಮಾನà³à²¯à²µà²¾à²¦ à²à²¾à²¨à²²à³ ನà²à³à²·à³\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "à²à²¡à²¤ '%s' à²
ನà³à²¨à³ ತà³à²°à³à²¯à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "ಮಾರà³à²à²¦ ನà²à³à²·à³à²¯à³ à²à²¡à²¤à²à³ ಹà³à²à²¦à²¿à²à³à²¯à²¾à²à³à²¤à³à²¤à²¿à²²à³à²².\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "ಸರಳ ವಿವರಣà³(ಸà³à²ªà³à²à³) '%s' à²
ನà³à²¨à³ ಬಳಸಿà²à³à²à²¡à³\n"
diff --git a/po/mr.po b/po/mr.po
index 5aba3b9..4daf954 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-06 13:43+0530\n"
"Last-Translator: Sandeep Shedmake <sandeep.shedmake at gmail.com>\n"
"Language-Team: marathi\n"
@@ -17,51 +17,51 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "à¤à¤¨à¤²à¥à¤ मà¥à¤¨à¥"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "à¤à¤¨à¤²à¥à¤ सà¥à¤à¤¿à¤°à¥à¤"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "डिà¤à¥à¤à¤² सà¥à¤à¤¿à¤°à¥à¤ (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "डिà¤à¥à¤à¤² सà¥à¤à¤¿à¤°à¥à¤ (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "à¤à¤¨à¤²à¥à¤ सराà¤à¤¨à¥à¤¡ 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "डिà¤à¥à¤à¤² सराà¤à¤¨à¥à¤¡ 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "à¤à¤¨à¤²à¥à¤ सराà¤à¤¨à¥à¤¡ 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "à¤à¤¨à¤²à¥à¤ सराà¤à¤¨à¥à¤¡ 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "à¤à¤¨à¤²à¥à¤ सराà¤à¤¨à¥à¤¡ 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "डिà¤à¥à¤à¤² सराà¤à¤¨à¥à¤¡ 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "à¤à¤¨à¤²à¥à¤ सराà¤à¤¨à¥à¤¡ 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,7 +73,7 @@ msgstr ""
"हॠसहसा ALSA डà¥à¤°à¤¾à¤à¤µà¤° '%s' à¤
à¤à¤¤à¤°à¥à¤à¤¤ बठà¤
शॠशà¤à¤¤à¥. à¤à¥à¤ªà¤¯à¤¾ या à¤
डà¤à¤£à¥à¤¸ ALSA डà¥à¤µà¥à¤¹à¤²à¤ªà¤° à¤à¤°à¥à¤¤à¤¾ "
"à¤à¤³à¤µà¤¾."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -85,7 +85,7 @@ msgstr ""
"हॠसहसा ALSA डà¥à¤°à¤¾à¤à¤µà¤° '%s' à¤
à¤à¤¤à¤°à¥à¤à¤¤ बठà¤
शॠशà¤à¤¤à¥. à¤à¥à¤ªà¤¯à¤¾ या à¤
डà¤à¤£à¥à¤¸ ALSA डà¥à¤µà¥à¤¹à¤²à¤ªà¤° à¤à¤°à¥à¤¤à¤¾ "
"à¤à¤³à¤µà¤¾."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +97,11 @@ msgstr ""
"हॠसहसा ALSA डà¥à¤°à¤¾à¤à¤µà¤° '%s' à¤
à¤à¤¤à¤°à¥à¤à¤¤ बठà¤
शॠशà¤à¤¤à¥. à¤à¥à¤ªà¤¯à¤¾ या à¤
डà¤à¤£à¥à¤¸ ALSA डà¥à¤µà¥à¤¹à¤²à¤ªà¤° à¤à¤°à¥à¤¤à¤¾ "
"à¤à¤³à¤µà¤¾."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à¤à¤à¤¤à¤°à¥à¤ à¤à¤¡à¤¿à¤"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "मà¥à¤¡à¥à¤®"
@@ -171,104 +171,104 @@ msgstr "परवानà¤à¥ पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥ à¤
शà¤à¥à¤¯
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit नॠ'%s' सह पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦ दिला"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "सà¤à¤à¥à¤¤ %s पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "बाहà¥à¤° पडत à¤à¤¹à¥."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' शà¥à¤§à¤£à¥ à¤
शà¤à¥à¤¯."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "à¤à¤ '%s' शà¥à¤§à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' (UID %lu) व à¤à¤ '%s' (GID %lu) à¤à¤¢à¤³à¤²à¥."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' व à¤à¤ '%s' à¤à¥ GID à¤à¥à¤³à¤¤ नाहà¥."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' à¤à¥ मà¥à¤à¥à¤¯ डिरà¥à¤à¥à¤à¥à¤°à¥ '%s' नाहà¥, दà¥à¤°à¥à¤²à¤à¥à¤· à¤à¤°à¤¤ à¤à¤¹à¥."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' बनवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "à¤à¤ यादॠबदलवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID बदलवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID बदलवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "रà¥à¤ परवानà¤à¥ यशसà¥à¤µà¥à¤°à¤¿à¤¤à¥à¤¯à¤¾ वà¤à¤³à¤²à¥."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ à¤à¤° पदà¥à¤§à¤¤ या पà¥à¤²à¥
à¤à¤«à¥à¤°à¥à¤® à¤à¤°à¥à¤¤à¤¾ समरà¥à¤¥à¥à¤¤ नाहà¥."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "à¤à¤¦à¥à¤¶ à¤à¤³ वाà¤à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "à¤à¤ªà¤£ à¤à¤ '%s' à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¹à¥à¤¤, à¤à¤à¥à¤-पà¥à¤°à¤¾à¤§à¤¨à¥à¤¯à¤à¥à¤°à¤® वà¥à¤³à¤ªà¤¤à¥à¤°à¤ à¤à¤°à¥à¤¤à¤¾ परवानà¤à¥ दà¥à¤¤à¥."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "à¤à¤ªà¤£ à¤à¤ '%s' à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¹à¥à¤¤, रियल-à¤à¤¾à¤à¤® वà¥à¤³à¤ªà¤¤à¥à¤°à¤ à¤à¤°à¥à¤¤à¤¾ परवानà¤à¥ दà¥à¤¤à¥."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit à¤à¤ªà¤²à¥à¤¯à¤¾à¤²à¤¾ acquire-high-priority परवानà¤à¥ दà¥à¤¤à¥."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit acquire-high-priority परवानà¤à¥ नà¤à¤¾à¤°à¤¤à¥."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time परवानà¤à¥ पà¥à¤°à¤µà¤¿à¤¤à¥."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time परवानà¤à¥ नà¤à¤¾à¤°à¤¤à¥."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -288,204 +288,204 @@ msgstr ""
"परवानà¤à¥ पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤¾, à¤à¤¿à¤à¤µà¤¾ '%s' à¤à¥ सदसà¥à¤¯ बनवा, à¤à¤¿à¤à¤µà¤¾ या वापरà¤à¤°à¥à¤¤à¤¾ à¤à¤°à¥à¤¤à¤¾RLIMIT_NICE/"
"RLIMIT_RTPRIO सà¥à¤¤à¥à¤°à¥à¤¤ मरà¥à¤¯à¤¾à¤¦à¤¾ वाढवा."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"सà¤à¤¯à¥à¤à¤¨à¤¾ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤à¥à¤-पà¥à¤°à¤¾à¤§à¤¾à¤¨à¥à¤¯à¤à¥à¤°à¤® वà¥à¤³à¤ªà¤¤à¥à¤°à¤ à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¥à¤²à¥ à¤à¤°à¤¾à¤° दà¥à¤µà¤¾à¤°à¥ सà¥à¤µà¥à¤à¤¾à¤°à¥à¤¯ नाहà¥."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "यशसà¥à¤µà¥à¤°à¤¿à¤¤à¥à¤¯à¤¾ RLIMIT_RTPRIO वाढवलà¥"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE à¤à¤°à¥à¤¤à¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ बà¤à¤¦ à¤à¥à¤²à¥"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"सà¤à¤¯à¥à¤à¤¨à¤¾ à¤
à¤à¤¤à¤°à¥à¤à¤¤ रियल-à¤à¤¾à¤à¤® वà¥à¤³à¤ªà¤¤à¥à¤° à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¤°à¤¤ à¤à¤¹à¥ परà¤à¤¤à¥ à¤à¤°à¤¾à¤° दà¥à¤µà¤¾à¤°à¥ सà¥à¤µà¥à¤à¤¾à¤°à¥à¤¯ नाहà¥."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "डिमन à¤à¤¾à¤°à¥à¤¯à¤°à¤¤ नाहà¥"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "डिमन PID %u नà¥à¤°à¥à¤ª à¤à¤¾à¤°à¥à¤¯à¤°à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "डिमन नषà¥à¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "हा à¤à¤¾à¤°à¥à¤¯à¤à¥à¤°à¤® रà¥à¤ नà¥à¤°à¥à¤ª à¤à¤¾à¤²à¤µà¤¿à¤£à¥à¤¯à¤¾à¤à¤°à¥à¤¤à¤¾ नाहॠ(à¤à¥à¤ªà¤°à¥à¤¯à¤à¤¤ --system निशà¥à¤à¤¿à¤¤ नाहà¥)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "रà¥à¤ परवानà¤à¥ à¤à¤µà¤¶à¥à¤¯à¤."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ à¤à¤à¤¨à¤¾à¤à¤à¤°à¥à¤¤à¤¾ --start समरà¥à¤¥à¥à¤¤ नाहà¥."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, परà¤à¤¤à¥ --disallow-exit निशà¥à¤à¤¿à¤¤ à¤à¥à¤²à¥ नाहà¥!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, परà¤à¤¤à¥ --disallow-module-loading निशà¥à¤à¤¿à¤¤ à¤à¥à¤²à¥ नाहà¥!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, SHM पदà¥à¤§à¤¤ à¤à¤¬à¤°à¤¨à¤°à¤¿à¤¤à¥à¤¯à¤¾ à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¤°à¤¤ à¤à¤¹à¥!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, रिà¤à¤¾à¤®à¥ वà¥à¤³ à¤à¤¬à¤°à¤¨à¤°à¤¿à¤¤à¥à¤¯à¤¾ à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¤°à¤¤ à¤à¤¹à¥!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "पाà¤à¤ª à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "डिमन सà¥à¤à¤¾à¤°à¥à¤à¤
प à¤
पयशà¥."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "डिमन सà¥à¤à¤¾à¤°à¥à¤à¤
प यशसà¥à¤µà¥."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "हॠPulseAudio %s à¤à¤¹à¥"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "à¤à¤à¤ªà¤¾à¤à¤²à¥à¤¶à¤¨ यà¤à¤®à¤¾à¤¨: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à¤à¤à¤ªà¤¾à¤à¤²à¥à¤¶à¤¨ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "यà¤à¤®à¤¾à¤¨ वर à¤à¤¾à¤°à¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs à¤à¤¢à¤³à¤²à¥."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "पान à¤à¤à¤¾à¤° %lu बाà¤à¤à¤¸à¥ à¤à¤¹à¥"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥ à¤à¤à¤ªà¤¾à¤à¤² à¤à¥à¤²à¥: हà¥à¤¯"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥ à¤à¤à¤ªà¤¾à¤à¤² à¤à¥à¤²à¥: नाहà¥"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind पदà¥à¤§à¤¤à¥à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "à¤
नà¥à¤à¥à¤² बिलà¥à¤¡: हà¥à¤¯"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "à¤
नà¥à¤à¥à¤² बिलà¥à¤¡: नाहà¥"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG वरà¥à¤£à¥à¤à¥à¤¤, सरà¥à¤µ asserts à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH वरà¥à¤£à¥à¤à¥à¤¤, फà¤à¥à¤¤ à¤à¤²à¤¦ मारà¥à¤à¥à¤¯ asserts à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¥à¤²à¥."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "सरà¥à¤µ asserts à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¥à¤²à¥."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "मशà¥à¤¨ ID पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "मशà¥à¤¨ ID %s à¤à¤¹à¥."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "मशà¥à¤¨ ID %s à¤à¤¹à¥."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "रनà¤à¤¾à¤à¤® डिरà¥à¤à¥à¤à¥à¤°à¥ %s वापरत à¤à¤¹à¥."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "सà¥à¤¥à¤¿à¤¤à¥ डिरà¥à¤à¥à¤à¥à¤°à¥ %s वापरत à¤à¤¹à¥."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() à¤
पयशà¥."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "नवà¥à¤¨ à¤à¤à¥à¤-बिà¤à¤¦à¥à¤¤à¤¾ à¤à¤¾à¤à¤®à¤° à¤à¤ªà¤²à¤¬à¥à¤§! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -493,31 +493,31 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() à¤
पयशà¥."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "डिमन पà¥à¤°à¤¾à¤°à¤à¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "विना विà¤à¤¾à¤ दाà¤à¤² à¤à¥à¤²à¥à¤¯à¤¾à¤¸ डिमन पà¥à¤°à¤¾à¤°à¤à¤ à¤à¤¾à¤²à¥, à¤à¤¾à¤°à¥à¤¯ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ नà¤à¤¾à¤°."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "डिमन सà¥à¤à¤¾à¤°à¥à¤à¤
प पà¥à¤°à¥à¤£ à¤à¤¾à¤²à¥."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "डिमन पà¥à¤°à¥à¤£à¤ªà¤£à¥ बà¤à¤¦ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¾à¤°à¤à¤ à¤à¥à¤²à¥."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "डिमन नषà¥à¤ à¤à¥à¤²à¥."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -660,15 +660,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -676,52 +676,52 @@ msgstr ""
"--log-level यास लà¥à¤ सà¥à¤¤à¤°à¥à¤¯ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥ (à¤à¤à¤¤à¤° à¤à¥à¤·à¥à¤¤à¥à¤° 0..4 à¤
à¤à¤¤à¤°à¥à¤à¤¤ सà¤à¤à¥à¤¯à¤¾à¤¯à¥ à¤à¤¿à¤à¤µà¤¾ "
"debug, info, notice, warn, error पà¥à¤à¥ à¤à¤)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "à¤
वà¥à¤§ लà¥à¤ लà¤à¥à¤·à¥à¤¯: 'syslog', 'stderr' à¤à¤¿à¤à¤µà¤¾ 'auto' पà¥à¤à¥ à¤à¤ वापरा."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "à¤
वà¥à¤§ पà¥à¤¨à¥à¤¹ सà¥
मà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm यास बà¥à¤²à¥à¤¯à¤¨ बाब à¤
पà¥à¤à¥à¤·à¥à¤¤ à¤à¤¹à¥"
@@ -760,77 +760,82 @@ msgstr "वापरणà¥: %s\n"
msgid "Load Once: %s\n"
msgstr "à¤à¤à¤¦à¤¾ दाà¤à¤² à¤à¤°à¤¾: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "मारà¥à¤: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ लà¥à¤ लà¤à¥à¤·à¥à¤¯ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ लà¥à¤ सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ पà¥à¤¨à¥à¤¹ सà¥
मà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit या पà¥à¤²à¥
à¤à¤«à¥à¤°à¥à¤® वर समरà¥à¤¥à¥à¤¤ नाहà¥."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ सà¥
मà¥à¤ªà¤² सà¥à¤µà¤°à¥à¤ª '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ सà¥
मà¥à¤ªà¤² दर '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ सà¥
मà¥à¤ªà¤² मारà¥à¤ '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ मारà¥à¤ मà¥
प '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ तà¥à¤à¤¡à¥ '%s' याà¤à¤à¥ à¤à¤à¥à¤£ सà¤à¤à¥à¤¯à¤¾."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ तà¥à¤à¤¡à¥à¤¯à¤¾à¤à¥ à¤à¤à¤¾à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ nice सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "सà¤à¤¯à¥à¤à¤¨à¤¾ फाà¤à¤² à¤à¤à¤¡à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1082,8 +1087,8 @@ msgid "Top Rear Right"
msgstr "वरà¥à¤² पाठà¥à¤®à¤¾à¤à¤à¥ à¤à¤à¤µà¥"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(à¤
वà¥à¤§)"
@@ -1268,173 +1273,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "à¤
परिà¤à¥à¤¤ वाढ '%s' à¤à¤°à¥à¤¤à¤¾ सà¤à¤¦à¥à¤¶ पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "सà¥à¤à¥à¤°à¥à¤® रिà¤à¤¾à¤®à¥ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "पà¥à¤²à¥à¤¬à¥
ठसà¥à¤à¥à¤°à¥à¤® रिà¤à¤¾à¤®à¥ à¤à¥à¤²à¥.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "सरà¥à¤µà¤° à¤à¤°à¥à¤¤à¤¾ à¤à¥à¤³à¤µà¤£à¥ डà¥à¤°à¥à¤¨ à¤à¥à¤²à¥.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "सà¥à¤à¥à¤°à¥à¤® यशसà¥à¤µà¥à¤°à¤¿à¤¤à¥à¤¯à¤¾ बनवलà¥.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "बफर मà¥à¤à¥à¤°à¥à¤: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "बफर मà¥à¤à¥à¤°à¥à¤: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "à¤à¤¦à¤¾à¤¹à¤°à¤£à¤¤à¤¯à¤¾ spec '%s', वाहिनॠनà¤à¤¾à¤¶à¤¾ '%s' वापरत à¤à¤¹à¥.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "साधन %s शॠà¤à¥à¤³à¤²à¥ (%u, %s ससà¥à¤ªà¥à¤à¤¡ à¤à¥à¤²à¥).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "सà¥à¤à¥à¤°à¥à¤® तà¥à¤°à¥à¤à¥: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "सà¥à¤à¥à¤°à¥à¤® साधन ससà¥à¤ªà¥à¤à¤¡ à¤à¥à¤²à¥.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "सà¥à¤à¥à¤°à¥à¤® साधन पà¥à¤¨à¥à¤¹à¤¾ सà¥à¤°à¥ à¤à¥à¤²à¥.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "सà¥à¤à¥à¤°à¥à¤® underrun.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "सà¥à¤à¥à¤°à¥à¤® overrun.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "सà¥à¤à¥à¤°à¥à¤® सà¥à¤°à¥ à¤à¥à¤²à¥.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "सà¥à¤à¥à¤°à¥à¤® साधन %s à¤à¤¡à¥ सà¥à¤¥à¤¾à¤¨à¤¾à¤à¤¤à¤°à¥à¤¤ à¤à¥à¤²à¥ (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "नाहॠ"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "सà¥à¤à¥à¤°à¥à¤® बफर à¤à¥à¤£à¤§à¤°à¥à¤® बदललà¥.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "à¤à¥à¤³à¤µà¤£à¥ सà¥à¤¥à¤¾à¤ªà¥à¤¤ à¤à¥à¤²à¥.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "à¤à¥à¤³à¤µà¤£à¥ à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "सà¥à¤à¥à¤°à¥à¤® रिà¤à¤¾à¤®à¥ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "पà¥à¤²à¥à¤¬à¥
ठसà¥à¤à¥à¤°à¥à¤® रिà¤à¤¾à¤®à¥ à¤à¥à¤²à¥.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "सरà¥à¤µà¤° à¤à¤°à¥à¤¤à¤¾ à¤à¥à¤³à¤µà¤£à¥ डà¥à¤°à¥à¤¨ à¤à¥à¤²à¥.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "सà¤à¤à¥à¤¤ पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥, बाहà¥à¤° पडत à¤à¤¹à¥.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "विलà¤à¤¬ पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "वà¥à¤³: %0.3f sec; विलà¤à¤¬: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() à¤
पयशà¥: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1460,8 +1460,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1484,6 +1486,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1534,7 +1541,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1545,88 +1552,133 @@ msgstr ""
"libpulse %s शॠà¤à¤à¤ªà¤¾à¤ à¤à¥à¤²à¥\n"
"libpulse %s शॠलिà¤à¤ à¤à¥à¤²à¥\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "à¤
वà¥à¤§ वाहिनॠनà¤à¤¾à¤¶à¤¾ '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "à¤
वà¥à¤§ पà¥à¤¨à¥à¤¹ सà¥
मà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "à¤
वà¥à¤§ वाहिनॠनà¤à¤¾à¤¶à¤¾ '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "à¤
वà¥à¤§ विलà¤à¤¬ सà¤à¤¯à¥à¤à¤¨à¤¾ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "à¤
वà¥à¤§ à¤à¤¾à¤°à¥à¤¯ वà¥à¤³ सà¤à¤¯à¥à¤à¤¨à¤¾ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "à¤
वà¥à¤§ पà¥à¤¨à¥à¤¹ सà¥
मà¥à¤ªà¤² पदà¥à¤§à¤¤ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "à¤
वà¥à¤§ सà¥
मà¥à¤ªà¤² सà¤à¤¯à¥à¤à¤¨à¤¾\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "à¤à¥à¤ª à¤à¤¾à¤¸à¥à¤¤ बाब.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "सà¥
मà¥à¤ªà¤² माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "à¤à¤µà¤¾à¤ फाà¤à¤² à¤à¤à¤¡à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "सà¥
मà¥à¤ªà¤² माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "वाहिनॠनà¤à¤¾à¤¶à¤¾ सà¥
मà¥à¤ªà¤² सà¤à¤¯à¥à¤à¤¨à¤¾à¤¶à¥ à¤à¥à¤³à¤¤ नाहà¥\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "%s सà¥à¤à¥à¤°à¥à¤® सà¥
मà¥à¤ªà¤² सà¤à¤¯à¥à¤à¤¨à¤¾ '%s' शॠà¤à¤à¤¡à¤¤ à¤à¤¹à¥.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "रà¥à¤à¥à¤°à¥à¤¡à¥à¤à¤"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "पà¥à¤²à¥à¤¬à¥
à¤"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "à¤à¥à¤ª à¤à¤¾à¤¸à¥à¤¤ बाब.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() à¤
पयशà¥.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() à¤
पयशà¥.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() à¤
पयशà¥.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() à¤
पयशà¥: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() à¤
पयशà¥.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() à¤
पयशà¥.\n"
@@ -1656,8 +1708,7 @@ msgstr "पà¥à¤¨à¥à¤¹à¤¾ à¤à¤¾à¤²à¥ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "सावधानता: à¤à¤µà¤¾à¤ सरà¥à¤µà¤° सà¥à¤¥à¤¾à¤¨à¥à¤¯ नाहà¥, ससà¥à¤ªà¥à¤à¤¡ à¤à¤°à¤¤ नाहà¥.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥, बाहà¥à¤° पडत à¤à¤¹à¥.\n"
@@ -1686,7 +1737,7 @@ msgstr ""
"to\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1697,32 +1748,32 @@ msgstr ""
"libpulse %s शॠà¤à¤à¤ªà¤¾à¤ à¤à¥à¤²à¥\n"
"libpulse %s शॠलिà¤à¤ à¤à¥à¤²à¥\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "à¤à¤à¤¡à¥à¤µà¤¾à¤°à¥ पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "वरà¥à¤¤à¤®à¤¾à¤¨à¤à¥à¤·à¤£à¥ वापरणà¥à¤¤ à¤à¤¹à¥: %2$s बाà¤à¤à¤¸à¥ समाविषà¥à¤à¥à¤¤ à¤à¤à¥à¤£ %1$u बà¥à¤²à¥à¤à¥à¤¸à¥ .\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "सà¤à¤ªà¥à¤°à¥à¤£ à¤à¤¾à¤°à¥à¤¯à¤à¤¾à¤³à¤µà¥à¤³à¥ लाà¤à¥ à¤à¥à¤²à¥: %2$s बाà¤à¤à¤¸à¥ समाविषà¥à¤à¥à¤¤ à¤à¤à¥à¤£ %1$u बà¥à¤²à¥à¤à¥à¤¸à¥ .\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "सà¥
पल à¤à¥
शॠà¤à¤à¤¾à¤°: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "सरà¥à¤µà¤° माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1745,12 +1796,12 @@ msgstr ""
"मà¥à¤²à¤à¥à¤¤ सà¥à¤¤à¥à¤°à¥à¤¤: %s\n"
"à¤à¥à¤à¥à¤: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "sink माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1789,12 +1840,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "सà¥à¤¤à¥à¤°à¥à¤¤ माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1833,20 +1884,20 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "विà¤à¤¾à¤ माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1863,12 +1914,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à¤à¥à¤²à¤¾à¤à¤à¤ माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1883,12 +1934,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à¤à¤¾à¤°à¥à¤¡ माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1905,22 +1956,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tसà¤à¤à¥à¤·à¤¿à¤ªà¥à¤¤ माहितà¥:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tसà¤à¥à¤°à¥à¤¯ सà¤à¤à¥à¤·à¤¿à¤ªà¥à¤¤ माहितà¥: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "सिà¤à¤ à¤à¤¨à¤ªà¥à¤ माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1957,12 +2008,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "सà¥à¤¤à¥à¤°à¥à¤¤ à¤à¤à¤à¤ªà¥à¤ माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1991,12 +2042,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "सà¥
मà¥à¤ªà¤² माहितॠपà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2027,22 +2078,21 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "सà¥
मà¥à¤ªà¤² à¤
पलà¥à¤¡ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "फाà¤à¤²à¤à¥ à¤
यà¥à¤à¥à¤¯ समापà¥à¤¤à¥\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2089,7 +2139,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2100,48 +2150,44 @@ msgstr ""
"libpulse %s सह à¤à¤à¤ªà¤¾à¤à¤² à¤à¥à¤²à¥\n"
"libpulse %s सह à¤à¥à¤³à¤²à¥\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "à¤à¥à¤ªà¤¯à¤¾ दाà¤à¤² à¤à¤°à¤£à¥à¤¯à¤¾à¤à¥à¤à¥ तातà¥à¤ªà¥à¤°à¥à¤¤à¥ फाà¤à¤² निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "à¤à¤µà¤¾à¤ फाà¤à¤² à¤à¤à¤¡à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "%s सà¥à¤à¥à¤°à¥à¤® सà¥
मà¥à¤ªà¤² सà¤à¤¯à¥à¤à¤¨à¤¾ '%s' शॠà¤à¤à¤¡à¤¤ à¤à¤¹à¥.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "à¤à¤¾à¤²à¤µà¤¿à¤£à¥à¤¯à¤¾à¤à¤°à¥à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥à¤°à¥à¤¤à¥ नाव निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ लाà¤à¥à¤²\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "à¤à¤¾à¤¢à¥à¤£ à¤à¤¾à¤à¤£à¥à¤¯à¤¾à¤à¤°à¥à¤¤à¤¾ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तातà¥à¤ªà¥à¤°à¥à¤¤à¥ नाव निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ लाà¤à¥à¤²\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सिà¤à¤ à¤à¤¨à¤ªà¥à¤ निरà¥à¤¦à¥à¤¶à¤¾à¤à¤ व सिà¤à¤ निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ लाà¤à¥à¤²\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ à¤à¤à¤ à¤à¤¨à¤¡à¥à¤à¥à¤¸ सà¥à¤¤à¥à¤°à¥à¤¤ व सà¥à¤¤à¥à¤°à¥à¤¤ निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ लाà¤à¥à¤²\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विà¤à¤¾à¤à¤¾à¤à¥ नाव व बाब निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ लाà¤à¥à¤².\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ विà¤à¤¾à¤ निरà¥à¤¦à¥à¤¶à¤¾à¤à¤ निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ लाà¤à¥à¤²\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2149,8 +2195,7 @@ msgstr ""
"तà¥à¤®à¥à¤¹à¥ à¤à¤à¤¾à¤ªà¥à¤à¥à¤·à¤¾ à¤à¤¾à¤¸à¥à¤¤ सिà¤à¤ निशà¥à¤à¤¿à¤¤ à¤à¤°à¥ शà¤à¤¤ नाहà¥. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ बà¥à¤²à¥à¤¯à¤¨ मà¥à¤²à¥à¤¯ निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ "
"लाà¤à¥à¤².\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2158,17 +2203,15 @@ msgstr ""
"तà¥à¤®à¥à¤¹à¥ à¤à¤à¤¾à¤ªà¥à¤à¥à¤·à¤¾ à¤à¤¾à¤¸à¥à¤¤ सà¥à¤¤à¥à¤°à¥à¤¤ निशà¥à¤à¤¿à¤¤ à¤à¤°à¥ शà¤à¤¤ नाहà¥. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ बà¥à¤²à¥à¤¯à¤¨ मà¥à¤²à¥à¤¯ निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥ "
"लाà¤à¥à¤².\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ à¤à¤¾à¤°à¥à¤¡ नाव/निरà¥à¤¦à¥à¤¶à¤¾à¤à¤ व सà¤à¤à¥à¤·à¤¿à¤ªà¥à¤¤ नाव निशà¥à¤à¤¿à¤¤ à¤à¤°à¤¾à¤µà¥\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "वà¥à¤§ à¤à¤¦à¥à¤¶ निशà¥à¤à¤¿à¤¤ à¤à¥à¤²à¥ नाहà¥.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() à¤
पयशà¥: %s"
@@ -2252,129 +2295,48 @@ msgstr "à¤à¥à¤à¥ डà¥à¤à¤¾ दाà¤à¤² à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पय
msgid "Not yet implemented.\n"
msgstr "à¤
à¤à¥à¤¨à¤¹à¥ लाà¤à¥ à¤à¥à¤²à¥ नाहà¥.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio डिमन पà¥à¤°à¥à¤£à¤ªà¤£à¥ नषà¥à¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "डिमन पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦ दà¥à¤¤ नाहà¥."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "सà¥à¤à¥à¤°à¥à¤® यशसà¥à¤µà¥à¤°à¤¿à¤¤à¥à¤¯à¤¾ बनवलà¥\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "सà¥à¤à¥à¤°à¥à¤® तà¥à¤°à¥à¤à¥: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "à¤à¥à¤³à¤µà¤£à¥ सà¥à¤¥à¤¾à¤ªà¥à¤¤.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"%s शॠà¤à¤à¤ªà¤¾à¤ à¤à¥à¤²à¥\n"
-"libpulse %s शॠà¤à¥à¤³à¤²à¥\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "à¤
वà¥à¤§ वाहिनॠनà¤à¤¾à¤¶à¤¾\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "फाà¤à¤² '%s' à¤à¤à¤¡à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "वाहिनॠनà¤à¤¾à¤¶à¤¾ फाà¤à¤²à¤¶à¥ à¤à¥à¤³à¤¤ नाहà¥.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "तातà¥à¤ªà¥à¤°à¥à¤¤à¥ spec '%s' वापरत à¤à¤¹à¥\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn à¤à¥à¤²à¥à¤ª à¤à¤°à¥à¤¤à¤¾ पà¥à¤°à¤µà¥à¤¶ पà¥à¤°à¤¾à¤ªà¥à¤¯ à¤
शà¤à¥à¤¯."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2389,7 +2351,7 @@ msgstr ""
"POLLOUT दà¥à¤µà¤¾à¤°à¥ सà¤à¥à¤ हà¥à¤£à¥ शà¤à¥à¤¯ à¤à¤¹à¥ -- तरॠपरसà¥à¤ªà¤° snd_pcm_avail() नॠ0 पà¥à¤°à¤µà¤¿à¤²à¥ à¤à¤¿à¤à¤µà¤¾ à¤à¤¤à¤° "
"मà¥à¤²à¥à¤¯ < min_avail à¤
सावà¥."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2404,34 +2366,103 @@ msgstr ""
"POLLIN दà¥à¤µà¤¾à¤°à¥ सà¤à¥à¤ हà¥à¤£à¥ शà¤à¥à¤¯ à¤à¤¹à¥ -- तरॠपरसà¥à¤ªà¤° snd_pcm_avail() नॠ0 पà¥à¤°à¤µà¤¿à¤²à¥ à¤à¤¿à¤à¤µà¤¾ à¤à¤¤à¤° "
"मà¥à¤²à¥à¤¯ < min_avail à¤
सावà¥."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "à¤à¤à¤à¤ªà¥à¤ %s + à¤à¤¨à¤ªà¥à¤ %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "à¤à¤à¤à¤ªà¥à¤ %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "à¤à¤¨à¤ªà¥à¤ %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "बà¤à¤¦ à¤à¤°à¤¾"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio à¤à¤µà¤¾à¤ सरà¥à¤µà¤°"
+
+#~ msgid "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 4b086a1..83d6d37 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-15 21:04+0200\n"
"Last-Translator: Geert Warrink <geert.warrink at onsnet.nu>\n"
"Language-Team: Dutch <nl at li.org>\n"
@@ -17,51 +17,51 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analoog mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analoog stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digitaal stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digitaal stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analoog surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digitaal surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analoog surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analoog surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analoog surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digitaal surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analoog surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -74,7 +74,7 @@ msgstr ""
"Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit "
"probleem a.u.b. aan de ALSA ontwikkelaars."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +87,7 @@ msgstr ""
"Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit "
"probleem a.u.b. aan de ALSA ontwikkelaars."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +100,11 @@ msgstr ""
"Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit "
"probleem a.u.b aan de ALSA ontwikkelaars."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Intern geluid"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -174,104 +174,104 @@ msgstr "Kan geen authorisatie krijgen: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit antwoordde met '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Ontving signaal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Afsluiten."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Kon gebruiker '%s' niet vinden."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Kon groep '%s' niet vinden."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Gebruiker '%s' (UID %lu) en groep '%s' (GID %lu) gevonden."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID van gebruiker '%s' en van groep '%s' passen niet bij elkaar."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Persoonlijke map van gebruiker '%s' is niet '%s', negeer het."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Aanmaken van '%s': %s mislukte"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Veranderen van groeps lijst: '%s' mislukte"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Veranderen van GID: %s mislukte"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Veranderen van UID: %s mislukte"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Root rechten met succes laten vervallen."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Systeem brede mode wordt op dit platform niet ondersteund."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) mislukte: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Analyseren van de commandoregel mislukte."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Wij zijn in de groep '%s', wat plannen met hoge prioriteit toestaat."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Wij zijn in de groep '%s', war real-time planning toestaat."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit kent ons acquire-high-priority rechten toe."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit weigert ons acquire-high-priority rechten."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit kent ons acquire-real-time rechten toe."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit weigert ons acquire-real-time rechten."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -292,48 +292,48 @@ msgstr ""
"PolicyKit privileges hebben, of lid van '%s\" worden, of de RLIMIT_NICE/"
"RLIMIT_RTPRIO limieten voor deze gebruiker verhogen."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Hoge prioriteit inplannen is aangezet in de configuratie maar niet "
"toegestaan door de richtlijnen."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO met succes verhoogd"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO mislukte: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Opgeven CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Real-time inplannen is aangezet in de configuratie maar niet toegestaan door "
"de richtlijnen."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Daemon draait niet"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon draait met PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Afschieten mislukt van daemon: '%s'"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -341,159 +341,159 @@ msgstr ""
"Dit programma is niet bedoeld om als root gedraaid te worden (behalve als --"
"system is opgegeven)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root rechten vereisd"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start wordt niet ondersteund voor systeem instances"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Draaiend in systeem mode, maar --disallow-exit is niet gezet!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Draaiend in systeem mode, maar --disallow-module-loading is niet gezet!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Draaiend in systeem mode, geforceerd uitzetten van SHM mode!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "Draaiend in systeem mode, geforceerd uitzetten van exit idle time!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Verkrijgen van stdio mislukte."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe mislukte: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() mislukte: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() mislukte: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Daemon opstarten mislukte."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Daemon met succes opgestart."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dit is PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Compilatie host: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilatie CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Draaiend op host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU's gevonden."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Pagina grootte is %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Gecompileerd met Valgrind ondersteuning: ja"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Gecompileerd met Valgrind ondersteuning: nee"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Draaiend in valgrind mode: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimaal gebouwd: ja"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimaak gebouwd: nee"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG gedefinieerd, alle verklaringen uitgezet."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH gedefinieerd, alleen snel pad verklaringen uitgezet."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Alle verklaringen aangezet."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Machine ID verkrijgen mislukte"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "Machine ID is: %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "Machine ID is: %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Gebruik van runtime map %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Verbruik van state map %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Draaiend in systeem mode: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() mislukte."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -501,31 +501,31 @@ msgstr ""
"Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met "
"aangezette high-resolution timers!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() mislukte."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Initialiseren van de daemon mislukte."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon opgestart zonder geladen modules, dat werkt niet."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Daemon opstarten is klaar."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Daemon afsluiten is begonnen."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Daemon is afgesloten."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -678,15 +678,15 @@ msgstr ""
" -n Laad het standaard script bestand "
"niet\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -694,52 +694,52 @@ msgstr ""
"--log-level verwacht een log level argument (numeriek uit de reeks 0..4 of "
"een van type debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit verwacht een bolean argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Ongeldig log doel: gebruik een van 'syslog', 'stderr', 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Ongeldige resample methode '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit verwacht een boolean argument"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm verwacht een boolean argument"
@@ -778,77 +778,82 @@ msgstr "Gebruik: %s\n"
msgid "Load Once: %s\n"
msgstr "Laad eenmaal: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Pad: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1098,8 +1103,8 @@ msgid "Top Rear Right"
msgstr "boven achter rechts"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(ongeldig)"
@@ -1284,172 +1289,167 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr ""
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr ""
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr ""
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr ""
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr ""
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1476,8 +1476,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1500,9 +1502,14 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1510,88 +1517,131 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Ongeldige resample methode '%s'."
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Ongeldige resample methode '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ongeldige resample methode '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
-msgid "Channel map doesn't match sample specification\n"
+msgid "open(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:912
#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+msgid "dup2(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "recording"
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "playback"
+#: ../src/utils/pacat.c:930
+msgid "Failed to generate sample specification for file.\n"
msgstr ""
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Analyseren van de commandoregel mislukte."
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
msgstr ""
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+msgid "Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
msgstr ""
-#: ../src/utils/pacat.c:751
+#: ../src/utils/pacat.c:1005
#, c-format
-msgid "Too many arguments.\n"
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
msgstr ""
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1006
+msgid "playback"
+msgstr ""
+
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_core_new() mislukte."
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr ""
@@ -1621,8 +1671,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1644,7 +1693,7 @@ msgid ""
"\n"
msgstr ""
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1652,32 +1701,32 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1691,12 +1740,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1718,12 +1767,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1745,20 +1794,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1769,12 +1818,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1784,12 +1833,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1800,22 +1849,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1836,12 +1885,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1858,12 +1907,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -1881,22 +1930,21 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1922,7 +1970,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -1930,71 +1978,63 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr ""
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr ""
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr ""
@@ -2071,109 +2111,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr ""
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr ""
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2184,7 +2163,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2195,34 +2174,34 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
diff --git a/po/or.po b/po/or.po
index a42bb7c..634e15f 100644
--- a/po/or.po
+++ b/po/or.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-09 13:16+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri at redhat.com>\n"
"Language-Team: Oriya <oriya-it at googlegroups.com>\n"
@@ -23,51 +23,51 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "à¬
ନàରàପ ମàନà"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "à¬
ନàରàପ ଷàà¬àରିà¬"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "ସାà¬à¬à¬¿à¬ ଷàà¬àରିଠ(IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "ସାà¬à¬à¬¿à¬ ଷàà¬àରିଠ(HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "à¬
ନàରàପ à¬à¬¤àରàପାରàଶàà± 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "ସାà¬à¬à¬¿à¬ à¬à¬¤àରàପାରàଶàà± 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "à¬
ନàରàପ à¬à¬¤àରàପାରàଶàà± 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "à¬
ନàରàପ à¬à¬¤àରàପାରàଶàà± 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "à¬
ନàରàପ à¬à¬¤àରàପାରàଶàà± 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "ସାà¬à¬à¬¿à¬ à¬à¬¤àରàପାରàଶàà± 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "à¬
ନàରàପ à¬à¬¤àରàପାରàଶàà± 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -80,7 +80,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -93,7 +93,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -106,11 +106,11 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à¬à¬ààନàତରàଣ ଧàà±à¬¨à¬¿"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "ମଡàମ"
@@ -180,104 +180,104 @@ msgstr "auth ପାà¬à¬²à¬¾ ନାହିà¬: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit '%s' ସହିତ à¬à¬¤àତର ଦàà¬à¬¥à¬¿à¬²à¬¾"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "ସà¬à¬àତ %s ପାà¬à¬²à¬¾à¥¤"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "à¬à¬¤àତàà¬à¬¿à¬¤ à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "à¬à¬¾à¬³à¬ '%s' à¬à à¬àà¬à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "ସମàହ '%s' à¬à à¬àà¬à¬¿ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "à¬à¬¾à¬³à¬ '%s' (UID %lu) à¬à¬¬à¬ ସମàହ '%s' (GID %lu) ମିଳିଲା।"
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "à¬à¬¾à¬³à¬ '%s' à¬à¬¬à¬ ସମàହ '%s' ର GID ମàଳà¬à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤"
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "à¬à¬¾à¬³à¬ '%s' ର ମàà¬àà ଡିରàà¬àà¬àରàà¬à¬¿ '%s' ନàହà¬, à¬
à¬àରାହàà à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ନିରàମାଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "ସମàହ ତାଲିà¬à¬¾à¬à ପରିବରàତàତନ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID à¬à ପରିବରàତàତନ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID à¬à ପରିବରàତàତନ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ମàà¬àà à¬à¬¾à¬³à¬ à¬
ଧିà¬à¬¾à¬°à¬à ସଫଳତାର ସହିତ ପà¬à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "ତନàତàରମà ଧାରା à¬à¬¹à¬¿ ପàଲାà¬à¬«à¬°àମରà à¬
ସମରàଥିତ।"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "ପାଠàà ନିରàଦàଦàଶà¬à ବିଶàଳàଷଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "à¬à¬®à ମାନà ଶàରàଣà '%s'ରà à¬
à¬à, à¬à¬àà¬-ପàରାଥମିà¬à¬¤à¬¾ ଯàà¬à¬¨à¬¾à¬à à¬
ନàମତି ଦàà¬à¥¤"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "à¬à¬®à ମାନà ଶàରàଣà '%s'ରà à¬
à¬à, ପàରà¬àତ- ସମà ଯàà¬à¬¨à¬¾à¬à à¬
ନàମତି ଦàà¬à¥¤"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit à¬à¬®à¬à acquire-high-priority à¬
ଧିà¬à¬¾à¬° ଦàà¬à¬¥à¬¾à¬à¥¤"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit acquire-high-priority à¬
ଧିà¬à¬¾à¬°à¬à ବାରଣ à¬à¬°à¬¿à¬¥à¬¾à¬à¥¤"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit à¬à¬®à¬à acquire-real-time à¬
ଧିà¬à¬¾à¬° ଦàà¬à¬¥à¬¾à¬à¥¤"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time à¬
ଧିà¬à¬¾à¬°à¬à ବାରଣ à¬à¬°à¬¿à¬¥à¬¾à¬à¥¤"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -298,44 +298,44 @@ msgstr ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "à¬à¬àà¬-ପàରାଥମିଠଯàà¬à¬¨à¬¾ ବିନààାସରà ସà¬àରିà à¬à¬¿à¬¨àତà ନàତି ଦàà±à¬¾à¬°à¬¾ à¬
ନàମàଦିତ ନàହà¬à¥¤"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO à¬à ସଫଳତାର ସହିତ ବàଦàଧିà¬à¬°à¬¿à¬¥à¬¾à¬"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE à¬à ତààାଠà¬à¬°à¬¿à¬¥à¬¾à¬"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Real-time ଯàà¬à¬¨à¬¾ ବିନààାସ ଫାà¬à¬²à¬°à ସà¬àରିà ହàà¬à¬¥à¬¾à¬ à¬à¬¿à¬¨àତà ନିତà ଦàà±à¬¾à¬°à¬¾ à¬
ନàମàଦିତ ନàହà¬à¥¤"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ଡàମନ à¬à¬¾à¬²àନାହିà¬"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "ଡàମନ PID %u ପରି à¬à¬¾à¬²àà¬
à¬à¬¿"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ଡàମନà¬à ବନàଦ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -343,158 +343,158 @@ msgstr ""
"à¬à¬¹à¬¿ ପàରà¬àରାମà¬à¬¿ ମàà¬àà à¬à¬¾à¬³à¬ à¬à¬¾à¬¬à¬°à à¬à¬²à¬¾à¬à¬¬à¬¾ ପାà¬à¬ ନିରàଦàଦିଷàଠହàà¬à¬¨à¬¾à¬¹à¬¿à¬ (unless --system is "
"specified)।"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ମàà¬àà à¬à¬¾à¬³à¬ à¬
ଧିà¬à¬¾à¬° à¬à¬¬à¬¶ààà¬à¥¤"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start ତନàତàର ସàଥିତି ପାà¬à¬ ସମରàଥିତ ନàହà¬à¥¤"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, à¬à¬¿à¬¨àତà --disallow-exit à¬à ସàଠà¬à¬°à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, à¬à¬¿à¬¨àତà --disallow-module-loading à¬à ସàଠà¬à¬°à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, SHM ଧାରାà¬à ବାଧàଯତାମàଳଠà¬à¬¾à¬¬à¬°à ନିଷàà¬àରିà à¬à¬°à¬¿à¬¥à¬¾à¬!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, ପàରସàଥାନ ସàଥିର ସମàà¬à ବାଧàଯତାମàଳଠà¬à¬¾à¬¬à¬°à ନିଷàà¬àରିà à¬à¬°à¬¿à¬¥à¬¾à¬!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio à¬à à¬
ଧିà¬à¬¾à¬° à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "ପାà¬à¬ª ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ଡàମନ à¬à¬°à¬®àଠବିଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "ଡàମନ à¬à¬°à¬®àଠସଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¬à¬¹à¬¾ ହàà¬à¬à¬¿ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "ସà¬à¬à¬³à¬¨ à¬à¬§à¬¾à¬°: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ସà¬à¬à¬³à¬¨ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "à¬à¬§à¬¾à¬°à¬°à à¬à¬¾à¬²àà¬
à¬à¬¿: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs ମିଳିà¬à¬¿à¥¤"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "ପàଷàଠା à¬à¬à¬¾à¬°à¬à¬¿ ହàà¬à¬à¬¿ %lu ବାà¬à¬"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ସମରàଥନ ସହିତ ସà¬à¬à¬³à¬¨ ହàà¬à¬à¬¿: yes"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ସମରàଥନ ସହିତ ସà¬à¬à¬³à¬¨ ହàà¬à¬à¬¿: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "à¬à¬ªà¬¯àà¬àତ ନିରàମାଣ: yes"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "à¬à¬ªà¬¯àà¬àତ ନିରàମାଣ: no"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG à¬à ବààାà¬ààା à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿, ସମସàତ ନିଶàà¬àà¬à ନିଷàà¬àରିà à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH à¬à ବààାà¬ààା à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿, à¬àବଳ ତàବàର ପଥ ନିଶàà¬àà¬à ନିଷàà¬àରିà à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "ସମସàତ ନିଶàà¬àà¬à ସà¬àରିà à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "ଯନàତàର ID ପାà¬à¬¬à¬¾à¬°à ବିଫଳ"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ଯନàତàର ID à¬à¬¿ ହàà¬à¬à¬¿ %s।"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ଯନàତàର ID à¬à¬¿ ହàà¬à¬à¬¿ %s।"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ପàରà¬à¬³à¬¿à¬¤ ଡିରàà¬àà¬àରà %s à¬à ବààବହାର à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "ସàଥିତି ଡିରàà¬àà¬àରà %s à¬à ବààବହାର à¬à¬°à¬¿à¥¤"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ବିଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ସତàଠà¬à¬àà¬-ବିà¬àଦନ ସମà ମାପଠà¬à¬ªà¬²à¬¬àଧ! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -502,31 +502,31 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() ବିଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "ଡàମନà¬à à¬à¬°à¬®àଠà¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ଧାରଣ ହàà¬à¬¥à¬¿à¬¬à¬¾ à¬à¬à¬à¬¾à¬à¬¶à¬àଡ଼ିଠବିନା ଡàମନ à¬à¬°à¬®àଠହàà¬à¬à¬¿, à¬à¬¾à¬°àଯàà à¬à¬°à¬¿à¬¬à¬¾à¬à ବାରଣ à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ଡàମନ à¬à¬°à¬®àଠସମàପàରàଣàଣ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ଡàମନ ବନàଦà¬à à¬à¬°à¬®àଠà¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "ଡàମନà¬à ସମାପàତ à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -668,15 +668,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -684,52 +684,52 @@ msgstr ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "à¬
ବàଧ ଲଠଲà¬àଷàଯସàଥଳ: 'syslog', 'stderr' à¬à¬¿à¬®àବା 'auto' à¬à ବààବହାର à¬à¬°à¬¨àତà।"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "à¬
ବàଧ ପàନଠପàରତିଦରàଶନ ଧାରା '%s'।"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm ବàଲିà¬à¬¨ ସàà±à¬¤à¬¨àତàରà¬à¬° à¬à¬¶à¬¾ à¬à¬°àà¬
à¬à¬¿"
@@ -768,77 +768,82 @@ msgstr "ବààବହାର ବିଧି: %s\n"
msgid "Load Once: %s\n"
msgstr "ଥରà ଧାରଣ à¬à¬°à¬¨àତà: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ପଥ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] à¬
ବàଧ ଲଠଲà¬àଷàଯସàଥଳ '%s'।"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] à¬
ବàଧ ଲଠସàତର%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] à¬
ବàଧ ପàନଠମିଶàରଣ ଧାରା '%s'।"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] à¬
ବàଧ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à¬à¬¹à¬¿ ପàଲାà¬à¬«à¬°àମରà ସମରàଥିତ ନàହà¬à¥¤"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] à¬
ବàଧ ନମàନା ଶàଳà '%s'।"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] à¬
ବàଧ ନମàନା ହାର '%s'।"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] à¬
ବàଧ ନମàନା à¬ààାନàଲ '%s'।"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] à¬
ବàଧ à¬ààାନàଲ ମààାପ '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] à¬
ବàଧ ସà¬à¬ààଠà¬à¬£àଡà¬àଡ଼ିଠ'%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] à¬
ବàଧ à¬à¬£àଡ à¬à¬à¬¾à¬° '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à¬
ବàଧ ସàନàଦର ସàତର '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ବିନààାସ ଫାà¬à¬² à¬àଲିବାରà ବିଫଳ: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1090,8 +1095,8 @@ msgid "Top Rear Right"
msgstr "à¬à¬ªà¬° ପଠଡ଼ାହାଣ ପାà¬"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(à¬
ବàଧ)"
@@ -1276,173 +1281,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "à¬
à¬à¬£à¬¾ à¬
ନàଲà¬àନ '%s' ପାà¬à¬ ସନàଦàଶ à¬àରହଣ à¬à¬°à¬¿à¬
à¬à¬¿"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ଧାରାà¬à ବାହାର à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ ହàà¬à¬à¬¿: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "ପà¬à¬à¬²à¬¾ ଧାରାà¬à ବାହାର à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "ସରàà¬à¬° ପàରତି ଡàରàନିà¬àଠସà¬à¬¯àà¬à¥¤\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ଧାରା ସଫଳତାର ସହିତ ନିରàମାଣ ହàà¬à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "ବଫର ମàà¬àରିà¬à¬¸: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "ବଫର ମàà¬àରିà¬à¬¸: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ନମàନା spec '%s' ବààବହାର à¬à¬°à¬¿, à¬ààାନàଲ ମààାପ '%s'।\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "à¬à¬ªà¬à¬°à¬£ %s ସହିତ ସà¬à¬¯àà¬àତ ହàà¬à¬à¬¿ (%u, %ssuspended)।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ଧାରା ତàରàà¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ଧାରା à¬à¬ªà¬à¬°à¬£ ନିଲମàବିତ ହàà¬à¬à¬¿à¥¤%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ଧାରା à¬à¬ªà¬à¬°à¬£ ପàନଠà¬à¬³à¬¨ ହàà¬à¬à¬¿à¥¤%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ଧାରା underrun.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ଧାରା overrun.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ଧାରା à¬à¬°à¬®àଠହàà¬à¬à¬¿à¥¤%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ଧାରା à¬à¬ªà¬à¬°à¬£ %sà¬à à¬à¬¤à¬¿ à¬à¬°à¬¿à¬à¬¿ (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ଧାରା ବଫର à¬àଣà¬àଡ଼ିଠପରିବରàତàତନ ହàà¬à¬à¬¿à¥¤%s\n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "ସà¬à¬¯àଠସàଥାପିତ ହàà¬à¬à¬¿à¥¤%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "ସà¬à¬¯àଠବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ଧାରାà¬à ବାହାର à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "ପà¬à¬à¬²à¬¾ ଧାରାà¬à ବାହାର à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "ସରàà¬à¬° ପàରତି ଡàରàନିà¬àଠସà¬à¬¯àà¬à¥¤\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF ପାà¬à¬
à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "ସà¬à¬àତ ପାà¬à¬²à¬¾, ପàରସàଥାନ à¬à¬°àà¬
à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "ବିଳମàବତା ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ସମà: %0.3f sec; ବିଳମàବତା: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() ବିଫଳ ହàà¬à¬à¬¿: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1468,8 +1468,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1492,6 +1494,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1539,7 +1546,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1550,88 +1557,133 @@ msgstr ""
"libpulse %s ସହିତ ସà¬à¬à¬³à¬¿à¬¤\n"
"libpulse %s ସହିତ ସà¬à¬¯àà¬àତ\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "à¬
ବàଧ à¬ààାନàଲ ମààାପ '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "à¬
ବàଧ ପàନଠପàରତିଦରàଶନ ଧାରା '%s'।"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "à¬
ବàଧ à¬ààାନàଲ ମààାପ '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "à¬
ବàଧ ବିଳମàବତା ବିଶàଷ ଲà¬àଷଣ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "à¬
ବàଧ ପଦàଧତି ସମà ବିଶàଷ ଲà¬àଷଣ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "à¬
ବàଧ ପàନଠପàରତିଦରàଶନ ଧାରା '%s'।"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "à¬
ବàଧ ନମàନା ବିଶàଷ ଲà¬àଷଣ\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "à¬
ତààଧିଠସàà±à¬¤à¬¨àତàରà¬à¬°à¥¤\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "ନମàନା ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ଧàà±à¬¨à¬¿ ଫାà¬à¬² à¬àଲିବାରà ବିଫଳ।\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "ନମàନା ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "ନମàନା ବିଶàଷ ଲà¬àଷଣ ସହିତ à¬ààାନàଲ ମààାପ ମàଳ à¬à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "ନମàନା ବିଶàଷ ଲà¬àଷଣ '%s' ସହିତ à¬àà¬à¬¿à¬ %s ଧାରାà¬à à¬àଲàà¬
à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "à¬
ନàଲିପି à¬à¬°àà¬
à¬à¬¿"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "ପà¬à¬à¬²à¬¾"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "à¬
ତààଧିଠସàà±à¬¤à¬¨àତàରà¬à¬°à¥¤\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() ବିଫଳ ହàà¬à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() ବିଫଳ ହàà¬à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() ବିଫଳ ହàà¬à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() ବିଫଳ ହàà¬à¬à¬¿à¥¤\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() ବିଫଳ ହàà¬à¬à¬¿à¥¤\n"
@@ -1661,8 +1713,7 @@ msgstr "ପàନଠà¬à¬³à¬¨ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "WARNING: ଧàà±à¬¨à¬¿ ସରàà¬à¬°à¬à¬¿ ସàଥାନàà ନàହà¬, ନିଲମàବିତ à¬à¬°àନାହିà¬à¥¤\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ପାà¬à¬à¬¿, à¬à¬¤àସାହିତ à¬à¬°àà¬
à¬à¬¿à¥¤\n"
@@ -1690,7 +1741,7 @@ msgstr ""
" -s, --server=SERVER ସà¬à¬¯àଠà¬à¬°à¬¿à¬¬à¬¾ ପାà¬à¬ ସରàà¬à¬°à¬° ନାମ\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1701,32 +1752,32 @@ msgstr ""
"libpulse %s ସହିତ ସà¬à¬à¬³à¬¿à¬¤\n"
"libpulse %s ସହିତ ସà¬à¬¯àà¬àତ\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "ପରିସà¬à¬ààାନ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ବରàତàତମାନ ବààବହାରରà à¬
à¬à¬¿: %u ବàଲଠସମàଦାà %s ବାà¬à¬ ଧାରଣ à¬à¬°à¬¿à¬¥à¬¾à¬à¥¤\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "ସମà¬àର à¬àବନରà ବଣàà¬à¬¿à¬¤ ହàà¬à¬¥à¬¾à¬: %u ବàଲଠସମàଦାà %s ବାà¬à¬ ଧାରଣ à¬à¬°à¬¿à¬¥à¬¾à¬à¥¤\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ନମàନା à¬ààାଶà à¬à¬à¬¾à¬°: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "ସରàà¬à¬° ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1749,12 +1800,12 @@ msgstr ""
"ପàରàବନିରàଦàଧାରିତ à¬à¬¤àସ: %s\n"
"à¬àà¬à¬¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "ସିà¬àଠସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1793,12 +1844,12 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "à¬à¬¤àସ ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1837,20 +1888,20 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "à¬à¬à¬à¬¾à¬à¬¶ ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1867,12 +1918,12 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à¬àରାହଠସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1887,12 +1938,12 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à¬à¬¾à¬°àଡ ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1909,22 +1960,22 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tରàପରàà¬à¬àଡ଼ିà¬:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tସà¬àରିà ରàପରàà¬à¬¾: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "ସିà¬àଠନିବàଶ ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1961,12 +2012,12 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "à¬à¬¤àସ ଫଳାଫଳ ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1995,12 +2046,12 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "ନମàନା ସàà¬à¬¨à¬¾ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2031,22 +2082,21 @@ msgstr ""
"\tà¬àଣଧରàମ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "ବିଫଳତା: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ନମàନାà¬à ଧାରଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "ଫାà¬à¬²à¬° ସମà ପàରàବ ସମାପàତି\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2093,7 +2143,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2104,48 +2154,44 @@ msgstr ""
"libpulse %s ସହିତ ସà¬à¬à¬³à¬¿à¬¤\n"
"libpulse %s ସହିତ ସà¬à¬¯àà¬àତ\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "ଧାରଣ à¬à¬°à¬¿à¬¬à¬¾ ପାà¬à¬ à¬àà¬à¬¿à¬ ନàମନା ଫାà¬à¬² à¬à¬²àଲàଠà¬à¬°à¬¨àତà\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "ଧàà±à¬¨à¬¿ ଫାà¬à¬² à¬àଲିବାରà ବିଫଳ।\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "ନମàନା ବିଶàଷ ଲà¬àଷଣ '%s' ସହିତ à¬àà¬à¬¿à¬ %s ଧାରାà¬à à¬àଲàà¬
à¬à¬¿à¥¤\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "à¬à¬²à¬¾à¬à¬¬à¬¾ ପାà¬à¬ à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ ନମàନା ନାମ à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à ହàବ\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "à¬à¬¾à¬¢à¬¼à¬¿à¬¬à¬¾ ପାà¬à¬ à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ ନମàନା ନାମ à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à ହàବ\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ ସିà¬àଠନିବàଶ à¬
ନàà¬àରମଣିà¬à¬¾ à¬à¬¬à¬ à¬àà¬à¬¿à¬ ସିà¬àଠà¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à ହàବ\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ à¬à¬¤àସ ନିରàà¬à¬® à¬
ନàà¬àରମଣିà¬à¬¾ à¬à¬¬à¬ à¬àà¬à¬¿à¬ à¬à¬¤àସ à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à ହàବ\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ à¬à¬à¬à¬¾à¬à¬¶ ନାମ à¬à¬¬à¬ ସàà±à¬¤à¬¨àତàରà¬à¬°à¬àଡ଼ିà¬à à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾ à¬à¬à¬¿à¬¤à¥¤\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ à¬à¬à¬à¬¾à¬à¬¶ à¬
ନàà¬àରମଣିà¬à¬¾à¬à à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾ à¬à¬à¬¿à¬¤ ନàହà¬\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2153,8 +2199,7 @@ msgstr ""
"à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬à¬°à à¬
ଧିଠସିà¬àଠà¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à ପଡ଼ିନପାରà। à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ ବàଲିà¬à¬¨ ମàଲàà à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à "
"ହàବ।\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2162,17 +2207,15 @@ msgstr ""
"à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬à¬°à à¬
ଧିଠà¬à¬¤àସ à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à ପଡ଼ିନପାରà। à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ ବàଲିà¬à¬¨ ମàଲàà à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à "
"ହàବ।\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "à¬à¬ªà¬£à¬àà¬à à¬àà¬à¬¿à¬ à¬à¬¾à¬°àଡ ନାମ/à¬
ନàà¬àରମଣିà¬à¬¾ à¬à¬¬à¬ ରàପରàà¬à¬¾ ନାମ à¬à¬²àଲàଠà¬à¬°à¬¿à¬¬à¬¾à¬à ହàବ\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "à¬àଣସି ବàଧ ନିରàଦàଦàଶ à¬à¬²àଲàଠà¬à¬°à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() ବିଫଳ ହàà¬à¬à¬¿: %s"
@@ -2255,126 +2298,48 @@ msgstr "à¬àà¬à¬¿ ତଥàà ଧାରଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫ
msgid "Not yet implemented.\n"
msgstr "à¬
ପରàଯààନàତ à¬à¬¾à¬°àଯààà¬à¬¾à¬°à ହàà¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ସà¬àà¬(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "ସà¬à¬¯àଠà¬à¬°à¬¨àତà(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ଡàମନà¬à ବନàଦ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ଡàମନ à¬à¬¤àତର ଦàà¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "ବାà¬à¬¨àତà(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "ପଢ଼ନàତà(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "ଲàà¬à¬¨àତà(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ଧାରା ସଫଳତାର ସହିତ ନିରàମିତ ହàà¬à¬à¬¿\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ଧାରା ତàରàà¬à¬¿: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "ସà¬à¬¯àଠସàଥାପିତ ହàà¬à¬¸à¬¾à¬°à¬¿à¬à¬¿à¥¤\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help à¬à¬¹à¬¿ ସହାàତା ଦରàଶାନàତà\n"
-" --version ସà¬à¬¸àà¬à¬°à¬£ ଦରàଶାନàତà\n"
-"\n"
-" -v, --verbose verbose ପàରààà¬à¬à ସà¬àରିà à¬à¬°à¬¨àତà\n"
-"\n"
-" -s, --server=SERVER ସà¬à¬¯àଠà¬à¬°à¬¿à¬¬à¬¾ ପାà¬à¬ ସରàà¬à¬°à¬° ନାମ\n"
-" -d, --device=DEVICE ସà¬à¬¯àଠà¬à¬°à¬¿à¬¬à¬¾ ପାà¬à¬ ସିà¬àà¬à¬° ନାମ\n"
-" -n, --client-name=NAME ସରàà¬à¬° à¬à¬ªà¬°à à¬à¬¹à¬¿ à¬àରାହà¬à¬àà¬à à¬à¬¿à¬ªà¬°à¬¿ ଡ଼ାà¬à¬¿à¬¬à\n"
-" --stream-name=NAME ସରàà¬à¬° à¬à¬ªà¬°à à¬à¬¹à¬¿ ଧାରାà¬à à¬à¬¿à¬ªà¬°à¬¿ ଡ଼ାà¬à¬¿à¬¬à\n"
-" --volume=VOLUME ପàରାରମàà¬à¬¿à¬ (ସିଧା) à¬à¬à¬¾à¬°à¬à ସàମା 0...65536 "
-"ମଧàଯରà à¬à¬²àଲàଠà¬à¬°à¬¨àତà\n"
-" --channel-map=CHANNELMAP ବààବହାର ପାà¬à¬ à¬ààାନàଲ ମààାପà¬à ସàଠà¬à¬°à¬¨àତà\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse %s ସହିତ ସà¬à¬à¬³à¬¿à¬¤\n"
-"libpulse %s ସହିତ ସà¬à¬¯àà¬àତ\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "à¬
ବàଧ à¬ààାନàଲ ମààାପ\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ଫାà¬à¬² '%s' à¬à à¬àଲିବାରà ବିଫଳ\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "à¬ààାନàଲ ମààାପ ଫାà¬à¬² ସହିତ ମàଳ à¬à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ନମàନା spec '%s' ବààବହାର à¬à¬°à¬¿\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn à¬
ପରିବରàତàତନààତାà¬à à¬
à¬à¬¿à¬à¬®àà à¬à¬°à¬¿à¬¹àଠନାହିà¬"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2391,7 +2356,7 @@ msgstr ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2408,34 +2373,99 @@ msgstr ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "ଫଳାଫଳ %s + ନିବàଶ %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "ଫଳାଫଳ %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "ନିବàଶ %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "à¬
ଫ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "à¬à¬àଠଫିଡିଲିà¬à¬¿ ପà¬à¬à¬²à¬¾ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à¬àଲିଫàନି ଡàààପàଲàà¬àସ (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio ଧàà±à¬¨à¬¿ ସରàà¬à¬°"
+
+#~ msgid "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 fa03b28..e36cb5c 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-05 08:27+0000\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-06-06 07:38+0530\n"
"Last-Translator: A S Alam <aalam at users.sf.net>\n"
"Language-Team: American English <punjabi-users at lists.sf.net>\n"
@@ -19,51 +19,51 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: ../src/modules/alsa/alsa-util.c:530
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨ ਮà©à¨¨à©"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨ ਸà¨à©à¨°à©à¨"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "ਡਿà©à©à¨à¨² ਸà¨à©à¨°à©à¨ (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "ਡਿà©à¨¿à¨à¨² ਸà¨à©à¨°à©à¨ (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨ ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "ਡਿà©à¨¿à¨à¨² ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨ ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨ ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨ ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "ਡਿà©à¨¿à¨à¨² ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "à¨à¨¨à¨¾à¨²à¨¾à¨ ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 7.1"
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -72,10 +72,9 @@ msgid ""
"to the ALSA developers."
msgstr ""
"snd_pcm_avail() ਤà©à¨ à¨à©±à¨ ਮà©à©±à¨² ਮਿਲਿਠਹà©, à¨à© ਬਹà©à¨¤ ਵੱਡਾ ਹà©: %lu ਬਾà¨à¨ (%lu ms)।\n"
-"à¨à¨¹ ALSA ਡਰਾà¨à¨µà¨° '%s' ਵਿà¨à¨²à¨¾ ਬੱਠਲੱà¨à¨¦à¨¾ ਹà©à¥¤ à¨à¨¸ ਮà©à©±à¨¦à© ਦ੠ALSA ਡਿਵà©à¨²à¨ªà¨°à¨¾à¨ ਨà©à©° "
-"ਰਿਪà©à¨°à¨ ਦਿਠà¨à©à¥¤"
+"à¨à¨¹ ALSA ਡਰਾà¨à¨µà¨° '%s' ਵਿà¨à¨²à¨¾ ਬੱਠਲੱà¨à¨¦à¨¾ ਹà©à¥¤ à¨à¨¸ ਮà©à©±à¨¦à© ਦ੠ALSA ਡਿਵà©à¨²à¨ªà¨°à¨¾à¨ ਨà©à©° ਰਿਪà©à¨°à¨ ਦਿਠà¨à©à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1649
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -84,10 +83,9 @@ msgid ""
"to the ALSA developers."
msgstr ""
"snd_pcm_delay() ਤà©à¨ à¨à©±à¨ ਮà©à©±à¨² ਮਿਲਿਠਹà©, à¨à© ਬਹà©à¨¤ ਵੱਡਾ ਹà©: %li ਬਾà¨à¨ (%s%lu ms)।\n"
-"à¨à¨¹ ALSA ਡਰਾà¨à¨µà¨° '%s' ਵਿà¨à¨²à¨¾ ਬੱਠਲੱà¨à¨¦à¨¾ ਹà©à¥¤ à¨à¨¸ ਮà©à©±à¨¦à© ਦ੠ALSA ਡਿਵà©à¨²à¨ªà¨°à¨¾à¨ ਨà©à©° "
-"ਰਿਪà©à¨°à¨ ਦਿਠà¨à©à¥¤"
+"à¨à¨¹ ALSA ਡਰਾà¨à¨µà¨° '%s' ਵਿà¨à¨²à¨¾ ਬੱਠਲੱà¨à¨¦à¨¾ ਹà©à¥¤ à¨à¨¸ ਮà©à©±à¨¦à© ਦ੠ALSA ਡਿਵà©à¨²à¨ªà¨°à¨¾à¨ ਨà©à©° ਰਿਪà©à¨°à¨ ਦਿਠà¨à©à¥¤"
-#: ../src/modules/alsa/alsa-util.c:1695
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -96,14 +94,13 @@ msgid ""
"to the ALSA developers."
msgstr ""
"snd_pcm_mmap_begin() ਤà©à¨ à¨à©±à¨ ਮà©à©±à¨² ਮਿਲਿਠਹà©, à¨à© ਬਹà©à¨¤ ਵੱਡਾ ਹà©: %lu ਬਾà¨à¨ (%lu ms)।\n"
-"à¨à¨¹ ALSA ਡਰਾà¨à¨µà¨° '%s' ਵਿà¨à¨²à¨¾ ਬੱਠਲੱà¨à¨¦à¨¾ ਹà©à¥¤ à¨à¨¸ ਮà©à©±à¨¦à© ਦ੠ALSA ਡਿਵà©à¨²à¨ªà¨°à¨¾à¨ ਨà©à©° "
-"ਰਿਪà©à¨°à¨ ਦਿਠà¨à©à¥¤"
+"à¨à¨¹ ALSA ਡਰਾà¨à¨µà¨° '%s' ਵਿà¨à¨²à¨¾ ਬੱਠਲੱà¨à¨¦à¨¾ ਹà©à¥¤ à¨à¨¸ ਮà©à©±à¨¦à© ਦ੠ALSA ਡਿਵà©à¨²à¨ªà¨°à¨¾à¨ ਨà©à©° ਰਿਪà©à¨°à¨ ਦਿਠà¨à©à¥¤"
-#: ../src/pulsecore/sink.c:2061
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à¨
ੰਦਰà©à¨¨à© à¨à¨¡à©à¨"
-#: ../src/pulsecore/sink.c:2067
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "ਮਾਡਮ"
@@ -173,104 +170,104 @@ msgstr "ਪਰਮਾਣà¨à¨¿à¨¤à¨¾ ਨਹà©à¨ ਲ੠ਸà¨à¨¦à¨¾: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ਦ੠à¨à¨µà¨¾à¨¬ ਵà¨à©à¨ '%s' ਮਿਲਿਠਹà©"
-#: ../src/daemon/main.c:137
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "%s ਸਿà¨à¨¨à¨² ਮਿਲਿਠਹà©à¥¤"
-#: ../src/daemon/main.c:164
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ਬੰਦ à¨à©à¨¤à¨¾ à¨à¨¾ ਰਿਹਾ ਹà©à¥¤"
-#: ../src/daemon/main.c:182
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' ਯà©à¨à¨¼à¨° ਲੱà¨à¨£ ਵਿੱਠਫà©à¨²à©à¨¹ ਹà©à¨à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' à¨à¨°à©à©±à¨ª ਲੱà¨à¨£ ਵਿੱਠਫà©à¨² ਹà©à¨à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:191
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ਯà©à¨à¨¼à¨° '%s' (UID %lu) à¨
ਤ੠à¨à¨°à©à©±à¨ª '%s' (GID %lu) ਲੱà¨à© ਹਨ।"
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ਯà©à¨à¨¼à© '%s' à¨
ਤ੠à¨à¨°à©à©±à¨ª '%s' ਦਾ GID ਮà©à¨² ਨਹà©à¨ à¨à¨¾à¨à¨¦à©à¥¤"
-#: ../src/daemon/main.c:201
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ਯà©à¨à¨¼à© '%s' ਦ੠à¨à¨° ਡਾà¨à¨°à©à¨à¨à¨°à© '%s' ਨਹà©à¨, à¨
ਣਡਿੱਠਾ à¨à¨° ਰਿਹਾ।"
-#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ਬਣਾà¨à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:216
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "à¨à¨°à©à©±à¨ª ਲਿਸਠਬਦਲਣ ਲਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:232
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID ਬਦਲਣ ਲਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:248
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID ਬਦਲਣ ਲਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:262
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ਰà©à¨ à¨
ਧਿà¨à¨¾à¨° ਸਫਲਤਾਪà©à¨°à¨ ਹà¨à¨¾à¨ à¨à¨à¥¤"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à¨à¨¸ ਪਲà©à¨à¨«à¨¾à¨°à¨® ਤ੠ਸਿਸà¨à¨® ਸੰਬੰਧ੠ਮà©à¨¡ ਨà©à©° ਸਹਿਯà©à¨ ਨਹà©à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:288
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ਫà©à¨²à©à¨¹ ਹà©à¨à¨: %s"
-#: ../src/daemon/main.c:462
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "à¨à¨®à¨¾à¨à¨¡ ਲਾà¨à¨¨ ਪਾਰਸ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹à¥¤"
-#: ../src/daemon/main.c:486
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "à¨
ਸà©à¨ à¨à¨°à©à©±à¨ª '%s' ਵਿੱਠਹਾà¨, à¨à¨¿à¨¸ ਨà©à©° ਵਧà©à¨°à©-ਤਰà¨à©à¨¹ ਤਹਿ à¨à©à¨¤à¨¾ à¨à¨¿à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:493
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "à¨
ਸà©à¨ à¨à¨°à©à©±à¨ª '%s' ਵਿੱਠਹਾà¨, à¨à¨¿à¨¸ ਨà©à©° ਰà©à¨
ਲ-à¨à¨¾à¨à¨® ਤਹਿ à¨à©à¨¤à¨¾ à¨à¨¿à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ਸਾਨà©à©° ਵਧà©à¨°à©-ਤਰà¨à©à¨¹-ਪà©à¨°à¨¾à¨ªà¨¤à© à¨
ਧਿà¨à¨¾à¨° ਦਿੰਦ੠ਹà©à¥¤"
-#: ../src/daemon/main.c:504
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ਵਧà©à¨°à©-ਤਰà¨à©à¨¹-ਪà©à¨°à¨¾à¨ªà¨¤à© à¨
ਧਿà¨à¨¾à¨° ਹà¨à¨¾à¨à¨à¨¦à© ਹà©à¥¤"
-#: ../src/daemon/main.c:509
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit ਸਾਨà©à©° ਰà©à¨
ਲ-à¨à¨¾à¨à¨®-ਪà©à¨°à¨¾à¨ªà¨¤à© à¨
ਧਿà¨à¨¾à¨° ਦਿੰਦ੠ਹà©à¥¤"
-#: ../src/daemon/main.c:512
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ਰà©à¨
ਲ-à¨à¨¾à¨à¨®-ਪà©à¨°à¨¾à¨ªà¨¤à© à¨
ਧਿà¨à¨¾à¨° ਹà¨à¨¾à¨à¨à¨¦à© ਹà©à¥¤"
-#: ../src/daemon/main.c:541
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -291,225 +288,232 @@ msgstr ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:566
-msgid "High-priority scheduling enabled in configuration but not allowed by policy."
+#: ../src/daemon/main.c:585
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "ਸੰਰà¨à¨¨à¨¾ ਵਿੱਠਵਧà©à¨°à©-ਤਰà¨à©à¨¹ ਯà©à¨ à¨à©à¨¤à© à¨à¨ ਹà©, ਪਰ ਪਾਲਸ੠ਵਲà©à¨ ਮਨà¨à¨¼à©à¨° ਨਹà©à¨ à¨à©à¨¤à©à¥¤"
-#: ../src/daemon/main.c:595
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO ਨà©à©° ਸਫਲਤਾਪà©à¨°à¨ ਵਧਾà¨à¨ à¨à¨¿à¨"
-#: ../src/daemon/main.c:598
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO ਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:605
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE ਨà©à©° ਹà¨à¨¾ ਰਿਹਾ ਹà©"
-#: ../src/daemon/main.c:612
-msgid "Real-time scheduling enabled in configuration but not allowed by policy."
+#: ../src/daemon/main.c:631
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "ਰà©à¨
ਲ-à¨à¨¾à¨à¨® ਤਹਿ ਨà©à©° ਸੰਰà¨à¨¨à¨¾ ਵਿੱਠਯà©à¨ à¨à¨°à¨¨ ਨਾਲ, ਪਰ ਪਾਲਸ੠ਵਲà©à¨ ਮਨà¨à©à¨° ਨਹà©à¨ à¨à©à¨¤à©à¥¤"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "ਡà©à¨®à¨¨ à¨à©±à¨² ਨਹà©à¨ ਰਿਹਾ"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "ਡà©à¨®à¨¨ PID %u ਤà©à¨° ਤ੠à¨à©±à¨² ਰਿਹਾ ਹà©"
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ਡà©à¨®à¨¨ à¨à¨¤à¨® à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:703
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à¨à¨¹ ਪਰà©à¨à¨°à¨¾à¨® ਰà©à¨ ਦ੠ਤà©à¨° ਤ੠à¨à¨²à¨¾à¨à¨£ ਲਠਨਹà©à¨ ਹ੠(à¨à¨¦à©à¨ ਤੱਠ--system ਦਿੱਤਾ ਨਹà©à¨ à¨à¨¾à¨à¨¦à¨¾)।"
-#: ../src/daemon/main.c:705
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ਰà©à¨ à¨
ਧਿà¨à¨¾à¨°à¨¾à¨ ਦ੠ਲà©à© ਹà©à¥¤"
-#: ../src/daemon/main.c:710
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start ਨà©à©° ਸਿਸà¨à¨® ਮà©à¨à¨¿à¨à¨ ਲਠਸਹਿਯà©à¨ ਨਹà©à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:715
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, ਪਰ --disallow-exit ਸà©à©±à¨ ਨਹà©à¨ à¨à©à¨¤à¨¾!"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, ਪਰ --disallow-module-loading ਸà©à©±à¨ ਨਹà©à¨ à¨à©à¨¤à¨¾!"
-#: ../src/daemon/main.c:721
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, à¨à¨¼à¨¬à¨°à¨¦à¨¸à¨¤à© SHM ਮà©à¨¡ ਨà©à©° à¨
ਯà©à¨ à¨à¨° ਰਿਹਾ ਹà©!"
-#: ../src/daemon/main.c:726
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, à¨à¨¼à¨¬à¨°à¨¦à¨¸à¨¤à© idle à¨à¨¾à¨à¨² ਬੰਦ ਨà©à©° à¨
ਯà©à¨ à¨à¨° ਰਿਹਾ ਹà©!"
-#: ../src/daemon/main.c:753
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "ਸà¨à©à¨¡à©à¨ ਪà©à¨°à¨¾à¨ªà¨¤ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹à¥¤"
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe ਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:764
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ਫà©à¨²à©à¨¹ ਹà©: %s"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() ਫà©à¨²à©à¨¹ ਹà©: %s"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਫà©à¨²à©à¨¹ ਹà©à¨à¥¤"
-#: ../src/daemon/main.c:786
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਸਫ਼ਲ ਹà©à¨à¥¤"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¨à¨¹ ਪਲਸà¨à¨¡à©à¨ %s ਹà©"
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "à¨à©°à¨ªà¨¾à¨à¨²à©à¨¶à¨¨ ਹà©à¨¸à¨: %s"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à¨à©°à¨ªà¨¾à¨à¨²à©à¨¶à¨¨ CFLAGS: %s"
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "ਹà©à¨¸à¨ ਤ੠à¨à©±à¨² ਰਿਹਾ ਹà©: %s"
-#: ../src/daemon/main.c:864
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs ਲੱà¨à©à¥¤"
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "ਪà©à¨à¨¼ ਸਾà¨à¨à¨¼ %lu ਬਾà¨à¨ ਹà©"
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ਸਹਿਯà©à¨ ਨਾਲ à¨à©°à¨ªà¨¾à¨à¨²: ਹਾà¨"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ਸਹਿਯà©à¨ ਨਾਲ à¨à©°à¨ªà¨¾à¨à¨²: ਨਹà©à¨"
-#: ../src/daemon/main.c:874
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Valgrind ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©: %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "à¨à¨ªà¨à©à¨®à¨¾à¨à©à¨¡ ਬਿਲਡ: ਹਾà¨"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "à¨à¨ªà¨à©à¨®à¨¾à¨à©à¨¡ ਬਿਲਡ: ਨਹà©à¨"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG ਪਰਿà¨à¨¾à¨¶à¨¤, ਸਠasserts à¨
ਯà©à¨ ਹਨ।"
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH ਪਰਿà¨à¨¾à¨¶à¨¤, ਸਿਰਫ ਫਾਸਠਪਾਥ asserts à¨
ਯà©à¨ ਹਨ।"
-#: ../src/daemon/main.c:887
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "ਸਠasserts ਯà©à¨ à¨à©à¨¤à© ਹਨ।"
-#: ../src/daemon/main.c:891
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "ਮਸ਼à©à¨¨ ID ਪà©à¨°à¨¾à¨ªà¨¤ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ਮਸ਼à©à¨¨ ID %s ਹà©à¥¤"
-#: ../src/daemon/main.c:899
+#: ../src/daemon/main.c:917
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "ਮਸ਼à©à¨¨ ID %s ਹà©à¥¤"
+
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ਰਨà¨à¨¾à¨à¨® ਡਾà¨à¨°à©à¨à¨à¨°à© %s ਦ੠ਵਰਤà©à¨à¥¤"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "ਸà¨à©à¨ ਡਾà¨à¨°à©à¨à¨à¨°à© %s ਦ੠ਵਰਤà©à¨à¥¤"
-#: ../src/daemon/main.c:907
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©: %s"
-#: ../src/daemon/main.c:922
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ਫà©à¨²à©à¨¹ ਹà©à¥¤"
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ਤਾà©à© ਹਾà¨-ਰà©à©à©à¨²à©à¨¶à¨¨ à¨à¨¾à¨à¨®à¨° à¨à¨ªà¨²à©±à¨¬à¨§ ਹà©! Bon appetit!"
-#: ../src/daemon/main.c:936
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
"ਮਿੱਤਰਾ, ਤà©à¨°à¨¾ à¨à¨°à¨¨à¨² ਪà©à¨°à¨¾à¨£à¨¾ ਹà©! à¨à©à¨« ਦ੠à¨
ੱਠਦ੠ਸਿਫਾਰਸ਼ ਹਾà¨-ਰà©à©à©à¨²à©à¨¶à¨¨ à¨à¨¾à¨à¨®à¨° ਯà©à¨ ਨਾਲ ਲà©à¨¨à¨à¨¸ ਹà©!"
-#: ../src/daemon/main.c:948
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() ਫà©à¨²à©à¨¹ ਹà©à¥¤"
-#: ../src/daemon/main.c:1010
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à© à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹à¥¤"
-#: ../src/daemon/main.c:1015
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਬਿਨਾਠà¨à¨¿à¨¸à© ਲà©à¨¡ à¨à©à¨¤à© ਮà©à¨¡à¨¿à¨à¨², à¨à©°à¨® à¨à¨°à¨¨ ਤà©à¨ ਰà©à¨ ਰਿਹਾ ਹà©à¥¤"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਮà©à¨à©°à¨®à¨²à¥¤"
-#: ../src/daemon/main.c:1038
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ਡà©à¨®à¨¨ ਬੰਦ à¨à¨°à¨¨à¨¾ ਸ਼à©à¨°à© ਹ੠à¨à¨¿à¨à¥¤"
-#: ../src/daemon/main.c:1056
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "ਡà©à¨®à¨¨ ਬੰਦ ਹ੠à¨à¨¿à¨à¥¤"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -652,15 +656,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -668,52 +672,52 @@ msgstr ""
"--log-level ਨà©à©° ਲਾਠਲà©à¨µà¨² à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹ੠(à¨à¨¾à¨ ਤਾਠà¨
à©°à¨à© ਰà©à¨à¨ 0..4 à¨à¨¾à¨ debug, info, "
"notice, warn, error ਵਿੱà¨à©à¨ à¨à©±à¨)।"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "à¨à¨²à¨¤ ਲਾਠà¨à¨¾à¨°à¨à©à¨: 'syslog', 'stderr' à¨à¨¾à¨ 'auto' ਵਰਤà©à¨à¥¤"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਰà©à¨¸à©à¨à¨ªà¨² ਢੰਠ'%s'।"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm ਨà©à©° ਬà©à¨²à©à¨
ਨ à¨à¨°à¨à©à¨®à©à¨à¨ ਦ੠ਲà©à© ਹà©"
@@ -752,77 +756,82 @@ msgstr "ਵਰਤà©à¨: %s\n"
msgid "Load Once: %s\n"
msgstr "à¨à©±à¨ ਵਾਰ ਲà©à¨¡ à¨à¨°à©: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ਪਾਥ: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] à¨à¨²à¨¤ ਲਾਠà¨à¨¾à¨°à¨à©à¨ '%s'।"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] à¨à¨²à¨¤à© ਲਾਠਲà©à¨µà¨² '%s'।"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà©à¨ ਰà©à¨¸à©à¨à¨ªà¨² ਢੰਠ'%s'।"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà©à¨ rlimit '%s'।"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ਨà©à©° à¨à¨¸ ਪਲà©à¨à¨«à¨¾à¨°à¨® ਤ੠ਸਹਿਯà©à¨ ਨਹà©à¨ ਹà©à¥¤"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਸà©à¨à¨ªà¨² ਫਾਰਮà©à¨ '%s'।"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਸà©à¨à¨ªà¨² ਰà©à¨ '%s'।"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਸà©à¨à¨ªà¨² à¨à©à¨¨à¨² '%s'।"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ à¨à©à¨¨à¨² ਮà©à¨ª '%s'।"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ਫਰà©à¨à¨®à©à¨à¨à¨¾à¨ ਦਾ à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਨੰਬਰ '%s'।"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਫਰà©à¨à¨®à©à¨à¨ à¨
à¨à¨¾à¨° '%s'।"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ nice ਲà©à¨µà¨² '%s'।"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ਸੰਰà¨à¨¨à¨¾ ਫਾà¨à¨² à¨à©à¨²à©à¨¹à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -850,7 +859,8 @@ 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"
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr "ਪਲਸà¨à¨¡à©à¨ ਡà©à¨®à¨¨ ਲਠਵਧà©à¨°à©-ਤਰà¨à©à¨¹ ਸà©à¨¡à¨¿à¨à¨² (ਨਾà¨-ਵਾà¨à¨ ਯà©à¨¨à©à¨à¨¸ ਨਾà¨à¨¸ ਲà©à¨µà¨²)"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
@@ -858,7 +868,8 @@ 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."
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
msgstr "ਸਿਸà¨à¨® ਪਾਲਸ੠ਪਲਸà¨à¨¡à©à¨ ਨà©à©° ਵਧà©à¨°à©-ਤਰà¨à©à¨¹ ਸà©à¨¡à¨¿à¨à¨² ਪà©à¨°à¨¾à¨ªà¨¤ à¨à¨°à¨¨ ਤà©à¨ ਰà©à¨à¨¦à© ਹà©à¥¤"
#: ../src/daemon/org.pulseaudio.policy.in.h:4
@@ -1070,8 +1081,8 @@ msgid "Top Rear Right"
msgstr "à¨à©±à¨¤à© ਪਿੱà¨à© ਸੱà¨à©"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(à¨
ਢà©à©±à¨à¨µà¨¾à¨)"
@@ -1228,201 +1239,196 @@ msgstr "%u B"
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() ਫà©à¨²à©à¨¹ ਹà©"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "à¨à©à¨à© ਡਾà¨à¨¾ ਪਾਰਸ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ਸੰਰà¨à¨¨à¨¾ ਫਾà¨à¨² '%s' ਨà©à©° à¨à©à¨²à©à¨¹à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
-#: ../src/pulse/context.c:539
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "à¨à©à¨ à¨à©à¨à© ਲà©à¨¡ ਨਹà©à¨ à¨à©à¨¤à©à¥¤ à¨à¨¸ ਤà©à¨ ਬਿਨਾਠà¨à©à¨¨à©à¨à¨ à¨à©à¨¤à¨¾ à¨à¨¾ ਰਿਹਾ ਹà©à¥¤"
-#: ../src/pulse/context.c:669
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:722
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1387
+#: ../src/pulse/context.c:1403
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à¨
ਣà¨à¨¾à¨£à© à¨à¨à¨¸à¨à©à¨à¨¶à¨¨ '%s' ਲਠਸà©à¨¨à©à¨¹à¨¾ ਮਿਲਿਠਹà©"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ਸà¨à¨°à©à¨® ਡਰà©à¨¨ ਫà©à¨²à©à¨¹ ਹà©à¨à¨: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "ਪਲà©à¨¬à©à¨ ਸà¨à¨°à©à¨® ਡਰà©à¨¨ à¨à©à¨¤à©à¥¤\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "ਸਰਵਰ ਨਾਲ à¨à©à¨¨à©à¨à¨¶à¨¨ ਡਰà©à¨¨ ਹ੠ਰਿਹਾ ਹà©à¥¤\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ਸà¨à¨°à©à¨® ਸਫਲਤਾਪà©à¨°à¨ ਬਣ à¨à¨ ਹà©à¥¤\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ਸਧਾਰਨ spec '%s', à¨à©à¨¨à¨² ਮà©à¨ª '%s' ਦ੠ਵਰਤà©à¨à¥¤\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "%s à¨à©°à¨¤à¨° ਨਾਲ à¨à©à¨¨à¨à©à¨ à¨à©à¨¤à¨¾ (%u, %ssuspended)।\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ਸà¨à¨°à©à¨® à¨à¨²à¨¤à©: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ਸà¨à¨°à©à¨® à¨à©°à¨¤à¨° ਸਸਪà©à¨à¨¡ à¨à©à¨¤à¨¾ ਹà©à¥¤%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ਸà¨à¨°à©à¨® à¨à©°à¨¤à¨° ਮà©à©-ਪà©à¨°à¨¾à¨ªà¨¤ à¨à©à¨¤à¨¾à¥¤%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ਸà¨à¨°à©à¨® à¨
ੰਡਰਰਨ।%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ਸà¨à¨°à©à¨® à¨à¨µà¨°à¨°à¨¨à¥¤%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ਸà¨à¨°à©à¨® ਸ਼à©à¨°à© à¨à©à¨¤à©à¥¤ %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ਸà¨à¨°à©à¨® ਨà©à©° à¨à©°à¨¤à¨° %s ਤà©à¨ ਤਬਦà©à¨² à¨à©à¨¤à¨¾ à¨à¨¿à¨ ਹ੠(%u, %ssuspended)।%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "ਨਹà©à¨ "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ਸà¨à¨°à©à¨® ਬਫਰ à¨à¨à¨°à©à¨¬à¨¿à¨à¨ ਤਬਦà©à¨² à¨à©à¨¤à© à¨à¨à¥¤%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "à¨à©à¨¨à©à¨à¨¶à¨¨ ਬਣ à¨à¨¿à¨à¥¤%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "à¨à©à¨¨à©à¨à¨¶à¨¨ ਫà©à¨²: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ਸà¨à¨°à©à¨® ਡਰà©à¨¨ ਫà©à¨²à©à¨¹ ਹà©à¨à¨: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "ਪਲà©à¨¬à©à¨ ਸà¨à¨°à©à¨® ਡਰà©à¨¨ à¨à©à¨¤à©à¥¤\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "ਸਰਵਰ ਨਾਲ à¨à©à¨¨à©à¨à¨¶à¨¨ ਡਰà©à¨¨ ਹ੠ਰਿਹਾ ਹà©à¥¤\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF ਮਿਲਿà¨à¥¤\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "ਸਿà¨à¨¨à¨² ਮਿਲਿà¨, ਬੰਦ ਹ੠ਰਿਹਾ ਹà©à¥¤\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "ਵà¨à¨«à¨¾ ਪà©à¨°à¨¾à¨ªà¨¤à© ਫà©à¨² ਹà©à¨: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ਸਮਾà¨: %0.3f ਸà¨à¨¿à©°à¨; ਵà¨à¨«à¨¾: %0.0f usec। \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() ਫà©à¨²à©à¨¹ ਹà©: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1448,8 +1454,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1472,6 +1480,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1522,7 +1535,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1533,89 +1546,133 @@ msgstr ""
"libpulse %s ਦ੠à¨à©°à¨ªà¨¾à¨à¨²\n"
"libpulse %s ਨਾਲ ਲਿੰਠà¨à©à¨¤à¨¾\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ à¨à©à¨¨à¨² ਮà©à¨ª '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਰà©à¨¸à©à¨à¨ªà¨² ਢੰਠ'%s'।"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ à¨à©à¨¨à¨² ਮà©à¨ª '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਵà¨à¨«à¨¾ ਹਦਾà¨à¨¤ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਪਰà©à¨¸à©à©±à¨¸ à¨à¨¾à¨à¨® ਹਦਾà¨à¨¤ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਰà©à¨¸à©à¨à¨ªà¨² ਢੰਠ'%s'।"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਸà©à¨à¨ªà¨² ਹਦਾà¨à¨¤\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "ਬਹà©à¨¤ ਵੱਧ à¨à¨°à¨à©à¨®à©à¨à¨à¥¤\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "ਸà©à¨à¨ªà¨² à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ਸਾà¨à¨à¨¡ ਫਾà¨à¨² à¨à©à¨²à©à¨¹à¨£ ਲਠਫà©à¨²à©à¨¹ ਹà©à¥¤\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "ਸà©à¨à¨ªà¨² à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "à¨à©à¨¨à¨² ਮà©à¨ª ਸà©à¨à¨ªà¨² ਹਦਾà¨à¨¤ ਨਾਲ ਨਹà©à¨ ਮਿਲਦਾ\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "à¨à©±à¨ %s ਸà¨à¨°à©à¨® ਨà©à©° ਸà©à¨à¨ªà¨² ਹਦਾà¨à¨¤ '%s' ਨਾਲ à¨à©à¨²à©à¨¹à¨¿à¨ à¨à¨¾ ਰਿਹਾ ਹà©à¥¤\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "ਰਿà¨à¨¾à¨°à¨¡à¨¿à©°à¨"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "ਪਲà©à¨
ਬà©à¨"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "ਬਹà©à¨¤ ਵੱਧ à¨à¨°à¨à©à¨®à©à¨à¨à¥¤\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() ਫà©à¨²à©à¨¹ ਹà©à¥¤\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() ਫà©à¨²à©à¨¹ ਹà©à¥¤\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() ਫà©à¨²à©à¨¹ ਹà©à¥¤\n"
-#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
-#: ../src/utils/paplay.c:404
-#, c-format
-msgid "pa_context_connect() failed: %s"
+#: ../src/utils/pacat.c:1066
+#, fuzzy, c-format
+msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() ਫà©à¨²à©à¨¹ ਹà©: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() ਫà©à¨²à©à¨¹ ਹà©à¥¤\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() ਫà©à¨²à©à¨¹ ਹà©à¥¤\n"
@@ -1645,8 +1702,7 @@ msgstr "ਮà©à©-ਪà©à¨°à¨¾à¨ªà¨¤à© ਫà©à¨²: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "à¨à©à¨¤à¨¾à¨µà¨¨à©: ਸਾà¨à¨à¨¡ ਸਰਵਰ ਲà©à¨à¨² ਨਹà©à¨ ਹà©, ਸਸਪà©à¨à¨¡ ਨਹà©à¨ ਹ੠ਰਿਹਾ।\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT ਮਿਲਿà¨, ਬੰਦ ਹ੠ਰਿਹਾ ਹà©à¥¤\n"
@@ -1675,7 +1731,7 @@ msgstr ""
"to\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1686,32 +1742,32 @@ msgstr ""
"libpulse %s ਨਾਲ à¨à©°à¨ªà¨¾à¨à¨²\n"
"libpulse %s ਨਾਲ ਲਿੰà¨\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "à¨
à©°à¨à©à© ਪà©à¨°à¨¾à¨ªà¨¤à© ਫà©à¨²à©à¨¹: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ਹà©à¨£ ਵਰਤà©à¨ ਵਿੱਠਹà©: %u ਬਲਾਠਵਿੱਠà¨à©à©±à¨² %s ਬਾà¨à¨ ਹਨ।\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "ਪà©à¨°à© ਲਾà¨à¨«à¨à¨¾à¨à¨® ਵਿੱਠà¨à¨¾à¨°à© à¨à©à¨¤à¨¾ à¨à¨¿à¨: %u ਬਲਾਠਵਿੱਠà¨à©à©±à¨² %s ਬਾà¨à¨ ਹਨ।\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ਸà©à¨à¨ªà¨² à¨à©à¨¸à¨¼ ਸਾà¨à¨à¨¼: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "ਸਰਵਰ à¨à¨¾à¨£à¨à¨¾à¨°à© ਪà©à¨°à¨¾à¨ªà¨¤ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨² ਹà©à¨à¨: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1734,12 +1790,12 @@ msgstr ""
"Default Source: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "ਸਿੰਠà¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1778,12 +1834,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "ਸਰà©à¨¤ à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1822,20 +1878,20 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "à¨à¨ªà¨²à©±à¨¬à¨§ ਨਹà©à¨"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "ਮà©à¨¡à©à¨à¨² à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1852,12 +1908,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à¨à¨²à¨¾à¨à¨ à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1872,12 +1928,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à¨à¨¾à¨°à¨¡ à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1894,22 +1950,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tਪਰà©à¨«à¨¾à¨à¨²:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tਸਰà¨à¨°à¨® ਪਰà©à¨«à¨¾à¨à¨²: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "à¨à©°à¨ªà©à©±à¨ à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1946,12 +2002,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "ਸਰà©à¨¤ à¨à¨à¨à¨ªà©à©±à¨ à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1980,12 +2036,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "ਸà©à¨à¨ªà¨² à¨à¨¾à¨£à¨à¨¾à¨°à© ਲà©à¨£ ਵਿੱਠਫà©à¨²: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2016,22 +2072,21 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "ਫà©à¨²à©à¨¹: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ਸà©à¨à¨ªà¨² à¨
ੱਪਲà©à¨¡ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "ਫਾà¨à¨² ਦਾ ਸਮà©à¨ ਤà©à¨ ਪਹਿਲਾਠà¨
ੰਤ\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2078,7 +2133,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2089,70 +2144,68 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "ਲà©à¨¡ à¨à¨°à¨¨ ਲਠਸà©à¨à¨ªà¨² ਫਾà¨à¨² ਦਿà¨\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "ਸਾà¨à¨à¨¡ ਫਾà¨à¨² à¨à©à¨²à©à¨¹à¨£ ਲਠਫà©à¨²à©à¨¹ ਹà©à¥¤\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "à¨à©±à¨ %s ਸà¨à¨°à©à¨® ਨà©à©° ਸà©à¨à¨ªà¨² ਹਦਾà¨à¨¤ '%s' ਨਾਲ à¨à©à¨²à©à¨¹à¨¿à¨ à¨à¨¾ ਰਿਹਾ ਹà©à¥¤\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "à¨à©à¨¡à¨£ ਲਠਤà©à¨¹à¨¾à¨¨à©à©° ਸà©à¨à¨ªà¨² ਨਾਠਦà©à¨£à¨¾ ਪਵà©à¨à¨¾\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "ਹà¨à¨¾à¨à¨£ ਲਠਤà©à¨¹à¨¾à¨¨à©à©° ਸà©à¨à¨ªà¨² ਨਾਠਦà©à¨£à¨¾ ਪਵà©à¨à¨¾\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "ਤà©à¨¹à¨¾à¨¨à©à©° à¨à©°à¨ªà©à©±à¨ ਲਿਸਠà¨
ਤ੠à¨à©±à¨ ਸਿੰਠਨà©à©° ਸਿੰਠà¨à¨°à¨¨à¨¾ ਪਵà©à¨à¨¾\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "ਤà©à¨¹à¨¾à¨¨à©à©° à¨à©±à¨ ਸਰà©à¨¤ à¨à¨à¨à¨ªà©à©±à¨ ਲਿਸਠà¨
ਤ੠à¨à©±à¨ ਸਰà©à¨¤ ਦà©à¨£à¨¾ ਪਵà©à¨à¨¾\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "ਤà©à¨¹à¨¾à¨¨à©à©° à¨à©±à¨ ਮà©à¨¡à©à¨à¨² ਨਾਠà¨
ਤ੠à¨à¨°à¨à©à¨®à©à¨à¨ ਦà©à¨£à¨¾ ਪਵà©à¨à¨¾à¥¤\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "ਤà©à¨¹à¨¾à¨¨à©à©° à¨à©±à¨ ਮà©à¨¡à©à¨à¨² ਲਿਸਠਦà©à¨£à© ਪਵà©à¨à©\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "ਤà©à¨¸à©à¨ à¨à©±à¨ ਤà©à¨ ਵੱਧ ਸਿੰਠਨਹà©à¨ ਦ੠ਸà¨à¨¦à©à¥¤ ਤà©à¨¹à¨¾à¨¨à©à©° à¨à©±à¨ ਬà©à¨²à©à¨
ਨ ਮà©à©±à¨² ਦà©à¨£à¨¾ ਪਵà©à¨à¨¾à¥¤\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "ਤà©à¨¸à©à¨ à¨à©±à¨ ਤà©à¨ ਵੱਧ ਸਰà©à¨¤ ਨਹà©à¨ ਦ੠ਸà¨à¨¦à©à¥¤ ਤà©à¨¹à¨¾à¨¨à©à©° ਬà©à¨²à©à¨
ਨ ਮà©à©±à¨² ਦà©à¨£à¨¾ ਪਵà©à¨à¨¾à¥¤\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "ਤà©à¨¹à¨¾à¨¨à©à©° à¨à©±à¨ à¨à¨¾à¨°à¨¡ ਨਾà¨/ਲਿਸਠà¨
ਤ੠ਪਰà©à¨«à¨¾à¨à¨² ਨਾਠਦà©à¨£à¨¾ ਪਵà©à¨à¨¾\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "à¨à©à¨ ਯà©à¨ à¨à¨®à¨¾à¨à¨¡ ਨਹà©à¨ ਦਿੱਤà©à¥¤\n"
+#: ../src/utils/pactl.c:1051
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() ਫà©à¨²à©à¨¹ ਹà©: %s"
+
#: ../src/utils/pax11publish.c:61
#, c-format
msgid ""
@@ -2232,129 +2285,48 @@ msgstr "à¨à©à¨à© ਡਾà¨à¨¾ ਲà©à¨¡ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²\n"
msgid "Not yet implemented.\n"
msgstr "ਹਾਲ੠ਬਣਾà¨à¨ ਨਹà©à¨à¥¤\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "ਪਲਸà¨à¨¡à©à¨ ਡà©à¨®à¨¨ ਬੰਦ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à¥¤"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "ਡà©à¨®à¨¨ à¨à¨µà¨¾à¨¬ ਨਹà©à¨ ਦ੠ਰਹà©à¥¤"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ਸà¨à¨°à©à¨® ਠà©à¨ ਤਰà©à¨¹à¨¾à¨ ਬਣਾਠà¨à¨à¥¤\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ਸà¨à¨°à©à¨® à¨à¨²à¨¤à©: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "à¨à©à¨¨à©à¨à¨¸à¨¼à¨¨ ਬਣਾà¨à¨ à¨à¨¿à¨à¥¤\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "à¨à¨²à¨¤ à¨à©à¨¨à¨² ਮà©à¨ª\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ਫਾà¨à¨² '%s' à¨à©à¨²à©à¨¹à¨£ ਲਠਫà©à¨²\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "à¨à©à¨¨à¨² ਮà©à¨ª ਫਾà¨à¨² ਨਾਲ ਨਹà©à¨ ਮਿਲਦਾ।\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ਸà©à¨à¨ªà¨² spec '%s' ਦ੠ਵਰਤà©à¨\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn ਲਾਠਵਰਤ ਨਹà©à¨ ਸà¨à¨¦à¨¾à¥¤"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:535
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2371,7 +2343,7 @@ msgstr ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:510
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2388,35 +2360,103 @@ msgstr ""
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "à¨à¨à¨à¨ªà©à©±à¨ %s + à¨à©°à¨ªà©à©±à¨ %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "à¨à¨à¨à¨ªà©à©±à¨ %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "à¨à©°à¨ªà©à©±à¨ %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1864
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "ਬੰਦ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1834
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "ਹਾਠਫਡà©à¨²à¨¿à¨à© ਪਲà©à¨
ਬà©à¨ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1849
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à¨à©à¨²à©à¨«à©à¨¨à© ਡà©à¨ªà¨²à©à¨à¨¸ (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:125
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "ਪਲਸà¨à¨¡à©à¨ ਸਾà¨à¨à¨¡ ਡਰਾà¨à¨µà¨°"
+#~ 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 13516d2..4642034 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-14 16:45+0200\n"
"Last-Translator: Piotr DrÄ
g <piotrdrag at gmail.com>\n"
"Language-Team: Polish <pl at li.org>\n"
@@ -13,51 +13,51 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analogowe mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analogowe stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Cyfrowe stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Cyfrowe stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analogowe surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Cyfrowe surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analogowe surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analogowe surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analogowe surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Cyfrowe surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analogowe surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,7 +69,7 @@ msgstr ""
"Prawdopodobnie jest to bÅÄ
d sterownika ALSA \"%s\". ProszÄ zgÅosiÄ ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -81,7 +81,7 @@ msgstr ""
"Prawdopodobnie jest to bÅÄ
d sterownika ALSA \"%s\". ProszÄ zgÅosiÄ ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -93,11 +93,11 @@ msgstr ""
"Prawdopodobnie jest to bÅÄ
d sterownika ALSA \"%s\". ProszÄ zgÅosiÄ ten "
"problem programistom ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "WewnÄtrzny dźwiÄk"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -168,106 +168,106 @@ msgstr "Nie można uzyskaÄ upoważnienia: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit zwróciÅo \"%s\""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Otrzymano sygnaÅ %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "WyÅÄ
czanie."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Znalezienie użytkownika \"%s\" nie powiodÅo siÄ."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Znalezienie grupy \"%s\" nie powiodÅo siÄ."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Znaleziono użytkownika \"%s\" (UID %lu) i grupÄ \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID użytkownika \"%s\" i grupy \"%s\" nie zgadzajÄ
siÄ."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Folder domowy użytkownika \"%s\" nie jest \"%s\", ignorowanie."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Utworzenie \"%s\" nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Zmiana listy grup nie powiodÅa siÄ: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Zmiana GID nie powiodÅa siÄ: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Zmiana UID nie powiodÅa siÄ: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "PomyÅlnie porzucono uprawnienia roota."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Tryb systemowy nie jest obsÅugiwany na tej platformie."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Analiza wiersza poleceÅ nie powiodÅa siÄ."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"JesteÅmy w grupie \"%s\", co umożliwia szeregowanie o wysokim priorytecie."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"JesteÅmy w grupie \"%s\", co umożliwia szeregowanie w czasie rzeczywistym."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nadaÅ uprawnienie \"acquire-high-priority\"."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit odmówiŠnadania uprawnienia \"acquire-high-priority\"."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nadaÅ uprawnienie \"acquire-real-time\"."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit odmówiŠnadania uprawnienia \"acquire-real-time\"."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -288,48 +288,48 @@ msgstr ""
"\" lub zwiÄkszyÄ ograniczenia zasobów RLIMIT_NICE/RLIMIT_RTPRIO dla tego "
"użytkownika."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie o wysokim priorytecie jest wÅÄ
czone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "PomyÅlnie zwiÄkszono RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Oddawanie CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie w czasie rzeczywistym jest wÅÄ
czone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Demon nie jest uruchomiony"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon jest uruchomiony jako PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zniszczenie demona nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -337,163 +337,163 @@ msgstr ""
"Ten program nie powinien byÄ uruchomiany jako root (chyba, że podano --"
"system)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Wymagane sÄ
uprawnienia roota."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nie jest obsÅugiwane przy uruchamianiu systemowym."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Uruchamianie w trybie systemowym, ale --disallow-exit nie jest ustawione!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Uruchamianie w trybie systemowym, ale --disallow-module-loading nie jest "
"ustawione!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Uruchamianie w trybie systemowym, wymuszanie wyÅÄ
czenia trybu SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Uruchamianie w trybie systemowym, wymuszanie wyÅÄ
czenia czasu oczekiwania na "
"zakoÅczenie!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Uzyskanie standardowego wejÅcia/wyjÅcia nie powiodÅo siÄ."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "potok nie powiódÅ siÄ: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Uruchomienie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "PomyÅlnie uruchomiono demona."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "To jest PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Komputer kompilacji: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompilacji: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Uruchamianie na komputerze: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Znaleziono %u procesorów."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Rozmiar strony to %lu bajtów"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Skompilowano z obsÅugÄ
Valgrind: tak"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Skompilowano z obsÅugÄ
Valgrind: nie"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Uruchamianie w trybie Valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Budowanie optymalizowane: tak"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Budowanie optymalizowane: nie"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "Podano NDEBUG, wszystkie asercje zostaÅy wyÅÄ
czone."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "Podano FASTPATH, tylko szybkie asercje Åcieżek zostaÅy wyÅÄ
czone."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Wszystkie asercje sÄ
wÅÄ
czone."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Uzyskanie identyfikatora komputera nie powiodÅo siÄ"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "Identyfikator komputera to %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, c-format
msgid "Session ID is %s."
msgstr "Identyfikator sesji to %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Używanie folderu wykonywania %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Åwieże zegary o wysokiej rozdzielczoÅci! Smacznego!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -501,31 +501,31 @@ msgstr ""
"KoleÅ, twoje jÄ
dro Åmierdzi! Szef kuchni poleca dzisiaj Linuksa w wÅÄ
czonymi "
"zegarami o wysokiej rozdzielczoÅci!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych moduÅów, odmawianie pracy."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ZakoÅczono uruchamianie demona."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyÅÄ
czenie demona."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Demon zostaÅ zniszczony."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -675,15 +675,15 @@ msgstr ""
" -n Nie wczytuje domyÅlnego pliku\n"
" skryptu\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize oczekuje parametru w postaci zmiennej logicznej"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail oczekuje parametru w postaci zmiennej logicznej"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -691,54 +691,54 @@ msgstr ""
"--log-level oczekuje parametru poziomu dziennika (numeryczny w zakresie 0..4 "
"lub jeden z debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"NieprawidÅowy dziennik docelowy: należy użyÄ \"syslog\", \"stderr\" lub "
"\"auto\"."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "NieprawidÅowa metoda resamplingu \"%s\"."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit oczekuje parametru zmiennej logicznej"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm oczekuje parametru zmiennej logicznej"
@@ -777,77 +777,82 @@ msgstr "Użycie: %s\n"
msgid "Load Once: %s\n"
msgstr "Wczytanie jednorazowe: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Åcieżka: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] NieprawidÅowy dziennik docelowy \"%s\"."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] NieprawidÅowy poziom dziennika \"%s\"."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] NieprawidÅowa metoda resamplingu \"%s\"."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] NieprawidÅowy rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nie jest obsÅugiwany na tej platformie."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] NieprawidÅowy format próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] NieprawidÅowa czÄstotliwoÅÄ próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] NieprawidÅowe kanaÅy próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] NieprawidÅowa mapa kanaÅów \"%s\"."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] NieprawidÅowa liczba fragmentów \"%s\"."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] NieprawidÅowy rozmiar fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] NieprawidÅowy poziom nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodÅo siÄ: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1105,8 +1110,8 @@ msgid "Top Rear Right"
msgstr "Górny tylny prawy"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(nieprawidÅowe)"
@@ -1291,173 +1296,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Otrzymano komunikat z nieznanego powodu \"%s\""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Opróżnienie strumienia nie powiodÅo siÄ: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Opróżniono strumieŠodtwarzania.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Opróżnianie poÅÄ
czenia z serwerem.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "PomyÅlnie utworzono strumieÅ.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metryka bufora: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metryka bufora: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Używanie przykÅadowej specyfikacji \"%s\", mapa kanaÅów \"%s\".\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "PoÅÄ
czono siÄ z urzÄ
dzeniem %s (%u, %swstrzymane).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "BÅÄ
d strumienia: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Wstrzymano urzÄ
dzenie strumienia.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Wznowiono urzÄ
dzenie strumienia.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "NiedopeÅniono strumieÅ.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "PrzepeÅniono strumieÅ.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Utworzono strumieÅ.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "StrumieÅ zostaÅ przeniesiony do urzÄ
dzenia %s (%u, %swstrzymane).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nie "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Zmieniono atrybuty bufora strumienia.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Ustanowiono poÅÄ
czenie.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "PoÅÄ
czenie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Opróżnienie strumienia nie powiodÅo siÄ: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Opróżniono strumieŠodtwarzania.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Opróżnianie poÅÄ
czenia z serwerem.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Otrzymano EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Otrzymano sygnaÅ, wyÅÄ
czanie.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Uzyskanie opóźnienia nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Czas: %0.3f sekundy; opóźnienie: %0.0f usekundy. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1483,8 +1483,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1507,6 +1509,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opcje]\n"
"\n"
@@ -1556,7 +1563,7 @@ msgstr ""
" --process-time=BAJTY Å»Ä
da okreÅlonego czasu procesu na "
"żÄ
danie w bajtach.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1567,88 +1574,133 @@ msgstr ""
"Skompilowane za pomocÄ
libpulse %s\n"
"Skonsolidowane za pomocÄ
libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "NieprawidÅowa mapa kanaÅów \"%s\"\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "NieprawidÅowa metoda resamplingu \"%s\"."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "NieprawidÅowa mapa kanaÅów \"%s\"\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "NieprawidÅowe okreÅlenie opóźnienia \"%s\"\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "NieprawidÅowe okreÅlenie czasu procesu \"%s\"\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "NieprawidÅowa metoda resamplingu \"%s\"."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "NieprawidÅowe okreÅlenie próbki\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Za dużo parametrów.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Uzyskanie informacji o przykÅadzie nie powiodÅo siÄ: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Otwarcie pliku dźwiÄkowego nie powiodÅo siÄ.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Uzyskanie informacji o przykÅadzie nie powiodÅo siÄ: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Mapa kanaÅów nie zgadza siÄ z okreÅleniem próbki\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Otwieranie strumienia %s za pomocÄ
okreÅlenie próbki \"%s\".\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "nagrywanie"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "odtwarzanie"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Za dużo parametrów.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() nie powiodÅo siÄ.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() nie powiodÅo siÄ.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() nie powiodÅo siÄ.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() nie powiodÅo siÄ.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() nie powiodÅo siÄ.\n"
@@ -1679,8 +1731,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"OSTRZEÅ»ENIE: serwer dźwiÄku nie jest lokalny, nie zostanie wstrzymany.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Otrzymano SIGINT, wyÅÄ
czanie.\n"
@@ -1708,7 +1759,7 @@ msgstr ""
" -s, --server=SERWER Nazwa serwera do poÅÄ
czenia siÄ\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1719,34 +1770,34 @@ msgstr ""
"Skompilowane za pomocÄ
libpulse %s\n"
"Skonsolidowane za pomocÄ
libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Uzyskanie statystyk nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Obecnie używane: %u bloków zawierajÄ
cych razem %s bajtów.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"Przydzielono podczas caÅego czasu uruchomienia: %u bloków zawierajÄ
cych "
"razem %s bajtów.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Rozmiar pamiÄci podrÄcznej próbek: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Uzyskanie informacji o serwerze nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1769,12 +1820,12 @@ msgstr ""
"DomyÅlne źródÅo: %s\n"
"Ciasteczko: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Uzyskanie informacji o odpÅywie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1813,12 +1864,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Uzyskanie informacji o źródle nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1857,20 +1908,20 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "nie dotyczy"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Uzyskanie informacji o module nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1887,12 +1938,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Uzyskanie informacji o kliencie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1907,12 +1958,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Uzyskanie informacji o karcie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1929,22 +1980,22 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktywny profil: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Uzyskanie informacji o wejÅciu odpÅywu nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1981,12 +2032,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Uzyskanie informacji o wyjÅciu źródÅa nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2015,12 +2066,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Uzyskanie informacji o przykÅadzie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2051,22 +2102,21 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Niepowodzenie: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "UsuniÄcie próbki nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Przedwczesny koniec pliku\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2111,7 +2161,7 @@ msgstr ""
" -s, --server=SERWER Nazwa serwera do poÅÄ
czenia siÄ\n"
" -n, --client-name=NAZWA Jak nazwaÄ tego klienta na serwerze\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2122,73 +2172,66 @@ msgstr ""
"Skompilowane za pomocÄ
libpulse %s\n"
"Skonsolidowane za pomocÄ
libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "ProszÄ podaÄ plik próbki do wczytania\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Otwarcie pliku dźwiÄkowego nie powiodÅo siÄ.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Otwieranie strumienia %s za pomocÄ
okreÅlenie próbki \"%s\".\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Należy podaÄ nazwÄ próbki do odtworzenia\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Należy podaÄ nazwÄ próbki do usuniÄcia\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Należy podaÄ indeks odpÅywu wejÅcia i odpÅyw\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Należy podaÄ indeks źródÅa wyjÅcia i źródÅo\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Należy podaÄ nazwÄ moduÅu i parametry.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Należy podaÄ indeks moduÅu\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"Nie można podaÄ wiÄcej niż jednego odpÅywu. Należy podaÄ wartoÅÄ logicznÄ
.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"Nie można podaÄ wiÄcej niż jednego źródÅa. Należy podaÄ wartoÅÄ logicznÄ
.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Należy podaÄ nazwÄ karty/indeks i nazwÄ profilu\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Nie podano prawidÅowego polecenia.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() nie powiodÅo siÄ: %s"
@@ -2272,127 +2315,48 @@ msgstr "Wczytanie danych ciasteczka nie powiodÅo siÄ\n"
msgid "Not yet implemented.\n"
msgstr "Niezaimplementowane.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "gniazdo(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Zniszczenie demona PulseAudio nie powiodÅo siÄ."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Demon nie odpowiada."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "PomyÅlnie utworzono strumieÅ\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "BÅÄ
d strumienia: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Ustanowiono poÅÄ
czenie.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [opcje] [PLIK]\n"
-"\n"
-" -h, --help WyÅwietla tÄ pomoc\n"
-" --version WyÅwietla wersjÄ\n"
-"\n"
-" -v, --verbose WyÅwietla wiÄcej informacji o "
-"dziaÅaniach\n"
-"\n"
-" -s, --server=SERWER Nazwa serwera do poÅÄ
czenia siÄ\n"
-" -d, --device=URZÄDZENIE Nazwa odpÅywu do poÅÄ
czenia siÄ\n"
-" -n, --client-name=NAZWA Jak nazwaÄ tego klienta na serwerze\n"
-" --stream-name=NAZWA Jak nazwaÄ ten strumieÅ na serwerze\n"
-" --volume=POZIOMGÅOÅNOÅCI OkreÅla poczÄ
tkowy (liniowy) poziom "
-"gÅoÅnoÅci w zakresie 0...65536\n"
-" --channel-map=MAPAKANAÅÃW Ustawia używanÄ
mapÄ kanaÅów\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Skompilowane za pomocÄ
libpulse %s\n"
-"Skonsolidowane za pomocÄ
libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "NieprawidÅowa mapa kanaÅów\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Otwarcie pliku \"%s\" nie powiodÅo siÄ\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Mapa kanaÅów nie zgadza siÄ z plikiem.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Używanie przykÅadowej specyfikacji \"%s\"\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Nie można uzyskaÄ dostÄpu do blokady automatycznego wznawiania."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2409,7 +2373,7 @@ msgstr ""
"Wybudzono za pomocÄ
ustawienia POLLOUT - ale jednoczesne wywoÅanie "
"snd_pcm_avail() zwróciÅo zero lub innÄ
wartoÅÄ < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2426,34 +2390,102 @@ msgstr ""
"Wybudzono za pomocÄ
ustawienia POLLIN - ale jednoczesne wywoÅanie "
"snd_pcm_avail() zwróciÅo zero lub innÄ
wartoÅÄ < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "WyjÅcie %s + wejÅcie %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "WyjÅcie %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "WejÅcie %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "WyÅÄ
cz"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "Odtwarzanie o wysokiej dokÅadnoÅci (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplex telefoniczny (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Serwer dźwiÄku PulseAudio"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "PomyÅlnie utworzono strumieÅ\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "BÅÄ
d strumienia: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Ustanowiono poÅÄ
czenie.\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 [opcje] [PLIK]\n"
+#~ "\n"
+#~ " -h, --help WyÅwietla tÄ pomoc\n"
+#~ " --version WyÅwietla wersjÄ\n"
+#~ "\n"
+#~ " -v, --verbose WyÅwietla wiÄcej informacji o "
+#~ "dziaÅaniach\n"
+#~ "\n"
+#~ " -s, --server=SERWER Nazwa serwera do poÅÄ
czenia siÄ\n"
+#~ " -d, --device=URZÄDZENIE Nazwa odpÅywu do poÅÄ
czenia siÄ\n"
+#~ " -n, --client-name=NAZWA Jak nazwaÄ tego klienta na "
+#~ "serwerze\n"
+#~ " --stream-name=NAZWA Jak nazwaÄ ten strumieÅ na "
+#~ "serwerze\n"
+#~ " --volume=POZIOMGÅOÅNOÅCI OkreÅla poczÄ
tkowy (liniowy) "
+#~ "poziom gÅoÅnoÅci w zakresie 0...65536\n"
+#~ " --channel-map=MAPAKANAÅÃW Ustawia używanÄ
mapÄ kanaÅów\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Skompilowane za pomocÄ
libpulse %s\n"
+#~ "Skonsolidowane za pomocÄ
libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "NieprawidÅowa mapa kanaÅów\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Otwarcie pliku \"%s\" nie powiodÅo siÄ\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "Mapa kanaÅów nie zgadza siÄ z plikiem.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Używanie przykÅadowej specyfikacji \"%s\"\n"
diff --git a/po/pt.po b/po/pt.po
index ebd9a59..7876d7f 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-04-05 08:27+0000\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Rui Gouveia <rui.gouveia at globaltek.pt>\n"
"Language-Team: pt <fedora-trans-pt at redhat.com>\n"
@@ -12,82 +12,94 @@ msgstr ""
"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: PORTUGAL\n"
-#: ../src/modules/alsa/alsa-util.c:530
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Mono Analógico"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Estéreo Analógico"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Estéreo Digital (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Estéreo Digital (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analog Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Surround Digital 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analog Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analog Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analog Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Surround Digital 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analog Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1769
#, 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."
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
msgstr ""
-"snd_pcm_avail() retornou um valor excepcionalmente elevado: %lu bytes (%lu ms).\n"
-"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este problema aos programadores do ALSA."
+"snd_pcm_avail() retornou um valor excepcionalmente elevado: %lu bytes (%lu "
+"ms).\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA."
-#: ../src/modules/alsa/alsa-util.c:1649
+#: ../src/modules/alsa/alsa-util.c:1810
#, 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."
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
msgstr ""
-"snd_pcm_delay() retornou um valor excepcionalmente elevado: %li bytes (%s%lu ms).\n"
-"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este problema aos programadores do ALSA."
+"snd_pcm_delay() retornou um valor excepcionalmente elevado: %li bytes (%s%lu "
+"ms).\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA."
-#: ../src/modules/alsa/alsa-util.c:1695
+#: ../src/modules/alsa/alsa-util.c:1857
#, 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."
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
msgstr ""
-"snd_pcm_mmap_begin() retornou um valor excepcionalmente elevado: %lu bytes (%lu ms).\n"
-"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este problema aos programadores do ALSA."
+"snd_pcm_mmap_begin() retornou um valor excepcionalmente elevado: %lu bytes (%"
+"lu ms).\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA."
-#: ../src/pulsecore/sink.c:2061
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Ãudio Interno"
-#: ../src/pulsecore/sink.c:2067
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -157,326 +169,361 @@ msgstr "Não foi possÃvel obter autenticação: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit respondeu com '%s'"
-#: ../src/daemon/main.c:137
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Foi obtido o sinal %s."
-#: ../src/daemon/main.c:164
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "A sair."
-#: ../src/daemon/main.c:182
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falha ao procurar o utilizador '%s'."
-#: ../src/daemon/main.c:187
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falha ao procurar o grupo '%s'."
-#: ../src/daemon/main.c:191
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Foi encontrado utilizador '%s' (UID %lu) e grupo '%s' (GID %lu)."
-#: ../src/daemon/main.c:196
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID do utilizador '%s' e do grupo '%s' não coincidem."
-#: ../src/daemon/main.c:201
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Directório pessoal do utilizador '%s' não é '%s'. A ignorar."
-#: ../src/daemon/main.c:204
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falha ao criar o '%s': %s"
-#: ../src/daemon/main.c:216
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falhou a alteração da lista de grupos: %s"
-#: ../src/daemon/main.c:232
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Não foi possÃvel mudar o GID: %s"
-#: ../src/daemon/main.c:248
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Não foi possÃvel mudar o UID: %s"
-#: ../src/daemon/main.c:262
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Privilégios de root cedidos com sucesso."
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Modo de sistema não suportado nesta plataforma."
-#: ../src/daemon/main.c:288
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:462
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Não foi possÃvel processar linha de comando."
-#: ../src/daemon/main.c:486
+#: ../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:493
+#: ../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:501
+#: ../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)."
+msgstr ""
+"O PolicyKit permite-nos o privilégio \"acquire-high-priority\" (adquirir "
+"alta prioridade)."
-#: ../src/daemon/main.c:504
+#: ../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)."
+msgstr ""
+"O PolicyKit recusa-nos o privilégio \"acquire-high-priority\" (adquirir alta "
+"prioridade)."
-#: ../src/daemon/main.c:509
+#: ../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)."
+msgstr ""
+"O PolicyKit permite-nos o privilégio \"acquire-real-time\" (adquirir tempo "
+"real)."
-#: ../src/daemon/main.c:512
+#: ../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)."
+msgstr ""
+"O PolicyKit recusa-nos o privilégio \"acquire-real-time\" (adquirir tempo "
+"real)."
-#: ../src/daemon/main.c:541
+#: ../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."
+"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:566
-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: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:595
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO aumentado com sucesso"
-#: ../src/daemon/main.c:598
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO falhou: %s"
-#: ../src/daemon/main.c:605
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "A desistir de CAP_NICE"
-#: ../src/daemon/main.c:612
-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: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:673
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Serviço não está a executar"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Serviço a executar como PID %u"
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Tentativa de matar serviço falhou: %s"
-#: ../src/daemon/main.c:703
-msgid "This program is not intended to be run as root (unless --system is specified)."
-msgstr "Este programa não pretende ser executado como root (a não ser que a opção --system seja especificada)."
+#: ../src/daemon/main.c:722
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"Este programa não pretende ser executado como root (a não ser que a opção --"
+"system seja especificada)."
-#: ../src/daemon/main.c:705
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "São necessários privilégios de root."
-#: ../src/daemon/main.c:710
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start não é suportado para instâncias do sistema."
-#: ../src/daemon/main.c:715
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "A executar em modo de sistema, mas --disallow-exit não está definido!"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
-msgstr "A executar em modo de sistema, mas --disallow-module-loading não está definido!"
+msgstr ""
+"A executar em modo de sistema, mas --disallow-module-loading não está "
+"definido!"
-#: ../src/daemon/main.c:721
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "A executar em modo de sistema, a forçar a desactivação do modo SHM!"
-#: ../src/daemon/main.c:726
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
-msgstr "A executar em modo de sistema, a forçar a desactivação da saÃda por inactividade!"
+msgstr ""
+"A executar em modo de sistema, a forçar a desactivação da saÃda por "
+"inactividade!"
-#: ../src/daemon/main.c:753
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Não foi possÃvel adquirir o stdio."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe falhou: %s"
-#: ../src/daemon/main.c:764
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() falhou: %s"
-#: ../src/daemon/main.c:778
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() falhou: %s"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Arranque do serviço falhou."
-#: ../src/daemon/main.c:786
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Arranque do serviço sucedeu."
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Isto é PulseAudio %s"
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Máquina de compilação: %s"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS utilizadas na compilação: %s"
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "A executar na máquina: %s"
-#: ../src/daemon/main.c:864
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Foram encontrados %u CPUs."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "Tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte para Valgrind: sim"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte para Valgrind: não"
-#: ../src/daemon/main.c:874
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "A executar em modo \"valgrind\": %s"
-#: ../src/daemon/main.c:877
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimizado: sim"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Compilação optimizada: não"
-#: ../src/daemon/main.c:883
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todas as declarações desactivadas."
-#: ../src/daemon/main.c:885
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definido, apenas as declarações \"fast path\" desactivadas."
-#: ../src/daemon/main.c:887
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Todas as declarações desactivadas."
-#: ../src/daemon/main.c:891
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "A tentativa de ler o ID da máquina falhou"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "O ID da máquina é %s."
-#: ../src/daemon/main.c:899
+#: ../src/daemon/main.c:917
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "O ID da máquina é %s."
+
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Execução a utilizar o directório %s"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "A manter o estado no directório %s."
-#: ../src/daemon/main.c:907
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Execução em modo de sistema: %s"
-#: ../src/daemon/main.c:922
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:934
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timer \"frescos\" de alta resolução disponÃveis. Bom apetite!"
-#: ../src/daemon/main.c:936
-msgid "Dude, your kernel stinks! The chef's recommendation today is Linux with high-resolution timers enabled!"
-msgstr "Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com timers de alta resolução activos!"
+#: ../src/daemon/main.c:958
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com "
+"timers de alta resolução activos!"
-#: ../src/daemon/main.c:948
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:1010
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Falha ao inicializar serviço."
-#: ../src/daemon/main.c:1015
+#: ../src/daemon/main.c:1050
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:1032
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Arranque do serviço completo."
-#: ../src/daemon/main.c:1038
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Encerramento do serviço iniciado."
-#: ../src/daemon/main.c:1056
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Serviço terminado."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -487,37 +534,48 @@ msgid ""
" --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"
+" --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"
+" --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"
+" (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"
+" (only available as root, when SUID "
+"or\n"
" with elevated RLIMIT_RTPRIO)\n"
-" --disallow-module-loading[=BOOL] Disallow module user requested module\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"
+" --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"
+" --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"
+" --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-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"
+" -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"
@@ -528,10 +586,12 @@ msgid ""
" --disable-shm[=BOOL] Disable shared memory support.\n"
"\n"
"STARTUP SCRIPT:\n"
-" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module with\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"
+" -C Open a command line on the running "
+"TTY\n"
" after startup\n"
"\n"
" -n Don't load default script file\n"
@@ -542,114 +602,146 @@ msgstr ""
" -h, --help Mostra esta ajuda\n"
" --version Mostra versão\n"
" --dump-conf Despeja configuração por omissão\n"
-" --dump-modules Despeja lista de módulos disponÃveis\n"
-" --dump-resample-methods Despeja métodos \"resample\" disponÃveis\n"
-" --cleanup-shm Limpar segmentos de memória partilhados encravados\n"
-" --start Inicia o serviço, se ainda não estiver a executar\n"
-" -k --kill Termina o serviço, se estiver a executar \n"
-" --check Verifica se o serviço está a executar (apenas retorna um código de saÃda)\n"
+" --dump-modules Despeja lista de módulos "
+"disponÃveis\n"
+" --dump-resample-methods Despeja métodos \"resample\" "
+"disponÃveis\n"
+" --cleanup-shm Limpar segmentos de memória "
+"partilhados encravados\n"
+" --start Inicia o serviço, se ainda não "
+"estiver a executar\n"
+" -k --kill Termina o serviço, se estiver a "
+"executar \n"
+" --check Verifica se o serviço está a "
+"executar (apenas retorna um código de saÃda)\n"
"\n"
"OPTIONS:\n"
" --system[=BOOL] Executa em modo de sistema\n"
" -D, --daemonize[=BOOL] Passa serviço depois de executar\n"
" --fail[=BOOL] Termina quando o arranque falha\n"
-" --high-priority[=BOOL] Tenta definir um alto nÃvel de execução\n"
-" (apenas disponÃvel como root, quando é SUID ou\n"
+" --high-priority[=BOOL] Tenta definir um alto nÃvel de "
+"execução\n"
+" (apenas disponÃvel como root, quando "
+"é SUID ou\n"
" com nÃveis elevados de RLIMIT_NICE)\n"
-" --realtime[=BOOL] Tenta activar escalonamento em tempo real\n"
-" (apenas disponÃvel como root, quando é SUID ou\n"
-" com nÃveis elevados de RLIMIT_RTPRIO)\n"
-" --disallow-module-loading[=BOOL] Desautoriza o carregamento/descarregamento\n"
-" de módulos, pelo utilizador, depois do arranque\n"
-" --disallow-exit[=BOOL] Desautoriza pedidos de saÃda do utilizador\n"
-" --exit-idle-time=SECS Termina o serviço quando inactivo e já passou\n"
+" --realtime[=BOOL] Tenta activar escalonamento em tempo "
+"real\n"
+" (apenas disponÃvel como root, quando "
+"é SUID ou\n"
+" com nÃveis elevados de "
+"RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Desautoriza o carregamento/"
+"descarregamento\n"
+" de módulos, pelo utilizador, depois "
+"do arranque\n"
+" --disallow-exit[=BOOL] Desautoriza pedidos de saÃda do "
+"utilizador\n"
+" --exit-idle-time=SECS Termina o serviço quando inactivo e "
+"já passou\n"
" este tempo\n"
-" --module-idle-time=SECS Descarregar módulos de carregamento automático quando inactivo e\n"
+" --module-idle-time=SECS Descarregar módulos de carregamento "
+"automático quando inactivo e\n"
" passou este tempo\n"
-" --scache-idle-time=SECS Descarregar amostras de carregamento automático quando inactivas e\n"
+" --scache-idle-time=SECS Descarregar amostras de carregamento "
+"automático quando inactivas e\n"
" passou este tempo\n"
-" --log-level[=LEVEL] Aumenta ou define o nÃvel de verbosidade\n"
+" --log-level[=LEVEL] Aumenta ou define o nÃvel de "
+"verbosidade\n"
" -v Aumenta o nÃvel de verbosidade\n"
" --log-target={auto,syslog,stderr} Especifica o ficheiro de registo\n"
-" --log-meta[=BOOL] Inclui código de localização na mensagem de registo\n"
+" --log-meta[=BOOL] Inclui código de localização na "
+"mensagem de registo\n"
" --log-time[=BOOL] Inclui tempo na mensagem de registo\n"
-" --log-backtrace=FRAMES Inclui informação de tracagem na mensagem de registo\n"
-" -p, --dl-search-path=PATH Define o caminho de procura para os plugins partilhados dinâmicos\n"
-" --resample-method=METHOD Utilizar o método de \"resampling\" especificado\n"
+" --log-backtrace=FRAMES Inclui informação de tracagem na "
+"mensagem de registo\n"
+" -p, --dl-search-path=PATH Define o caminho de procura para os "
+"plugins partilhados dinâmicos\n"
+" --resample-method=METHOD Utilizar o método de \"resampling\" "
+"especificado\n"
" (Ver --dump-resample-methods para\n"
" possÃveis valores)\n"
" --use-pid-file[=BOOL] Criar um ficheiro com o PID\n"
-" --no-cpu-limit[=BOOL] Não instala limitadores de load no CPU em\n"
+" --no-cpu-limit[=BOOL] Não instala limitadores de load no "
+"CPU em\n"
" plataformas que o suportam.\n"
-" --disable-shm[=BOOL] Desactivar suporte para memória partilhada.\n"
+" --disable-shm[=BOOL] Desactivar suporte para memória "
+"partilhada.\n"
"\n"
"STARTUP SCRIPT:\n"
-" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module with\n"
+" -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"
+" -C Open a command line on the running "
+"TTY\n"
" after startup\n"
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize espera argumento booleano"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail espera argumento booleano"
-#: ../src/daemon/cmdline.c:269
-msgid "--log-level expects log level argument (either numeric in range 0..4 or one of debug, info, notice, warn, error)."
-msgstr "--log-level espera um argumento para o nÃvel de log (numérico no intervalo 0..4 ou um dos seguintes: debug, info, notice, warn, error)."
+#: ../src/daemon/cmdline.c:264
+msgid ""
+"--log-level expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+msgstr ""
+"--log-level espera um argumento para o nÃvel de log (numérico no intervalo "
+"0..4 ou um dos seguintes: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority espera argumento booleano"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime espera argumento booleano"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera argumento booleano"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit espera argumento booleano"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file espera argumento booleano"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
-msgstr "Destino de ficheiro de registo inválido: utilize 'syslog', 'stderr' ou 'auto'."
+msgstr ""
+"Destino de ficheiro de registo inválido: utilize 'syslog', 'stderr' ou "
+"'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time espera argumento booleano"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta espera argumento booleano"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Método de resample inválido '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system espera argumento booleano"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit espera argumento booleano"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm espera argumento booleano"
@@ -688,78 +780,85 @@ msgstr "Utilização: %s\n"
msgid "Load Once: %s\n"
msgstr "Carregar Uma Vez: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ficheiro registo de destino inválido '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] NÃvel do ficheiro de registo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não é suportado nesta plataforma."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato da amostra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Número inválido de fragmentos '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho do fragmento inválido '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nÃvel nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha ao abrir ficheiro de configuração: %s"
-#: ../src/daemon/daemon-conf.c:538
-msgid "The specified default channel map has a different number of channels than the specified default number of channels."
+#: ../src/daemon/daemon-conf.c:540
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
msgstr ""
#: ../src/daemon/daemon-conf.c:616
@@ -784,7 +883,8 @@ 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"
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr ""
#: ../src/daemon/org.pulseaudio.policy.in.h:2
@@ -792,15 +892,15 @@ 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."
+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:103
-#: ../src/pulse/channelmap.c:804
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1004,12 +1104,9 @@ msgstr "Topo Traseira Esquerda"
msgid "Top Rear Right"
msgstr "Topo Traseira Direita"
-#: ../src/pulse/channelmap.c:476
-#: ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170
-#: ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216
-#: ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(inválido)"
@@ -1162,210 +1259,199 @@ msgstr "%.1f KiB"
msgid "%u B"
msgstr "%u B"
-#: ../src/pulse/client-conf-x11.c:55
-#: ../src/utils/pax11publish.c:100
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() falhou"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr ""
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Falha ao abrir ficheiro de configuração '%s': %s"
-#: ../src/pulse/context.c:539
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
-#: ../src/pulse/context.c:669
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:722
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1387
+#: ../src/pulse/context.c:1403
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Falhou ao esvaziar fluxo: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() falhou: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() falhou: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Fluxo criado com sucesso.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() falhou: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Ligado ao dispositivo %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Erro de fluxo: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Fluxo com falta de dados.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Fluxo com excesso de dados.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Fluxo iniciado.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "negação"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Ligação Estabelecida.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() falhou: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() falhou: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falhou: %s\n"
-#: ../src/utils/pacat.c:329
-#: ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762
-#: ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ligação falhou: %s\n"
-#: ../src/utils/pacat.c:349
-#: ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Falhou ao esvaziar fluxo: %s\n"
-
-#: ../src/utils/pacat.c:354
-#: ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364
-#: ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Obtive EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() falhou: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() falhou: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Recebido sinal, a sair.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Falhou a obtenção da latência: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tempo: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() falhou: %s\n"
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1378,30 +1464,54 @@ msgid ""
"\n"
" -v, --verbose Enable verbose operations\n"
"\n"
-" -s, --server=SERVER The name of the server to connect to\n"
-" -d, --device=DEVICE The name of the sink/source to connect to\n"
-" -n, --client-name=NAME How to call this client on the server\n"
-" --stream-name=NAME How to call this stream on the server\n"
-" --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n"
-" --rate=SAMPLERATE The sample rate in Hz (defaults to 44100)\n"
-" --format=SAMPLEFORMAT The sample type, one of s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be (defaults to s16ne)\n"
-" --channels=CHANNELS The number of channels, 1 for mono, 2 for stereo\n"
+" -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"
+" --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"
+" --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"
+" --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"
+" --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:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1409,96 +1519,133 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Método de resample inválido '%s'."
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Método de resample inválido '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificação da latência inválida '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Método de resample inválido '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Especificação da amostra inválida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "demasiados argumentos.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "não foi possÃvel obter informações da amostra: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Falha ao abrir ficheiro de som.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "não foi possÃvel obter informações da amostra: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "a gravar"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "reprodução"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "demasiados argumentos.\n"
-
-#: ../src/utils/pacat.c:764
-#: ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017
-#: ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falhou.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() falhou.\n"
-#: ../src/utils/pacat.c:791
-#: ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031
-#: ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falhou.\n"
-#: ../src/utils/pacat.c:799
-#: ../src/utils/pactl.c:1037
-#: ../src/utils/paplay.c:404
-#, c-format
-msgid "pa_context_connect() failed: %s"
+#: ../src/utils/pacat.c:1066
+#, fuzzy, c-format
+msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() falhou: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() falhou.\n"
-#: ../src/utils/pacat.c:817
-#: ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042
-#: ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falhou.\n"
@@ -1528,9 +1675,7 @@ 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:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Obtido SIGINT, a sair.\n"
@@ -1547,11 +1692,12 @@ msgid ""
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
-" -s, --server=SERVER The name of the server to connect to\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
"\n"
msgstr ""
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1559,32 +1705,32 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Falhou a obtenção de estatÃsticas: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Tamanho cache da amostra: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Não foi possÃvel obter informações do servidor: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1598,12 +1744,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "não foi possÃvel obter informações do depósito: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1625,12 +1771,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "não foi possÃvel obter informações da fonte: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1652,28 +1798,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:306
-#: ../src/utils/pactl.c:350
-#: ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422
-#: ../src/utils/pactl.c:481
-#: ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492
-#: ../src/utils/pactl.c:536
-#: ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543
-#: ../src/utils/pactl.c:586
-#: ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "não foi possÃvel obter informações do módulo: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1684,12 +1822,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "não foi possÃvel obter informações do cliente: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1699,12 +1837,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "não foi possÃvel obter informações da carta: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1715,22 +1853,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tPrefis:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tPerfil Activo: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1751,12 +1889,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1773,12 +1911,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "não foi possÃvel obter informações da amostra: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -1796,23 +1934,21 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:602
-#: ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Falhou: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Fim prematuro de ficheiro\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1832,11 +1968,13 @@ msgid ""
" -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"
+" -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:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -1847,66 +1985,71 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Por favor, especifique um ficheiro de amostra para carregar\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Falha ao abrir ficheiro de som.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Tem de especificar um nome de amostra para reproduzir\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Tem de especificar um nome de amostra para remover\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Tem de especificar um Ãndice de entrada de depósito e um depósito\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Tem de especificar um Ãndice de saÃda de fonte e uma fonte\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Tem de especificar um nome de módulo e argumentos.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Tem de especificar um Ãndice de módulo\n"
-#: ../src/utils/pactl.c:972
-#, c-format
-msgid "You may not specify more than one sink. You have to specify a boolean value.\n"
-msgstr "Não pode especificar mais do que um depósito. Tem de especificar um valor booleano.\n"
+#: ../src/utils/pactl.c:988
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Não pode especificar mais do que um depósito. Tem de especificar um valor "
+"booleano.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
-msgid "You may not specify more than one source. You have to specify a boolean value.\n"
-msgstr "Não pode especificar mais do que uma fonte. Tem de especificar um valor booleano.\n"
+#: ../src/utils/pactl.c:1001
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Não pode especificar mais do que uma fonte. Tem de especificar um valor "
+"booleano.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Tem de especificar um nome/Ãndice de carta e um nome de perfil\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "O comando especificado é inválido.\n"
+#: ../src/utils/pactl.c:1051
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() falhou: %s"
+
#: ../src/utils/pax11publish.c:61
#, c-format
msgid ""
@@ -1914,7 +2057,8 @@ msgid ""
"\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"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
" -r Remove PulseAudio data from X11 display\n"
msgstr ""
@@ -1978,163 +2122,133 @@ 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:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Não foi possÃvel terminar o serviço PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Serviço não responde."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154
-#: ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187
-#: ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Fluxo criado com sucesso\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Erro de fluxo: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Ligação Estabelecida.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the server\n"
-" --stream-name=NAME How to call this stream on the server\n"
-" --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilado com libpulse %s\n"
-"Linkado com libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Falha ao abrir o ficheiro '%s'\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Utilizando especificação da amostra '%s'\n"
-
-#: ../src/pulsecore/lock-autospawn.c:126
-#: ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "ImpossÃvel aceder ao lock \"autospawn\"."
-#: ../src/modules/alsa/alsa-sink.c:393
-#: ../src/modules/alsa/alsa-sink.c:535
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, 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."
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
msgstr ""
-"ALSA acordou-nos para escrever novos dados para o dispositivo, mas não havia nada para escrever!\n"
-"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este problema aos programadores do ALSA.\n"
-"Fomos acordados pelo conjunto POLLOUT -- contudo uma chamada a seguir de snd_pcm_avail() retornou 0 ou outro valor < min_avail."
+"ALSA acordou-nos para escrever novos dados para o dispositivo, mas não havia "
+"nada para escrever!\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA.\n"
+"Fomos acordados pelo conjunto POLLOUT -- contudo uma chamada a seguir de "
+"snd_pcm_avail() retornou 0 ou outro valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:377
-#: ../src/modules/alsa/alsa-source.c:510
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, 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."
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
msgstr ""
-"ALSA acordou-nos para ler novos dados do dispositivo, mas não havia nada para ler!\n"
-"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este problema aos programadores do ALSA.\n"
-"Fomos acordados pelo conjunto POLLIN -- contudo uma chamada a seguir de snd_pcm_avail() retornou 0 ou outro valor < min_avail."
+"ALSA acordou-nos para ler novos dados do dispositivo, mas não havia nada "
+"para ler!\n"
+"Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este "
+"problema aos programadores do ALSA.\n"
+"Fomos acordados pelo conjunto POLLIN -- contudo uma chamada a seguir de "
+"snd_pcm_avail() retornou 0 ou outro valor < min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "SaÃda %s + Entrada %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "SaÃda %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Entrada %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1864
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "Desligado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1834
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodução Alta Fidelidade (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1849
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telefonia Duplex (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:125
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Servidor de Som PulseAudio"
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Fluxo criado com sucesso\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Erro de fluxo: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Ligação Estabelecida.\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilado com libpulse %s\n"
+#~ "Linkado com libpulse %s\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Falha ao abrir o ficheiro '%s'\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Utilizando especificação da amostra '%s'\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index c9249a6..c89acf2 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2008-11-21 01:21-0300\n"
"Last-Translator: Henrique (LonelySpooky) Junior <lspooky at fedoraproject.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br at redhat.com>\n"
@@ -18,51 +18,51 @@ msgstr ""
"X-Poedit-Language: Brazilian Portuguese\n"
"X-Poedit-Country: Brazil\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -71,7 +71,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -80,7 +80,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -89,12 +89,12 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
#, fuzzy
msgid "Internal Audio"
msgstr "Erro interno"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr ""
@@ -166,104 +166,104 @@ msgstr "Não foi possÃvel obter auth: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit respondeu com '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Sinal %s recebido."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Saindo."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falha em encontrar o usuário '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falha em encontrar o grupo '%s'."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Usuário '%s' (UID %lu) e grupo '%s' (GID %lu) encontrados."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "O GID do usuário'%s' e do grupo '%s' não combinam."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "O diretório Home do usuário '%s' não é '%s', ignorando."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falha em criar '%s': %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falha em alterar a lista de grupos: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falha em mudar o GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falha em mudar o UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "Os privilégios do root foram retirados com sucesso."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "O modo ampliado do sistema não tem suporte nessa plataforma."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Falha em interpretar a linha de comando."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -276,48 +276,48 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de alta prioridade foi habilitado para esta configuração, "
"mas não é permitida pela polÃtica."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO aumentado com sucesso"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO falhou: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de tempo real foi habilitado pela configuração, mas não é "
"permitido pela polÃtica."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "O daemon não está em execução"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon executando como PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Falha em encerrar o daemon: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -325,161 +325,161 @@ msgstr ""
"Este programa não é para ser executado como root (a não ser que --system "
"seja especificado)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
#, fuzzy
msgid "Root privileges required."
msgstr "Privilégios de rot são requeridos."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start não tem suporte para instâncias de sistemas."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Executando em no modo system, mas --disallow-exit não foi configurado!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Executando no modo system, mas --disallow-module-loading não foi configurado!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Executando no modo system, desabilitando forçadamente o exit idle time!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Falha em adquirir o stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "O pipe falhou: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "O fork() falhou: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "A operação read() falhou: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Falha na partida do daemon."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Os daemons foram iniciados com sucesso."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Este é o PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilação: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilação CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Executando no host: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "O tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte do Valgrind: sim"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte do Valgrind: não"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Executando em modo valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Build otimizado: sim"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Build otimizado: não"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Falha em obter o ID da máquina"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Usando o diretório de runtime %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponÃveis! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -487,32 +487,32 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Daemon terminado."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -660,15 +660,15 @@ msgstr ""
" -n Não carrega o arquivo de script "
"padrão\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize espera argumento booleano"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail espera argumento booleano"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -676,55 +676,55 @@ msgstr ""
"--log-level espera um argumento em nÃvel de log (seja numérico na faixa de "
"0..4 seja algum entre debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority espera um argumento booleano"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime espera um argumento booleano"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera um argumento booleano"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
#, fuzzy
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit argumento booleano"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file espera argumento booleano"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Log target inválido: use 'syslog', 'stderr' ou 'auto'."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
#, fuzzy
msgid "--log-time expects boolean argument"
msgstr "--realtime espera um argumento booleano"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
#, fuzzy
msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit argumento booleano"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Método de reamostragem inválido '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system espera argumento booleano"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit espera argumento booleano"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm espera argumento booleano"
@@ -763,77 +763,82 @@ msgstr "Uso: %s\n"
msgid "Load Once: %s\n"
msgstr "Carrega uma vez: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Alvo do log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] NÃvel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de reamostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não tem suporte nessa plataforma."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de amostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taxa de amostragem inválida '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Números de fragmentos inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1086,8 +1091,8 @@ msgid "Top Rear Right"
msgstr "Posterior Superior Direito"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(Inválido)"
@@ -1272,173 +1277,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Foi recebida uma mensagem para uma extensão desconhecida '%s'"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Falha em drenar o fluxo: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Drenado o fluxo de playback.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Drenando a conexão par ao servidor.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() falhou: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() falhou: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "O fluxo (stream) foi criado com sucesso.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() falhou: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metrica do buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Métrica do buffer: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Usando a espeficifação de amostragem '%s', mapa do canal '%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "Conectado ao dispositivo %s (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Erro de fluxo: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "Dispositivo de fluxo suspenso.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "Dispositivo de fluxo prosseguiu.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Extravazamento do fluxo. %s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "O fluxo extravazou.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "O fluxo iniciou: %s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "O fluxo foi movido para o dispositivo %s (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "não"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, fuzzy, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Extravazamento do fluxo. %s\n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Conexão estabelecida.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() falhou: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() falhou: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falhou: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Falha na conexão: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Falha em drenar o fluxo: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Drenado o fluxo de playback.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Drenando a conexão par ao servidor.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Atingiu EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() falhou: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() falhou: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Sinal recebido, saindo (exiting).\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Falhou em obter a latência: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tempo: %0.3f s; Latência: %0.0f us. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Falha em pa_stream_update_timing_info(): %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1464,8 +1464,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1488,6 +1490,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [opções]\n"
"\n"
@@ -1534,7 +1541,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1545,88 +1552,133 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Mapa de canal inválido '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Método de reamostragem inválido '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canal inválido '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificação de latência inválida '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificação do tempo do processo inválida '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Método de reamostragem inválido '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Especificação de amostragem inválida\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Argumentos em excesso.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Falha em obter informações sobre a amostragem: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Falha em abrir o arquivo de som.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Falha em obter informações sobre a amostragem: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "O mapeamento do canal não casa com a especificação da amostragem\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "gravando"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "playback"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Argumentos em excesso.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falhou.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() falhou.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falhou.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() falhou: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() falhou.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falhou.\n"
@@ -1658,8 +1710,7 @@ msgstr ""
"AVISO: O servidor de som não é local, Sound server is not local, não está em "
"suspenso.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Recebido o SIGINT, saindo.\n"
@@ -1687,7 +1738,7 @@ msgstr ""
" -s, --server=SERVER Nome do servidor a ser conectado\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1698,32 +1749,32 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Falha em obter as estatÃsticas: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Em uso no momento: %u blocos contendo %s bytes no total.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Alocado por todo o tempo: %u blocos contendo %s bytes no total.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Tamanho do cache para amostragem: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Falha em obter a informação do servidor: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, fuzzy, c-format
msgid ""
"User name: %s\n"
@@ -1745,12 +1796,12 @@ msgstr ""
"Fonte padrão %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Falha em obter a informação do destino: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, fuzzy, c-format
msgid ""
"Sink #%u\n"
@@ -1784,12 +1835,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Falha em obter a informação da fonte: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, fuzzy, c-format
msgid ""
"Source #%u\n"
@@ -1823,20 +1874,20 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Falha em obter a informação do módulo: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, fuzzy, c-format
msgid ""
"Module #%u\n"
@@ -1852,12 +1903,12 @@ msgstr ""
"Contador de uso: %s\n"
"Auto descarregar: %s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Falhou ao obter a informação do cliente: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, fuzzy, c-format
msgid ""
"Client #%u\n"
@@ -1872,12 +1923,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Falha em obter a informação do autoload: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, fuzzy, c-format
msgid ""
"Card #%u\n"
@@ -1893,22 +1944,22 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "O pipe falhou: %s"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Falha na obtenção da informação de entrada do destino: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, fuzzy, c-format
msgid ""
"Sink Input #%u\n"
@@ -1942,12 +1993,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Falha em obter informações sobre a saÃda da fonte: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, fuzzy, c-format
msgid ""
"Source Output #%u\n"
@@ -1976,12 +2027,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Falha em obter informações sobre a amostragem: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, fuzzy, c-format
msgid ""
"Sample #%u\n"
@@ -2010,22 +2061,21 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Falha: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Falha em carregar a amostra: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Fim prematuro do arquivo\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2070,7 +2120,7 @@ msgstr ""
" -n, --client-name=NAME Como chamar este cliente no "
"servidor \n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2081,49 +2131,46 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Por favor, especifique o arquivo de amostra a ser carregado\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Falha em abrir o arquivo de som.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Você deve especificar um nome da amostra para ser executada\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Você deve especificar um nome da amostra para ser removida\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Você tem que especificar um Ãndice de saÃda da fonte e uma fonte\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Você deve especificar um nome do módulo e seus argumentos\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Você deve especificar um Ãndice de um módulo\n"
-#: ../src/utils/pactl.c:972
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:988
+#, fuzzy
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2131,8 +2178,8 @@ msgstr ""
"Você não pode especificar mais de um destino. Pelo menos um valor booleano "
"deve ser especificado.\n"
-#: ../src/utils/pactl.c:985
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1001
+#, fuzzy
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2140,18 +2187,17 @@ msgstr ""
"Você não pode especificar mais de uma fonte. Pelo menos um valor booleano "
"deve ser especificado.\n"
-#: ../src/utils/pactl.c:997
-#, fuzzy, c-format
+#: ../src/utils/pactl.c:1013
+#, fuzzy
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Nenhum comando válido especificado.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() falhou: %s"
@@ -2236,127 +2282,48 @@ msgstr "Falha em carregar os dados do cookie\n"
msgid "Not yet implemented.\n"
msgstr "Ainda não implementado.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Falha em cancelar o daemon do PulseAudio."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Daemon não responde."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Fluxo criado com sucesso\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Erro de fluxo: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Conexão estabelecida.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Mostra essa ajuda\n"
-" --version Mostra a versão\n"
-"\n"
-" -v, --verbose Habilida a operação detalhada\n"
-"\n"
-" -s, --server=SERVER O nome do servidor a ser conectado\n"
-" -d, --device=DEVICE O nome do destino a ser conectado\n"
-" -n, --client-name=NAME Como chamar este cliente no "
-"servidor\n"
-" --stream-name=NAME Como chamar este fluxo no servidor\n"
-" --volume=VOLUME Especifica o volume inicial (linear) "
-"no intervalo 0...65536\n"
-" --channel-map=CHANNELMAP Define o mapa do canal para uso\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compilado com libpulse %s\n"
-"Linkado com libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Mapa de canais inválido\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Falha ao abrir o arquivo '%s'\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "O mapa dos canais não coincide com o arquivo.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Usando a especificação da amostragem '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Não foi possÃvel acessar a trava de autogeração."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2367,7 +2334,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2378,38 +2345,107 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
+#~ msgid "Stream successfully created\n"
+#~ msgstr "Fluxo criado com sucesso\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Erro de fluxo: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "Conexão estabelecida.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Mostra essa ajuda\n"
+#~ " --version Mostra a versão\n"
+#~ "\n"
+#~ " -v, --verbose Habilida a operação detalhada\n"
+#~ "\n"
+#~ " -s, --server=SERVER O nome do servidor a ser "
+#~ "conectado\n"
+#~ " -d, --device=DEVICE O nome do destino a ser "
+#~ "conectado\n"
+#~ " -n, --client-name=NAME Como chamar este cliente no "
+#~ "servidor\n"
+#~ " --stream-name=NAME Como chamar este fluxo no "
+#~ "servidor\n"
+#~ " --volume=VOLUME Especifica o volume inicial "
+#~ "(linear) no intervalo 0...65536\n"
+#~ " --channel-map=CHANNELMAP Define o mapa do canal para uso\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compilado com libpulse %s\n"
+#~ "Linkado com libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "Mapa de canais inválido\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Falha ao abrir o arquivo '%s'\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "O mapa dos canais não coincide com o arquivo.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "Usando a especificação da amostragem '%s'\n"
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/sr.po b/po/sr.po
index 3cf0977..74ece4d 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: MiloÅ¡ KomarÄeviÄ <kmilos at gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr at redhat.com>\n"
@@ -19,52 +19,52 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Ðналогни моно"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Ðналогни ÑÑеÑео"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "ÐигиÑални ÑÑеÑео (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "ÐигиÑални ÑÑеÑео (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Ðналогни окÑÑжÑÑÑÑи 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "ÐигиÑални окÑÑжÑÑÑÑи 4.0 (IEC958/AC3)"
# Surround можемо пÑевеÑÑи амбиÑенÑални или окÑÑжни или можда Ñак и ÑаÑаÑнд? -- ÐгоÑ
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Ðналогни окÑÑжÑÑÑÑи 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Ðналогни окÑÑжÑÑÑÑи 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Ðналогни окÑÑжÑÑÑÑи 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "ÐигиÑални окÑÑжÑÑÑÑи 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Ðналогни окÑÑжÑÑÑÑи 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +77,7 @@ msgstr ""
"Ðво Ñе наÑвеÑоваÑниÑе гÑеÑка Ñ â%sâ ALSA ÑпÑавÑаÑком пÑогÑамÑ. ÐÑиÑавиÑе "
"Ð¾Ð²Ð°Ñ Ð¿Ñоблем ALSA пÑогÑамеÑима."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -90,7 +90,7 @@ msgstr ""
"Ðво Ñе наÑвеÑоваÑниÑе гÑеÑка Ñ â%sâ ALSA ÑпÑавÑаÑком пÑогÑамÑ. ÐÑиÑавиÑе "
"Ð¾Ð²Ð°Ñ Ð¿Ñоблем ALSA пÑогÑамеÑима."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -103,11 +103,11 @@ msgstr ""
"Ðво Ñе наÑвеÑоваÑниÑе гÑеÑка Ñ â%sâ ALSA ÑпÑавÑаÑком пÑогÑамÑ. ÐÑиÑавиÑе "
"Ð¾Ð²Ð°Ñ Ð¿Ñоблем ALSA пÑогÑамеÑима."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "УнÑÑÑаÑÑи звÑк"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Ðодем"
@@ -177,107 +177,107 @@ msgstr "Ðе Ð¼Ð¾Ð³Ñ Ð´Ð¾Ð±Ð¸Ñи овлаÑÑеÑе: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit Ñе одговоÑио Ñа â%sâ"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "ÐобиÑ
Ñигнал %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ÐапÑÑÑам."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе Ð¼Ð¾Ð³Ñ Ð½Ð°Ñи коÑиÑника â%sâ."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе Ð¼Ð¾Ð³Ñ Ð½Ð°Ñи гÑÑÐ¿Ñ â%sâ."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ÐаÑени ÑÑ ÐºÐ¾ÑиÑник â%sâ (UID %lu) и гÑÑпа â%sâ (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID коÑиÑника â%sâ Ñе не поклапа Ñа гÑÑпом â%sâ."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ÐиÑни диÑекÑоÑиÑÑм коÑиÑника â%sâ ниÑе â%sâ, занемаÑÑÑем."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "ÐеÑÑпеÑно пÑавÑеÑе â%sâ: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "ÐеÑÑпеÑна пÑомена гÑÑпног ÑпиÑка: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "ÐеÑÑпеÑна пÑомена GID-а: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "ÐеÑÑпеÑна пÑомена UID-а: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "УÑпеÑно одбаÑена root овлаÑÑеÑа."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Режим за ÑиÑав ÑиÑÑем ниÑе подÑжан на Ð¾Ð²Ð¾Ñ Ð¿Ð»Ð°ÑÑоÑми."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ниÑе ÑÑпело: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "ÐеÑÑпеÑно ÑÑмаÑеÑе командне линиÑе."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Ðалазимо Ñе Ñ Ð³ÑÑпи â%sâ коÑа дозвоÑава виÑокопÑиоÑиÑеÑно ÑаÑпоÑеÑиваÑе."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Ðалазимо Ñе Ñ Ð³ÑÑпи â%sâ коÑа дозвоÑава ÑÑваÑновÑеменÑко ÑаÑпоÑеÑиваÑе."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit нам Ñе дао овлаÑÑеÑе за добиÑаÑе виÑоког пÑиоÑиÑеÑа."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit одбиÑа овлаÑÑеÑе за добиÑаÑе виÑоког пÑиоÑиÑеÑа."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit нам Ñе дао овлаÑÑеÑе за добиÑаÑе Ñада Ñ ÑÑваÑном вÑеменÑ."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit одбиÑа овлаÑÑеÑе за добиÑаÑе Ñада Ñ ÑÑваÑном вÑеменÑ."
#
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -297,48 +297,48 @@ msgstr ""
"или повеÑаÑи огÑаниÑеÑа за RLIMIT_NICE/RLIMIT_RTPRIO ÑÑедÑÑва овог коÑиÑника "
"како би омогÑÑили ÑÑваÑновÑеменÑко или виÑокопÑиоÑиÑеÑно ÑаÑпоÑеÑиваÑе."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ÐиÑокопÑиоÑиÑеÑно ÑаÑпоÑеÑиваÑе Ñе омогÑÑено Ñ Ð¿Ð¾Ð´ÐµÑаваÑима, али полиÑика Ñо "
"не дозвоÑава."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "УÑпеÑно повеÑано RLIMIT_RTPRIO огÑаниÑеÑе"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "ÐеÑÑпеÑно поÑÑавÑаÑе RLIMIT_RTPRIO-а:%s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "ÐдÑÑÑаÑем од CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"СÑваÑновÑеменÑко ÑаÑпоÑеÑиваÑе Ñе омогÑÑено Ñ Ð¿Ð¾Ð´ÐµÑаваÑима, али полиÑика Ñо "
"не дозвоÑава."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Ðемон ниÑе покÑенÑÑ"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Ðемон Ñе покÑенÑÑ Ñа PID-ом %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ÐеÑÑпеÑно ÑбиÑаÑе демона: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -346,161 +346,161 @@ msgstr ""
"ÐиÑе намеÑавано да Ñе Ð¾Ð²Ð°Ñ Ð¿ÑогÑам покÑеÑе из root налога (оÑим Ñ ÑлÑÑаÑÑ "
"када Ñе --system наведено)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ÐоÑÑебна ÑÑ root овлаÑÑеÑа."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start ниÑе подÑжано за ÑиÑÑемÑке пÑимеÑке."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, али --disallow-exit ниÑе поÑÑавÑено!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, али --disallow-module-loading ниÑе поÑÑавÑено!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, пÑиÑилно онемогÑÑÑÑем SHM Ñежим!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, пÑиÑилно онемогÑÑÑÑем гаÑеÑе поÑле одÑеÑеног "
"вÑемена миÑоваÑа!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "ÐеÑÑпеÑно пÑоналажеÑе ÑÑандаÑдног Ñлаза/излаза."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "ÐеÑÑпеÑно пÑÑÑаÑе подаÑака кÑоз Ñев: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "ÐеÑÑпеÑно покÑеÑаÑе демона."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Ðемон ÑÑпеÑно покÑенÑÑ."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ðво Ñе PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "ÐомаÑин компаÑлиÑаÑа: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS компаÑлиÑаÑа: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "ÐокÑенÑÑ Ð½Ð° домаÑинÑ: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "ÐаÑао %u пÑоÑеÑоÑ(а)"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "ÐелиÑина ÑÑÑаниÑе Ñе %lu баÑÑова"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "ÐомпаÑлиÑано Ñа подÑÑком за Valgrind: да"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "ÐомпаÑлиÑано Ñа подÑÑком за Valgrind: не"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "ÐокÑенÑÑ Ñ Valgrind ÑежимÑ: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "ÐпÑимизована изгÑадÑа: да"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "ÐпÑимизована изгÑадÑа: не"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG деÑиниÑан, Ñва обавеÑÑеÑа иÑкÑÑÑена."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH деÑиниÑан, Ñамо обавеÑÑеÑа бÑзе пÑÑаÑе иÑкÑÑÑена."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Сва обавеÑÑеÑа омогÑÑена."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "ÐеÑÑпеÑно добавÑаÑе ÐРмаÑине"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ÐРмаÑине Ñе %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ÐРмаÑине Ñе %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ÐоÑиÑÑи Ñе %s извÑÑни диÑекÑоÑиÑÑм."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "ÐоÑиÑÑи Ñе %s диÑекÑоÑиÑÑм ÑÑаÑа."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ÐоÑÑÑпни ÑÑ Ð½Ð¾Ð²Ð¸ бÑоÑаÑи виÑоке ÑезолÑÑиÑе! ÐÑиÑаÑно!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -508,31 +508,31 @@ msgstr ""
"ÐаÑе ÑезгÑо ниÑе добÑо подеÑено за pulseaudio! ÐÑепоÑÑÑÑÑе Ðам Ñе да "
"коÑиÑÑиÑе Linux ÑезгÑо Ñа омогÑÑеним бÑоÑаÑима виÑоке ÑезолÑÑиÑе."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "ÐеÑÑпеÑно покÑеÑаÑе демона."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Ðемон Ñе покÑенÑÑ Ð±ÐµÐ· иÑедног ÑÑиÑаног модÑла, одбиÑа да Ñади."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ÐокÑеÑаÑе демона ÑÑпеÑно."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ÐокÑенÑÑо гаÑеÑе демона."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Рад демона Ñе пÑекинÑÑ."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -683,15 +683,15 @@ msgstr ""
" -n Ðе ÑÑиÑÐ°Ð²Ð°Ñ Ð¿Ð¾Ð´ÑазÑÐ¼ÐµÐ²Ð°Ð½Ñ Ð´Ð°ÑоÑÐµÐºÑ "
"ÑкÑипÑе.\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -699,53 +699,53 @@ msgstr ""
"--log-level оÑекÑÑе паÑамеÑÐ°Ñ Ð·Ð° ниво опÑиÑноÑÑи (нÑмеÑиÑка вÑедноÑÑ Ð¸Ð·Ð¼ÐµÑÑ "
"0 и 4 или Ñедно од: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"ÐеиÑпÑаван ÑиÑни дневник: коÑиÑÑиÑе Ñедно од âsyslogâ, âstderrâ или âautoâ."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "ÐеиÑпÑаван наÑин диÑкÑеÑизаÑиÑе â%sâ."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm оÑекÑÑе логиÑÐºÑ Ð²ÑедноÑÑ"
@@ -784,77 +784,82 @@ msgstr "УпоÑÑеба: %s\n"
msgid "Load Once: %s\n"
msgstr "УÑиÑÐ°Ñ Ñедном: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ÐÑÑаÑа: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван ÑиÑни дневник â%sâ."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван ниво опÑиÑноÑÑи Ñ Ð´Ð½ÐµÐ²Ð½Ð¸ÐºÑ â%sâ."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван наÑин диÑкÑеÑизаÑиÑе â%sâ."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван rlimit â%sâ."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ниÑе подÑжан на Ð¾Ð²Ð¾Ñ Ð¿Ð»Ð°ÑÑоÑми."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван ÑоÑÐ¼Ð°Ñ ÑзоÑка â%sâ."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ÐеиÑпÑавна ÑÑеÑÑаноÑÑ Ð´Ð¸ÑкÑеÑизаÑиÑе â%sâ."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ÐеиÑпÑавни канали ÑзоÑка â%sâ."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ÐеиÑпÑавна мапа канала â%sâ."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван бÑÐ¾Ñ Ð¾Ð´Ð»Ð¾Ð¼Ð°ÐºÐ° â%sâ."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ÐеиÑпÑавна велиÑина одломка â%sâ."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван ниво пÑиоÑиÑеÑа â%sâ."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ÐеÑÑпело оÑваÑаÑе даÑоÑеке подеÑаваÑа: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1112,8 +1117,8 @@ msgid "Top Rear Right"
msgstr "ÐоÑÑи позадинÑки деÑни"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(неиÑпÑавно)"
@@ -1299,174 +1304,169 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "ÐÑимио поÑÑÐºÑ Ð·Ð° непознаÑи локал â%sâ"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ÐеÑÑпеÑно иÑÑÑиваÑе Ñока: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "РепÑодÑкÑиони Ñок иÑÑÑен.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Ðеза до ÑеÑвеÑа Ñе иÑÑÑÑÑе.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_stream_write(): %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_stream_peek(): %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Ток ÑÑпеÑно напÑавÑен.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "ÐеÑÑпеÑно pa_stream_get_buffer_attr(): %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "ÐеÑÑике баÑеÑа: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "ÐеÑÑике баÑеÑа: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ÐоÑиÑÑим ÑледеÑе паÑамеÑÑе ÑзоÑка â%sâ и Ð¼Ð°Ð¿Ñ ÐºÐ°Ð½Ð°Ð»Ð° â%sâ.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ÐÑикÑÑÑен на ÑÑеÑÐ°Ñ %s (%u, %s обÑÑÑавÑено).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ÐÑеÑка Ñока: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "УÑеÑÐ°Ñ Ñока обÑÑÑавÑен.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "УÑеÑÐ°Ñ Ñока наÑÑавÑен.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Ток ниÑе попÑÑен. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Ток Ñе пÑелива.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Ток покÑенÑÑ. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Ток пÑебаÑен на ÑÑеÑÐ°Ñ %s (%u, %s обÑÑÑавÑено). %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "ниÑе"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ÐаÑамеÑÑи баÑеÑа Ñока ÑÑ Ð¿ÑомеÑени. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Ðеза ÑÑпоÑÑавÑена.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_stream_new() : %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "ÐеÑÑпеÑно повезиваÑе: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ÐеÑÑпеÑно иÑÑÑиваÑе Ñока: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "РепÑодÑкÑиони Ñок иÑÑÑен.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Ðеза до ÑеÑвеÑа Ñе иÑÑÑÑÑе.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "ÐоÑао до кÑаÑа даÑоÑеке.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа read(): %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа write(): %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Ðобио Ñигнал, излазим.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "ÐÐµÐ¼Ð¾Ð³Ñ Ð´Ð¾Ð±Ð¸Ñи вÑедноÑÑ ÐºÐ°ÑÑеÑа: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ÐÑеме: %0.3f s. ÐаÑÑеÑе: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_stream_update_timing_info(): %s\n"
# ШÑа да Ñадимо Ñа downmix и upmix. ÐÑеÑÐ»Ð¸ÐºÐ°Ñ Ð½Ð°Ð²Ð¸Ñе и пÑеÑÐ»Ð¸ÐºÐ°Ñ Ð½Ð°Ð½Ð¸Ð¶Ðµ? -- ÐгоÑ
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1492,8 +1492,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1516,6 +1518,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s[опÑиÑе]\n"
"\n"
@@ -1562,7 +1569,7 @@ msgstr ""
" --process-time=ÐÐÐТÐÐРТÑажи наведено вÑеме пÑоÑеÑа по "
"заÑ
ÑÐµÐ²Ñ Ñ Ð±Ð°ÑÑовима.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1573,88 +1580,133 @@ msgstr ""
"ÐомпаÑлиÑано Ñа libpulse %s\n"
"Ðовезано Ñа libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "ÐеиÑпÑавна мапа канала â%sâ\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "ÐеиÑпÑаван наÑин диÑкÑеÑизаÑиÑе â%sâ."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "ÐеиÑпÑавна мапа канала â%sâ\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "ÐеиÑпÑаван паÑамеÑÐ°Ñ ÐºÐ°ÑÑеÑа â%sâ\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "ÐеиÑпÑаван паÑамеÑÐ°Ñ Ð·Ð° вÑеме пÑоÑеÑа â%sâ\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "ÐеиÑпÑаван наÑин диÑкÑеÑизаÑиÑе â%sâ."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "ÐеиÑпÑавни паÑамеÑÑи ÑзоÑка\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "ÐÑевиÑе паÑамеÑаÑа.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "ÐиÑе ÑÑпело добавÑаÑе подаÑака о ÑзоÑкÑ: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "ÐиÑе ÑÑпело оÑваÑаÑе звÑÑне даÑоÑеке.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "ÐиÑе ÑÑпело добавÑаÑе подаÑака о ÑзоÑкÑ: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Ðапа канала Ñе не поклапа Ñа паÑамеÑÑима ÑзоÑка\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "ÐÑваÑам Ñок %s Ñа ÑледеÑим паÑамеÑÑима ÑзоÑка â%sâ.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "Ñнима"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "пÑÑÑа"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "ÐÑевиÑе паÑамеÑаÑа.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа io_new() \n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_context_new().\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_context_connect(): %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа time_new() \n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_mainloop_run().\n"
@@ -1684,8 +1736,7 @@ msgstr "ÐеÑÑпеÑно наÑÑавÑаÑе: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "УÐÐÐÐÐ ÐÐÐ: ÐвÑÑни ÑеÑÐ²ÐµÑ Ð½Ð¸Ñе локални, не заÑÑÑавÑам.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "ÐобиÑ
SIGINT, излазим.\n"
@@ -1713,7 +1764,7 @@ msgstr ""
" -s, --server=СÐÐ ÐÐÐ Ðме ÑеÑвеÑа Ñа коÑим Ñе повезÑÑе\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1724,32 +1775,32 @@ msgstr ""
"ÐомпаÑлиÑано Ñа libpulse %s\n"
"Ðовезано Ñа libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "ÐеÑÑпеÑно добавÑаÑе ÑÑаÑиÑÑике: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ТÑенÑÑно Ñ ÑпоÑÑеби: %u блокова ÑадÑжи ÑкÑпно %s баÑÑова.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "СмеÑÑено од покÑеÑаÑа: %u блокова ÑадÑжи ÑкÑпно %s баÑÑова.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "ÐелиÑина ÐºÐµÑ Ð¼ÐµÐ¼Ð¾ÑиÑе ÑзоÑка: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "ÐеÑÑпеÑно добиÑаÑе подаÑака о ÑеÑвеÑÑ: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1772,12 +1823,12 @@ msgstr ""
"ÐодÑазÑмевани извоÑ: %s\n"
"ÐолаÑиÑ: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "ÐеÑÑпеÑно добиÑаÑе подаÑака о ÑливникÑ: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1816,12 +1867,12 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "ÐиÑе ÑÑпело добавÑаÑе подаÑака о извоÑÑ: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1860,20 +1911,20 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "непознаÑо"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "ÐеÑÑпеÑно добиÑаÑе подаÑака о модÑлÑ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1890,12 +1941,12 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "ÐеÑÑпеÑно добиÑаÑе подаÑака о клиÑенÑÑ: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1910,12 +1961,12 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "ÐеÑÑпеÑно добиÑаÑе подаÑака о каÑÑиÑи: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1932,22 +1983,22 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tÐÑоÑили:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tÐкÑивни пÑоÑил: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "ÐиÑе ÑÑпело добиÑаÑе подаÑака о ÑÐ»Ð°Ð·Ñ Ñливника: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1984,12 +2035,12 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "ÐиÑе ÑÑпело добиÑаÑе подаÑака о Ð¸Ð·Ð»Ð°Ð·Ñ Ð¸Ð·Ð²Ð¾Ñа: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2018,12 +2069,12 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "ÐиÑе ÑÑпело добавÑаÑе подаÑака о ÑзоÑкÑ: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2054,22 +2105,21 @@ msgstr ""
"\tСвоÑÑÑва:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "ÐеÑÑпеÑ
: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ÐиÑе ÑÑпело ÑÑиÑаваÑе ÑзоÑка: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "ÐÑеÑани кÑÐ°Ñ Ð´Ð°ÑоÑеке\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2116,7 +2166,7 @@ msgstr ""
" -n, --client-name=ÐÐÐ Ðако назваÑи овог клиÑенÑа на "
"ÑеÑвеÑÑ\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2127,71 +2177,64 @@ msgstr ""
"ÐомпаÑлиÑано Ñа libpulse %s\n"
"Ðовезано Ñа libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "ÐаведиÑе даÑоÑÐµÐºÑ ÑзоÑка коÑÑ ÑÑеба ÑÑиÑаÑи\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "ÐиÑе ÑÑпело оÑваÑаÑе звÑÑне даÑоÑеке.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "ÐÑваÑам Ñок %s Ñа ÑледеÑим паÑамеÑÑима ÑзоÑка â%sâ.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "ÐоÑаÑе навеÑÑи име ÑзоÑка коÑег желиÑе пÑÑÑиÑи\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "ÐоÑаÑе навеÑÑи име ÑзоÑка коÑег желиÑе ÑклониÑи\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "ÐоÑаÑе навеÑÑи Ð¸Ð½Ð´ÐµÐºÑ Ñлаза Ñ ÑÐ»Ð¸Ð²Ð½Ð¸ÐºÑ Ð¸ Ñливник\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "ÐоÑаÑе навеÑÑи Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð·Ð»Ð°Ð·Ð° Ñ Ð¸Ð·Ð²Ð¾ÑÑ Ð¸ извоÑ\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "ÐоÑаÑе навеÑÑи име и паÑамеÑÑе модÑла.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "ÐоÑаÑе навеÑÑи Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð´Ñла\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "ÐожеÑе навеÑÑи Ñамо Ñедан Ñливник. ÐоÑаÑе навеÑÑи логиÑÐºÑ Ð²ÑедноÑÑ.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "ÐожеÑе навеÑÑи Ñамо Ñедан извоÑ. ÐоÑаÑе навеÑÑи логиÑÐºÑ Ð²ÑедноÑÑ.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "ÐоÑаÑе навеÑÑи име/Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ°ÑÑиÑе и име пÑоÑила\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Ðи Ñедна иÑпÑавна наÑедба ниÑе наведена.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_context_connect(): %s"
@@ -2277,129 +2320,49 @@ msgstr "ÐеÑÑпеÑно ÑÑиÑаваÑе даÑоÑека колаÑиÑа\
msgid "Not yet implemented.\n"
msgstr "ÐиÑе ÑÐ¾Ñ Ð¸Ð¼Ð¿Ð»ÐµÐ¼ÐµÐ½ÑиÑано.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "ÐиÑе ÑÑпело ÑбиÑаÑе PulseAudio демона."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Ðемон Ñе не одазива."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Ток ÑÑпеÑно напÑавÑен\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ÐÑеÑка Ñока: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Ðеза ÑÑÑановÑена.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [опÑиÑе] [ÐÐТÐТÐÐÐ]\n"
-"\n"
-" -h, --help ÐÑикажи Ð¾Ð²Ñ Ð¿Ð¾Ð¼Ð¾Ñ\n"
-" --version ÐÑикажи веÑзиÑÑ\n"
-"\n"
-" -v, --verbose ÐмогÑÑи опÑиÑни Ð¾Ð¿Ð¸Ñ ÑадÑи\n"
-"\n"
-" -s, --server=СÐÐ ÐÐÐ Ðме ÑеÑвеÑа на коÑи Ñе повезÑÑе\n"
-" -d, --device=УРÐÐÐÐ Ðме Ñливника на коÑе Ñе повезÑÑе\n"
-" -n, --client-name=ÐÐÐ Ðако назваÑи овог клиÑенÑа на "
-"ÑеÑвеÑÑ\n"
-" --stream-name=ÐÐÐ Ðако назваÑи Ð¾Ð²Ð°Ñ Ñок на ÑеÑвеÑÑ\n"
-" --volume=ÐÐÐСÐÐСТ Ðаведи поÑеÑÐ½Ñ (линеаÑнÑ) ÑаÑÐ¸Ð½Ñ "
-"звÑка из опÑега 0...65536\n"
-" --channel-map=ÐÐÐÐÐÐÐÐÐÐ ÐоÑÑави Ð¼Ð°Ð¿Ñ ÐºÐ°Ð½Ð°Ð»Ð° коÑа Ñе Ñе "
-"коÑиÑÑиÑи\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"ÐомпаÑлиÑано Ñа libpulse %s\n"
-"Ðовезано Ñа libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "ÐеиÑпÑавна мапа канала\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "ÐеÑÑпело оÑваÑаÑе даÑоÑеке â%sâ\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Ðапа канала Ñе не поклапа Ñа даÑоÑеком.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ÐоÑиÑÑе Ñе ÑледеÑи паÑамеÑÑи ÑзоÑка â%sâ\n"
-
# Ðако пÑевеÑÑи autospawn (могÑÑноÑÑ Ð¿ÑавÑеÑа или покÑеÑаÑа пÑоÑеÑа из иÑÑог) -- ÐгоÑ
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "ÐиÑе могÑÑе пÑиÑÑÑпиÑи даÑоÑеÑи закÑÑÑаваÑа за ÑамоÑмножаваÑе."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2416,7 +2379,7 @@ msgstr ""
"ÐÑобÑÑени Ñмо Ñа поÑÑавÑеним POLLOUT-ом -- али ÑледеÑи snd_pcm_avail() Ñе "
"вÑаÑио 0 или Ð½ÐµÐºÑ Ð´ÑÑÐ³Ñ Ð²ÑедноÑÑ Ð¼Ð°ÑÑ Ð¾Ð´ min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2433,34 +2396,101 @@ msgstr ""
"ÐÑобÑÑени Ñмо Ñа поÑÑавÑеним POLLIN-ом -- али ÑледеÑи snd_pcm_avail() Ñе "
"вÑаÑио 0 или Ð½ÐµÐºÑ Ð´ÑÑÐ³Ñ Ð²ÑедноÑÑ Ð¼Ð°ÑÑ Ð¾Ð´ min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Ðзлаз %s + Ñлаз %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Ðзлаз %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Улаз %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "ÐÑкÑÑÑено"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "РепÑодÑкÑиÑа виÑоке ÑаÑноÑÑи (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "ÐвоÑÑÑано ÑелеÑониÑаÑе (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio звÑÑни ÑиÑÑем"
+
+#~ msgid "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 at latin.po b/po/sr at latin.po
index 4ffaad2..9d75b38 100644
--- a/po/sr at latin.po
+++ b/po/sr at latin.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: MiloÅ¡ KomarÄeviÄ <kmilos at gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr at redhat.com>\n"
@@ -19,52 +19,52 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analogni mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analogni stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digitalni stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digitalni stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analogni okružujuÄi 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digitalni okružujuÄi 4.0 (IEC958/AC3)"
# Surround možemo prevesti ambijentalni ili okružni ili možda Äak i saraund? -- Igor
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analogni okružujuÄi 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analogni okružujuÄi 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analogni okružujuÄi 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digitalni okružujuÄi 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analogni okružujuÄi 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +77,7 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u â%sâ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -90,7 +90,7 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u â%sâ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -103,11 +103,11 @@ msgstr ""
"Ovo je najverovatnije greÅ¡ka u â%sâ ALSA upravljaÄkom programu. Prijavite "
"ovaj problem ALSA programerima."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "Unutrašnji zvuk"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Modem"
@@ -177,107 +177,107 @@ msgstr "Ne mogu dobiti ovlaÅ¡Äenje: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit je odgovorio sa â%sâ"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Dobih signal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Napuštam."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ne mogu naÄi korisnika â%sâ."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ne mogu naÄi grupu â%sâ."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "NaÄeni su korisnik â%sâ (UID %lu) i grupa â%sâ (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID korisnika â%sâ se ne poklapa sa grupom â%sâ."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "LiÄni direktorijum korisnika â%sâ nije â%sâ, zanemarujem."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "NeuspeÅ¡no pravljenje â%sâ: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Neuspešna promena grupnog spiska: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Neuspešna promena GID-a: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Neuspešna promena UID-a: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "UspeÅ¡no odbaÄena root ovlaÅ¡Äenja."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "Režim za Äitav sistem nije podržan na ovoj platformi."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nije uspelo: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "NeuspeÅ¡no tumaÄenje komandne linije."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Nalazimo se u grupi â%sâ koja dozvoljava visokoprioritetno rasporeÄivanje."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Nalazimo se u grupi â%sâ koja dozvoljava stvarnovremensko rasporeÄivanje."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nam je dao ovlaÅ¡Äenje za dobijanje visokog prioriteta."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit odbija ovlaÅ¡Äenje za dobijanje visokog prioriteta."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nam je dao ovlaÅ¡Äenje za dobijanje rada u stvarnom vremenu."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit odbija ovlaÅ¡Äenje za dobijanje rada u stvarnom vremenu."
#
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -298,48 +298,48 @@ msgstr ""
"korisnika kako bi omoguÄili stvarnovremensko ili visokoprioritetno "
"rasporeÄivanje."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Visokoprioritetno rasporeÄivanje je omoguÄeno u podeÅ¡avanjima, ali politika "
"to ne dozvoljava."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "UspeÅ¡no poveÄano RLIMIT_RTPRIO ograniÄenje"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Neuspešno postavljanje RLIMIT_RTPRIO-a:%s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "Odustajem od CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Stvarnovremensko rasporeÄivanje je omoguÄeno u podeÅ¡avanjima, ali politika "
"to ne dozvoljava."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Demon nije pokrenut"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon je pokrenut sa PID-om %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Neuspešno ubijanje demona: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -347,162 +347,162 @@ msgstr ""
"Nije nameravano da se ovaj program pokreÄe iz root naloga (osim u sluÄaju "
"kada je --system navedeno)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Potrebna su root ovlaÅ¡Äenja."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start nije podržano za sistemske primerke."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Pokrenuto u sistemskom režimu, ali --disallow-exit nije postavljeno!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Pokrenuto u sistemskom režimu, ali --disallow-module-loading nije "
"postavljeno!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Pokrenuto u sistemskom režimu, prisilno onemoguÄujem SHM režim!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Pokrenuto u sistemskom režimu, prisilno onemoguÄujem gaÅ¡enje posle odreÄenog "
"vremena mirovanja!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Neuspešno pronalaženje standardnog ulaza/izlaza."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "Neuspešno puštanje podataka kroz cev: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "Neuspela funkcija fork(): %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "Neuspela funkcija read(): %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Demon uspešno pokrenut."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ovo je PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "DomaÄin kompajliranja: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompajliranja: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "Pokrenut na domaÄinu: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Našao %u procesor(a)"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "VeliÄina stranice je %lu bajtova"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Kompajlirano sa podrškom za Valgrind: da"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Kompajlirano sa podrškom za Valgrind: ne"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Pokrenut u Valgrind režimu: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimizovana izgradnja: da"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "Optimizovana izgradnja: ne"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definisan, sva obaveÅ¡tenja iskljuÄena."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definisan, samo obaveÅ¡tenja brze putanje iskljuÄena."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "Sva obaveÅ¡tenja omoguÄena."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "Neuspešno dobavljanje IB mašine"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "IB mašine je %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "IB mašine je %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "Koristi se %s izvršni direktorijum."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "Koristi se %s direktorijum stanja."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "Pokrenuto u sistemskom režimu: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "Neuspela funkcija pa_pid_file_create()."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Dostupni su novi brojaÄi visoke rezolucije! Prijatno!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -510,31 +510,31 @@ msgstr ""
"VaÅ¡e jezgro nije dobro podeÅ¡eno za pulseaudio! PreporuÄuje Vam se da "
"koristite Linux jezgro sa omoguÄenim brojaÄima visoke rezolucije."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "Neuspela funkcija pa_core_new()."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Demon je pokrenut bez ijednog uÄitanog modula, odbija da radi."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "Pokretanje demona uspešno."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "Pokrenuto gašenje demona."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "Rad demona je prekinut."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -685,15 +685,15 @@ msgstr ""
" -n Ne uÄitavaj podrazumevanu datoteku "
"skripte.\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -701,53 +701,53 @@ msgstr ""
"--log-level oÄekuje parametar za nivo opÅ¡irnosti (numeriÄka vrednost izmeÄu "
"0 i 4 ili jedno od: debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
"Neispravan ciljni dnevnik: koristite jedno od âsyslogâ, âstderrâ ili âautoâ."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Neispravan naÄin diskretizacije â%sâ."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit oÄekuje logiÄku vrednost"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm oÄekuje logiÄku vrednost"
@@ -786,77 +786,82 @@ msgstr "Upotreba: %s\n"
msgid "Load Once: %s\n"
msgstr "UÄitaj jednom: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Putanja: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neispravan ciljni dnevnik â%sâ."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neispravan nivo opÅ¡irnosti u dnevniku â%sâ."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neispravan naÄin diskretizacije â%sâ."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neispravan rlimit â%sâ."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nije podržan na ovoj platformi."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neispravan format uzorka â%sâ."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neispravna uÄestanost diskretizacije â%sâ."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neispravni kanali uzorka â%sâ."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neispravna mapa kanala â%sâ."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neispravan broj odlomaka â%sâ."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neispravna veliÄina odlomka â%sâ."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neispravan nivo prioriteta â%sâ."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Neuspelo otvaranje datoteke podešavanja: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1114,8 +1119,8 @@ msgid "Top Rear Right"
msgstr "Gornji pozadinski desni"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(neispravno)"
@@ -1301,174 +1306,169 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "Primio poruku za nepoznati lokal â%sâ"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Neuspešno isušivanje toka: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "Reprodukcioni tok isušen.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Veza do servera se isušuje.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_write(): %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_peek(): %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "Tok uspešno napravljen.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "Neuspešno pa_stream_get_buffer_attr(): %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Metrike bafera: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Metrike bafera: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "Koristim sledeÄe parametre uzorka â%sâ i mapu kanala â%sâ.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "PrikljuÄen na ureÄaj %s (%u, %s obustavljeno).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Greška toka: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "UreÄaj toka obustavljen.%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "UreÄaj toka nastavljen.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "Tok nije popunjen. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "Tok se preliva.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "Tok pokrenut. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "Tok prebaÄen na ureÄaj %s (%u, %s obustavljeno). %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "nije"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "Parametri bafera toka su promenjeni. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "Veza uspostavljena.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_new() : %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Neuspešno povezivanje: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Neuspešno isušivanje toka: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "Reprodukcioni tok isušen.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Veza do servera se isušuje.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Došao do kraja datoteke.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "Neuspela funkcija read(): %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "Neuspela funkcija write(): %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "Dobio signal, izlazim.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Nemogu dobiti vrednost kašnjenja: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Vreme: %0.3f s. Kašnjenje: %0.0f μs. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Neuspela funkcija pa_stream_update_timing_info(): %s\n"
# Šta da radimo sa downmix i upmix. Preslikaj naviše i preslikaj naniže? -- Igor
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1494,8 +1494,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1518,6 +1520,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s[opcije]\n"
"\n"
@@ -1565,7 +1572,7 @@ msgstr ""
" --process-time=BAJTOVA Traži navedeno vreme procesa po "
"zahtevu u bajtovima.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1576,88 +1583,133 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "Neispravna mapa kanala â%sâ\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "Neispravan naÄin diskretizacije â%sâ."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Neispravna mapa kanala â%sâ\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Neispravan parametar kaÅ¡njenja â%sâ\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Neispravan parametar za vreme procesa â%sâ\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Neispravan naÄin diskretizacije â%sâ."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "Neispravni parametri uzorka\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "Previše parametara.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Nije uspelo otvaranje zvuÄne datoteke.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "Mapa kanala se ne poklapa sa parametrima uzorka\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "Otvaram tok %s sa sledeÄim parametrima uzorka â%sâ.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "snima"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "pušta"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "Previše parametara.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Neuspela funkcija pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "Neuspela funkcija io_new() \n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Neuspela funkcija pa_context_new().\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "Neuspela funkcija pa_context_connect(): %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "Neuspela funkcija time_new() \n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Neuspela funkcija pa_mainloop_run().\n"
@@ -1687,8 +1739,7 @@ msgstr "Neuspešno nastavljanje: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "UPOZORENJE: ZvuÄni server nije lokalni, ne zaustavljam.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Dobih SIGINT, izlazim.\n"
@@ -1716,7 +1767,7 @@ msgstr ""
" -s, --server=SERVER Ime servera sa kojim se povezuje\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1727,32 +1778,32 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Neuspešno dobavljanje statistike: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Trenutno u upotrebi: %u blokova sadrži ukupno %s bajtova.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "Smešteno od pokretanja: %u blokova sadrži ukupno %s bajtova.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "VeliÄina keÅ¡ memorije uzorka: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Neuspešno dobijanje podataka o serveru: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1775,12 +1826,12 @@ msgstr ""
"Podrazumevani izvor: %s\n"
"KolaÄiÄ: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Neuspešno dobijanje podataka o slivniku: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1819,12 +1870,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Nije uspelo dobavljanje podataka o izvoru: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1863,20 +1914,20 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "nepoznato"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Neuspešno dobijanje podataka o modulu: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1893,12 +1944,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Neuspešno dobijanje podataka o klijentu: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1913,12 +1964,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Neuspešno dobijanje podataka o kartici: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1935,22 +1986,22 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfili:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktivni profil: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Nije uspelo dobijanje podataka o ulazu slivnika: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1987,12 +2038,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Nije uspelo dobijanje podataka o izlazu izvora: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2021,12 +2072,12 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2057,22 +2108,21 @@ msgstr ""
"\tSvojstva:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Neuspeh: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Nije uspelo uÄitavanje uzorka: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "Prerani kraj datoteke\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2119,7 +2169,7 @@ msgstr ""
" -n, --client-name=IME Kako nazvati ovog klijenta na "
"serveru\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2130,71 +2180,64 @@ msgstr ""
"Kompajlirano sa libpulse %s\n"
"Povezano sa libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "Navedite datoteku uzorka koju treba uÄitati\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Nije uspelo otvaranje zvuÄne datoteke.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, 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:912
msgid "You have to specify a sample name to play\n"
msgstr "Morate navesti ime uzorka kojeg želite pustiti\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Morate navesti ime uzorka kojeg želite ukloniti\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Morate navesti indeks ulaza u slivniku i slivnik\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Morate navesti indeks izlaza u izvoru i izvor\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Morate navesti ime i parametre modula.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Morate navesti indeks modula\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "Možete navesti samo jedan slivnik. Morate navesti logiÄku vrednost.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "Možete navesti samo jedan izvor. Morate navesti logiÄku vrednost.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Morate navesti ime/indeks kartice i ime profila\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Ni jedna ispravna naredba nije navedena.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Neuspela funkcija pa_context_connect(): %s"
@@ -2280,129 +2323,49 @@ msgstr "NeuspeÅ¡no uÄitavanje datoteka kolaÄiÄa\n"
msgid "Not yet implemented.\n"
msgstr "Nije još implementirano.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "Nije uspelo ubijanje PulseAudio demona."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Demon se ne odaziva."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "Tok uspešno napravljen\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Greška toka: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Veza ustanovljena.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [opcije] [DATOTEKA]\n"
-"\n"
-" -h, --help Prikaži ovu pomoÄ\n"
-" --version Prikaži verziju\n"
-"\n"
-" -v, --verbose OmoguÄi opÅ¡irni opis radnji\n"
-"\n"
-" -s, --server=SERVER Ime servera na koji se povezuje\n"
-" -d, --device=UREÄAJ Ime slivnika na koje se povezuje\n"
-" -n, --client-name=IME Kako nazvati ovog klijenta na "
-"serveru\n"
-" --stream-name=IME Kako nazvati ovaj tok na serveru\n"
-" --volume=GLASNOST Navedi poÄetnu (linearnu) jaÄinu "
-"zvuka iz opsega 0...65536\n"
-" --channel-map=MAPAKANALA Postavi mapu kanala koja Äe se "
-"koristiti\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompajlirano sa libpulse %s\n"
-"Povezano sa libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "Neispravna mapa kanala\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Neuspelo otvaranje datoteke â%sâ\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "Mapa kanala se ne poklapa sa datotekom.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "Koriste se sledeÄi parametri uzorka â%sâ\n"
-
# Kako prevesti autospawn (moguÄnost pravljenja ili pokretanja procesa iz istog) -- Igor
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Nije moguÄe pristupiti datoteci zakljuÄavanja za samoumnožavanje."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2419,7 +2382,7 @@ msgstr ""
"ProbuÄeni smo sa postavljenim POLLOUT-om -- ali sledeÄi snd_pcm_avail() je "
"vratio 0 ili neku drugu vrednost manju od min_avail."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2436,34 +2399,101 @@ msgstr ""
"ProbuÄeni smo sa postavljenim POLLIN-om -- ali sledeÄi snd_pcm_avail() je "
"vratio 0 ili neku drugu vrednost manju od min_avail."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "Izlaz %s + ulaz %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "Izlaz %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "Ulaz %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "IskljuÄeno"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodukcija visoke taÄnosti (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Dvostrano telefoniranje (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio zvuÄni sistem"
+
+#~ msgid "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 4eb1c2d..5dd365e 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2008-09-05 18:24+0100\n"
"Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
@@ -15,51 +15,51 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -68,7 +68,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -77,7 +77,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -86,12 +86,12 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
#, fuzzy
msgid "Internal Audio"
msgstr "Internt fel"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr ""
@@ -162,104 +162,104 @@ msgstr ""
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit svarade med \"%s\""
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "Fick signal %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "Avslutar."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Misslyckades med att hitta användaren \"%s\"."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Misslyckades med att hitta gruppen \"%s\"."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Hemkatalogen för användaren \"%s\" är inte \"%s\", ignorerar."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Misslyckades med att skapa \"%s\": %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -272,44 +272,44 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO misslyckades: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -317,189 +317,189 @@ msgstr ""
"Detta program är inte tänkt att köras som root (såvida inte --system har "
"angivits)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
#, fuzzy
msgid "Root privileges required."
msgstr "Root-behörighet krävs."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start stöds inte för systeminstanser."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "pipe misslyckades: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() misslyckades: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() misslyckades: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Detta är PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr ""
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -573,69 +573,69 @@ msgid ""
" -n Don't load default script file\n"
msgstr ""
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
msgstr ""
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
#, fuzzy
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit booleskt argument"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
#, fuzzy
msgid "--log-time expects boolean argument"
msgstr "--realtime förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
#, fuzzy
msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit booleskt argument"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit förväntar sig ett booleskt argument"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm förväntar sig ett booleskt argument"
@@ -674,77 +674,82 @@ msgstr "Användning: %s\n"
msgid "Load Once: %s\n"
msgstr ""
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "Sökväg: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -995,8 +1000,8 @@ msgid "Top Rear Right"
msgstr ""
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
#, fuzzy
msgid "(invalid)"
msgstr "Ogiltig"
@@ -1182,172 +1187,167 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr ""
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() misslyckades: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() misslyckades: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr ""
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() misslyckades: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr ""
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr ""
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Strömfel: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr ""
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "inte "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() misslyckades: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() misslyckades: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() misslyckades: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "Anslutningsfel: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr ""
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "Fick filslut.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() misslyckades: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() misslyckades: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tid: %0.3f sec; Latens: %0.0f ms \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() misslyckades: %s\n"
-#: ../src/utils/pacat.c:511
+#: ../src/utils/pacat.c:605
#, c-format
msgid ""
"%s [options]\n"
@@ -1374,8 +1374,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1398,9 +1400,14 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1408,88 +1415,132 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
#, c-format
-msgid "Invalid channel map '%s'\n"
+msgid "Invalid client name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:776
#, c-format
-msgid "Invalid latency specification '%s'\n"
+msgid "Invalid stream name '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:813
#, c-format
-msgid "Invalid process time specification '%s'\n"
+msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:842
#, c-format
-msgid "Invalid sample specification\n"
+msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:849
#, c-format
-msgid "Channel map doesn't match sample specification\n"
+msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
-msgstr ""
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "Ogiltig server"
-#: ../src/utils/pacat.c:728
-msgid "recording"
+#: ../src/utils/pacat.c:878
+#, c-format
+msgid "Unknown file format %s."
msgstr ""
-#: ../src/utils/pacat.c:728
-msgid "playback"
+#: ../src/utils/pacat.c:897
+msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:736
+#: ../src/utils/pacat.c:907
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:741
+#: ../src/utils/pacat.c:912
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:751
-#, c-format
+#: ../src/utils/pacat.c:919
msgid "Too many arguments.\n"
msgstr "För många argument.\n"
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Misslyckades med att få modulinformation: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Misslyckades med att öppna ljudfil.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+msgid "Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "recording"
+msgstr ""
+
+#: ../src/utils/pacat.c:1006
+msgid "playback"
+msgstr ""
+
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() misslyckades.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() misslyckades.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() misslyckades.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() misslyckades.\n"
@@ -1519,8 +1570,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr ""
@@ -1542,7 +1592,7 @@ msgid ""
"\n"
msgstr ""
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1553,32 +1603,32 @@ msgstr ""
"Kompilerad med libpulse %s\n"
"Länkad med libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Misslyckades med att få statistik: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1592,12 +1642,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1619,12 +1669,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1646,20 +1696,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1670,12 +1720,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Misslyckades med att få klientinformation: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1685,12 +1735,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1701,22 +1751,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "pipe misslyckades: %s"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1737,12 +1787,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1759,12 +1809,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -1782,22 +1832,21 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Fel: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1823,7 +1872,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -1834,71 +1883,63 @@ msgstr ""
"Kompilerad med libpulse %s\n"
"Länkad med libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Misslyckades med att öppna ljudfil.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr ""
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() misslyckades.\n"
@@ -1975,112 +2016,48 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr "Ãnnu inte implementerad.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "Anslutning etablerad.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Kompilerad med libpulse %s\n"
-"Länkad med libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Misslyckades med att öppna filen \"%s\"\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr ""
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr ""
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2091,7 +2068,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2102,38 +2079,53 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr ""
+#~ msgid "Connection established.\n"
+#~ msgstr "Anslutning etablerad.\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Kompilerad med libpulse %s\n"
+#~ "Länkad med libpulse %s\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Misslyckades med att öppna filen \"%s\"\n"
+
#, fuzzy
#~ msgid "--log-time boolean argument"
#~ msgstr "--disallow-exit booleskt argument"
diff --git a/po/ta.po b/po/ta.po
index b47fd63..003e69e 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-12 05:02+0530\n"
"Last-Translator: I. Felix <ifelix at redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta at redhat.com>\n"
@@ -34,51 +34,51 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Analog Mono"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Analog Stereo"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "Digital Stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "Digital Stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Analog Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Digital Surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Analog Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Analog Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Analog Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Digital Surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Analog Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -91,7 +91,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -104,7 +104,7 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -117,11 +117,11 @@ msgstr ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à®à®à¯à®ªà¯à®± à®à®à®¿à®¯à¯"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "மாதிரி"
@@ -191,106 +191,106 @@ msgstr "auth஠பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s"
msgid "PolicyKit responded with '%s'"
msgstr "'%s'à®à®à®©à¯ பாலிஸிà®à®¿à®à¯ à®à®¤à¯à®¤à¯à®ªà¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "%sà®à¯à®à¯ à®à®¿à®à¯à®©à®²à¯ à®à®¿à®à¯à®¤à¯à®¤à¯à®µà®¿à®à¯à®à®¤à¯."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "வà¯à®³à®¿à®¯à¯à®±à¯à®¤à®²à¯."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' பயனர௠à®à®£à¯à®à¯à®ªà®¿à®à®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' à®à¯à®´à¯à®µà¯ à®à®£à¯à®à¯à®ªà®¿à®à®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "'%s'பயனர௠à®à®£à¯à®à¯à®ªà®¿à®à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¾à®°à¯ (UID %lu) மறà¯à®±à¯à®®à¯ à®à¯à®´à¯ '%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID ன௠பயனர௠'%s' மறà¯à®±à¯à®®à¯ '%s' à®à¯à®´à¯à®µà¯à®à®©à¯ à®à®¤à¯à®¤à¯ பà¯à®à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "à®®à¯à®à®ªà¯à®ªà¯ à®
à®à¯à®µà¯ பயனரான'%s' '%s'à®à®²à¯, பà¯à®±à®à¯à®à®£à®¿à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s'à® à®à®°à¯à®µà®¾à®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "à®à¯à®´à¯à®ªà¯ பà®à¯à®à®¿à®¯à®²à¯ மாறà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GIDà®à¯à®à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UIDà®à¯à®à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "à®°à¯à®à¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®à®³à¯ வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® விà®à®ªà¯à®ªà®à¯à®à®¤à¯."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à®à®¨à¯à®¤ தளதà¯à®¤à®¿à®²à¯ à®à®£à®¿à®©à®¿à®¯à®¿à®©à¯ திறநà¯à®¤ à®®à¯à®±à¯à®®à¯ தà¯à®£à¯à®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "à®à®à¯à®à®³à¯ வரிய௠மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"நாம௠à®à¯à®´à¯ '%s'ல௠à®à®°à¯à®¨à¯à®¤ பà¯à®¤à¯ , à®à®¯à®°à¯à®¨à¯à®¤ à®®à¯à®¤à®©à¯à®®à¯ à®
à®à¯à®à®µà®£à¯à®ªà¯à®ªà®à¯à®¤à¯à®¤ à®
னà¯à®®à®¤à®¿ "
"à®
ளிà®à¯à®à®ªà¯à®ªà®à¯à®à®¿à®°à¯à®¨à¯à®¤à®¤à¯."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "à®à¯à®´à¯ '%s'à®à®²à¯ à®à®°à¯à®à¯à®à®¿à®±à¯à®®à¯, நிà®à®´à¯à®¨à¯à®° திà®à¯à®à®®à®¿à®à¯à®¤à®²à¯ à®
னà¯à®®à®¤à®¿à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "நமà®à¯à®à®¾à® PolicyKit à®à®¯à®°à¯à®¨à¯à®¤ à®®à¯à®à¯à®à®¿à®¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®¯à¯ வழà®à¯à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit à®à®¯à®°à¯à®¨à¯à®¤ à®®à¯à®à¯à®à®¿à®¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®¯à¯ மறà¯à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®à®³à¯ à®à¯à®à¯à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®à®³à¯ நிராà®à®°à®¿à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -311,207 +311,207 @@ msgstr ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"à®à®¯à®°à¯à®¨à¯à®¤ à®à®²à¯à®à¯à®à®³à®¿à®©à¯ à®
à®à¯à®à®µà®£à¯à®¯à¯ à®à®à¯à®à®®à¯à®ªà¯à®ªà®¿à®²à¯ à®à¯à®¯à®²à¯à®ªà®à¯à®¤à¯à®¤à®ªà¯à®ªà®à¯à®à®¤à¯ à®à®©à®¾à®²à¯ பாலிà®à®¿à®¯à®¾à®²à¯ "
"à®
னà¯à®®à®¤à®¿à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® à®
திà®à®°à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯ RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr ""
"CAP_NICEà® à®®à¯à®²à¯ à®à¯à®à¯à®à¯à®à®¿à®±à®¤à¯ (_N\n"
")"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"நிà®à®´à¯à®¨à¯à®° திà®à¯à®à®®à®¿à®à¯à®¤à®²à¯ à®à®à¯à®à®®à¯à®ªà¯à®ªà®¿à®²à¯ à®à¯à®¯à®²à¯à®ªà®à¯à®¤à¯à®¤à®ªà¯à®ªà®à¯à®à®¤à¯ à®à®©à®¾à®²à¯ à®à¯à®³à¯à®à¯à®¯à®¾à®²à¯ à®
னà¯à®®à®¤à®¿à®à¯à®à®ªà¯à®ªà®à¯à®µà®¤à®¿à®²à¯à®²à¯"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "à®à¯à®®à¯à®©à¯ à®à®¯à®à¯à®à®µà®¿à®²à¯à®²à¯"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %uவா஠à®à¯à®®à¯à®©à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "à®à¯à®®à¯à®©à¯à®à¯à®à¯ à®®à¯à®à®¿à®µà¯ à®à®à¯à®à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à®à®¨à¯à®¤ நிரல௠ரà¯à®à¯à®à®¾à® à®à®¯à®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯ (--system à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à®¾à®¤ வரà¯)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "à®°à¯à®à¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®à®³à¯ தà¯à®µà¯à®ªà¯à®ªà®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start à®à®£à®¿à®©à®¿ நிà®à®´à¯à®µà®¿à®²à¯ தà¯à®£à¯à®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, à®à®©à®¾à®²à¯ --disallow-exit à®
à®®à¯à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, à®à®©à®¾à®²à¯ --disallow-module-loading à®
à®®à¯à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, SHM à®®à¯à®±à¯à®®à¯ à®à¯à®¯à®²à¯à®¨à¯à®à¯à®à¯à®¤à®²à¯ à®à®à¯à®à®¾à®¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, வà¯à®±à¯à®®à¯ நà¯à®°à®¤à¯à®¤à¯ à®à¯à®¯à®²à¯à®¨à¯à®à¯à® à®à®à¯à®à®¾à®¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio஠பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "பà¯à®ªà¯ தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "வாà®à®¿à®ªà¯à®ªà®¤à®¿à®²à¯() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "à®à¯à®®à¯à®©à¯ தà¯à®µà®à¯à®à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "à®à¯à®®à¯à®©à¯ வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® தà¯à®µà®à¯à®à®à®ªà¯à®ªà®à¯à®à®¤à¯."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à®à®¤à¯ தான௠பளà¯à®¸à¯ à®à®à®¿à®¯à¯ %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "தà¯à®à¯à®à¯à®à®ªà¯à®ªà®à¯à® பà¯à®°à®µà®²à®©à¯: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "தà¯à®à¯à®ªà¯à®ªà¯ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "பà¯à®°à®µà®²à®©à®¾à® à®à®¯à®à¯à®à¯à®à®¿à®±à®¤: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "CPUs %uவில௠à®à®¾à®£à®ªà¯à®ªà®à¯à®à®¿à®±à®¤à¯ ."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "பà®à¯à® à®
ளவà¯à®à®³à¯ %lu பà¯à®à¯à®¸à¯"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Compiled with Valgrind support: yes"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Compiled with Valgrind support: no"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "Optimized build: yes"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "à®à¯à®°à¯à®à¯à®à®®à®¾à®© à®à®°à¯à®µà®¾à®à¯à®à®®à¯: à®à®²à¯à®²à¯"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "à®à®£à®¿à®©à®¿ à®à¯à®±à®¿à®¯à¯à®à¯ பà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "à®à®£à®¿à®©à®¿ à®à¯à®±à®¿à®¯à¯à®à¯ %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "à®à®£à®¿à®©à®¿ à®à¯à®±à®¿à®¯à¯à®à¯ %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "à®à®à¯à®®à¯à®¨à¯à®°à®®à¯ %s à®
à®à¯à®µà¯ பயனà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "%s நில௠à®
à®à¯à®µà®¿à®©à¯ பயனà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "à®à®£à®¿à®©à®¿à®¯à®¿à®©à¯ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "à®à®¯à®°à¯à®¨à¯à®¤ திரà¯à®¤à¯à®¤à®¿à®±à®©à¯ நà¯à®°à®®à¯à®à®¾à®à¯à®à®¿ à®à®¿à®à¯à®à¯à®à®¿à®³à®¤à¯! Bon appetit!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -519,31 +519,31 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "à®à¯à®®à¯à®©à¯ à®à®°à®®à¯à®ªà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "à®à¯à®®à®¾à®©à¯ தà¯à®µà®à¯à®à®®à¯ à®à®¨à¯à®¤ தà¯à®à¯à®¤à®¿à®à®³à¯à®®à¯ à®à®±à¯à®±à®ªà¯à®ªà®à®¾à®®à®²à¯, வà¯à®²à¯à®¯à¯ நிராà®à®°à®¿à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "à®à¯à®®à¯à®©à¯ தà¯à®µà®à¯à®à¯à®µà®¤à¯ à®®à¯à®à®¿à®µà®à¯à®¨à¯à®¤à®¤à¯."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "à®à¯à®®à¯à®©à¯ பணிநிறà¯à®¤à¯à®¤à®®à¯ à®®à¯à®©à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "à®à¯à®®à¯à®©à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®¤à¯."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -686,15 +686,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -702,52 +702,52 @@ msgstr ""
"--log-level பதிவ௠நில௠à®
ளவà¯à®°à¯à®µà¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯ (à®à®£à¯ 0..4 à®
லà¯à®²à®¤à¯ debug, info, "
"notice, warn, errorà®à®²à¯ à®à®©à¯à®±à¯)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "தவறான பதிவ௠à®à®²à®à¯à®à¯: 'syslog', 'stderr' à®
லà¯à®²à®¤à¯ 'auto'஠பயனà¯à®ªà®à¯à®¤à¯à®¤à®µà¯à®®à¯."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm பà¯à®²à®¿à®¯à®©à¯ à®
ளவà¯à®°à¯ à®à®¤à®¿à®°à¯à®ªà®¾à®°à¯à®à¯à®à®¿à®±à®¤à¯"
@@ -786,77 +786,82 @@ msgstr "பயனà¯à®ªà®¾à®à¯: %s\n"
msgid "Load Once: %s\n"
msgstr "à®à®°à¯à®®à¯à®±à¯ à®à®±à¯à®±à®ªà¯à®ªà®à¯à®à®¤à¯: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "பாதà¯: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] தவறான பதிவ௠à®à®²à®à¯à®à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] தவறான பதிவ௠à®à®²à®à¯à®à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] தவறான rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à®à®¨à¯à®¤ தளதà¯à®¤à®¿à®²à¯ தà¯à®£à¯à®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] தவறான மாதிரி à®®à¯à®±à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] தவறான மாதிரி வில௠'%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] தவறான மாதிரி à®à¯à®©à®²à¯à®à®³à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] தவறான à®à¯à®©à®²à¯ பà®à®®à¯ '%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] பà®à¯à®ªà¯à®ªà¯ '%s'à®à¯à®à¯ தவறான à®à®£à¯"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] தவறான பà®à¯à®ªà¯à®ªà¯ à®
ளவ௠'%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] தவறான நலà¯à®² நில௠'%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "à®à®à¯à®à®®à¯à®à¯à®à®ªà¯à®ªà®à¯à® à®à¯à®ªà¯à®ªà®¿à®©à¯ திறபà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1110,8 +1115,8 @@ msgid "Top Rear Right"
msgstr "à®®à¯à®²à¯ பின௠வலதà¯"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(தவறான)"
@@ -1296,173 +1301,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "தà¯à®°à®¿à®¯à®¾à®¤ தà¯à®à®°à®¿à®à¯à®à®¿à®¯à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ '%s'à®à¯à®à¯ à®à¯à®¯à¯à®¤à®¿à®à®³à¯ பà¯à®±à®ªà¯à®ªà®à¯à®à®©"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "ஸà¯à®à¯à®°à®¿à®®à¯ à®à¯à®°à¯à®©à¯ à®à¯à®¯à¯à®¯ à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "à®à¯à®°à¯à®©à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à® ஸà¯à®à¯à®°à®¿à®®à¯.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "à®à¯à®°à¯à®©à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®à®£à¯à®ªà¯à®ªà¯ à®à¯à®µà¯à®¯à®à®¤à¯à®¤à®¿à®±à¯à®à¯.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® à®à®°à¯à®µà®¾à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à¯à® à®à¯à®±à®¿à®ªà¯à®ªà¯ '%s', à®à¯à®©à®²à¯ à®®à¯à®ªà¯ '%s'஠பயனà¯à®ªà®à¯à®¤à¯à®¤à®¿.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "%s à®à®¾à®¤à®©à®¤à¯à®¤à¯à®à®©à¯ à®à®£à¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯ (%u, %ssuspended).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ பிழà¯: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ஸà¯à®à¯à®°à®¿à®®à¯ à®à®¾à®¤à®©à®®à¯ à®à®à¯à®¨à¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ஸà¯à®à¯à®°à®¿à®®à¯ à®à®¾à®¤à®©à®®à¯ தà¯à®à®°à¯à®à®¿à®±à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ஸà¯à®à¯à®°à®¿à®®à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ஸà¯à®à¯à®°à®¿à®®à¯ à®
திà®à®³à®µà¯ à®à®¯à®à¯à®à®¿à®¯à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ %s தà¯à®µà®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯ \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ %s à®à®¯à®à¯à®à®¿à®à¯à®à¯ நà®à®°à¯à®¨à¯à®¤à®¤à¯ (%u, %ssuspended).%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "à®à®²à¯à®²à¯"
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, fuzzy, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ஸà¯à®à¯à®°à®¿à®®à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "à®à®£à¯à®ªà¯à®ªà¯ தà¯à®µà®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "à®à®£à¯à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "ஸà¯à®à¯à®°à®¿à®®à¯ à®à¯à®°à¯à®©à¯ à®à¯à®¯à¯à®¯ à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "à®à¯à®°à¯à®©à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à® ஸà¯à®à¯à®°à®¿à®®à¯.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "à®à¯à®°à¯à®©à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®à®£à¯à®ªà¯à®ªà¯ à®à¯à®µà¯à®¯à®à®¤à¯à®¤à®¿à®±à¯à®à¯.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF à®à®¿à®à¯à®à¯à®à®ªà¯ பà¯à®±à¯à®±à®¤à¯\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "வாà®à®¿à®ªà¯à®ªà®¤à®¿à®²à¯ () தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "à®à®´à¯à®¤à¯à®µà®¤à®¿à®²à¯ () தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "à®à®¿à®à¯à®©à®²à¯ à®à®¿à®à¯à®¤à¯à®¤à®¤à¯, வà¯à®³à®¿à®¯à¯à®±à¯à®à®¿à®±à®¤à¯.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "லà®à®©à¯à®à®¿à®¯à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Time: %0.3f sec; Latency: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() தà¯à®²à¯à®µà®¿: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1488,8 +1488,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1512,6 +1514,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1562,7 +1569,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1573,88 +1580,133 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "தவறான à®à¯à®©à®²à¯ வரà¯à®ªà®à®®à¯ '%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "தவறான à®à¯à®©à®²à¯ வரà¯à®ªà®à®®à¯ '%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "தவறான லà¯à®à®©à¯à®à®¿ à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯ '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "தவறான à®à¯à®¯à®²à¯ நà¯à®° à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "தவறான மறà¯à®®à®¾à®¤à®¿à®°à®¿ à®®à¯à®±à¯ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "தவறான மாதிரி à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "நிறà¯à®¯ விவாதà®à¯à®à®³à¯.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "மாதிரி தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯.: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "à®à®²à®¿ à®à¯à®ªà¯à®ªà®¿à®©à¯ திறà®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "மாதிரி தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯.: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "à®à¯à®©à®²à¯ à®®à¯à®ªà¯ மாதிரி à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯à®à¯à®à®©à¯ பà¯à®°à¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "à®à®°à¯ %s ஸà¯à®à¯à®°à®®à¯ மாதிரி à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯ '%s'à®à®à®©à¯ திறà®à¯à®à®¿à®±à®¤à¯.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "à®à®²à®¿à®ªà¯à®ªà®¤à®¿à®µà¯"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "பிணà¯à®£à®©à®¿"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "நிறà¯à®¯ விவாதà®à¯à®à®³à¯.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() தà¯à®²à¯à®µà®¿.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_பà¯à®¤à®¿à®¯() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯.(_n) \n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() தà¯à®²à¯à®µà®¿.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() தà¯à®²à¯à®µà®¿: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() தà¯à®²à¯à®µà®¿.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() தà¯à®²à¯à®µà®¿.\n"
@@ -1684,8 +1736,7 @@ msgstr "தà¯à®à®° à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "à®à®à¯à®à®°à®¿à®à¯à®à¯: à®à®²à®¿ à®à¯à®µà¯à®¯à®®à¯ à®à®³à¯à®³à®®à¯à®µà®¾à® à®à®²à¯à®²à¯, à®à®à¯à®¨à®¿à®±à¯à®¤à¯à®¤à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT பà¯à®±à®ªà¯à®ªà®à¯à®à®¤à¯, வà¯à®³à®¿à®¯à¯à®±à¯à®à®¿à®±à®¤à¯.\n"
@@ -1713,7 +1764,7 @@ msgstr ""
" -s, --à®à¯à®µà¯à®¯à®à®®à¯=SERVER பà¯à®¯à®°à®¿à®à®ªà¯à®ªà®à¯à® à®à¯à®µà¯à®¯à®à®®à¯ à®à®£à¯à®à¯à®à®ªà¯à®ªà® வà¯à®£à¯à®à¯à®®à¯\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1724,33 +1775,33 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "பà¯à®³à¯à®³à®¿à®µà®¿à®µà®°à®¤à¯à®¤à¯ பà¯à®± à®à®¯à®²à®¾à®¤à¯: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "தறà¯à®ªà¯à®¤à¯ பயனிலà¯à®³à¯à®³à®¤à¯: %u தà¯à®à¯à®¤à®¿à®à®³à¯ %s பà¯à®à¯à®à®³à¯ à®®à¯à®¤à¯à®¤à®®à®¾à® à®à¯à®£à¯à®à¯à®³à¯à®³à®¤à¯.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"வாழà¯à®à¯à®à¯ à®®à¯à®´à¯à®µà®¤à¯à®®à¯ à®à®¤à¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯: %u தà¯à®à¯à®¤à®¿à®à®³à¯ %s பà¯à®à¯à®à®³à¯ à®®à¯à®¤à¯à®¤à®®à®¾à® à®à¯à®£à¯à®à¯à®³à¯à®³à®¤à¯.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "மாதிரி à®à®à¯à®¯à® à®
ளவà¯: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "à®à¯à®µà¯à®¯à®à®¤à¯à®¤à®¿à®©à¯ தà®à®µà®²à¯ பà¯à®± à®à®¯à®²à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1773,12 +1824,12 @@ msgstr ""
"à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ à®®à¯à®²à®à¯à®à®³à¯: %s\n"
"à®à¯à®à¯à®à®¿: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "à®à¯à®°à¯à®à¯à®à®®à®¾à®© தà®à®µà®²à¯ பà¯à®±à¯ à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1817,12 +1868,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "à®®à¯à®²à®¤à¯à®¤à®¿à®©à¯ தà®à®µà®²à¯ பà¯à®± à®à®¯à®²à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1861,20 +1912,20 @@ msgstr ""
"\tபணà¯à®ªà¯à®à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "தà¯à®à¯à®¤à®¿ தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1891,12 +1942,12 @@ msgstr ""
"\tபணà¯à®ªà¯à®à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à®à®¿à®³à¯à®¯à®©à¯à®à¯ தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1911,12 +1962,12 @@ msgstr ""
"\tபணà¯à®ªà¯à®à®³à¯:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à®
à®à¯à®à¯ தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1933,22 +1984,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tவிவரà®à¯à®à¯à®±à®¿à®ªà¯à®ªà¯à®à®³à¯:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tà®à¯à®¯à®²à¯à®ªà®¾à®à¯à®à®¿à®²à¯à®³à¯à®³ விவரà®à¯à®à¯à®±à®¿à®ªà¯à®ªà¯à®à®³à¯: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "à®à®¿à®à¯à®à¯ தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1985,12 +2036,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "à®®à¯à®² வà¯à®³à®¿à®ªà¯à®ªà®¾à®à¯ தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2019,12 +2070,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "மாதிரி தà®à®µà®²à¯ பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯.: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2055,22 +2106,21 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "தà¯à®²à¯à®µà®¿: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "மாதிரிய௠மà¯à®®à¯à®ªà®à¯à®¤à¯à®¤ à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "à®®à¯à®©à¯à®©à®¾à® à®à¯à®ªà¯à®ªà¯ à®®à¯à®à®¿à®¤à¯à®¤à®²à¯\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2117,7 +2167,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2128,56 +2178,51 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "à®à®±à¯à®±à¯à®µà®¤à®±à¯à®à¯ à®à®°à¯ மாதிரி à®à¯à®ªà¯à®ªà®¿à®©à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à®µà¯à®®à¯\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "à®à®²à®¿ à®à¯à®ªà¯à®ªà®¿à®©à¯ திறà®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "à®à®°à¯ %s ஸà¯à®à¯à®°à®®à¯ மாதிரி à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯ '%s'à®à®à®©à¯ திறà®à¯à®à®¿à®±à®¤à¯.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "à®à®¯à®à¯à®à®¿à®µà®¤à®±à¯à®à¯ நà¯à®à¯à®à®³à¯ à®à®°à¯ மாதிரி பà¯à®¯à®°à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "நà¯à®à¯à®à¯à®µà®¤à®±à¯à®à¯ நà¯à®à¯à®à®³à¯ à®à®°à¯ மாதிரி பà¯à®¯à®°à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "நà¯à®à¯à®à®³à¯ à®à®°à¯ à®à®¿à®à¯à®à¯ à®à®³à¯à®³à¯à®à¯ à®à¯à®à¯à®à®¿ மறà¯à®±à¯à®®à¯ à®à®°à¯ à®à®¿à®à¯à®à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "நà¯à®à¯à®à®³à¯ à®à®°à¯ à®®à¯à®² வà¯à®³à®¿à®ªà¯à®ªà®¾à®à¯ à®à¯à®à¯à®à®¿ மறà¯à®±à¯à®®à¯ à®à®°à¯ à®®à¯à®²à®¤à¯à®¤à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "தà¯à®à¯à®¤à®¿ பà¯à®¯à®°à¯ மறà¯à®±à¯à®®à¯ விவாதà®à¯à®à®³à¯ நà¯à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯. \n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "தà¯à®à¯à®¤à®¿ à®
à®à¯à®à®µà®£à¯à®¯à¯ நà¯à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"à®à®°à¯ à®à®¿à®à¯à®à®¿à®±à¯à®à¯ à®®à¯à®²à¯ நà¯à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à®à¯ à®à¯à®à®¾à®¤à¯. பà¯à®²à®¿à®¯à®©à¯ மதிபà¯à®ªà¯ நà¯à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2185,18 +2230,16 @@ msgstr ""
"à®à®°à¯ à®®à¯à®²à®¤à¯à®¤à®¿à®±à¯à®à¯ à®®à¯à®²à¯ நà¯à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à®à¯ à®à¯à®à®¾à®¤à¯. பà¯à®²à®¿à®¯à®©à¯ மதிபà¯à®ªà¯ நà¯à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® "
"வà¯à®£à¯à®à¯à®®à¯.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"à®à®°à¯ à®
à®à¯à®à¯ பà¯à®¯à®°à¯/ à®®à¯à®©à¯à®ªà®à¯à®à®®à¯ மறà¯à®±à¯à®®à¯ à®à®°à¯ விவரà®à¯à®à¯à®à¯à®à¯ பà¯à®¯à®°à¯ நà¯à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® வà¯à®£à¯à®à¯à®®à¯ \n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "à®à®°à®¿à®¯à®¾à®© à®à®à¯à®à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à®ªà®à®µà®¿à®²à¯à®²à¯ \n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() தà¯à®²à¯à®µà®¿: %s"
@@ -2280,129 +2323,48 @@ msgstr "à®à¯à®à¯à®à¯ தரவ௠à®à®±à¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯
msgid "Not yet implemented.\n"
msgstr "à®à®©à¯à®©à¯à®®à¯ à®à¯à®¯à®²à¯à®ªà®à¯à®¤à¯à®¤à®ªà®à®µà®¿à®²à¯à®²à¯.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio daemon஠நிறà¯à®¤à¯à®¤ à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "à®à¯à®®à¯à®©à¯ பதிலளிà®à¯à® மறà¯à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® à®à®°à¯à®µà®¾à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ பிழà¯: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "à®à®£à¯à®ªà¯à®ªà®¿à®©à¯ à®à®±à¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "தவறான à®à¯à®©à®²à¯ வரà¯à®ªà®à®®à¯ \n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "à®à¯à®ªà¯à®ªà¯ '%s'஠திறà®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "à®à¯à®©à®²à¯ வரà¯à®ªà®à®®à¯ à®à¯à®ªà¯à®ªà¯à®à®©à¯ à®à®¤à¯à®¤à¯à®ªà¯ பà¯à®à®µà®¿à®²à¯à®²à¯.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "மாதிரி à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯ '%s'஠பயனà¯à®ªà®à¯à®¤à¯à®¤à®¿\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "autospawn பà¯à®à¯à®à¯ à®
ணà¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2413,7 +2375,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2424,35 +2386,104 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
#, fuzzy
msgid "PulseAudio Sound Server"
msgstr "பளà¯à®¸à¯ à®à®à®¿à®¯à¯ à®à®²à®¿ à®à®£à®¿à®©à®¿"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® à®à®°à¯à®µà®¾à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "ஸà¯à®à®¿à®°à¯à®®à¯ பிழà¯: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "à®à®£à¯à®ªà¯à®ªà®¿à®©à¯ à®à®±à¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "தவறான à®à¯à®©à®²à¯ வரà¯à®ªà®à®®à¯ \n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "à®à¯à®ªà¯à®ªà¯ '%s'஠திறà®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "à®à¯à®©à®²à¯ வரà¯à®ªà®à®®à¯ à®à¯à®ªà¯à®ªà¯à®à®©à¯ à®à®¤à¯à®¤à¯à®ªà¯ பà¯à®à®µà®¿à®²à¯à®²à¯.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "மாதிரி à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯ '%s'஠பயனà¯à®ªà®à¯à®¤à¯à®¤à®¿\n"
diff --git a/po/te.po b/po/te.po
index b91c6b8..bdc30b9 100644
--- a/po/te.po
+++ b/po/te.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.te\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-08 18:21+0530\n"
"Last-Translator: Krishna Babu K <kkrothap at redhat.com>\n"
"Language-Team: Telugu <en at li.org>\n"
@@ -21,51 +21,51 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "à°à°¨à°²à°¾à°à± à°®à±à°¨à±"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "à°à°¨à°²à°¾à°à± à°¸à±à°à±à°°à°¿à°¯à±"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "à°¡à°¿à°à°à°²à± à°¸à±à°à±à°°à°¿à°¯à± (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "à°¡à°¿à°à°¿à°à°²à± à°¸à±à°à±à°°à°¿à°¯à± (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "à°à°¨à°²à°¾à°à± సరà±à°à°¡à± 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "à°¡à°¿à°à°¿à°à°²à± సరà±à°à°¡à± 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "à°à°¨à°²à°¾à°à± సరà±à°à°¡à± 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "à°à°¨à°²à°¾à°à± సరà±à°à°¡à± 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "à°à°¨à°²à°¾à°à± సరà±à°à°¡à± 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "à°¡à°¿à°à°¿à°à°²à± సరà±à°à°¡à± 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "à°à°¨à°²à°¾à°à± సరà±à°à°¡à± 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +77,7 @@ msgstr ""
"సాదారణà°à°à°¾ యిది ALSA à°¡à±à°°à±à°µà°°à± '%s' à°¨à°à°¦à°²à°¿ à°¬à°à± à°à°¾à°µà°à±à°à±à°¨à±. దయà°à±à°¸à°¿ à°¦à±à°¨à°¿à°¨à°¿ ALSA à°
à°à°¿à°µà±à°¦à±à°¦à°¿ à°à°¾à°°à±à°²à°à± "
"నివà±à°¦à°¿à°à°à±à°®à±."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -89,7 +89,7 @@ msgstr ""
"సాదారణà°à°à°¾ యిది ALSA à°¡à±à°°à±à°µà°°à± '%s' à°¨à°à°¦à± à°¬à°à± à°à°¾à°µà°à±à°à±à°¨à± . దయà°à±à°¸à°¿ à°¦à±à°¨à°¿à°¨à°¿ ALSA à°
à°à°¿à°µà±à°¦à±à°¦à°¿à°à°¾à°°à±à°²à° "
"నివà±à°¦à°¿à°à°à±à°®à±."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +100,11 @@ msgstr ""
"snd_pcm_mmap_begin() à°
à°¨à±à°¨à°¦à°¿ à°ªà±à°¦à±à°¦ విలà±à°µà°¨à± యిà°à±à°à°¿à°¨à°¦à°¿: %lu bytes (%lu ms).\n"
"సాదారణà°à°à°¾ యిది ALSA à°¡à±à°°à±à°µà°°à± '%s'à°¨à°à°¦à°²à°¿ à°¬à°à± à°à°¾à°µà°à±à°à±à°¨à±. దయà°à±à°¸à°¿ à°¦à±à°¨à°¿à°¨à°¿ ALSA à°
à°à°¿à°µà±à°¦à±à°¦à°¿à°à°¾à°°à±à°²à°¨à± నివà±à°¦à°¿à°à°à°à°¡à°¿."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "à°
à°à°¤à°°à±à°à°¤ à°à°¡à°¿à°¯à±"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "à°®à±à°¡à±à°®à±"
@@ -174,104 +174,104 @@ msgstr "à°¦à±à°µà±à°à°°à°£ à°ªà±à°à°¦à°²à±à° à°ªà±à°¯à°¿à°à°¦à°¿: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit à°¸à±à°ªà°à°¦à°¿à°à°¿à°¨à°¦à°¿ à°¦à±à°¨à°¿à°¤à± '%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "à°¸à°à°à±à°¤à°®à± %s à°ªà±à°à°¦à°¿à°¨à°¦à°¿."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "నిషà±à°à±à°°à°®à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s'నౠà°à°¨à±à°à±à°¨à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "సమà±à°¹à° '%s' à°à°¨à±à°à±à°¨à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s' (UID %lu) మరియౠసమà±à°¹à°®à± '%s' (GID %lu) à°à°¨à°¬à°¡à°¿à°¨à°µà°¿."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s' మరియౠసమà±à°¹à°®à± '%s' à°¯à±à°à±à° GID సరితà±à°à°²à±à°¦à±."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s' à°¯à±à°à±à° నివాస à°¡à±à°°à±à°à±à°à°°à± '%s' à°à°¾à°¦à±, వదిలివà±à°¯à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' à°¸à±à°·à±à°à°¿à°à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "సమà±à°¹ à°à°¾à°¬à°¿à°¤à°¾ మారà±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID మారà±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID మారà±à°à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "root à°
à°¨à±à°®à°¤à±à°²à± విà°à°¯à°µà°à°¤à°à°à°¾ తిసివà±à°¯à°¬à°¡à°¿à°¨à°¾à°¯à°¿."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "à° à°ªà±à°²à°¾à°à±âఫాఠనà°à°¦à± సిసà±à°à°®à± తరహా à°°à±à°¤à°¿ మదà±à°¦à°¤à±à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "à°à°¦à±à°¶ వరà±à°¸à°¨à± పారà±à°¶à± à°à±à°¯à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "మనమౠసమà±à°¹à°®à± '%s' à°¨à°à°¦à± à°µà±à°¨à±à°¨à°¾à°®à±, à°
దిà°-à°ªà±à°°à°¾à°®à±à°à±à°¯à°¤à°¾ పణాళిà°à°¨à± à°
à°¨à±à°®à°¤à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "మనమౠసమà±à°¹à°®à± '%s' à°¨à°à°¦à± à°µà±à°¨à±à°¨à°¾à°®à±, వాసà±à°¤à°µ-సమయ à°ªà±à°°à°£à°¾à°³à°¿à°à°¨à± à°
à°¨à±à°®à°¤à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit మనà°à± acquire-high-priority à°
à°¨à±à°®à°¤à°¿à°¨à°¿ యిà°à±à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit à°
à°¨à±à°¨à°¦à°¿ acquire-high-priority à°
à°¨à±à°®à°¤à°¿à°¨à°¿ తిరసà±à°à°°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit మనà°à± acquire-real-time à°
à°¨à±à°®à°¤à°¿à°¨à°¿ యిà°à±à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit acquire-real-time à°
à°¨à±à°®à°¤à°¿à°¨à°¿ తిరసà±à°à°°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -291,231 +291,231 @@ msgstr ""
"à°²à±à°¦à°¾ '%s' à°¯à±à°à±à° à°¸à°à±à°¯à±à°¨à°¿à°µà°¿ à°à°®à±à°®à±, à°²à±à°¦à°¾ ఠవినియà±à°à°¦à°¾à°°à°¿à°à°¿ RLIMIT_NICE/RLIMIT_RTPRIO వనరౠ"
"పరిమితà±à°²à°¨à± à°ªà±à°à°à±à°®à±."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "à°
ధిà°-à°ªà±à°°à°¾à°®à±à°à±à°¯à°¤à°¾ à°ªà±à°°à°£à°¾à°³à°¿à° à°à°à±à°¤à±à°à°°à°£à°¨à°à°¦à± à°à±à°¤à°¨à°®à±à°à±à°¯à°¬à°¡à°¿à°à°¦à°¿ à°à°¾à°¨à°¿ విధానమౠదà±à°µà°¾à°°à°¾ à°
à°¨à±à°®à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "సమరà±à°§à°µà°à°¤à°à°à°¾ RLIMIT_RTPRIOనౠపà±à°à°à°¿à°¨à°¦à°¿"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "CAP_NICE యిసà±à°¤à±à°à°¦à°¿"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "వాసà±à°¤à°µ-సమయ à°ªà±à°°à°£à°¾à°³à°¿à° à°à°à±à°¤à±à°à°°à°£à°¨à°à°¦à± à°à±à°¤à°¨à°à°à±à°¯à°¬à°¡à°¿à°à°¦à°¿ à°à°¾à°¨à°¿ విధానమౠదà±à°µà°¾à°°à°¾ à°
à°¨à±à°®à°¤à°¿à°à°à°¬à°¡à°²à±à°¦à±."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "à°¡à±à°®à±à°¨à± నడà±à°à±à° à°²à±à°¦à±"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "à°¡à±à°®à±à°¨à± PID %u వలౠనడà±à°à±à°à±à°¨à±à°¨à°¦à°¿"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "à°¡à±à°®à±à°¨à± à°à°à°ªà±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à° à°ªà±à°°à±à°à±à°°à°¾à°®à± root లా నడà±à°ªà°µà°²à°¸à°¿à°à°¦à°¿ à°à°¾à°¦à± (--system à°¤à±à°²à°¿à°ªà°¿à°¤à± తపà±à°ª)"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "Root à°
à°¨à±à°®à°¤à±à°²à± à°
వసరమà±."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "--start సిసà±à°à°®à± à°¸à°à°à°µà°¾à°² à°¦à±à°µà°¾à°°à°¾ మదà±à°¦à°¤à±à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "సిసà±à°à°®à± à°®à±à°¡à± à°¨à°à°¦à± నడà±à°ªà±à°¤à±à°à°¦à°¿, à°
యితౠ--disallow-exit à°
మరà±à°à°²à±à°¦à±!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°à±à°à±à°¨à±à°¨à°¦à°¿, à°
యితౠ--disallow-module-loading à°
మరà±à°à°²à±à°¦à±!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°ªà±à°à±à°¨à±à°¨à°¦à°¿, బలవà°à°¤à°à°à°¾ SHM à°°à±à°¤à°¿à°¨à°¿ à°
à°à±à°¤à°¨à°®à± à°à±à°¸à±à°¤à±à°à°¦à°¿!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°à±à°à±à°¨à±à°¨à°¦à°¿, బలవà°à°¤à°à°à°¾ నిషà±à°à±à°°à°®à°£ à°µà±à°§à°¾ సమయానà±à°¨à°¿ à°
à°à±à°¤à°¨à°®à± à°à±à°¯à±à°à±à°¨à±à°¨à°¦à°¿!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "stdio à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "à°ªà±à°°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork() విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read() విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à° విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à°®à± సఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "à°à°¦à°¿ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ à°¹à±à°¸à±à°à±: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ CFLAGS: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "à°¹à±à°¸à±à°à±à°¨à± నడà±à°ªà±à°à±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUలనౠà°à°¨à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "à°ªà±à°à± పరిమాణమౠ%lu à°¬à±à°à±à°²à±"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à± నిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿: à°
à°µà±à°¨à±"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à± నిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿: à°²à±à°¦à±"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°ªà±à°à±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "à°à°ªà±à°à°¿à°®à±à°à±à°¡à± à°¬à±à°²à±à°¡à±: à°
à°µà±à°¨à±"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "à°à°ªà±à°à°¿à°®à±à°à±à°¡à± à°¬à±à°²à±à°¡à±: à°à°¾à°¦à±"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG నిరà±à°µà°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿, à°
à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± à°
à°à±à°¤à°¨à°®à±à°¨à°µà°¿."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH నిరà±à°µà°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿, ఫాసà±à°à± పాతౠసà±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± మాతà±à°°à°®à± à°
à°à±à°¤à°¨à°®à±à°¨à°µà°¿."
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "à°
à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± à°à±à°¤à°¨à°®à±à°¨à°µà°¿."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "మిషనౠID à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "మిషనౠID %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "మిషనౠID %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "à°°à°¨à±âà°à±à°®à± à°¡à±à°°à±à°à±à°à°°à±à°¨à± à°µà±à°ªà°¯à±à°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "à°¸à±à°¥à°¿à°¤à°¿ à°¡à±à°°à±à°à±à°à°°à±à°¨à± à°µà±à°ªà°¯à±à°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± à°µà±à°ªà°¯à±à°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "తాà°à°¾ à°
ధిà°-à°¤à±à°µà±à°°à°¤ à°à°¾à°²à°¸à±à°à°¿à°à°²à± à°
à°à°¦à±à°¬à°¾à°à±à°²à± à°µà±à°¨à±à°¨à°¾à°¯à°¿! బానౠà°à°ªà°à±à°à±!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "మితà±à°°à°®à°¾, నౠà°à±à°°à±à°¨à°²à± à°à±à°¡à°¿à°ªà±à°¯à°¿à°à°¦à°¿! à°
ధిà°-à°¤à±à°µà±à°°à°¤ à°à°¾à°²à°¸à±à°à°à°¿à°²à°¨à± à°à±à°¤à°¨à°®à± à°à±à°¯à°®à°¨à°¿ à°¸à±à°à°¿à°à°à°¡à°®à±à°¨à°¦à°¿!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new() విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "à°¡à±à°®à±à°¨à± సిదà±à°¦à°®à±à°à±à°¯à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "à°à°µà°¿à°§à°®à±à°¨ మాడà±à°¯à±à°³à±à°³à± à°²à±à°¡à°µà°à±à°à°¡à°¾ à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à°®à±, పనిà°à±à°¯à±à°à°à± తిరసà±à°à°°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à°®à± à°ªà±à°°à±à°¤à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "à°¡à±à°®à±à°¨à± à°®à±à°¸à°¿à°µà±à°¤ సిదà±à°¦à°®à±à°à±à°¯à°¬à°¡à°¿à°à°¦à°¿."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "à°¡à±à°®à±à°¨à± à°
à°à°¤à°®à±à°à±à°¯à°¬à°¡à°¿à°à°¦à°¿."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -658,15 +658,15 @@ msgstr ""
"\n"
" -n Don't load default script file\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -674,52 +674,52 @@ msgstr ""
"--log-level లాà°à± à°¸à±à°¥à°¾à°¯à°¿ à°à°°à±à°à±à°®à±à°à°à±âనౠà°à±à°°à±à°à±à°à°à±à°à°¦à°¿ (సహà°à°¸à°à°à±à°¯à°¨à± 0..4 విసà±à°¤à±à°¤à°¿à°²à± à°à°¾à°¨à°¿ à°²à±à°¦à°¾ à°¡à±à°¬à°à±â, "
"సమాà°à°¾à°°à°®à±, à°¨à±à°à±à°¸à±, à°¹à±à°à±à°à°°à°¿à°, à°¦à±à°·à°®à± à°µà±à°à°¿à°²à± à°µà±à°à°à°¿à°à°¾à°¨à°¿)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "à°à±à°²à±à°²à°¨à°¿ లాà°à± à°à°¾à°°à±à°à±à°à±: 'syslog', 'stderr' à°²à±à°¦à°¾ 'auto' à°µà±à°ªà°¯à±à°à°¿à°à°à±à°®à±."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "à°à±à°²à±à°²à°¨à°¿ à°ªà±à°¨à°à°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm à°¬à±à°²à°¿à°¯à°¨à± à°à°°à±à°à±à°®à±à°à°à±à°¨à± à°à±à°°à±à°à±à°à°à±à°à°¦à°¿"
@@ -758,77 +758,82 @@ msgstr "వాడà±à°: %s\n"
msgid "Load Once: %s\n"
msgstr "à°à°à°¸à°¾à°°à°¿ à°²à±à°¡à±à°à±à°¯à±à°®à±: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "పాతà±: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ లాà°à± à°²à°à±à°·à±à°¯à°®à± '%s'."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ లాà°à± à°¸à±à°¥à°¾à°¯à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ à°ªà±à°¨à°à°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit à°
à°¨à±à°¨à°¦à°¿ à° à°ªà±à°²à°¾à°à±âఫాఠనà°à°¦à± మదà±à°¦à°¤à°¿à°µà±à°µà°¬à°¡à°¦à±."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ మాదిరి ఫారà±à°®à°¾à°à± '%s'."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ మాదిరి à°°à±à°à± '%s'."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ మాదిరి à°à°¾à°¨à°³à±à°³à± '%s'."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ à°à°¾à°¨à°²à± మాపౠ'%s'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ à°®à±à°à±à°à°²à± à°¸à°à°à±à°¯ '%s'."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ à°®à±à°à±à° పరిమాణమౠ'%s'."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ సాదా à°¸à±à°¥à°¾à°¯à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "à°à°à±à°¤à±à°à°°à°£ దసà±à°¤à±à°°à°®à±à°¨à± à°¤à±à°°à±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1080,8 +1085,8 @@ msgid "Top Rear Right"
msgstr "à°ªà±à°¨ à°µà±à°¨à±à° à°à±à°¡à°¿à°µà±à°ªà±à°¨"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(à°à±à°²à±à°²à°¨à°¿)"
@@ -1266,173 +1271,168 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "à°¤à±à°²à°¿à°¯à°¨à°¿ à°ªà±à°¡à°¿à°à°¿à°à°ªà± à°à±à°°à°à± à°¸à°à°¦à±à°¶à°®à± à°¸à±à°µà±à°à°°à°¿à°à°à°¿à°à°¦à°¿ '%s'"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "à°¸à±à°à±à°°à±à°®à± à°à°à°¡à°à°à±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "à°ªà±à°²à±à°¬à±à°¯à°¾à°à± à°¸à±à°à±à°°à±à°®à± à°à°à°¡à°à°à±à°à°¿à°¨à°¦à°¿.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "à°¸à±à°µà°¿à°à°à± à°
à°¨à±à°¸à°à°§à°¾à°¨à°®à±à°¨à± నశిà°à°ªà°à±à°¸à±à°¤à±à°à°¦à°¿.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "à°¸à±à°à±à°°à±à°®à± సమరà±à°§à°µà°à°¤à°à°à°¾ à°¸à±à°·à±à°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "సాదారణ విశదà±à°à°°à°£(à°¸à±à°ªà±à°à±) '%s' à°µà±à°ªà°¯à±à°à°¿à°¸à±à°¤à±à°à°¦à°¿, à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°à° మాపౠ'%s'.\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "పరిà°à°°à°®à± %s (%u, %ssuspended) à°à± à°
à°¨à±à°¸à°à°§à°¾à°¨à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿.\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "à°¸à±à°à±à°°à±à°®à± à°¦à±à°·à°®à±: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "à°¸à±à°à±à°°à±à°®à± పరిà°à°°à°®à± à°
à°°à±à°¦à°¾à°à°¤à°°à°®à±à°à°¾ నిలిపివà±à°¯à°¿.%s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "à°¸à±à°à±à°°à±à°®à± పరిà°à°°à°®à± తిరిà°à°¿à°à±à°¨à°¸à°¾à°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "à°¸à±à°à±à°°à±à°®à± à°¤à°à±à°à±à°µà°à°¾à°¨à°¡à±à°à±à°à±à°¨à±à°¨à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "à°¸à±à°à±à°°à±à°®à± మిà°à°à°¿à°¨à°¡à±à°à±à°à±à°¨à±à°¨à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "à°¸à±à°à±à°°à±à°®à± à°ªà±à°°à°¾à°°à°à°à°®à±à°à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "à°¸à±à°à±à°°à±à°®à± పరిà°à°°à°®à± %s (%u, %ssuspended) à°à± à°à°¦à±à°ªà°¬à°¡à°¿à°à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "à°à°¾à°¦à± "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "à°¸à±à°à±à°°à±à°®à± బఫరౠయాà°à±à°°à°¿à°¬à±à°¯à±à°à±à°²à± మారà±à°à°¬à°¡à°¿à°¨à°µà°¿.%s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "à°
à°¨à±à°¸à°à°§à°¾à°¨à°®à± à°à°°à±à°ªà°¡à°¿à°¨à°¦à°¿.%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "à°
à°¨à±à°¸à°à°§à°¾à°¨à°®à± à°µà±à°«à°²à±à°¯à°®à±: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "à°¸à±à°à±à°°à±à°®à± à°à°à°¡à°à°à±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "à°ªà±à°²à±à°¬à±à°¯à°¾à°à± à°¸à±à°à±à°°à±à°®à± à°à°à°¡à°à°à±à°à°¿à°¨à°¦à°¿.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "à°¸à±à°µà°¿à°à°à± à°
à°¨à±à°¸à°à°§à°¾à°¨à°®à±à°¨à± నశిà°à°ªà°à±à°¸à±à°¤à±à°à°¦à°¿.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "EOF à°ªà±à°à°¦à°¿à°à°¦à°¿.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "à°¸à°à°à±à°¤à°®à± à°ªà±à°à°¦à°¿à°¨à°¦à°¿, నిషà±à°à±à°°à°®à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "à°à±à°°à°¿à°¯à°¾à°¹à±à°¨à°¤à°¨à± à°ªà±à°à°¦à±à°à°²à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "సమయà°: %0.3f sec; à°à±à°°à°¿à°¯à°¾à°¹à±à°¨à°¤: %0.0f usec. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1458,8 +1458,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1482,6 +1484,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1532,7 +1539,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1543,88 +1550,133 @@ msgstr ""
"libpulse తౠనిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿ %s\n"
"libpulse లిà°à°à±à°¨à°¦à°¿ %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "à°à±à°²à±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à° మాపౠ'%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "à°à±à°²à±à°²à°¨à°¿ à°ªà±à°¨à°à°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "à°à±à°²à±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à° మాపౠ'%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "à°à±à°²à±à°²à°¨à°¿ à°à±à°°à°¿à°¯à°¾à°¹à±à°¨ విశదà±à°à°°à°£à°®à± '%s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "à°à±à°²à±à°²à°¨à°¿ à°à°¾à°°à±à°¯à°à±à°°à°®à°®à± సమయ విశదà±à°à°°à°£ '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "à°à±à°²à±à°²à°¨à°¿ à°ªà±à°¨à°à°µà±à°¦à°¾à°¹à°°à°£ పదà±à°¦à°¤à°¿ '%s'."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "à°à±à°²à±à°²à°¨à°à±à°µà°à°à°¿ మాదిరి విశదà±à°à°°à°£\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "à°à°¾à°²à°¾ à°¯à±à°à±à°à±à°µ à°à°°à±à°à±à°®à±à°à°à±à°²à±.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "మాదిరి సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "శబà±à°¦à°ªà± దసà±à°¤à±à°°à°®à±à°¨à± à°¤à±à°°à±à°µà±à°à°à± విఫలమà±à°à°¦à°¿.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "మాదిరి సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à° మాపౠమాదిరి విశదà±à°à°°à°£à°¿à°¤à± సరిపà±à°²à±à°à°²à±à°¦à±\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "%s à°¸à±à°à±à°°à±à°®à±âనౠమాదిరి విశదà±à°à°°à°£à°¿ '%s'తౠతà±à°°à±à°à±à°à±à°¨à±à°¨à°¦à°¿.\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "à°°à°¿à°à°¾à°°à±à°¡à°¿à°à°à±"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "à°ªà±à°²à±à°¬à°¾à°à±"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "à°à°¾à°²à°¾ à°¯à±à°à±à°à±à°µ à°à°°à±à°à±à°®à±à°à°à±à°²à±.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() విఫలమà±à°à°¦à°¿.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new() విఫలమà±à°à°¦à°¿.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() విఫలమà±à°à°¦à°¿.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect() విఫలమà±à°à°¦à°¿: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new() విఫలమà±à°à°¦à°¿.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() విఫలమà±à°à°¦à°¿.\n"
@@ -1654,8 +1706,7 @@ msgstr "తిరిà°à°¿à°à±à°¨à°¸à°¾à°à°¿à°à°ªà± à°µà±à°«à°²à±à°¯à°®
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "à°¹à±à°à±à°à°°à°¿à°: శబà±à°§à°ªà± à°¸à±à°µà°¿à° à°¸à±à°¥à°¾à°¨à°¿à°à° à°à°¾à°¦à±, à°
à°°à±à°§à°¾à°à°¤à°°à°¨à°¿à°²à±à°ªà±à°¦à°² à°à°¾à°µà°¡à°à°²à±à°¦à±.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "SIGINT à°ªà±à°à°¦à°¿à°à°¦à°¿, నిషà±à°à±à°°à°®à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿.\n"
@@ -1684,7 +1735,7 @@ msgstr ""
"to\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1695,32 +1746,32 @@ msgstr ""
"libpulse తౠనిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿ %s\n"
"libpulse తౠనిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿ %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "à°à°£à°¾à°à°à°¾à°²à°¨à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤à° à°µà±à°ªà°¯à±à°à°à°²à±à°µà±à°à°¦à°¿: %u à°¬à±à°²à°¾à°à±âలౠ%s à°¬à±à°à±à°²à°¨à± à°®à±à°¤à±à°¤à°à°à°¾ à°à°²à°¿à°à°¿ à°µà±à°¨à±à°¨à°¾à°¯à°¿.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "à°®à±à°¤à±à°¤à° à°²à±à°«à±âà°à±à°®à±à°²à± à°à±à°à°¾à°¯à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿: %u à°¬à±à°²à°¾à°à±à°²à± %s à°¬à±à°à±à°²à°¨à± à°®à±à°¤à±à°¤à°à°à°¾ à°à°²à°¿à°à°¿à°µà±à°¨à±à°¨à°¾à°¯à°¿.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "మాదిరి à°à±à°¯à°¾à°à°¿ పరిమాణమà±: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "à°¸à±à°µà°¿à° సమాà°à°¾à°°à°®à±à°¨à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1743,12 +1794,12 @@ msgstr ""
"à°
à°ªà±à°°à°®à±à°¯ à°®à±à°²à°®à±: %s\n"
"à°à±à°à±: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "సిà°à°à± సమాà°à°¾à°°à°®à±à°¨à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1787,12 +1838,12 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "à°®à±à°²à°®à± సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1831,20 +1882,20 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "వరà±à°¤à°¿à°à°à°¦à±"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "మాడà±à°¯à±à°²à± సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1861,12 +1912,12 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "à°à°à±à°·à°¿à°¦à°¾à°°à°¿ సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°²à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1881,12 +1932,12 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "à°à°¾à°°à±à°¡à± సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1903,22 +1954,22 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tà°ªà±à°°à±à°«à±à°²à±à°¸à±:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tà°à±à°°à°¿à°¯à°¾à°¶à±à°² à°ªà±à°°à±à°«à±à°²à±: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "సిà°à°à± à°à°¨à±à°ªà±à°à± సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1955,12 +2006,12 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "à°®à±à°²à°ªà± à°
à°µà±à°à±à°ªà±à°à± సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1989,12 +2040,12 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "మాదిరి సమాà°à°¾à°°à°®à± à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2025,22 +2076,21 @@ msgstr ""
"\tà°²à°à±à°·à°£à°¾à°²à±:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "విఫà±à°²à±à°¯à°®à±: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "మాదిరి à°
à°ªà±âà°²à±à°¡à± à°à±à°¯à±à°à°à± విఫలమà±à°à°¦à°¿: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "దసà±à°¤à±à°°à°®à± à°¯à±à°à±à° à°
పరిపà°à±à°µ à°®à±à°à°¿à°à°ªà±\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2087,7 +2137,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2098,73 +2148,66 @@ msgstr ""
"libpulse తౠనిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿%s\n"
"libpulse తౠలిà°à°à±à°à±à°¯à°¬à°¡à°¿à°à°¦à°¿ %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "à°²à±à°¡à±à°µà±à°µà±à°à°à± దయà°à±à°¸à°¿ మాదిరి దసà±à°¤à±à°°à°®à±à°¨à± à°¤à±à°²à±à°ªà±à°®à±\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "శబà±à°¦à°ªà± దసà±à°¤à±à°°à°®à±à°¨à± à°¤à±à°°à±à°µà±à°à°à± విఫలమà±à°à°¦à°¿.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "%s à°¸à±à°à±à°°à±à°®à±âనౠమాదిరి విశదà±à°à°°à°£à°¿ '%s'తౠతà±à°°à±à°à±à°à±à°¨à±à°¨à°¦à°¿.\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "à°ªà±à°²à± à°à±à°¯à±à°à°à± à°®à±à°°à± మాదిరి నామమà±à°¨à± à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "à°¤à±à°²à°à°¿à°à°à±à°à°à± à°®à±à°°à± మాదిరి నామమà±à°¨à± à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "à°®à±à°°à± సిà°à°à± à°à°¨à±à°ªà±à°à± విషయసà±à°à°¿à° మరియౠసిà°à°à± à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "à°®à±à°°à± à°®à±à°²à°®à± à°
à°µà±à°à±à°ªà±à°à± విషయసà±à°à°¿à° మరియౠమà±à°²à°®à± à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "à°®à±à°°à± మాడà±à°¯à±à°²à± నామమౠమరియౠà°à°°à±à°à±à°®à±à°à°à±à°²à± à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "à°®à±à°°à± మాడà±à°¯à±à°²à± విషయసà±à°à°¿à° à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
"à°®à±à°°à± à°µà±à° సిà°à°à± à°à°¨à±à°¨à°¾ à°¯à±à°à±à°à±à°µ à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¡à°à°ªà±à°µà°à±à°à±. à°®à±à°°à± à°¬à±à°²à°¿à°¯à°¨à± విలà±à°µà°¨à± à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
"à°®à±à°°à± à°µà±à° à°®à±à°²à°®à± à°à°¨à±à°¨à°¾ à°¯à±à°à±à°à±à°µ à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¡à°à°ªà±à°µà°à±à°à±. à°®à±à°°à± à°¬à±à°²à°¿à°¯à°¨à± విలà±à°µà°¨à± à°¤à±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "à°®à±à°°à± à°à°¾à°°à±à°¡à± నామమà±/విషయసà±à°à°¿à° మరియౠపà±à°°à±à°«à±à°²à± నామమౠతà±à°²à±à°ªà°µà°²à°¸à°¿ à°µà±à°à°¦à°¿\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "à°à°à±à°µà°à°à°¿ విలà±à°µà±à°¨ à°à°¦à±à°¶à°®à± à°¤à±à°²à±à°ªà°²à±à°¦à±.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() విఫలమà±à°à°¦à°¿: %s"
@@ -2248,129 +2291,48 @@ msgstr "à°à±à°à± à°¡à°¾à°à°¾ à°²à±à°¡à± à°à±à°¯à±à°à°à± విఫ
msgid "Not yet implemented.\n"
msgstr "à°à°à°à°¾ యిà°à°ªà±à°²à°¿à°®à±à°à°à± à°à±à°¯à°²à±à°¦à±\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio à°¡à±à°®à±à°¨à± నాశనఠà°à±à°¯à±à°à°²à± విఫలమà±à°à°¦à°¿."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "à°¡à±à°®à±à°¨à± à°¸à±à°ªà°à°¦à°¿à°à°à±à°à°²à±à°¦à±."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "à°¸à±à°à±à°°à±à°®à± సమరà±à°¦à°µà°à°¤à°à°à°¾ à°¸à±à°·à±à°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "à°¸à±à°à±à°°à±à°®à± à°¦à±à°·à°®à±: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "à°
à°¨à±à°¸à°à°§à°¾à°¨à°®à± à°à°°à±à°ªà°¡à°²à±à°¦à±.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"libpulse తౠనిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿%s\n"
-"libpulse తౠలిà°à°à±à°¨à°¦à°¿ %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "à°à±à°²à±à°²à°¨à°¿ à°ªà±à°°à°¸à°¾à°° మారà±à°à°®à±\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "దసà±à°¤à±à°°à°®à± '%s' à°¤à±à°°à±à°à±à°à°à± విఫలమà±à°à°¦à°¿\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°à° మాపౠà°
à°¨à±à°¨à°¦à°¿ దసà±à°¤à±à°°à°®à±à°¤à± సరిపà±à°²à±à°à°¡à°à°²à±à°¦à±.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "మాదిరి విశదà±à°à°°à°£à°¨à± à°µà±à°ªà°¯à±à°à°¿à°¸à±à°¤à±à°à°¦à°¿ '%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "à°à°à±à°¸à±à°ªà°¾à°¨à± తాళà°à°¨à± యాà°à±à°¸à°¿à°¸à± à°à±à°¯à°²à±à°¦à±."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2386,7 +2348,7 @@ msgstr ""
"మనమౠPOLLOUT à°
మరà±à°ªà± à°¦à±à°µà°¾à°°à°¾ à°à°¾à°à°°à±à° పరà°à°¬à°¡à°¿à°¨à°¾à°®à± -- à°à°®à±à°¨à°ªà±à°ªà°à°¿à°à°¿ snd_pcm_avail() à°
à°¨à±à°¨à°¦à°¿ 0 నౠ"
"యిసà±à°¤à±à°à°¦à°¿ à°²à±à°¦à°¾ à°µà±à°°à±à° విలà±à°µ < min_avail యిసà±à°¤à±à°à°¦à°¿."
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2402,34 +2364,103 @@ msgstr ""
"మనమౠPOLLOUT à°
మరà±à°ªà± à°¦à±à°µà°¾à°°à°¾ à°à°¾à°à°°à±à° పరà°à°¬à°¡à°¿à°¨à°¾à°®à± -- à°à°®à±à°¨à°ªà±à°ªà°à°¿à°à°¿ snd_pcm_avail() à°
à°¨à±à°¨à°¦à°¿ 0 నౠ"
"యిసà±à°¤à±à°à°¦à°¿ à°²à±à°¦à°¾ à°µà±à°°à±à° విలà±à°µ < min_avail యిసà±à°¤à±à°à°¦à°¿."
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "à°
à°µà±à°à±à°ªà±à°à± %s + à°à°¨à±à°ªà±à°à± %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "à°
à°µà±à°à±à°ªà±à°à± %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "à°à°¨à±à°ªà±à°à± %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "à°à°«à±"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "హౠఫà±à°¡à°¿à°²à°¿à°à°¿ à°ªà±à°²à±à°¬à±à°¯à°¾à°à± (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à°à±à°²à°¿à°«à±à°¨à± à°¡à±à°ªà±à°²à±à°à±à°¸à± (HSP/HFP)"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "పలà±à°¸à± à°à°¡à°¿à°¯à± à°¸à±à°à°¡à± à°¸à±à°µà°¿à°"
+
+#~ msgid "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 0da3ff2..499e525 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-18 11:13+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
"Language-Team: Ukrainian <translation at linux.org.ua>\n"
@@ -17,51 +17,51 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "Ðналоговий моно"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "Ðналоговий ÑÑеÑео"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "ЦиÑÑовий ÑÑеÑео (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "ЦиÑÑовий ÑÑеÑео (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "Ðналоговий обâÑмний 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "ЦиÑÑовий обâÑмний 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "Ðналоговий обâÑмний 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "Ðналоговий обâÑмний 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "Ðналоговий обâÑмний 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "ЦиÑÑовий обâÑмний 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "Ðналоговий обâÑмний 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -74,7 +74,7 @@ msgstr ""
"ÐмовÑÑно, ви наÑÑапили на Ð²Ð°Ð´Ñ Ñ Ð´ÑайвеÑÑ ALSA «%s». ÐÑÐ´Ñ Ð»Ð°Ñка, повÑдомÑе "
"пÑо ÑÑ Ð²Ð°Ð´Ñ ÑозÑобникам ALSA."
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -87,7 +87,7 @@ msgstr ""
"ÐмовÑÑно, ви наÑÑапили на Ð²Ð°Ð´Ñ Ñ Ð´ÑайвеÑÑ ALSA «%s». ÐÑÐ´Ñ Ð»Ð°Ñка, повÑдомÑе "
"пÑо ÑÑ Ð²Ð°Ð´Ñ ÑозÑобникам ALSA."
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -100,11 +100,11 @@ msgstr ""
"ÐмовÑÑно, ви наÑÑапили на Ð²Ð°Ð´Ñ Ñ Ð´ÑайвеÑÑ ALSA «%s». ÐÑÐ´Ñ Ð»Ð°Ñка, повÑдомÑе "
"пÑо ÑÑ Ð²Ð°Ð´Ñ ÑозÑобникам ALSA."
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "ÐбÑдоване аÑдÑо"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "Ðодем"
@@ -177,107 +177,107 @@ msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи ÑповноваженнÑ: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit надÑÑлала вÑдповÑдÑ: «%s»"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "ÐÑÑимано Ñигнал %s."
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "ÐавеÑÑÐµÐ½Ð½Ñ ÑобоÑи."
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñи коÑиÑÑÑваÑа «%s»."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñи гÑÑÐ¿Ñ Â«%s»."
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Ðнайдено коÑиÑÑÑваÑа «%s» (UID %lu) Ñ Ð³ÑÑÐ¿Ñ Â«%s» (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID коÑиÑÑÑваÑа «%s» Ñ Ð³ÑÑпи «%s» не збÑгаÑÑÑÑÑ."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ÐомаÑнÑм каÑалогом коÑиÑÑÑваÑа «%s» не Ñ Â«%s», Ð´Ð°Ð½Ñ Ð¿ÑоÑгноÑовано."
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Ðе вдалоÑÑ ÑÑвоÑиÑи «%s»: %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼ÑниÑи ÑпиÑок гÑÑп: %s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼ÑниÑи GID: %s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼ÑниÑи UID: %s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "ÐÑогÑама ÑÑпÑÑно позбÑлаÑÑ Ð¿Ñав доÑÑÑÐ¿Ñ ÐºÐ¾ÑиÑÑÑваÑа root."
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "ÐагалÑноÑиÑÑемний Ñежим не пÑдÑÑимÑÑÑÑÑÑ Ð½Ð° ÑÑй плаÑÑоÑмÑ."
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "СпÑоба виконаÑи setrlimit(%s, (%u, %u)) бÑла невдалоÑ: %s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "Ðе вдалоÑÑ Ð¾Ð±ÑобиÑи ÑÑдок команди."
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Ðи пеÑебÑваÑмо Ñ Ð³ÑÑÐ¿Ñ Â«%s», Ñо Ð½Ð°Ð´Ð°Ñ Ð·Ð¼Ð¾Ð³Ñ Ð¿Ð»Ð°Ð½ÑÐ²Ð°Ð½Ð½Ñ Ð· виÑоким пÑÑоÑиÑеÑом."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Ðи пеÑебÑваÑмо Ñ Ð³ÑÑÐ¿Ñ Â«%s», Ñо Ð½Ð°Ð´Ð°Ñ Ð·Ð¼Ð¾Ð³Ñ Ð¿Ð»Ð°Ð½ÑÐ²Ð°Ð½Ð½Ñ Ñ ÑÐµÐ¶Ð¸Ð¼Ñ ÑеалÑного "
"ÑаÑÑ."
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit надала нам пÑава доÑÑÑÐ¿Ñ acquire-high-priority."
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit вÑдмовила Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð¿Ñав доÑÑÑÐ¿Ñ acquire-high-priority."
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit надала нам пÑава доÑÑÑÐ¿Ñ acquire-real-time."
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit вÑдмовила Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð¿Ñав доÑÑÑÐ¿Ñ acquire-real-time."
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -300,48 +300,48 @@ msgstr ""
"ÑÑанÑÑе ÑÑаÑником гÑÑпи «%s» або збÑлÑÑÑÑÑ Ð´Ñапазон ÑеÑÑÑÑÑ RLIMIT_NICE/"
"RLIMIT_RTPRIO Ð´Ð»Ñ ÑÑого коÑиÑÑÑваÑа."
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ÐланÑÐ²Ð°Ð½Ð½Ñ Ð· виÑоким пÑÑоÑиÑеÑом ÑвÑмкнено Ñ Ð½Ð°Ð»Ð°ÑÑÑваннÑÑ
, але не дозволене "
"пÑавилами безпеки."
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "УÑпÑÑно пÑдвиÑено RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Ðомилка пÑд ÑÐ°Ñ ÑпÑоби пÑдвиÑиÑи RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "ÐозбÑваÑмоÑÑ CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"ÐланÑÐ²Ð°Ð½Ð½Ñ Ñ ÑÐµÐ¶Ð¸Ð¼Ñ ÑеалÑного ÑаÑÑ ÑвÑмкнено Ñ Ð½Ð°Ð»Ð°ÑÑÑваннÑÑ
, але не "
"дозволене пÑавилами безпеки."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑлÑÐ¶Ð±Ñ Ð½Ðµ запÑÑено"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑлÑÐ¶Ð±Ñ Ð·Ð°Ð¿ÑÑено Ñк PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²ÐµÑÑиÑи ÑобоÑÑ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби: %s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -349,164 +349,164 @@ msgstr ""
"Ð¦Ñ Ð¿ÑогÑÐ°Ð¼Ñ Ð½Ðµ пÑизнаÑено Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑÐºÑ Ð²Ñд ÑÐ¼ÐµÐ½Ñ ÐºÐ¾ÑиÑÑÑваÑа root (ÑкÑо не "
"вказано паÑамеÑÑа --system)."
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "ÐоÑÑÑÐ±Ð½Ñ Ð¿Ñава доÑÑÑÐ¿Ñ ÐºÐ¾ÑиÑÑÑваÑа root."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr ""
"ÐаÑамеÑÑ --start не пÑдÑÑимÑÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑемниÑ
екземплÑÑÑв пÑогÑами."
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, але не вÑÑановлено --disallow-exit!"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, але не вÑÑановлено --disallow-module-"
"loading!"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, пÑимÑÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑÐµÐ¶Ð¸Ð¼Ñ SHM!"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, пÑимÑÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑÐµÐ¶Ð¸Ð¼Ñ Ð¿Ð°ÑамеÑÑÑв "
"ÑаÑÑ Ð²Ð¸Ñ
Ð¾Ð´Ñ Ð·Ð° вÑдÑÑÑноÑÑÑ Ð°ÐºÑивноÑÑÑ!"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи stdio."
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "СпÑоба ÑÑвоÑÐµÐ½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ñ Ð·Ð°Ð²ÐµÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ fork() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ read() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "СпÑоба запÑÑÐºÑ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑлÑÐ¶Ð±Ñ ÑÑпÑÑно запÑÑено."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "Це PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "ÐÑзол збиÑаннÑ: %s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS збиÑаннÑ: %s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "ÐапÑÑено на вÑзлÑ: %s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "Ðнайдено %u пÑоÑеÑоÑÑв."
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "РозмÑÑ ÑÑоÑÑнки доÑÑвнÑÑ %lu байÑам"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "ÐÑбÑано з пÑдÑÑÐ¸Ð¼ÐºÐ¾Ñ Valgrind: Ñак"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "ÐÑбÑано з пÑдÑÑÐ¸Ð¼ÐºÐ¾Ñ Valgrind: нÑ"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "ÐапÑÑк Ñ ÑÐµÐ¶Ð¸Ð¼Ñ valgrind: %s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "ÐÑбÑано з опÑимÑзаÑÑÑÑ: Ñак"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "ÐÑбÑано з опÑимÑзаÑÑÑÑ: нÑ"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "СпÑоба оÑÑимаÑи ÑденÑиÑÑкаÑÐ¾Ñ ÑиÑÑеми завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "ÐденÑиÑÑкаÑÐ¾Ñ ÑиÑÑеми %s."
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ÐденÑиÑÑкаÑÐ¾Ñ ÑиÑÑеми %s."
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "ÐаÑалог запÑÑкÑ: %s."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "ÐаÑалог ÑÑанÑ: %s."
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "ÐапÑÑÐºÑ Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ: %s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_pid_file_create() зазнала невдаÑÑ."
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ÐоÑÑÑÐ¿Ð½Ñ ÑвÑÐ¶Ñ Ð²Ð¸ÑокоÑоÑÐ½Ñ ÑаймеÑи! СмаÑного!"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -514,33 +514,33 @@ msgstr ""
"ЧÑвак, ÑÐ²Ð¾Ñ ÑдÑо â лайно! ÐÑÑÑÑ Ð¿Ð°Ñани ÑекомендÑÑÑÑ Linux з ÑвÑмкненими "
"виÑокоÑоÑними ÑаймеÑами!"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_core_new() зазнала невдаÑÑ."
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "Ðе вдалоÑÑ ÑнÑÑÑалÑзÑваÑи ÑÐ¾Ð½Ð¾Ð²Ñ ÑлÑжбÑ."
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"ÐапÑÑк ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби без жодного заванÑаженого модÑлÑ, ÑлÑжба не бÑде "
"пÑаÑездаÑноÑ."
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "ÐапÑÑк ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби завеÑÑено."
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "ÐнÑÑÑйовано завеÑÑÐµÐ½Ð½Ñ ÑобоÑи ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби."
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби пеÑеÑвано."
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -698,15 +698,15 @@ msgstr ""
" -n Ðе заванÑажÑваÑи Ñиповий Ñайл "
"ÑкÑипÑÑ\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --daemonize ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --fail ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -715,53 +715,53 @@ msgstr ""
"(ÑиÑлове Ñ Ð´ÑÐ°Ð¿Ð°Ð·Ð¾Ð½Ñ 0..4 або одне Ð·Ñ Ð·Ð½Ð°ÑÐµÐ½Ñ debug, info, notice, warn, "
"error)."
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --high-priority ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --realtime ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr ""
"ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --disallow-module-loading ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --disallow-exit ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --use-pid-file ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "ÐÑÑнал вказано непÑавилÑно: Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ Ð²Ð°ÑÑанÑи «syslog», «stderr» Ñ Â«auto»."
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --log-time ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --log-meta ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "ÐекоÑекÑний меÑод змÑни ÑаÑÑоÑниÑ
Ñ
аÑакÑеÑиÑÑик «%s»."
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --system ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --no-cpu-limit ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "ÐÐ»Ñ Ð¿Ð°ÑамеÑÑа --disable-shm ÑлÑд вказÑваÑи бÑлÑвÑÑкий аÑгÑменÑ"
@@ -800,77 +800,82 @@ msgstr "ÐикоÑиÑÑаннÑ: %s\n"
msgid "Load Once: %s\n"
msgstr "ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñи: %s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "ШлÑÑ
: %s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ÐекоÑекÑний жÑÑнал «%s»."
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ÐекоÑекÑний ÑÑÐ²ÐµÐ½Ñ Ð¶ÑÑналÑÐ²Ð°Ð½Ð½Ñ Â«%s»."
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ÐекоÑекÑний меÑод змÑни ÑаÑÑоÑниÑ
Ñ
аÑакÑеÑиÑÑик «%s»."
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ÐекоÑекÑне знаÑÐµÐ½Ð½Ñ rlimit «%s»."
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit не пÑдÑÑимÑÑÑÑÑÑ Ð½Ð° ÑÑй плаÑÑоÑмÑ."
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ÐекоÑекÑний ÑоÑÐ¼Ð°Ñ ÑÑагменÑа «%s»."
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ÐекоÑекÑна ÑаÑÑоÑа вибÑÑки «%s»."
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ÐекоÑекÑÐ½Ñ ÐºÐ°Ð½Ð°Ð»Ð¸ ÑÑагменÑа «%s»."
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ÐекоÑекÑна каÑÑа каналÑв «%s»'."
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ÐекоÑекÑна кÑлÑкÑÑÑÑ ÑÑагменÑÑв «%s»."
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ÐекоÑекÑний ÑозмÑÑ ÑÑагменÑа «%s»."
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ÐекоÑекÑний ÑÑÐ²ÐµÐ½Ñ nice «%s»."
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ðе вдалоÑÑ Ð²ÑдкÑиÑи Ñайл налаÑÑÑванÑ: %s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1126,8 +1131,8 @@ msgid "Top Rear Right"
msgstr "ÐеÑÑ
нÑй заднÑй пÑавий"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "(некоÑекÑний)"
@@ -1313,174 +1318,169 @@ msgstr "waitpid(): %s"
msgid "Received message for unknown extension '%s'"
msgstr "ÐÑÑимано повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñо невÑдомий додаÑок «%s»"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "Ðе вдалоÑÑ ÑÑвоÑиÑи ÑÑÐ½ÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ð¾ÑокÑ: %s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "ÐоÑÑк вÑдÑвоÑÐµÐ½Ð½Ñ ÑÑнелÑовано.\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "ТÑнелÑне зâÑÐ´Ð½Ð°Ð½Ð½Ñ Ð· ÑеÑвеÑом.\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain(): %s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_write() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_peek() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "ÐоÑÑк бÑло ÑÑпÑÑно ÑÑвоÑено.\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_get_buffer_attr() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "ÐеÑÑика бÑÑеÑа: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "ÐеÑÑика бÑÑеÑа: maxlength=%u, fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "ÐикоÑиÑÑÐ°Ð½Ð½Ñ ÑаÑÑоÑÐ½Ð¾Ñ ÑпеÑиÑÑкаÑÑÑ Â«%s», каÑÑа каналÑв «%s».\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "ÐâÑднано з пÑиÑÑÑоÑм %s (%u, %s пÑизÑпинено).\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "Ðомилка поÑокÑ: %s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "ÐÑизÑпинено пÑиÑÑÑÑй поÑокÑ. %s \n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "ÐÑдновлено пÑиÑÑÑÑй поÑокÑ. %s \n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "ÐедованÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾ÑокÑ. %s \n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "ÐеÑеванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾ÑокÑ. %s \n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "ÐоÑÑк запÑÑено. %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "ÐоÑÑк пеÑеÑÑнÑÑо на пÑиÑÑÑÑй %s (%u, %s пÑизÑпинено). %s \n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "не "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, fuzzy, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "ÐедованÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾ÑокÑ. %s \n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "ÐÑÑановлено зâÑднаннÑ. %s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_new() зазнала невдаÑÑ: %s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_playback() зазнала невдаÑÑ: %s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_connect_record() зазнала невдаÑÑ: %s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "СпÑоба вÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·âÑÐ´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð° невдаÑÑ: %s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "Ðе вдалоÑÑ ÑÑвоÑиÑи ÑÑÐ½ÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ð¾ÑокÑ: %s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "ÐоÑÑк вÑдÑвоÑÐµÐ½Ð½Ñ ÑÑнелÑовано.\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "ТÑнелÑне зâÑÐ´Ð½Ð°Ð½Ð½Ñ Ð· ÑеÑвеÑом.\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "ÐÑÑимано EOF.\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain(): %s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ read() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ write() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "ÐÑÑимано Ñигнал, завеÑÑÐµÐ½Ð½Ñ ÑобоÑи.\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи лаÑенÑнÑÑÑÑ: %s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "ЧаÑ: %0.3f Ñек.; ÐаÑенÑнÑÑÑÑ: %0.0f мкÑ. \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr ""
"СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_stream_update_timing_info() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1506,8 +1506,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1530,6 +1532,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [паÑамеÑÑи]\n"
"\n"
@@ -1578,7 +1585,7 @@ msgstr ""
" --process-time=ÐÐÐТРÐадÑÑлаÑи Ð·Ð°Ð¿Ð¸Ñ Ñодо вказаного ÑаÑÑ "
"обÑобки на Ð·Ð°Ð¿Ð¸Ñ Ñ Ð±Ð°Ð¹ÑаÑ
.\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1589,88 +1596,133 @@ msgstr ""
"ÐÑбÑано з libpulse %s\n"
"ÐâÑднано з libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "ÐекоÑекÑна каÑÑа каналÑв «%s»\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "ÐекоÑекÑний меÑод змÑни ÑаÑÑоÑниÑ
Ñ
аÑакÑеÑиÑÑик «%s»."
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "ÐекоÑекÑна каÑÑа каналÑв «%s»\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "ÐекоÑекÑна ÑпеÑиÑÑкаÑÑÑ Ð»Ð°ÑенÑноÑÑÑ Â«%s»\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "ÐекоÑекÑна ÑаÑова ÑпеÑиÑÑкаÑÑÑ Â«%s»\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "ÐекоÑекÑний меÑод змÑни ÑаÑÑоÑниÑ
Ñ
аÑакÑеÑиÑÑик «%s»."
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "ÐекоÑекÑна ÑаÑÑоÑна ÑпеÑиÑÑкаÑÑÑ\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
+#, c-format
+msgid "open(): %s\n"
+msgstr "open(): %s\n"
+
+#: ../src/utils/pacat.c:912
#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2(): %s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "ÐабагаÑо аÑгÑменÑÑв.\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо ÑÑагменÑа: %s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "Ðе вдалоÑÑ Ð²ÑдкÑиÑи звÑковий Ñайл.\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо ÑÑагменÑа: %s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "ÐаÑÑа ÐºÐ°Ð½Ð°Ð»Ñ Ð½Ðµ вÑдповÑÐ´Ð°Ñ ÑаÑÑоÑнÑй ÑпеÑиÑÑкаÑÑÑ\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "ÐÑдкÑиÑÑÑ Ð¿Ð¾ÑÐ¾ÐºÑ %s з ÑаÑÑоÑÐ½Ð¾Ñ ÑпеÑиÑÑкаÑÑÑÑ Â«%s».\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "запиÑ"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "вÑдÑвоÑеннÑ"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open(): %s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2(): %s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "ÐабагаÑо аÑгÑменÑÑв.\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_new() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ io_new() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_new() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_connect() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ time_new() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_mainloop_run() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
@@ -1701,8 +1753,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"ÐÐÐÐÐ ÐÐÐÐÐÐЯ: звÑковий ÑеÑÐ²ÐµÑ Ð½Ðµ Ñ Ð»Ð¾ÐºÐ°Ð»Ñним, його не можна пÑизÑпиниÑи.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "ÐÑÑимано Ñигнал SIGINT, завеÑÑÐµÐ½Ð½Ñ ÑобоÑи.\n"
@@ -1732,7 +1783,7 @@ msgstr ""
"зâÑднаÑиÑÑ\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1743,33 +1794,33 @@ msgstr ""
"ÐÑбÑано з libpulse %s\n"
"ÐâÑднано з libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи ÑÑаÑиÑÑиÑÐ½Ñ Ð´Ð°Ð½Ñ: %s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "ÐаÑаз викоÑиÑÑано: %u блокÑв, Ñо мÑÑÑÑÑÑ Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ %s байÑÑв.\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr ""
"ÐидÑлено пÑоÑÑгом Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼: %u блокÑв, Ñо мÑÑÑÑÑÑ %s байÑÑв.\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "РозмÑÑ ÐºÐµÑÑ ÑÑагменÑÑв: %s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо ÑеÑвеÑа: %s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1792,12 +1843,12 @@ msgstr ""
"Типове джеÑело: %s\n"
"ÐÑка: %08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо пÑиймаÑа: %s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1836,12 +1887,12 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо джеÑела: %s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1880,20 +1931,20 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "н/д"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо модÑлÑ: %s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1910,12 +1961,12 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо клÑÑнÑа: %s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1930,12 +1981,12 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо каÑÑи: %s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1952,22 +2003,22 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tÐÑоÑÑлÑ:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tÐкÑивний пÑоÑÑлÑ: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи вÑдомоÑÑей Ñодо пÑиймаÑа: %s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -2004,12 +2055,12 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо вÑдÑвоÑÐµÐ½Ð½Ñ Ð´Ð¶ÐµÑела: %s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -2038,12 +2089,12 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи Ð´Ð°Ð½Ñ Ñодо ÑÑагменÑа: %s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -2074,22 +2125,21 @@ msgstr ""
"\tÐлаÑÑивоÑÑÑ:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "Ðомилка: %s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½ÑажиÑи зÑазок: %s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "ÐеÑедÑаÑне завеÑÑÐµÐ½Ð½Ñ Ñайла\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2135,7 +2185,7 @@ msgstr ""
"зâÑднаÑиÑÑ\n"
" -n, --client-name=ÐÐÐÐРСпоÑÑб Ð²Ð¸ÐºÐ»Ð¸ÐºÑ ÐºÐ»ÑÑнÑа на ÑеÑвеÑÑ\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2146,48 +2196,44 @@ msgstr ""
"ÐÑбÑано з libpulse %s\n"
"ÐâÑднано з libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "ÐÑÐ´Ñ Ð»Ð°Ñка, вкажÑÑÑ Ð·Ñазковий Ñайл Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½ÑаженнÑ\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "Ðе вдалоÑÑ Ð²ÑдкÑиÑи звÑковий Ñайл.\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "ÐÑдкÑиÑÑÑ Ð¿Ð¾ÑÐ¾ÐºÑ %s з ÑаÑÑоÑÐ½Ð¾Ñ ÑпеÑиÑÑкаÑÑÑÑ Â«%s».\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "Ðам ÑлÑд вказаÑи Ð½Ð°Ð·Ð²Ñ Ð·Ñазкового Ñайла, Ñкий ÑлÑд вÑдÑвоÑиÑи\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "Ðам ÑлÑд вказаÑи Ð½Ð°Ð·Ð²Ñ Ð·Ñазкового Ñайла, Ñкий ÑлÑд вилÑÑиÑи\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "Ðам ÑлÑд вказаÑи ÑÐ½Ð´ÐµÐºÑ Ð¿ÑиймаÑа даниÑ
Ñ Ð¿ÑиймаÑ\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "Ðам ÑлÑд вказаÑи ÑÐ½Ð´ÐµÐºÑ Ð´Ð¶ÐµÑела вÑдÑвоÑÐµÐ½Ð½Ñ Ñ Ð´Ð¶ÐµÑело\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "Ðам ÑлÑд вказаÑи Ð½Ð°Ð·Ð²Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ñ Ð°ÑгÑменÑи.\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "Ðам ÑлÑд вказаÑи ÑÐ½Ð´ÐµÐºÑ Ð¼Ð¾Ð´ÑлÑ\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
@@ -2195,8 +2241,7 @@ msgstr ""
"Ðе можна вказÑваÑи бÑлÑÑе одного пÑиймаÑа. Ðам ÑлÑд вказаÑи бÑлÑвÑÑке "
"знаÑеннÑ.\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
@@ -2204,17 +2249,15 @@ msgstr ""
"Ðе можна вказÑваÑи бÑлÑÑе одного джеÑела. Ðам ÑлÑд вказаÑи бÑлÑвÑÑке "
"знаÑеннÑ.\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Ðам ÑлÑд вказаÑи назвÑ/ÑÐ½Ð´ÐµÐºÑ ÐºÐ°ÑÑи Ñ Ð½Ð°Ð·Ð²Ñ Ð¿ÑоÑÑлÑ\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "Ðе вказано коÑекÑÐ½Ð¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸.\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_context_connect() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
@@ -2300,130 +2343,49 @@ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½ÑажиÑи Ð´Ð°Ð½Ñ ÐºÑки\n"
msgid "Not yet implemented.\n"
msgstr "Ще не ÑеалÑзовано.\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr ""
"СпÑоба завеÑÑÐµÐ½Ð½Ñ ÑобоÑи ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби PulseAudio завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "Фонова ÑлÑжба не вÑдповÑдаÑ."
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "ÐоÑÑк бÑло ÑÑпÑÑно ÑÑвоÑено\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "Ðомилка поÑокÑ: %s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "ÐâÑÐ´Ð½Ð°Ð½Ð½Ñ Ð²ÑÑановлено.\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [паÑамеÑÑи] [ФÐÐÐ]\n"
-"\n"
-" -h, --help ÐоказаÑи ÑÑ Ð´Ð¾Ð²ÑдкÑ\n"
-" --version ÐоказаÑи Ð´Ð°Ð½Ñ Ñодо веÑÑÑÑ\n"
-"\n"
-" -v, --verbose УвÑмкнÑÑи докладний Ñежим дÑй\n"
-"\n"
-" -s, --server=СÐÐ ÐÐÐ Ðазва ÑеÑвеÑа, з Ñким ÑлÑд "
-"вÑÑановиÑи зâÑÐ´Ð½Ð°Ð½Ð½Ñ to\n"
-" -d, --device=ÐÐ ÐСТРÐÐ Ðазва пÑиймаÑа, з Ñким ÑлÑд "
-"зâÑднаÑиÑÑ\n"
-" -n, --client-name=ÐÐÐÐРСпоÑÑб Ð²Ð¸ÐºÐ»Ð¸ÐºÑ ÐºÐ»ÑÑнÑа на ÑеÑвеÑÑ\n"
-" --stream-name=ÐÐÐÐРСпоÑÑб Ð²Ð¸ÐºÐ»Ð¸ÐºÑ Ð¿Ð¾ÑÐ¾ÐºÑ Ð½Ð° ÑеÑвеÑÑ\n"
-" --volume=ÐУЧÐÐСТЬ ÐнаÑÐµÐ½Ð½Ñ Ð¿Ð¾ÑаÑÐºÐ¾Ð²Ð¾Ñ (лÑнÑйноÑ) "
-"гÑÑноÑÑÑ Ñ Ð´ÑÐ°Ð¿Ð°Ð·Ð¾Ð½Ñ 0..65536\n"
-" --channel-map=ÐÐРТÐ_ÐÐÐÐÐÐÐ ÐизнаÑÐµÐ½Ð½Ñ ÐºÐ°ÑÑи каналÑв, ÑÐºÐ¾Ñ ÑлÑд "
-"ÑкоÑиÑÑаÑиÑÑ\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"ÐÑбÑано з libpulse %s\n"
-"ÐâÑднано з libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "ÐекоÑекÑна каÑÑа каналÑв\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "Ðе вдалоÑÑ Ð²ÑдкÑиÑи Ñайл «%s»\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "ÐаÑÑа каналÑв не вÑдповÑÐ´Ð°Ñ ÑайловÑ.\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "ÐикоÑиÑÑÐ°Ð½Ð½Ñ ÑаÑÑоÑÐ½Ð¾Ñ ÑпеÑиÑÑкаÑÑÑ Â«%s»\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Ðе вдалоÑÑ Ð·Ð½ÑÑи блокÑÐ²Ð°Ð½Ð½Ñ Ð°Ð²ÑомаÑиÑного ÑозгалÑженнÑ."
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2434,7 +2396,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2445,35 +2407,104 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr ""
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
#, fuzzy
msgid "PulseAudio Sound Server"
msgstr "ÐвÑкова ÑиÑÑема PulseAudio"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "ÐоÑÑк бÑло ÑÑпÑÑно ÑÑвоÑено\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "Ðомилка поÑокÑ: %s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "ÐâÑÐ´Ð½Ð°Ð½Ð½Ñ Ð²ÑÑановлено.\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [паÑамеÑÑи] [ФÐÐÐ]\n"
+#~ "\n"
+#~ " -h, --help ÐоказаÑи ÑÑ Ð´Ð¾Ð²ÑдкÑ\n"
+#~ " --version ÐоказаÑи Ð´Ð°Ð½Ñ Ñодо веÑÑÑÑ\n"
+#~ "\n"
+#~ " -v, --verbose УвÑмкнÑÑи докладний Ñежим дÑй\n"
+#~ "\n"
+#~ " -s, --server=СÐÐ ÐÐÐ Ðазва ÑеÑвеÑа, з Ñким ÑлÑд "
+#~ "вÑÑановиÑи зâÑÐ´Ð½Ð°Ð½Ð½Ñ to\n"
+#~ " -d, --device=ÐÐ ÐСТРÐÐ Ðазва пÑиймаÑа, з Ñким ÑлÑд "
+#~ "зâÑднаÑиÑÑ\n"
+#~ " -n, --client-name=ÐÐÐÐРСпоÑÑб Ð²Ð¸ÐºÐ»Ð¸ÐºÑ ÐºÐ»ÑÑнÑа на "
+#~ "ÑеÑвеÑÑ\n"
+#~ " --stream-name=ÐÐÐÐРСпоÑÑб Ð²Ð¸ÐºÐ»Ð¸ÐºÑ Ð¿Ð¾ÑÐ¾ÐºÑ Ð½Ð° ÑеÑвеÑÑ\n"
+#~ " --volume=ÐУЧÐÐСТЬ ÐнаÑÐµÐ½Ð½Ñ Ð¿Ð¾ÑаÑÐºÐ¾Ð²Ð¾Ñ (лÑнÑйноÑ) "
+#~ "гÑÑноÑÑÑ Ñ Ð´ÑÐ°Ð¿Ð°Ð·Ð¾Ð½Ñ 0..65536\n"
+#~ " --channel-map=ÐÐРТÐ_ÐÐÐÐÐÐÐ ÐизнаÑÐµÐ½Ð½Ñ ÐºÐ°ÑÑи каналÑв, ÑÐºÐ¾Ñ "
+#~ "ÑлÑд ÑкоÑиÑÑаÑиÑÑ\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "ÐÑбÑано з libpulse %s\n"
+#~ "ÐâÑднано з libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "ÐекоÑекÑна каÑÑа каналÑв\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "Ðе вдалоÑÑ Ð²ÑдкÑиÑи Ñайл «%s»\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "ÐаÑÑа каналÑв не вÑдповÑÐ´Ð°Ñ ÑайловÑ.\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "ÐикоÑиÑÑÐ°Ð½Ð½Ñ ÑаÑÑоÑÐ½Ð¾Ñ ÑпеÑиÑÑкаÑÑÑ Â«%s»\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 03beccc..99a6722 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-21 23:02+0200\n"
+"POT-Creation-Date: 2009-06-08 00:29+0200\n"
"PO-Revision-Date: 2009-04-06 10:26+1000\n"
"Last-Translator: Leah Liu <lliu at redhat.com>\n"
"Language-Team: Simplified Chinese <zh at li.org>\n"
@@ -20,51 +20,51 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:559
msgid "Analog Mono"
msgstr "模æå声é"
-#: ../src/modules/alsa/alsa-util.c:540
+#: ../src/modules/alsa/alsa-util.c:567
msgid "Analog Stereo"
msgstr "模æç«ä½å£°"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:575
msgid "Digital Stereo (IEC958)"
msgstr "æ°åç«ä½å£°ï¼IEC958ï¼"
-#: ../src/modules/alsa/alsa-util.c:556
+#: ../src/modules/alsa/alsa-util.c:583
msgid "Digital Stereo (HDMI)"
msgstr "æ°åç«ä½å£°ï¼HDMIï¼"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 4.0"
msgstr "模æç¯ç» 4.0"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:601
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "æ°åç¯ç» 4.0ï¼IEC958/AC3ï¼"
-#: ../src/modules/alsa/alsa-util.c:584
+#: ../src/modules/alsa/alsa-util.c:611
msgid "Analog Surround 4.1"
msgstr "模æç¯ç» 4.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:621
msgid "Analog Surround 5.0"
msgstr "模æç¯ç» 5.0"
-#: ../src/modules/alsa/alsa-util.c:604
+#: ../src/modules/alsa/alsa-util.c:631
msgid "Analog Surround 5.1"
msgstr "模æç¯ç» 5.1"
-#: ../src/modules/alsa/alsa-util.c:614
+#: ../src/modules/alsa/alsa-util.c:641
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "æ°åç¯ç» 5.1ï¼IEC958/AC3ï¼"
-#: ../src/modules/alsa/alsa-util.c:625
+#: ../src/modules/alsa/alsa-util.c:652
msgid "Analog Surround 7.1"
msgstr "模æç¯ç» 7.1"
-#: ../src/modules/alsa/alsa-util.c:1646
+#: ../src/modules/alsa/alsa-util.c:1769
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -75,7 +75,7 @@ msgstr ""
"snd_pcm_avail() è¿åçå¼é常大ï¼%lu åèï¼%lu msï¼ã\n"
"å¾å¯è½æ¯ ALSA 驱å¨ç¨åº '%s' ä¸ç bugã请å ALSA å¼åè
举æ¥è¿ä¸ªé®é¢ã"
-#: ../src/modules/alsa/alsa-util.c:1687
+#: ../src/modules/alsa/alsa-util.c:1810
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -86,7 +86,7 @@ msgstr ""
"snd_pcm_delay() è¿åçå¼é常大ï¼%li åèï¼%s%lu msï¼ã\n"
"å¾å¯è½æ¯ ALSA 驱å¨ç¨åº '%s' ä¸ç bugã请å ALSA å¼åè
举æ¥è¿ä¸ªé®é¢ã"
-#: ../src/modules/alsa/alsa-util.c:1734
+#: ../src/modules/alsa/alsa-util.c:1857
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,11 +97,11 @@ msgstr ""
"snd_pcm_mmap_begin() è¿åçå¼é常大ï¼%lu åèï¼%lu msï¼ã\n"
"å¾å¯è½æ¯ ALSA 驱å¨ç¨åº '%s' ä¸ç bugã请å ALSA å¼åè
举æ¥è¿ä¸ªé®é¢ã"
-#: ../src/pulsecore/sink.c:2141
+#: ../src/pulsecore/sink.c:2273
msgid "Internal Audio"
msgstr "å
é¨é³é¢"
-#: ../src/pulsecore/sink.c:2147
+#: ../src/pulsecore/sink.c:2279
msgid "Modem"
msgstr "è°å¶è§£è°å¨"
@@ -171,104 +171,104 @@ msgstr "æ æ³è·åææ: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKitåå¤'%s'"
-#: ../src/daemon/main.c:138
+#: ../src/daemon/main.c:142
#, c-format
msgid "Got signal %s."
msgstr "è·å¾ä¿¡å·%s"
-#: ../src/daemon/main.c:165
+#: ../src/daemon/main.c:169
msgid "Exiting."
msgstr "éåº"
-#: ../src/daemon/main.c:183
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find user '%s'."
msgstr "æ¾ä¸å°ç¨æ· `%s' "
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:192
#, c-format
msgid "Failed to find group '%s'."
msgstr "æ¾ä¸å°ç¨æ·ç» `%s'"
-#: ../src/daemon/main.c:192
+#: ../src/daemon/main.c:196
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "åç°ç¨æ·'%s' (UID %lu)åç»'%s' (GID %lu)."
-#: ../src/daemon/main.c:197
+#: ../src/daemon/main.c:201
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ç¨æ·'%s'ä¸ç»'%s'çGIDä¸å¹é
."
-#: ../src/daemon/main.c:202
+#: ../src/daemon/main.c:206
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ç¨æ·'%s'ç主æ件夹ä¸æ¯'%s'ï¼å¿½ç¥ã"
-#: ../src/daemon/main.c:205 ../src/daemon/main.c:210
+#: ../src/daemon/main.c:209 ../src/daemon/main.c:214
#, c-format
msgid "Failed to create '%s': %s"
msgstr "å建'%s'å¤±è´¥ï¼ %s"
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:221
#, c-format
msgid "Failed to change group list: %s"
msgstr "æ´æ¹ç»å表失败ï¼%s"
-#: ../src/daemon/main.c:233
+#: ../src/daemon/main.c:237
#, c-format
msgid "Failed to change GID: %s"
msgstr "æ´æ¹GID失败ï¼%s"
-#: ../src/daemon/main.c:249
+#: ../src/daemon/main.c:253
#, c-format
msgid "Failed to change UID: %s"
msgstr "æ´æ¹UID失败ï¼%s"
-#: ../src/daemon/main.c:263
+#: ../src/daemon/main.c:267
msgid "Successfully dropped root privileges."
msgstr "æåæ¾å¼rootæéã"
-#: ../src/daemon/main.c:271
+#: ../src/daemon/main.c:275
msgid "System wide mode unsupported on this platform."
msgstr "æ¤å¹³å°ä¸æ¯æsystem-wide模å¼ã"
-#: ../src/daemon/main.c:289
+#: ../src/daemon/main.c:293
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) 失败ï¼%s"
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:481
msgid "Failed to parse command line."
msgstr "åæå½ä»¤è¡å¤±è´¥ã"
-#: ../src/daemon/main.c:501
+#: ../src/daemon/main.c:505
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "æ们å¨'%s'ç»ä¸ï¼å
许é«ä¼å
级è°åº¦ã"
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:512
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "æ们å¨'%s'ç»ä¸ï¼å
许å®æ¶è°åº¦ã"
-#: ../src/daemon/main.c:516
+#: ../src/daemon/main.c:520
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKitæäºæ们âè·åé«ä¼å
级âæéã"
-#: ../src/daemon/main.c:519
+#: ../src/daemon/main.c:523
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKitæç»âè·åé«ä¼å
级âæéã"
-#: ../src/daemon/main.c:524
+#: ../src/daemon/main.c:528
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKitæäºæ们âè·åå®æ¶âæéã"
-#: ../src/daemon/main.c:527
+#: ../src/daemon/main.c:531
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKitæç»æ们âè·åå®æ¶âæéã"
-#: ../src/daemon/main.c:556
+#: ../src/daemon/main.c:560
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -286,231 +286,231 @@ msgstr ""
"è¦å¯ç¨å®æ¶/é«ä¼å
è°åº¦ï¼è¯·è·å¾éå½ç PolicyKit ç¹æï¼æè
æ为 '%s' æåï¼ä¹å¯"
"以为è¿ä¸ªç¨æ·å¢å RLIMIT_NICE/RLIMIT_RTPRIO èµæºéå¶ã"
-#: ../src/daemon/main.c:581
+#: ../src/daemon/main.c:585
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "é
ç½®ä¸å·²å¯ç¨é«ä¼å
级è°åº¦ï¼ä½çç¥æªå
许ã"
-#: ../src/daemon/main.c:610
+#: ../src/daemon/main.c:614
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "æé«RLIMIT_RTPRIOæåã"
-#: ../src/daemon/main.c:613
+#: ../src/daemon/main.c:617
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO失败ï¼%s"
-#: ../src/daemon/main.c:620
+#: ../src/daemon/main.c:624
msgid "Giving up CAP_NICE"
msgstr "æ£å¨æ¾å¼CAP_NICE"
-#: ../src/daemon/main.c:627
+#: ../src/daemon/main.c:631
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "é
ç½®ä¸å·²å¯ç¨å®æ¶è°åº¦ï¼ä½çç¥æªå
许ã"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:692
msgid "Daemon not running"
msgstr "åå°ç¨åºæ²¡æè¿è¡"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:694
#, c-format
msgid "Daemon running as PID %u"
msgstr "åå°ç¨åºæ£å¨è¿è¡ï¼PID %u"
-#: ../src/daemon/main.c:700
+#: ../src/daemon/main.c:704
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ææ»åå°ç¨åºå¤±è´¥ï¼%s"
-#: ../src/daemon/main.c:718
+#: ../src/daemon/main.c:722
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "ä¸åºä»¥root身份è¿è¡æ¬ç¨åºï¼é¤éæå® --systemï¼ã"
-#: ../src/daemon/main.c:720
+#: ../src/daemon/main.c:724
msgid "Root privileges required."
msgstr "éè¦ root æéã"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
msgid "--start not supported for system instances."
msgstr "ç³»ç»å®ä¾ä¸æ¯æ --startã"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-exit æªè®¾å®ï¼"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:737
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-module-loading æªè®¾å®ï¼"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨SHM模å¼ï¼"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:745
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨éåºç©ºé²æ¶é´ï¼"
-#: ../src/daemon/main.c:768
+#: ../src/daemon/main.c:772
msgid "Failed to acquire stdio."
msgstr "è·åstdio失败ã"
-#: ../src/daemon/main.c:774
+#: ../src/daemon/main.c:778
#, c-format
msgid "pipe failed: %s"
msgstr "管é失败ï¼%s"
-#: ../src/daemon/main.c:779
+#: ../src/daemon/main.c:783
#, c-format
msgid "fork() failed: %s"
msgstr "fork()失败ï¼%s"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:797
#, c-format
msgid "read() failed: %s"
msgstr "read()失败ï¼%s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:803
msgid "Daemon startup failed."
msgstr "åå°ç¨åºå¯å¨å¤±è´¥ã"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:805
msgid "Daemon startup successful."
msgstr "åå°ç¨åºå¯å¨æåã"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:875
#, c-format
msgid "This is PulseAudio %s"
msgstr "è¿æ¯ PulseAudio %s"
-#: ../src/daemon/main.c:872
+#: ../src/daemon/main.c:876
#, c-format
msgid "Compilation host: %s"
msgstr "ç¼è¯ä¸»æºï¼%s"
-#: ../src/daemon/main.c:873
+#: ../src/daemon/main.c:877
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ç¼è¯CFLAGSï¼%s"
-#: ../src/daemon/main.c:876
+#: ../src/daemon/main.c:880
#, c-format
msgid "Running on host: %s"
msgstr "æ£å¨ä¸»æºä¸è¿è¡ï¼%s"
-#: ../src/daemon/main.c:879
+#: ../src/daemon/main.c:883
#, c-format
msgid "Found %u CPUs."
msgstr "æ¾å° %u CPUã"
-#: ../src/daemon/main.c:881
+#: ../src/daemon/main.c:885
#, c-format
msgid "Page size is %lu bytes"
msgstr "页é¢å¤§å°ä¸º%luåè"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:888
msgid "Compiled with Valgrind support: yes"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼æ¯"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:890
msgid "Compiled with Valgrind support: no"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼å¦"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:893
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "æ£å¨ä»¥valgrind模å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Optimized build: yes"
msgstr "ä¼åçæï¼æ¯"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid "Optimized build: no"
msgstr "ä¼åçæï¼å¦"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:902
msgid "NDEBUG defined, all asserts disabled."
msgstr "æç» NDEBUGï¼ç¦ç¨ææ assert"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:904
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "æç» FASTPATHï¼åªç¦ç¨å¿«éè·¯å¾ assertã"
-#: ../src/daemon/main.c:902
+#: ../src/daemon/main.c:906
msgid "All asserts enabled."
msgstr "å¯ç¨ææ assertã"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "Failed to get machine ID"
msgstr "è·åmachine ID失败"
-#: ../src/daemon/main.c:909
+#: ../src/daemon/main.c:913
#, c-format
msgid "Machine ID is %s."
msgstr "machine IDæ¯%sã"
-#: ../src/daemon/main.c:913
+#: ../src/daemon/main.c:917
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "machine IDæ¯%sã"
-#: ../src/daemon/main.c:919
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using runtime directory %s."
msgstr "æ£å¨ä½¿ç¨è¿è¡æ¶æ件夹%sã"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:928
#, c-format
msgid "Using state directory %s."
msgstr "æ£å¨ä½¿ç¨ç¶ææ件夹%sã"
-#: ../src/daemon/main.c:927
+#: ../src/daemon/main.c:931
#, c-format
msgid "Running in system mode: %s"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:942
+#: ../src/daemon/main.c:946
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败ã"
-#: ../src/daemon/main.c:954
+#: ../src/daemon/main.c:956
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "æ°é²çé«å辨ç计æ¶å¨å¼é
äºï¼å个饱ï¼"
-#: ../src/daemon/main.c:956
+#: ../src/daemon/main.c:958
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "èå
ï¼ä½ çå
æ ¸çèï¼ç°å¨æµè¡çæ¯å¯ç¨äºé«å辩ç计åå¨çLinuxï¼"
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:983
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败ã"
-#: ../src/daemon/main.c:1032
+#: ../src/daemon/main.c:1045
msgid "Failed to initialize daemon."
msgstr "åå°ç¨åºåå§å失败ã"
-#: ../src/daemon/main.c:1037
+#: ../src/daemon/main.c:1050
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "åå°ç¨åºå¯å¨æªå 载任ä½æ¨¡åï¼æç»å·¥ä½ã"
-#: ../src/daemon/main.c:1054
+#: ../src/daemon/main.c:1067
msgid "Daemon startup complete."
msgstr "åå°ç¨åºå¯å¨å®æã"
-#: ../src/daemon/main.c:1060
+#: ../src/daemon/main.c:1073
msgid "Daemon shutdown initiated."
msgstr "å¼å§å
³éåå°ç¨åºã"
-#: ../src/daemon/main.c:1082
+#: ../src/daemon/main.c:1095
msgid "Daemon terminated."
msgstr "åå°ç¨åºå·²ç»æ¢ã"
-#: ../src/daemon/cmdline.c:121
+#: ../src/daemon/cmdline.c:115
#, c-format
msgid ""
"%s [options]\n"
@@ -637,15 +637,15 @@ msgstr ""
"\n"
" -n ä¸å è½½é»è®¤çèæ¬æ件\n"
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
msgstr "--daemonize æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:259
+#: ../src/daemon/cmdline.c:254
msgid "--fail expects boolean argument"
msgstr "--fail æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:269
+#: ../src/daemon/cmdline.c:264
msgid ""
"--log-level expects log level argument (either numeric in range 0..4 or one "
"of debug, info, notice, warn, error)."
@@ -653,52 +653,52 @@ msgstr ""
"--log-level æå¾
æ¥å¿çº§å«åæ°ï¼å¯ä»¥æ¯æ°å0ï½4æè
debugï¼infoï¼noticeï¼warnï¼"
"errorä¸çä¸ä¸ªï¼"
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
msgstr "--high-priority æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:283
msgid "--realtime expects boolean argument"
msgstr "--realtime æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:295
+#: ../src/daemon/cmdline.c:290
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:297
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit éè¦å¸å°å¼åæ°"
-#: ../src/daemon/cmdline.c:309
+#: ../src/daemon/cmdline.c:304
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:326
+#: ../src/daemon/cmdline.c:321
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "æ æçæ¥å¿ç®æ ï¼ä»syslogï¼stderråautoä¸éåä¸ä¸ª"
-#: ../src/daemon/cmdline.c:333
+#: ../src/daemon/cmdline.c:328
msgid "--log-time expects boolean argument"
msgstr "--log-time éè¦å¸å°å¼åæ°"
-#: ../src/daemon/cmdline.c:340
+#: ../src/daemon/cmdline.c:335
msgid "--log-meta expects boolean argument"
msgstr "--log-meta éè¦å¸å°å¼åæ°"
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:354
#, c-format
msgid "Invalid resample method '%s'."
msgstr "æ æçééæ ·æ¹æ³'%s'ã"
-#: ../src/daemon/cmdline.c:366
+#: ../src/daemon/cmdline.c:361
msgid "--system expects boolean argument"
msgstr "--system æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:373
+#: ../src/daemon/cmdline.c:368
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit æå¾
å¸å°åæ°"
-#: ../src/daemon/cmdline.c:380
+#: ../src/daemon/cmdline.c:375
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm æå¾
å¸å°åæ°"
@@ -737,77 +737,82 @@ msgstr "ç¨æ³ï¼%s\n"
msgid "Load Once: %s\n"
msgstr "å è½½ä¸æ¬¡ï¼%s\n"
-#: ../src/daemon/dumpmodules.c:77
+#: ../src/daemon/dumpmodules.c:75
+#, c-format
+msgid "DEPRECATION WARNING: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:79
#, c-format
msgid "Path: %s\n"
msgstr "è·¯å¾ï¼%s\n"
-#: ../src/daemon/daemon-conf.c:215
+#: ../src/daemon/daemon-conf.c:216
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] æ æçæ¥å¿ç®æ '%s'ã"
-#: ../src/daemon/daemon-conf.c:231
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] æ æçæ¥å¿çº§å«'%s'ã"
-#: ../src/daemon/daemon-conf.c:247
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] æ æçééæ ·æ¹æ³'%s'ã"
-#: ../src/daemon/daemon-conf.c:270
+#: ../src/daemon/daemon-conf.c:271
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] æ æçrlimit '%s'ã"
-#: ../src/daemon/daemon-conf.c:277
+#: ../src/daemon/daemon-conf.c:278
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] æ¤å¹³å°ä¸æ¯ærlimitã"
-#: ../src/daemon/daemon-conf.c:293
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] æ æçæ ·åæ ¼å¼'%s'ã"
-#: ../src/daemon/daemon-conf.c:311
+#: ../src/daemon/daemon-conf.c:312
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] æ æçæ ·åç'%s'ã"
-#: ../src/daemon/daemon-conf.c:335
+#: ../src/daemon/daemon-conf.c:336
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] æ æçæ ·åéé'%s'ã"
-#: ../src/daemon/daemon-conf.c:353
+#: ../src/daemon/daemon-conf.c:354
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] æ æé¢éå°å¾ '%s'ã"
-#: ../src/daemon/daemon-conf.c:371
+#: ../src/daemon/daemon-conf.c:372
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] æ æçå段æ°'%s'ã"
-#: ../src/daemon/daemon-conf.c:389
+#: ../src/daemon/daemon-conf.c:390
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] æ æçå段大å°'%s'ã"
-#: ../src/daemon/daemon-conf.c:407
+#: ../src/daemon/daemon-conf.c:408
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] æ æçnice level '%s'ã"
-#: ../src/daemon/daemon-conf.c:522
+#: ../src/daemon/daemon-conf.c:524
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "æå¼é
ç½®æ件失败ï¼%s"
-#: ../src/daemon/daemon-conf.c:538
+#: ../src/daemon/daemon-conf.c:540
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -1057,8 +1062,8 @@ msgid "Top Rear Right"
msgstr "ä¸å³å"
#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
+#: ../src/pulse/volume.c:237 ../src/pulse/volume.c:263
+#: ../src/pulse/volume.c:283 ../src/pulse/volume.c:313
msgid "(invalid)"
msgstr "ï¼æ æï¼"
@@ -1243,173 +1248,168 @@ msgstr "waitpid()ï¼%s"
msgid "Received message for unknown extension '%s'"
msgstr "æ¶å°æªç¥æ©å±'%s'çä¿¡æ¯"
-#: ../src/utils/pacat.c:94
+#: ../src/utils/pacat.c:107
+#, c-format
+msgid "Failed to drain stream: %s\n"
+msgstr "æåºæµå¤±è´¥ï¼%s\n"
+
+#: ../src/utils/pacat.c:112
+msgid "Playback stream drained.\n"
+msgstr "æµææ¾å®æ¯ã\n"
+
+#: ../src/utils/pacat.c:122
+msgid "Draining connection to server.\n"
+msgstr "Draining è¿æ¥å°æå¡å¨ã\n"
+
+#: ../src/utils/pacat.c:135
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr "pa_stream_drain()ï¼%s\n"
+
+#: ../src/utils/pacat.c:158
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "pa_stream_write()失败ï¼%s\n"
-#: ../src/utils/pacat.c:133
+#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "pa_stream_peek()失败ï¼%s\n"
-#: ../src/utils/pacat.c:169
-#, c-format
+#: ../src/utils/pacat.c:302
msgid "Stream successfully created.\n"
msgstr "æµå建æåã\n"
-#: ../src/utils/pacat.c:172
+#: ../src/utils/pacat.c:305
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
msgstr "pa_stream_get_buffer_attr()失败ï¼%s\n"
-#: ../src/utils/pacat.c:176
+#: ../src/utils/pacat.c:309
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
msgstr "ç¼å²è®¡éï¼maxlength=%uï¼tlength=%uï¼prebuf=%uï¼minreq=%u\n"
-#: ../src/utils/pacat.c:179
+#: ../src/utils/pacat.c:312
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
msgstr "ç¼å²è®¡éï¼maxlength=%uï¼fragsize=%u\n"
-#: ../src/utils/pacat.c:183
+#: ../src/utils/pacat.c:316
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
msgstr "æ£å¨ä½¿ç¨æ ·åè§æ ¼'%s'ï¼ééæ å°'%s'ã\n"
-#: ../src/utils/pacat.c:187
+#: ../src/utils/pacat.c:320
#, c-format
msgid "Connected to device %s (%u, %ssuspended).\n"
msgstr "å·²è¿æ¥è³è®¾å¤%s (%uï¼%sæèµ·ï¼ã\n"
-#: ../src/utils/pacat.c:197
+#: ../src/utils/pacat.c:330
#, c-format
msgid "Stream error: %s\n"
msgstr "æµé误ï¼%s\n"
-#: ../src/utils/pacat.c:207
+#: ../src/utils/pacat.c:340
#, c-format
msgid "Stream device suspended.%s \n"
msgstr "æµè®¾å¤æèµ·ã%s\n"
-#: ../src/utils/pacat.c:209
+#: ../src/utils/pacat.c:342
#, c-format
msgid "Stream device resumed.%s \n"
msgstr "æµè®¾å¤æ¢å¤ã%s\n"
-#: ../src/utils/pacat.c:217
+#: ../src/utils/pacat.c:350
#, c-format
msgid "Stream underrun.%s \n"
msgstr "æµæ¬ è½½è¿è¡ã%s\n"
-#: ../src/utils/pacat.c:224
+#: ../src/utils/pacat.c:357
#, c-format
msgid "Stream overrun.%s \n"
msgstr "æµè¶
éè¿è¡ã%s\n"
-#: ../src/utils/pacat.c:231
+#: ../src/utils/pacat.c:364
#, c-format
msgid "Stream started.%s \n"
msgstr "æµå·²å¯å¨ã%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
msgstr "æµç§»è³è®¾å¤%s ï¼%uï¼%sæèµ·ï¼ã%s\n"
-#: ../src/utils/pacat.c:238
+#: ../src/utils/pacat.c:371
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:245
+#: ../src/utils/pacat.c:378
#, c-format
msgid "Stream buffer attributes changed.%s \n"
msgstr "æ´æ¹æµæ¢åºå±æ§ã%s\n"
-#: ../src/utils/pacat.c:278
+#: ../src/utils/pacat.c:411
#, c-format
msgid "Connection established.%s \n"
msgstr "è¿æ¥å·²å»ºç«ã%s \n"
-#: ../src/utils/pacat.c:281
+#: ../src/utils/pacat.c:414
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new()失败ï¼%s\n"
-#: ../src/utils/pacat.c:309
+#: ../src/utils/pacat.c:442
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback()失败ï¼%s\n"
-#: ../src/utils/pacat.c:315
+#: ../src/utils/pacat.c:448
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_playback()失败ï¼%s\n"
-#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:767
#, c-format
msgid "Connection failure: %s\n"
msgstr "è¿æ¥å¤±è´¥ï¼%s\n"
-#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
-#, c-format
-msgid "Failed to drain stream: %s\n"
-msgstr "æåºæµå¤±è´¥ï¼%s\n"
-
-#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
-#, c-format
-msgid "Playback stream drained.\n"
-msgstr "æµææ¾å®æ¯ã\n"
-
-#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
-#, c-format
-msgid "Draining connection to server.\n"
-msgstr "Draining è¿æ¥å°æå¡å¨ã\n"
-
-#: ../src/utils/pacat.c:390
-#, c-format
+#: ../src/utils/pacat.c:495
msgid "Got EOF.\n"
msgstr "æ¶å°EOFã\n"
-#: ../src/utils/pacat.c:396
-#, c-format
-msgid "pa_stream_drain(): %s\n"
-msgstr "pa_stream_drain()ï¼%s\n"
-
-#: ../src/utils/pacat.c:406
+#: ../src/utils/pacat.c:500
#, c-format
msgid "read() failed: %s\n"
msgstr "read()失败ï¼%s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:532
#, c-format
msgid "write() failed: %s\n"
msgstr "write()失败ï¼%s\n"
-#: ../src/utils/pacat.c:459
-#, c-format
+#: ../src/utils/pacat.c:553
msgid "Got signal, exiting.\n"
msgstr "æ¶å°ä¿¡å·ï¼æ£å¨éåºã\n"
-#: ../src/utils/pacat.c:473
+#: ../src/utils/pacat.c:567
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "è·åä¼ è¾å»¶è¿å¤±è´¥ï¼%s\n"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:572
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "æ¶é´ï¼%0.3fç§ï¼å»¶è¿ï¼%0.0f å¾®ç§ã \r"
-#: ../src/utils/pacat.c:498
+#: ../src/utils/pacat.c:592
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info()失败ï¼%s\n"
-#: ../src/utils/pacat.c:511
-#, c-format
+#: ../src/utils/pacat.c:605
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -1435,8 +1435,10 @@ msgid ""
"44100)\n"
" --format=SAMPLEFORMAT The sample type, one of s16le, "
"s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be "
-"(defaults to s16ne)\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (defaults to "
+"s16ne)\n"
" --channels=CHANNELS The number of channels, 1 for mono, "
"2 for stereo\n"
" (defaults to 2)\n"
@@ -1459,6 +1461,11 @@ msgid ""
"bytes.\n"
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
+" --raw Record/play raw PCM data.\n"
+" --file-format=FFORMAT Record/play formatted PCM data.\n"
+" --list-file-formats List available file formats.\n"
msgstr ""
"%s [options]\n"
"\n"
@@ -1493,7 +1500,7 @@ msgstr ""
" --latency=BYTES 请æ±æå®åèæ°ç延è¿ã\n"
" --process-time=BYTES æ¯æ¬¡è¯·æ±æå®åèæ°çå¤çæ¶é´ã\n"
-#: ../src/utils/pacat.c:612
+#: ../src/utils/pacat.c:727
#, c-format
msgid ""
"pacat %s\n"
@@ -1504,88 +1511,133 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pacat.c:669
+#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:851
+#, fuzzy, c-format
+msgid "Invalid client name '%s'\n"
+msgstr "æ æçééæ å°æè¿°'%s'\n"
+
+#: ../src/utils/pacat.c:776
+#, fuzzy, c-format
+msgid "Invalid stream name '%s'\n"
+msgstr "æ æçééæ ·æ¹æ³'%s'ã"
+
+#: ../src/utils/pacat.c:813
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "æ æçééæ å°æè¿°'%s'\n"
-#: ../src/utils/pacat.c:698
+#: ../src/utils/pacat.c:842
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "æ æç延è¿è§æ ¼æè¿° %s'\n"
-#: ../src/utils/pacat.c:705
+#: ../src/utils/pacat.c:849
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "æ æçå¤çæ¶é´æè¿° '%s'\n"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:861
+#, fuzzy, c-format
+msgid "Invalid property '%s'\n"
+msgstr "æ æçééæ ·æ¹æ³'%s'ã"
+
+#: ../src/utils/pacat.c:878
#, c-format
+msgid "Unknown file format %s."
+msgstr ""
+
+#: ../src/utils/pacat.c:897
msgid "Invalid sample specification\n"
msgstr "æ æçéæ ·æè¿°\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:907
#, c-format
+msgid "open(): %s\n"
+msgstr "open()ï¼%s\n"
+
+#: ../src/utils/pacat.c:912
+#, c-format
+msgid "dup2(): %s\n"
+msgstr "dup2()ï¼%s\n"
+
+#: ../src/utils/pacat.c:919
+msgid "Too many arguments.\n"
+msgstr "åæ°è¿å¤ã\n"
+
+#: ../src/utils/pacat.c:930
+#, fuzzy
+msgid "Failed to generate sample specification for file.\n"
+msgstr "è·åéæ ·ä¿¡æ¯å¤±è´¥ï¼%s\n"
+
+#: ../src/utils/pacat.c:950
+#, fuzzy
+msgid "Failed to open audio file.\n"
+msgstr "æå¼å£°é³æ件失败ã\n"
+
+#: ../src/utils/pacat.c:956
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:895
+#, fuzzy
+msgid "Failed to determine sample specification from file.\n"
+msgstr "è·åéæ ·ä¿¡æ¯å¤±è´¥ï¼%s\n"
+
+#: ../src/utils/pacat.c:968
+msgid "Warning: Failed to determine channel map from file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:979
msgid "Channel map doesn't match sample specification\n"
msgstr "ééæ å°ä¸éæ ·æè¿°ä¸å¹é
\n"
-#: ../src/utils/pacat.c:728
-#, c-format
-msgid "Opening a %s stream with sample specification '%s'.\n"
+#: ../src/utils/pacat.c:990
+msgid "Warning: failed to write channel map to file.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:1005
+#, fuzzy, c-format
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'.\n"
msgstr "以éæ ·è§æ ¼'%s'æå¼%sæµã\n"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "recording"
msgstr "æ£å¨å½å¶"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:1006
msgid "playback"
msgstr "åæ¾"
-#: ../src/utils/pacat.c:736
-#, c-format
-msgid "open(): %s\n"
-msgstr "open()ï¼%s\n"
-
-#: ../src/utils/pacat.c:741
-#, c-format
-msgid "dup2(): %s\n"
-msgstr "dup2()ï¼%s\n"
-
-#: ../src/utils/pacat.c:751
-#, c-format
-msgid "Too many arguments.\n"
-msgstr "åæ°è¿å¤ã\n"
-
-#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277
+#: ../src/utils/pactl.c:1033
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new()失败ã\n"
-#: ../src/utils/pacat.c:785
-#, c-format
+#: ../src/utils/pacat.c:1051
msgid "io_new() failed.\n"
msgstr "io_new()失败ã\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290
+#: ../src/utils/pactl.c:1045
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new()失败ã\n"
-#: ../src/utils/pacat.c:799
+#: ../src/utils/pacat.c:1066
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s\n"
msgstr "pa_context_connect()失败ï¼%s"
-#: ../src/utils/pacat.c:810
-#, c-format
+#: ../src/utils/pacat.c:1077
msgid "time_new() failed.\n"
msgstr "time_new()失败ã\n"
-#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
+#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298
+#: ../src/utils/pactl.c:1056
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run()失败ã\n"
@@ -1615,8 +1667,7 @@ msgstr "æ¢å¤å¤±è´¥ï¼%s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "è¦åï¼éæ¬å°å£°é³æå¡å¨ï¼ä¸ä¼æèµ·ã\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
-#: ../src/utils/paplay.c:191
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:773
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "æ¶å°SIGINTï¼æ£å¨éåºã\n"
@@ -1644,7 +1695,7 @@ msgstr ""
" -s, --server=SERVER è¦è¿æ¥çæå¡å¨å\n"
"\n"
-#: ../src/utils/pasuspender.c:251
+#: ../src/utils/pasuspender.c:248
#, c-format
msgid ""
"pasuspender %s\n"
@@ -1655,32 +1706,32 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:108
+#: ../src/utils/pactl.c:113
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "è·åç»è®¡æ°æ®å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:114
+#: ../src/utils/pactl.c:119
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "å½å使ç¨ï¼%uåï¼æ»å
±%såèã\n"
-#: ../src/utils/pactl.c:117
+#: ../src/utils/pactl.c:122
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
msgstr "æ´ä¸ªçå½å¨ææå¾åé
ï¼%uåï¼æ»å
±%såèã\n"
-#: ../src/utils/pactl.c:120
+#: ../src/utils/pactl.c:125
#, c-format
msgid "Sample cache size: %s\n"
msgstr "éæ ·ç¼å大å°ï¼%s\n"
-#: ../src/utils/pactl.c:129
+#: ../src/utils/pactl.c:134
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "è·åæå¡å¨ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:137
+#: ../src/utils/pactl.c:142
#, c-format
msgid ""
"User name: %s\n"
@@ -1703,12 +1754,12 @@ msgstr ""
"é»è®¤æºï¼ %s\n"
"Cookieï¼%08x\n"
-#: ../src/utils/pactl.c:178
+#: ../src/utils/pactl.c:183
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "è·åé³é¢åºå£ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:194
+#: ../src/utils/pactl.c:199
#, c-format
msgid ""
"Sink #%u\n"
@@ -1747,12 +1798,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:258
+#: ../src/utils/pactl.c:263
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "è·åé³é¢å
¥å£ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:274
+#: ../src/utils/pactl.c:279
#, c-format
msgid ""
"Source #%u\n"
@@ -1791,20 +1842,20 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
-#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
-#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
-#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:594
+#: ../src/utils/pactl.c:311 ../src/utils/pactl.c:355 ../src/utils/pactl.c:390
+#: ../src/utils/pactl.c:427 ../src/utils/pactl.c:486 ../src/utils/pactl.c:487
+#: ../src/utils/pactl.c:497 ../src/utils/pactl.c:541 ../src/utils/pactl.c:542
+#: ../src/utils/pactl.c:548 ../src/utils/pactl.c:591 ../src/utils/pactl.c:592
+#: ../src/utils/pactl.c:599
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:324
+#: ../src/utils/pactl.c:329
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "è·å模åä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:342
+#: ../src/utils/pactl.c:347
#, c-format
msgid ""
"Module #%u\n"
@@ -1821,12 +1872,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:361
+#: ../src/utils/pactl.c:366
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "è·å客æ·ç«¯ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:379
+#: ../src/utils/pactl.c:384
#, c-format
msgid ""
"Client #%u\n"
@@ -1841,12 +1892,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:396
+#: ../src/utils/pactl.c:401
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "è·å声å¡ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:414
+#: ../src/utils/pactl.c:419
#, c-format
msgid ""
"Card #%u\n"
@@ -1863,22 +1914,22 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:428
+#: ../src/utils/pactl.c:433
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiles:\n"
-#: ../src/utils/pactl.c:434
+#: ../src/utils/pactl.c:439
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tActive Profile: %s\n"
-#: ../src/utils/pactl.c:445
+#: ../src/utils/pactl.c:450
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "è·åé³é¢åºå£è¾å
¥ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:464
+#: ../src/utils/pactl.c:469
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1915,12 +1966,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:503
+#: ../src/utils/pactl.c:508
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "è·åé³é¢å
¥å£è¾åºä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:523
+#: ../src/utils/pactl.c:528
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1949,12 +2000,12 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:554
+#: ../src/utils/pactl.c:559
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "è·åéæ ·ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:572
+#: ../src/utils/pactl.c:577
#, c-format
msgid ""
"Sample #%u\n"
@@ -1985,22 +2036,21 @@ msgstr ""
"\tProperties:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#: ../src/utils/pactl.c:607 ../src/utils/pactl.c:617
#, c-format
msgid "Failure: %s\n"
msgstr "失败ï¼%s\n"
-#: ../src/utils/pactl.c:636
+#: ../src/utils/pactl.c:641
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ä¸ä¼ éæ ·å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:653
-#, c-format
+#: ../src/utils/pactl.c:658
msgid "Premature end of file\n"
msgstr "æ件è¿æ©ç»æ\n"
-#: ../src/utils/pactl.c:774
+#: ../src/utils/pactl.c:779
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2047,7 +2097,7 @@ msgstr ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
-#: ../src/utils/pactl.c:826
+#: ../src/utils/pactl.c:831
#, c-format
msgid ""
"pactl %s\n"
@@ -2058,71 +2108,64 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:865
-#, c-format
+#: ../src/utils/pactl.c:877
msgid "Please specify a sample file to load\n"
msgstr "请æå®è¦å è½½çéæ ·æ件\n"
-#: ../src/utils/pactl.c:887
-#, c-format
+#: ../src/utils/pactl.c:890
msgid "Failed to open sound file.\n"
msgstr "æå¼å£°é³æ件失败ã\n"
-#: ../src/utils/pactl.c:899
-#, c-format
+#: ../src/utils/pactl.c:902
+#, fuzzy
+msgid "Warning: Failed to determine sample specification from file.\n"
+msgstr "以éæ ·è§æ ¼'%s'æå¼%sæµã\n"
+
+#: ../src/utils/pactl.c:912
msgid "You have to specify a sample name to play\n"
msgstr "ä½ å¿
é¡»æå®è¦ææ¾çéæ ·å\n"
-#: ../src/utils/pactl.c:911
-#, c-format
+#: ../src/utils/pactl.c:924
msgid "You have to specify a sample name to remove\n"
msgstr "ä½ å¿
é¡»æå®è¦å é¤çéæ ·å\n"
-#: ../src/utils/pactl.c:919
-#, c-format
+#: ../src/utils/pactl.c:933
msgid "You have to specify a sink input index and a sink\n"
msgstr "ä½ å¿
é¡»æå®é³é¢åºå£ç´¢å¼åé³é¢åºå£\n"
-#: ../src/utils/pactl.c:928
-#, c-format
+#: ../src/utils/pactl.c:943
msgid "You have to specify a source output index and a source\n"
msgstr "ä½ å¿
é¡»æå®é³é¢å
¥å£è¾åºç´¢å¼åé³é¢å
¥å£\n"
-#: ../src/utils/pactl.c:942
-#, c-format
+#: ../src/utils/pactl.c:958
msgid "You have to specify a module name and arguments.\n"
msgstr "å¿
é¡»æå®æ¨¡ååååæ°ã\n"
-#: ../src/utils/pactl.c:962
-#, c-format
+#: ../src/utils/pactl.c:978
msgid "You have to specify a module index\n"
msgstr "å¿
é¡»æå®æ¨¡åç´¢å¼\n"
-#: ../src/utils/pactl.c:972
-#, c-format
+#: ../src/utils/pactl.c:988
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "ä¸å¯æå®å¤ä¸ªé³é¢åºå£ãå¿
é¡»æå®ä¸ä¸ªå¸å°å¼ã\n"
-#: ../src/utils/pactl.c:985
-#, c-format
+#: ../src/utils/pactl.c:1001
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "ä¸å¯æå®å¤ä¸ªæºãå¿
é¡»æå®ä¸ä¸ªå¸å°å¼ã\n"
-#: ../src/utils/pactl.c:997
-#, c-format
+#: ../src/utils/pactl.c:1013
msgid "You have to specify a card name/index and a profile name\n"
msgstr "ä½ å¿
é¡»æå®å£°å¡å称/ç´¢å¼å侧åå称\n"
-#: ../src/utils/pactl.c:1012
-#, c-format
+#: ../src/utils/pactl.c:1028
msgid "No valid command specified.\n"
msgstr "æªæå®ææçå½ä»¤ã\n"
-#: ../src/utils/pactl.c:1037 ../src/utils/paplay.c:404
+#: ../src/utils/pactl.c:1051
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect()失败ï¼%s"
@@ -2205,126 +2248,48 @@ msgstr "å è½½cookieæ°æ®å¤±è´¥\n"
msgid "Not yet implemented.\n"
msgstr "å°æªå®ç°ã\n"
-#: ../src/utils/pacmd.c:64
+#: ../src/utils/pacmd.c:61
+msgid "No PulseAudio daemon running, or not running as session daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:66
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0)ï¼%s"
-#: ../src/utils/pacmd.c:81
+#: ../src/utils/pacmd.c:83
#, c-format
msgid "connect(): %s"
msgstr "connect()ï¼%s"
-#: ../src/utils/pacmd.c:89
+#: ../src/utils/pacmd.c:91
msgid "Failed to kill PulseAudio daemon."
msgstr "ææ»PulseAudioåå°ç¨åºå¤±è´¥ã"
-#: ../src/utils/pacmd.c:97
+#: ../src/utils/pacmd.c:99
msgid "Daemon not responding."
msgstr "åå°ç¨åºæªååºã"
-#: ../src/utils/pacmd.c:144
+#: ../src/utils/pacmd.c:146
#, c-format
msgid "select(): %s"
msgstr "select()ï¼%s"
-#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
#, c-format
msgid "read(): %s"
msgstr "read()ï¼%s"
-#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
#, c-format
msgid "write(): %s"
msgstr "write()ï¼%s"
-#: ../src/utils/paplay.c:139
-#, c-format
-msgid "Stream successfully created\n"
-msgstr "æåå建æµ\n"
-
-#: ../src/utils/paplay.c:144
-#, c-format
-msgid "Stream errror: %s\n"
-msgstr "æµé误ï¼%s\n"
-
-#: ../src/utils/paplay.c:165
-#, c-format
-msgid "Connection established.\n"
-msgstr "è¿æ¥å·²å»ºç«ã\n"
-
-#: ../src/utils/paplay.c:198
-#, c-format
-msgid ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help Show this help\n"
-" --version Show version\n"
-"\n"
-" -v, --verbose Enable verbose operation\n"
-"\n"
-" -s, --server=SERVER The name of the server to connect "
-"to\n"
-" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the "
-"server\n"
-" --stream-name=NAME How to call this stream on the "
-"server\n"
-" --volume=VOLUME Specify the initial (linear) volume "
-"in range 0...65536\n"
-" --channel-map=CHANNELMAP Set the channel map to the use\n"
-msgstr ""
-"%s [options] [FILE]\n"
-"\n"
-" -h, --help æ¾ç¤ºæ¤å¸®å©\n"
-" --version æ¾ç¤ºçæ¬\n"
-"\n"
-" -v, --verbose å¯ç¨è¯¦è¿°æä½\n"
-"\n"
-" -s, --server=SERVER è¦è¿æ¥çæå¡å¨å\n"
-" -d, --device=DEVICE è¦è¿æ¥çé³é¢åºå£å\n"
-" -n, --client-name=NAME æ¤å®¢æ·ç«¯å¨æå¡å¨ä¸çå称\n"
-" --stream-name=NAME æ¤æµå¨æå¡å¨ä¸çå称\n"
-" --volume=VOLUME æå®åå§ï¼çº¿æ§ï¼é³éï¼åå¼å¨0...65536"
-"ä¹é´\n"
-" --channel-map=CHANNELMAP 设å®ä½¿ç¨çééæ å°è¡¨\n"
-
-#: ../src/utils/paplay.c:255
-#, c-format
-msgid ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-msgstr ""
-"paplay %s\n"
-"Compiled with libpulse %s\n"
-"Linked with libpulse %s\n"
-
-#: ../src/utils/paplay.c:292
-#, c-format
-msgid "Invalid channel map\n"
-msgstr "æ æçééæ å°è¡¨\n"
-
-#: ../src/utils/paplay.c:314
-#, c-format
-msgid "Failed to open file '%s'\n"
-msgstr "æå¼æ件'%s'失败\n"
-
-#: ../src/utils/paplay.c:350
-#, c-format
-msgid "Channel map doesn't match file.\n"
-msgstr "ééæ å°è¡¨ä¸æ件ä¸å¹é
ã\n"
-
-#: ../src/utils/paplay.c:376
-#, c-format
-msgid "Using sample spec '%s'\n"
-msgstr "æ£å¨ä½¿ç¨éæ ·è§æ ¼'%s'\n"
-
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "ä¸è½è®¿é®autospawnéã"
-#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#: ../src/modules/alsa/alsa-sink.c:446 ../src/modules/alsa/alsa-sink.c:594
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2340,7 +2305,7 @@ msgstr ""
"æéæ们设置 POLLOUT -- ä½ç»ææ¯ snd_pcm_avail() è¿å 0 æè
å¦ä¸ä¸ªå°äºæå°å¯"
"ç¨å¼çæ°å¼ã"
-#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#: ../src/modules/alsa/alsa-source.c:430 ../src/modules/alsa/alsa-source.c:569
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2356,34 +2321,99 @@ msgstr ""
"æéæ们设置 POLLOUT -- ä½ç»ææ¯ snd_pcm_avail() è¿å 0 æè
å¦ä¸ä¸ªå°äºæå°å¯"
"ç¨å¼çæ°å¼ã"
-#: ../src/modules/alsa/module-alsa-card.c:114
+#: ../src/modules/alsa/module-alsa-card.c:120
#, c-format
msgid "Output %s + Input %s"
msgstr "è¾åº %s + è¾å
¥ %s"
-#: ../src/modules/alsa/module-alsa-card.c:117
+#: ../src/modules/alsa/module-alsa-card.c:123
#, c-format
msgid "Output %s"
msgstr "è¾åº %s"
-#: ../src/modules/alsa/module-alsa-card.c:121
+#: ../src/modules/alsa/module-alsa-card.c:127
#, c-format
msgid "Input %s"
msgstr "è¾å
¥ %s"
-#: ../src/modules/alsa/module-alsa-card.c:170
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2006
+#: ../src/modules/alsa/module-alsa-card.c:176
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2058
msgid "Off"
msgstr "å
³é"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1976
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2028
msgid "High Fidelity Playback (A2DP)"
msgstr "é«ä¿çåæ¾ï¼A2DPï¼"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:1991
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2043
msgid "Telephony Duplex (HSP/HFP)"
msgstr "åå·¥çµè¯ï¼HSP/HFPï¼"
-#: ../src/modules/reserve-wrap.c:139
+#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "PulseAudio 声é³æå¡å¨"
+
+#~ msgid "Stream successfully created\n"
+#~ msgstr "æåå建æµ\n"
+
+#~ msgid "Stream errror: %s\n"
+#~ msgstr "æµé误ï¼%s\n"
+
+#~ msgid "Connection established.\n"
+#~ msgstr "è¿æ¥å·²å»ºç«ã\n"
+
+#~ msgid ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help Show this help\n"
+#~ " --version Show version\n"
+#~ "\n"
+#~ " -v, --verbose Enable verbose operation\n"
+#~ "\n"
+#~ " -s, --server=SERVER The name of the server to connect "
+#~ "to\n"
+#~ " -d, --device=DEVICE The name of the sink to connect "
+#~ "to\n"
+#~ " -n, --client-name=NAME How to call this client on the "
+#~ "server\n"
+#~ " --stream-name=NAME How to call this stream on the "
+#~ "server\n"
+#~ " --volume=VOLUME Specify the initial (linear) "
+#~ "volume in range 0...65536\n"
+#~ " --channel-map=CHANNELMAP Set the channel map to the use\n"
+#~ msgstr ""
+#~ "%s [options] [FILE]\n"
+#~ "\n"
+#~ " -h, --help æ¾ç¤ºæ¤å¸®å©\n"
+#~ " --version æ¾ç¤ºçæ¬\n"
+#~ "\n"
+#~ " -v, --verbose å¯ç¨è¯¦è¿°æä½\n"
+#~ "\n"
+#~ " -s, --server=SERVER è¦è¿æ¥çæå¡å¨å\n"
+#~ " -d, --device=DEVICE è¦è¿æ¥çé³é¢åºå£å\n"
+#~ " -n, --client-name=NAME æ¤å®¢æ·ç«¯å¨æå¡å¨ä¸çå称\n"
+#~ " --stream-name=NAME æ¤æµå¨æå¡å¨ä¸çå称\n"
+#~ " --volume=VOLUME æå®åå§ï¼çº¿æ§ï¼é³éï¼åå¼å¨"
+#~ "0...65536ä¹é´\n"
+#~ " --channel-map=CHANNELMAP 设å®ä½¿ç¨çééæ å°è¡¨\n"
+
+#~ msgid ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+#~ msgstr ""
+#~ "paplay %s\n"
+#~ "Compiled with libpulse %s\n"
+#~ "Linked with libpulse %s\n"
+
+#~ msgid "Invalid channel map\n"
+#~ msgstr "æ æçééæ å°è¡¨\n"
+
+#~ msgid "Failed to open file '%s'\n"
+#~ msgstr "æå¼æ件'%s'失败\n"
+
+#~ msgid "Channel map doesn't match file.\n"
+#~ msgstr "ééæ å°è¡¨ä¸æ件ä¸å¹é
ã\n"
+
+#~ msgid "Using sample spec '%s'\n"
+#~ msgstr "æ£å¨ä½¿ç¨éæ ·è§æ ¼'%s'\n"
--
hooks/post-receive
PulseAudio Sound Server
More information about the pulseaudio-commits
mailing list