summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd@debian.org>2009-04-15 22:50:00 +0100
committerSjoerd Simons <sjoerd@debian.org>2009-04-15 22:50:00 +0100
commit2333d7cffc05252fa3185ca126ef1ff0b5d73aa6 (patch)
treee2014ac84fbfcd8bda713784aa64edc4f061af93
parent897e73dc49c7f4019450a21fec07d054d769d1dc (diff)
Imported Upstream version 0.9.15
-rw-r--r--ChangeLog442
-rw-r--r--Makefile.in19
-rwxr-xr-xconfigure115
-rw-r--r--configure.ac2
-rw-r--r--doxygen/Makefile.in19
-rw-r--r--m4/intltool.m464
-rw-r--r--man/Makefile.in19
-rw-r--r--po/ChangeLog24
-rw-r--r--po/LINGUAS14
-rw-r--r--po/Makefile.in.in4
-rw-r--r--po/POTFILES.in7
-rw-r--r--po/as.po2435
-rw-r--r--po/bn_IN.po2451
-rw-r--r--po/ca.po733
-rw-r--r--po/cs.po326
-rw-r--r--po/de.po326
-rw-r--r--po/el.po326
-rw-r--r--po/es.po759
-rw-r--r--po/fi.po943
-rw-r--r--po/fr.po326
-rw-r--r--po/gu.po2432
-rw-r--r--po/it.po475
-rw-r--r--po/kn.po2451
-rw-r--r--po/mr.po2433
-rw-r--r--po/nl.po2114
-rw-r--r--po/or.po2437
-rw-r--r--po/pa.po2126
-rw-r--r--po/pl.po347
-rw-r--r--po/pt_BR.po326
-rw-r--r--po/sr.po2462
-rw-r--r--po/sr@latin.po2465
-rw-r--r--po/sv.po326
-rw-r--r--po/ta.po2454
-rw-r--r--po/te.po2431
-rw-r--r--po/zh_CN.po760
-rw-r--r--src/Makefile.am36
-rw-r--r--src/Makefile.in280
-rw-r--r--src/daemon/cpulimit.c2
-rwxr-xr-xsrc/daemon/default.pa.in6
-rw-r--r--src/daemon/main.c73
-rw-r--r--src/map-file1
-rw-r--r--src/modules/alsa/alsa-sink.c86
-rw-r--r--src/modules/alsa/alsa-source.c70
-rw-r--r--src/modules/alsa/alsa-util.c120
-rw-r--r--src/modules/alsa/alsa-util.h19
-rw-r--r--src/modules/alsa/module-alsa-card.c3
-rw-r--r--src/modules/alsa/module-alsa-sink.c4
-rw-r--r--src/modules/alsa/module-alsa-source.c4
-rw-r--r--src/modules/bluetooth/bluetooth-util.c373
-rw-r--r--src/modules/bluetooth/bluetooth-util.h58
-rw-r--r--src/modules/bluetooth/ipc.c1
-rw-r--r--src/modules/bluetooth/ipc.h73
-rw-r--r--src/modules/bluetooth/module-bluetooth-device.c1058
-rw-r--r--src/modules/bluetooth/module-bluetooth-discover.c106
-rw-r--r--src/modules/bluetooth/module-bluetooth-proximity.c6
-rw-r--r--src/modules/bluetooth/sbc.c49
-rw-r--r--src/modules/bluetooth/sbc.h28
-rw-r--r--src/modules/hal-util.c2
-rw-r--r--src/modules/module-card-restore.c3
-rw-r--r--src/modules/module-combine.c24
-rw-r--r--src/modules/module-console-kit.c2
-rw-r--r--src/modules/module-cork-music-on-phone.c1
-rw-r--r--src/modules/module-default-device-restore.c4
-rw-r--r--src/modules/module-device-restore.c2
-rw-r--r--src/modules/module-esound-sink.c24
-rw-r--r--src/modules/module-hal-detect.c35
-rw-r--r--src/modules/module-jack-sink.c21
-rw-r--r--src/modules/module-jack-source.c10
-rw-r--r--src/modules/module-ladspa-sink.c12
-rw-r--r--src/modules/module-lirc.c33
-rw-r--r--src/modules/module-match.c2
-rw-r--r--src/modules/module-mmkbd-evdev.c39
-rw-r--r--src/modules/module-null-sink.c20
-rw-r--r--src/modules/module-pipe-sink.c2
-rw-r--r--src/modules/module-pipe-source.c1
-rw-r--r--src/modules/module-raop-discover.c2
-rw-r--r--src/modules/module-raop-sink.c22
-rw-r--r--src/modules/module-remap-sink.c10
-rw-r--r--src/modules/module-sine-source.c7
-rw-r--r--src/modules/module-solaris.c105
-rw-r--r--src/modules/module-stream-restore.c150
-rw-r--r--src/modules/module-tunnel.c254
-rw-r--r--src/modules/module-x11-publish.c14
-rw-r--r--src/modules/module-zeroconf-discover.c2
-rw-r--r--src/modules/oss/module-oss.c6
-rw-r--r--src/modules/reserve-wrap.c21
-rw-r--r--src/modules/rtp/module-rtp-recv.c87
-rw-r--r--src/modules/rtp/module-rtp-send.c6
-rw-r--r--src/modules/rtp/rtp.c21
-rw-r--r--src/modules/rtp/rtp.h2
-rw-r--r--src/modules/rtp/rtsp_client.c4
-rw-r--r--src/modules/udev-util.c4
-rw-r--r--src/pulse/channelmap.h6
-rw-r--r--src/pulse/client-conf-x11.c15
-rw-r--r--src/pulse/client-conf.c31
-rw-r--r--src/pulse/client-conf.h2
-rw-r--r--src/pulse/context.c130
-rw-r--r--src/pulse/context.h7
-rw-r--r--src/pulse/def.h39
-rw-r--r--src/pulse/fork-detect.c2
-rw-r--r--src/pulse/internal.h19
-rw-r--r--src/pulse/introspect.h20
-rw-r--r--src/pulse/mainloop-signal.c5
-rw-r--r--src/pulse/mainloop.h2
-rw-r--r--src/pulse/proplist.h2
-rw-r--r--src/pulse/pulseaudio.h2
-rw-r--r--src/pulse/sample.h4
-rw-r--r--src/pulse/stream.c162
-rw-r--r--src/pulse/stream.h90
-rw-r--r--src/pulse/subscribe.h2
-rw-r--r--src/pulse/timeval.h2
-rw-r--r--src/pulse/version.h2
-rw-r--r--src/pulse/volume.c10
-rw-r--r--src/pulse/volume.h8
-rw-r--r--src/pulsecore/authkey.c2
-rw-r--r--src/pulsecore/card.c11
-rw-r--r--src/pulsecore/card.h6
-rw-r--r--src/pulsecore/cli-command.c30
-rw-r--r--src/pulsecore/cli-text.c68
-rw-r--r--src/pulsecore/core-util.c56
-rw-r--r--src/pulsecore/core-util.h1
-rw-r--r--src/pulsecore/dbus-shared.c107
-rw-r--r--src/pulsecore/dbus-shared.h42
-rw-r--r--src/pulsecore/dbus-util.c (renamed from src/modules/dbus-util.c)143
-rw-r--r--src/pulsecore/dbus-util.h (renamed from src/modules/dbus-util.h)20
-rw-r--r--src/pulsecore/hook-list.c6
-rw-r--r--src/pulsecore/hook-list.h2
-rw-r--r--src/pulsecore/log.c39
-rw-r--r--src/pulsecore/log.h4
-rw-r--r--src/pulsecore/macro.h34
-rw-r--r--src/pulsecore/memblock.c43
-rw-r--r--src/pulsecore/memblockq.c82
-rw-r--r--src/pulsecore/memblockq.h7
-rw-r--r--src/pulsecore/native-common.h6
-rw-r--r--src/pulsecore/parseaddr.c10
-rw-r--r--src/pulsecore/pdispatch.c15
-rw-r--r--src/pulsecore/proplist-util.c9
-rw-r--r--src/pulsecore/protocol-esound.c15
-rw-r--r--src/pulsecore/protocol-native.c647
-rw-r--r--src/pulsecore/refcnt.h44
-rw-r--r--src/pulsecore/rtclock.c16
-rw-r--r--src/pulsecore/sink-input.c216
-rw-r--r--src/pulsecore/sink-input.h33
-rw-r--r--src/pulsecore/sink.c376
-rw-r--r--src/pulsecore/sink.h29
-rw-r--r--src/pulsecore/socket-server.c23
-rw-r--r--src/pulsecore/source-output.c114
-rw-r--r--src/pulsecore/source-output.h14
-rw-r--r--src/pulsecore/source.c205
-rw-r--r--src/pulsecore/source.h11
-rw-r--r--src/pulsecore/time-smoother.c79
-rw-r--r--src/pulsecore/time-smoother.h14
-rw-r--r--src/tests/alsa-time-test.c2
-rw-r--r--src/tests/gtk-test.c41
-rw-r--r--src/tests/interpol-test.c42
-rw-r--r--src/tests/mainloop-test.c2
-rw-r--r--src/tests/memblockq-test.c18
-rw-r--r--src/tests/smoother-test.c8
-rw-r--r--src/tests/voltest.c3
-rw-r--r--src/utils/pacat.c10
160 files changed, 37284 insertions, 4786 deletions
diff --git a/ChangeLog b/ChangeLog
index 10f26da..704daa1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,441 @@
-2009-03-05 Diego Elio 'Flameeyes' Pettenò
- 21547d7: Properly check for versioning flags.
- cad3dd2: Make sure to set 'no' on the variable cached.
+2009-04-14 Lennart Poettering
+ ca9cd14: add a few missing initializations
+ 40d71e1: explcitly ignore return values of some functions marked with gcc's warn_unused_result attribute
+ 845b312: bump version for final 0.9.15 release
+ a4cea4e: core: when applying delay memblockq take monitored sink latency into account
+ 2d94c93: pacat: add missing newline
+ 4ee4a55: core: use pa_{source
+2009-04-13 Lennart Poettering
+ 16324fc: sort LINGUAS
+ a654155: run make update-po
+ c96f6f3: update LINGUAS
+ 0948dca: Merge commit 'origin/master-tx'
+ fe8b10c: core: introduce new 'reference' volume for sinks
+ 49dcf09: alsa: include the alsa mixer control that is used in the property list
+ 6fd8fd1: alsa: store mixer controls to use in profile data
+ 89f74cb: alsa: when passing emptry mixer control name, force sw volume
+ 237a9e1: volume: increase dB range to -90dB
+ 0ac038e: client-conf-x11: unbreak autospawn due to stale X11 properties
+ 0aed5ea: client-conf: when is set, disable autospawn setting
+ 4cc4cbd: client-conf: make setting a default server independant from the autospawn setting
+ 20aba71: proplist-util: use pa_session_id() instead of accessing 7b816367b01393ed3e3e650047d78f6e-1239640487.203609-1061245823 directly
+ 43650de: client-conf: modernize a few things
+ a36197c: print session id when starting up
+ 1d8da03: core-util: filter utf8 in pa_machine_id()
+ 1b4e5f1: core-util: add pa_session_id()
+ 17f1784: cork-music-on-phone: make sure that we don't check the refcnt of pa_core when the daemon goes down
+ 62db10c: lirc: fix logic behind mute buttons
+ 66d2184: mmkbd: get rid of support for ancient kernels
+ f1d3dfb: mmkbd,lirc: make use of pa_assert_not_reached()
+ 270a698: lirc, mmkbd: extend controllable volume range to PA_VOLUME_MAX
+ 6d218e9: api: introduce PA_VOLUME_MAX
+ e9dd7a5: lirc: drop lirc_in_use, it's made redundant by PA_MODULE_LOAD_ONCE
+ d8de5d3: make sure we never overflow when calculating sleep time
+
+2009-04-13 warrink
+ 2ba882c: Sending translation for po/nl.po
+
+2009-04-11 ifelix
+ 362ec7b: Sending translation for Tamil
+
+2009-04-10 Lennart Poettering
+ 6eaeaea: Downgrade default log level to NOTICE to follow documentation
+ a26c945: add missing languages to LINGUAS
+ 3e29fd7: prepare another snapshot
+ 991cb06: set fixed latencies at more places where appropriate
+
+2009-04-06 Finn Thain
+ 80e18c8: make dbus optional during build
+
+2009-04-10 Lennart Poettering
+ e011230: run make update-po
+ d6f019e: Merge commit 'origin/master-tx'
+ 5388b44: alsa: when printing warning about bogus data from alsa include snd_pcm_dump()
+ ee6657a: bluetooth: when starting up HSP stream, send 2 packets first, only afterwards enter one-read-one-write logic
+ d77b28c: bluetooth: rework timing logic, properly implement latency callbacks
+ e9a4dec: bluetooth: be a bit more verbose if we exit due to bad poll() revents flag
+ 48cff5b: bluetooth: rename sco to hsp also for the user
+ f7c229d: core: add a seperate fixed_latency field for sinks/sources with fixed latency
+ 9ae8ca2: core: memory leak, fix ref counting when moving streams
+ dcd4a73: dbus: memory leak, actually free dbus wrapper
+ d827ecd: dbus: drop pa_ prefix from static symbol
+ f8ebe85: protocol-native: downgrade message if we receive pcm block for dead stream
+ 5b87196: protocol-native: print underrun message only once for each underrun
+ 3507d1e: socket-server: memory leak, free machine id after use
+ 669703d: dbus: memory leak, free pending calls
+ 9ba9883: dbus: memory leak, free server id after use
+ 9ee6a41: bluetooth: memory leak, actually free discovery struct itself
+ f65b276: interpol-test: make it easier to test corking only optionally
+
+2009-04-09 elsupergomez
+ dac687d: Sending translation for Spanish
+
+2009-04-09 mgiri
+ d1cf6eb: Sending translation for Oriya
+ 6c5bbd3: Sending translation for Oriya
+
+2009-04-08 mgiri
+ 8e1a9b7: Sending translation for Oriya
+
+2009-04-08 kkrothap
+ 27784c4: Sending translation for Telugu
+
+2009-04-08 ifelix
+ 0474762: Sending translation for po/ta.po
+
+2009-04-08 runab
+ bb7beeb: Sending translation for Bengali (India)
+
+2009-04-08 amitakhya
+ 89f5da8: Sending translation for Assamese
+ b445f79: Sending translation for po/as.po
+
+2009-04-08 Lennart Poettering
+ 6c04a1c: bluetooth: make sure to set max_request
+ c32c6c8: introduce relative_volume field in sink_input and make use of it on sink flat volume change
+ 14e89d4: when calculating volume from dB use ceil()
+ 4ff41ec: print smallest attenuation/sample
+
+2009-04-07 kkrothap
+ 091a0f2: Sending translation for po/te.po
+
+2009-04-07 kmilos
+ f5eca5d: Sending translation for po/sr@latin.po
+ 7202d52: Sending translation for Serbian
+
+2009-04-07 mgiri
+ 5b0d1bf: Sending translation for Oriya
+ 54c895c: Sending translation for po/or.po
+
+2009-04-07 runab
+ 7154f06: Sending translation for po/bn_IN.po
+
+2009-04-07 Lennart Poettering
+ aacb11b: update documentation regarding stream timing a bit
+ c523b16: after propagating a sink volume change to the sink inputs recalculate their soft volumes
+ 93e14d3: we need to make our multiplications with linear values
+ 02686cc: reduce number of conversions to/from linear volumes
+ d612fbb: compare with doubles, not integer
+ e356a03: If the sink volume is lowered to 0 and then increased again, make sure all stream volumes follow instead of staying at 0
+ 2c2713a: make use of SO_TIMESTAMP timestamp for accuracy and leave smoother paused until we have data
+ f204c0f: mark null sink as support dynamic latency
+ 298bd0b: adjust max_rewind/max_request whenever the latency changes
+ e976034: send the source latency based on the MTU size
+ 61b0776: add suspend_within_thread() callbacks to pa_sink_input/pa_source_output
+ 35a4a0b: enable debugging output based on if DEBUG_DATA macro is set
+
+2009-04-07 swkothar
+ ff2dc1b: Sending translation for Gujarati
+
+2009-04-07 shanky
+ 682c101: Sending translation for po/kn.po
+
+2009-04-06 Lennart Poettering
+ 886ddc3: make sure we don't apply sampling rate fixes that bring the sampling freq > PA_RATE_MAX
+ e61728e: Make sure we don't get stuck when prebuf is too high
+ ff8d66d: extend documentation for pa_stream_cork() a bit
+ 7fc2382: properly handle interpolation when queried x is left of last data position
+ daa945a: don't fail device reservation if the D-Bus connection is dead
+ 4b521e5: be a bit more verbose about the busses we are connected to
+ 90f4fdb: make sure we keep a reference of the bus connection during the whole runtime if we manage to acquire the bus name
+
+2009-04-06 swkothar
+ f598776: Sending translation for Gujarati
+ b9b470e: Sending translation for Gujarati
+ 4c0a2e0: Sending translation for po/gu.po
+
+2009-04-06 sandeeps
+ a55c236: Sending translation for po/mr.po
+
+2009-04-06 leahliu
+ f709f2b: Sending translation for Chinese (Simplified)
+
+2009-04-05 soko
+ 6c0ce4d: Sending translation for po/sr@latin.po
+ c66e3fd: Sending translation for Serbian
+
+2009-04-05 raven
+ 015d66e: Sending translation for Polish
+
+2009-04-05 vpv
+ 4053e35: Sending translation for Finnish
+ d5e8488: Sending translation for Finnish
+ f5ec110: Sending translation for Finnish
+
+2009-04-05 Lennart Poettering
+ ecba42b: run make po-update
+ 9416cdf: Merge commit 'origin/master-tx'
+ 6ba3333: Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
+ 923c5bc: make it easy to disable interpolation in the interpolation test tool
+ 14e11e4: Fix a couple of races in native protocol
+ 7dafa87: don't try to outsmart the transport
+ ce73e71: introduce pa_{sink d035f4a: Modify smoothing code to make cubic interpolation optional and allow 'quick fixups' on resuming
+
+2009-04-04 vpv
+ 82d1301: Sending translation for Finnish
+
+2009-04-04 Lennart Poettering
+ ca39fa2: initialize sound cards only after the 'control' object appeared
+ 9bea250: increase log buffer further
+ 77a1e38: refuse to initialize on modem devices
+ f708328: add missing files to POTFILES.in
+ 99f45a6: run make update-po
+ f446f0e: Merge commit 'origin/master-tx'
+
+2009-04-01 Maarten Bosmans
+ 8bcb9c6: various spelling fixes
+
+2009-04-01 Luke Yelavich
+ ccaf765: POTFILES.IN: Refer to src/pulsecore/dbus-util.c
+
+2009-04-03 soko
+ a12f4e6: Sending translation for po/sr@latin.po
+ 310d47a: Sending translation for Serbian
+ 398e381: Sending translation for po/sr@latin.po
+ a0e46c2: Sending translation for Serbian
+
+2009-04-03 Lennart Poettering
+ 6152c52: Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
+ 143e1ba: downgrade a few messages
+
+2009-04-02 soko
+ 089a081: Sending translation for Serbian
+
+2009-04-02 leahliu
+ cb40e85: Sending translation for Chinese (Simplified)
+
+2009-04-01 Lennart Poettering
+ 1c26d7e: plot the difference between system and sound card time
+ 373b5ef: properly account for seeks in the requested_bytes counter
+ 380e97a: use machine id instead of hostname to identify local connections
+ dcb24f5: load bt discover module only when installed
+ 707acab: prepare test7
+ 75a8d18: pass destination source/sink when moving streams so that we can access them
+ c2f6d09: don't access i->sink if it is not set
+ d9b19f8: prepare test6
+ 5348cc1: increase timing update interval exponentially
+ aa1ad0d: in verbose mode log buffer attr changes
+ 0aa99c4: add buffer_attr callback stuff to exported symbol list
+
+2009-04-01 tombo
+ 1fa761a: Sending translation for Italian
+
+2009-03-31 Lennart Poettering
+ 4e8ceae: fix buffer defaults
+ 76c44d1: be a bit more verbose about max_request changes
+ cebaa98: Log underruns
+ 917e8cd: handle buffer_attr changed messages properly
+ 5cbd4b7: update command name table
+ ef5af55: fix an error where a signal was accidently freed when it is tried to register it twice
+ 2a32de1: Merge commit 'origin/master-tx'
+
+2009-03-31 beckerde
+ c29e9cf: Sending translation for Spanish
+ 2cd93ab: Sending translation for Spanish
+ 1e99255: Sending translation for Spanish
+
+2009-03-07 Finn Thain
+ 5e11972: revive solaris module
+
+2009-03-30 Kyle Cronan
+ 92ae5f1: Specifying ALSA mixer control
+
+2009-03-29 Maarten Bosmans
+ facc46d: fix some typos in doxygen comments
+
+2009-03-30 Maarten Bosmans
+ 4a40aed: handle failure to parse proplist in cli-command gracefully
+
+2009-03-31 Lennart Poettering
+ cab1e54: explain ff7033c11d9248fe837204b03c8397231dc511fe
+ ff7033c: Revert "make sure we always read in all properties"
+
+2009-03-30 Lennart Poettering
+ 29a282a: allow nofail mode only when no server string was specified
+ b6135b3: minor cleanups
+ 3df9eef: take org.pulseaudio.Server instead of org.pulseaudio to match the interface name already used in the HAL module
+ 857a1f4: fix compiler warning
+ 90fbc03: make sure we never access an invalid pa_bluetooth_device object
+ 1c8f968: make sure we always read in all properties
+ 66b80e9: get rid of old 'Connected' property parsing and make sure we don't execute two case branches
+ 91355a1: introduce typedef for pa_bt_audio_state and use it everywhere
+ 1390564: Merge commit 'elmarco/bluetooth-fixes'
+ d33be12: Merge commit 'elmarco/dbus'
+ 649c982: Use pa_source_set_max_rewind_within_thread() for updating the monitor source's max_rewind
+
+2009-03-27 Marc-André Lureau
+ 8491b47: gtk-test: updated to use PA_CONTEXT_NOAUTOSPAWN
+2009-03-20 Marc-André Lureau
+ 1dad83b: pulse: client connect to dbus
+ b4ef64d: daemon: take org.pulseaudio
+
+2009-03-19 Marc-André Lureau
+ eb93e25: dbus: split dbus-util into dbus-shared
+
+2009-03-30 Lennart Poettering
+ 1743322: Merge commit 'coling/master'
+ 061344f: Merge commit 'origin/master'
+ aa68036: rework tunneling code
+ 65b787d: notify clients about tlength changes
+ 491aafd: typo fix
+ b349dae: add pa_memblockq_apply_attr()/pa_memblockq_get_attr()
+ 7c37c37: document more often the context certain functions are called in
+ 7f5481e: simplify latency config functions a bit and make them callable in more contexts
+ d04f3e1: Trigger move callback a little bit earlier so that no IO thread is running
+ e3f1510: don't enabled tsched on software ALSA devices
+
+2009-03-27 Marc-André Lureau
+ 87fcb3d: bluetooth: use new audio State properties
+ 38825d7: bluetooth: GetProperties after profile UUID show up
+ 20bd1c6: bluetooth: remove racy GetProperties to check profile
+
+2009-03-26 Marc-André Lureau
+ 9e8c2d3: bluetooth: don't access outside array range
+
+2009-03-24 Marc-André Lureau
+ 61cd6d4: bluetooth: fail when switching on non-connected profile
+ 62a4e36: bluetooth: connected can be -1, check > 0
+
+2009-03-27 Lennart Poettering
+ 87d63b1: Small fix for MacOSX compat
+ db714bf: fix typo
+
+2009-03-26 Luiz Augusto von Dentz
+ 13f1c44: Do not reconfigure capabilities.
+
+2009-03-24 Luiz Augusto von Dentz
+ 168c741: Query and make use of the current configuration.
+
+2009-03-25 Luiz Augusto von Dentz
+ 071b3e7: Update ipc to match new message headers introduced on BlueZ 4.34.
+
+2009-03-23 Luiz Augusto von Dentz
+ b03c545: Fix misuse of 'frame.joint' when estimating the frame length.
+ f80a1f6: Maintain the original code style for sbc.
+
+2009-03-25 Colin Guthrie
+ 205cbe8: raop: Add call to pa_sink_set_max_request()
+
+2009-03-25 Lennart Poettering
+ 3813034: add missing initialization
+ cbbd986: make sure the discovery module is only loaded once
+ 39576ec: on monitor source be fine with any latency range set by the sink
+ 6defb1a: add missing whitespace
+ 2c1eaa7: copy latency flags from sink to monitor source
+ 4edb109: use u->use_tsched everywhere
+ 8282efc: fix value of DYNAMIC_LATENCY
+ c367a88: fix misplace _ref() calls that should have been _assert_ref()
+ f6a6d01: optionally skip initial frames in backtrace
+ 8460fac: don't show full so path in backtrace
+ e41ec51: add simple ref counting debugging framework
+ 577259b: trivial simplification
+ 119698a: beef up esd sink properties a bit
+ fdbe054: initialize max_request to SO_SNDBUF
+ 98a5f4a: don't fiddle with latency range in sources with static latency
+ d0bd3d9: initialize max_request
+ bcfe51f: again, don't fiddle with latency range in sinks with static latency
+ 59b7e53: Don't initialize userdata twice
+ b815a1c: don't fiddle with latency range because we cannot adjust it dynamically
+ 0316dba: set latency range only in tsched mode
+ 171c88f: link jack modules's max_request to the jack buffer size
+ 892a839: simplify things and make sure timing setters can be called in most contexts
+ 44ca897: introduce new flag that marks sinks/sources which can adjust the latency dynamically
+ 9bca59e: make pa_source_set_max_rewind() work similar to pa_sink_set_max_rewind()
+ 9151107: get rid of 'default' min/max latencies, simplify things by just having absolute boundaries
+
+2009-03-24 Marc-André Lureau
+ a7246bd: bluetooth: fix #NOKIA, correctly unlink sink/src
+
+2009-03-24 Lennart Poettering
+ 5b523d0: fix bad memory access when destroying m-b-d
+ c64d8cb: Allow calling pa_{sink 50695d9: minimal reordering
+ 2f9a784: set request/rewind sizes only via accessor functions
+ aa92ff4: simplify latency range by not allowing stored 'wildcard' ranges anymore
+ e6be948: only decrease timer slack, never increase
+
+2009-03-23 Lennart Poettering
+ bcbfd5b: don't fail when no session bus is available
+ 52dcb95: add pa_assert_cc() for compile time assertions
+
+2009-03-16 Marc-André Lureau
+ a467bec: pulse: check context (do not user pstream when NULL)
+
+2009-03-23 Lennart Poettering
+ 0815455: only store card profile if flagged for that
+ 124de50: enable bluetooth default by support
+ 906fd57: Merge commit 'origin/master-tx'
+
+2009-03-21 kmilos
+ 4c381cd: Sending translation for po/sr@latin.po
+ 29d1db6: Sending translation for po/sr.po
+
+2009-03-21 Lennart Poettering
+ c14da67: readd volume control logic
+ b3675c2: add functions that modules can call whenever they now the volume changed
+ 8d5b375: at a couple of #ifdef NOKIAs for now
+ 3aa3972: rework device discovery to share a single device list among all modules
+ 20488fb: add pa_hook_is_firing
+
+2009-03-20 Lennart Poettering
+ f5c8990: make sure we dispatch messages in order
+ 77a1db1: fix a misplaced assert
+ 888e44f: rework bluetooth IO loops
+ d2bee57: fix prototypes of remaining sbc.[ch] API regarding size_t/const
+ 99dae9b: don't try to unref reserve stuff if we don't use it
+ 0251078: fix channel mapping for a52 devices. Closes #508
+ 33a8f53: simply bluetooth nrec handling a bit
+ dfb3d2e: always remap relative volume properly
+ a998038: introduce pa_sink_input_get_relative_volume()
+ bd3154a: introduce pa_assert_fp() for fast path assertions
+
+2009-03-19 Xavier Conde
+ 5cc7d00: Update catalan po
+
+2009-03-19 Lennart Poettering
+ fe3709c: fix a comment
+ dd40006: document things that need to be fixed with FIXME
+ 3762299: unfuck i18n
+ 86439a4: Merge commit 'origin/master-tx'
+ 0a1af8e: Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
+ 4a98312: Merge commit 'elmarco/bluetooth-fixes'
+ 291d21c: fix prototypes of sbc functions a bit
+ 794775b: document todo items discussed at bt meeting
+ 303cd90: get rid of setsockopt() calls since they have never been implemented upstream
+
+2009-03-19 Marc-André Lureau
+ e836217: bluetooth: rework the info_valid logic to be more tolerant
+ f1daa28: bluetooth: mark info_valid when receive Connected
+
+2009-03-06 Marc-André Lureau
+ af9f92b: bluetooth: update SCO over PCM with latest changes
+
+2009-03-19 Marc-André Lureau
+ df3f4ee: bluetooth: load bluetooth device with connected profile
+
+2009-03-19 Lennart Poettering
+ 9744595: Merge commit '2d903bae9a2e57f997a3d3f335379c3880f95c77'
+ 4ebdee5: deduce a proper icon for TV sets
+ 3e8c7ac: Ignore HAL NoSuchProperty errors when looking for capabilities field. Closes rhbz #489394
+
+2009-03-12 Lennart Poettering
+ 2928b44: Merge commit 'elmarco/bluetooth-fixes'
+
+2009-03-12 A S Alam
+ 000f0b8: Adding Punjabi Language
+
+2009-03-05 Marc-André Lureau
+ 9e93b9c: bluetooth: stream also when source is suspended
+ 018cadd: bluetooth: restart timer when write begin
+ 362d196: bluetooth: accept temporarily unavailable error
+ 2d903ba: bluetooth: s/handled/not_yet_handled for signals
+ 12ea570: bluetooth: reset read/write index when starting to stream
+
+2009-03-05 Piotr Drąg
+ 5d00693: Updated Polish translation
2009-03-05 Lennart Poettering
+ 47bc3b7: prepare test5
c589da7: prepare release 0.9.15-test4
c6ed0e8: run make update-po
57baff5: Merge commit 'origin/master-tx'
@@ -12,6 +444,10 @@
3122008: try to detect when stupid clients forks and refuse all service from then on
9d29b96: make interpol test more interesting by corking/uncorking multiple times
+2009-03-05 Diego Elio 'Flameeyes' Pettenò
+ 21547d7: Properly check for versioning flags.
+ cad3dd2: Make sure to set 'no' on the variable cached.
+
2009-03-04 Lennart Poettering
dcee888: Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
3dd8800: fix typo in FOREIGN_CFLAGS
diff --git a/Makefile.in b/Makefile.in
index 6c87aa8..faf47ff 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -198,29 +198,10 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
-INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
-INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
-INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
-INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
-INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
-INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
INTLTOOL_PERL = @INTLTOOL_PERL@
-INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
-INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
-INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
-INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
-INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
-INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
-INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
-INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
-INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
-INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
-INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
JACK_CFLAGS = @JACK_CFLAGS@
JACK_LIBS = @JACK_LIBS@
LD = @LD@
diff --git a/configure b/configure
index bd6e19f..6b50cae 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for pulseaudio 0.9.15-test5.
+# Generated by GNU Autoconf 2.63 for pulseaudio 0.9.15.
#
# Report bugs to <mzchyfrnhqvb (at) 0pointer (dot) net>.
#
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='pulseaudio'
PACKAGE_TARNAME='pulseaudio'
-PACKAGE_VERSION='0.9.15-test5'
-PACKAGE_STRING='pulseaudio 0.9.15-test5'
+PACKAGE_VERSION='0.9.15'
+PACKAGE_STRING='pulseaudio 0.9.15'
PACKAGE_BUGREPORT='mzchyfrnhqvb (at) 0pointer (dot) net'
ac_unique_file="src/daemon/main.c"
@@ -1742,7 +1742,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures pulseaudio 0.9.15-test5 to adapt to many kinds of systems.
+\`configure' configures pulseaudio 0.9.15 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1812,7 +1812,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pulseaudio 0.9.15-test5:";;
+ short | recursive ) echo "Configuration of pulseaudio 0.9.15:";;
esac
cat <<\_ACEOF
@@ -2026,7 +2026,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pulseaudio configure 0.9.15-test5
+pulseaudio configure 0.9.15
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -2040,7 +2040,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by pulseaudio $as_me 0.9.15-test5, which was
+It was created by pulseaudio $as_me 0.9.15, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -2760,7 +2760,7 @@ fi
# Define the identity of the package.
PACKAGE='pulseaudio'
- VERSION='0.9.15-test5'
+ VERSION='0.9.15'
cat >>confdefs.h <<_ACEOF
@@ -22608,6 +22608,82 @@ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# Check the gettext tools to make sure they are GNU
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
@@ -22825,14 +22901,21 @@ fi
if test -z "$INTLTOOL_PERL"; then
- { { $as_echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5
-$as_echo "$as_me: error: perl not found; required for intltool" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: perl not found" >&5
+$as_echo "$as_me: error: perl not found" >&2;}
{ (exit 1); exit 1; }; }
fi
-if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
- { { $as_echo "$as_me:$LINENO: error: perl 5.x required for intltool" >&5
-$as_echo "$as_me: error: perl 5.x required for intltool" >&2;}
+{ $as_echo "$as_me:$LINENO: checking for perl >= 5.8.1" >&5
+$as_echo_n "checking for perl >= 5.8.1... " >&6; }
+$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
+if test $? -ne 0; then
+ { { $as_echo "$as_me:$LINENO: error: perl 5.8.1 is required for intltool" >&5
+$as_echo "$as_me: error: perl 5.8.1 is required for intltool" >&2;}
{ (exit 1); exit 1; }; }
+else
+ IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+ { $as_echo "$as_me:$LINENO: result: $IT_PERL_VERSION" >&5
+$as_echo "$IT_PERL_VERSION" >&6; }
fi
if test "x" != "xno-xml"; then
{ $as_echo "$as_me:$LINENO: checking for XML::Parser" >&5
@@ -29330,7 +29413,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by pulseaudio $as_me 0.9.15-test5, which was
+This file was extended by pulseaudio $as_me 0.9.15, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -29393,7 +29476,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-pulseaudio config.status 0.9.15-test5
+pulseaudio config.status 0.9.15
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
@@ -31223,7 +31306,7 @@ _LT_EOF
sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
esac ;;
"po/stamp-it":C)
- if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" ; then
+ if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then
{ { $as_echo "$as_me:$LINENO: error: po/Makefile.in.in was not created by intltoolize." >&5
$as_echo "$as_me: error: po/Makefile.in.in was not created by intltoolize." >&2;}
{ (exit 1); exit 1; }; }
diff --git a/configure.ac b/configure.ac
index 029899c..25cee57 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ m4_define(pa_major, [0])
m4_define(pa_minor, [9])
m4_define(pa_micro, [15])
-AC_INIT([pulseaudio],[pa_major.pa_minor.pa_micro-test5],[mzchyfrnhqvb (at) 0pointer (dot) net])
+AC_INIT([pulseaudio],[pa_major.pa_minor.pa_micro],[mzchyfrnhqvb (at) 0pointer (dot) net])
AC_CONFIG_SRCDIR([src/daemon/main.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
diff --git a/doxygen/Makefile.in b/doxygen/Makefile.in
index cec1574..961381b 100644
--- a/doxygen/Makefile.in
+++ b/doxygen/Makefile.in
@@ -149,29 +149,10 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
-INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
-INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
-INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
-INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
-INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
-INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
INTLTOOL_PERL = @INTLTOOL_PERL@
-INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
-INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
-INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
-INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
-INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
-INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
-INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
-INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
-INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
-INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
-INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
JACK_CFLAGS = @JACK_CFLAGS@
JACK_LIBS = @JACK_LIBS@
LD = @LD@
diff --git a/m4/intltool.m4 b/m4/intltool.m4
index 563981c..122d773 100644
--- a/m4/intltool.m4
+++ b/m4/intltool.m4
@@ -75,25 +75,25 @@ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcar
INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
-AC_SUBST(INTLTOOL_DESKTOP_RULE)
-AC_SUBST(INTLTOOL_DIRECTORY_RULE)
-AC_SUBST(INTLTOOL_KEYS_RULE)
-AC_SUBST(INTLTOOL_PROP_RULE)
-AC_SUBST(INTLTOOL_OAF_RULE)
-AC_SUBST(INTLTOOL_PONG_RULE)
-AC_SUBST(INTLTOOL_SERVER_RULE)
-AC_SUBST(INTLTOOL_SHEET_RULE)
-AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
-AC_SUBST(INTLTOOL_UI_RULE)
-AC_SUBST(INTLTOOL_XAM_RULE)
-AC_SUBST(INTLTOOL_KBD_RULE)
-AC_SUBST(INTLTOOL_XML_RULE)
-AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
-AC_SUBST(INTLTOOL_CAVES_RULE)
-AC_SUBST(INTLTOOL_SCHEMAS_RULE)
-AC_SUBST(INTLTOOL_THEME_RULE)
-AC_SUBST(INTLTOOL_SERVICE_RULE)
-AC_SUBST(INTLTOOL_POLICY_RULE)
+_IT_SUBST(INTLTOOL_DESKTOP_RULE)
+_IT_SUBST(INTLTOOL_DIRECTORY_RULE)
+_IT_SUBST(INTLTOOL_KEYS_RULE)
+_IT_SUBST(INTLTOOL_PROP_RULE)
+_IT_SUBST(INTLTOOL_OAF_RULE)
+_IT_SUBST(INTLTOOL_PONG_RULE)
+_IT_SUBST(INTLTOOL_SERVER_RULE)
+_IT_SUBST(INTLTOOL_SHEET_RULE)
+_IT_SUBST(INTLTOOL_SOUNDLIST_RULE)
+_IT_SUBST(INTLTOOL_UI_RULE)
+_IT_SUBST(INTLTOOL_XAM_RULE)
+_IT_SUBST(INTLTOOL_KBD_RULE)
+_IT_SUBST(INTLTOOL_XML_RULE)
+_IT_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+_IT_SUBST(INTLTOOL_CAVES_RULE)
+_IT_SUBST(INTLTOOL_SCHEMAS_RULE)
+_IT_SUBST(INTLTOOL_THEME_RULE)
+_IT_SUBST(INTLTOOL_SERVICE_RULE)
+_IT_SUBST(INTLTOOL_POLICY_RULE)
# Check the gettext tools to make sure they are GNU
AC_PATH_PROG(XGETTEXT, xgettext)
@@ -110,12 +110,17 @@ if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
fi
-AC_PATH_PROG(INTLTOOL_PERL, [perl])
+AC_PATH_PROG(INTLTOOL_PERL, perl)
if test -z "$INTLTOOL_PERL"; then
- AC_MSG_ERROR([perl not found; required for intltool])
+ AC_MSG_ERROR([perl not found])
fi
-if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
- AC_MSG_ERROR([perl 5.x required for intltool])
+AC_MSG_CHECKING([for perl >= 5.8.1])
+$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
+if test $? -ne 0; then
+ AC_MSG_ERROR([perl 5.8.1 is required for intltool])
+else
+ IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+ AC_MSG_RESULT([$IT_PERL_VERSION])
fi
if test "x$2" != "xno-xml"; then
AC_MSG_CHECKING([for XML::Parser])
@@ -171,7 +176,7 @@ dnl The following CONFIG_COMMANDS should be exetuted at the very end
dnl of config.status.
AC_CONFIG_COMMANDS_PRE([
AC_CONFIG_COMMANDS([$1/stamp-it], [
- if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" ]; then
+ if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then
AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.])
fi
rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
@@ -193,6 +198,17 @@ AC_CONFIG_COMMANDS_PRE([
])dnl
])
+# _IT_SUBST(VARIABLE)
+# -------------------
+# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
+#
+AC_DEFUN([_IT_SUBST],
+[
+AC_SUBST([$1])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
+]
+)
+
# deprecated macros
AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
# A hint is needed for aclocal from Automake <= 1.9.4:
diff --git a/man/Makefile.in b/man/Makefile.in
index e083c75..37fe469 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -159,29 +159,10 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
-INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
-INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
-INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
-INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
-INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
-INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
INTLTOOL_PERL = @INTLTOOL_PERL@
-INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
-INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
-INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
-INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
-INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
-INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
-INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
-INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
-INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
-INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
-INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
JACK_CFLAGS = @JACK_CFLAGS@
JACK_LIBS = @JACK_LIBS@
LD = @LD@
diff --git a/po/ChangeLog b/po/ChangeLog
index 2beb51f..d6cb379 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,27 @@
+2009-04-10 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.17.
+
+2009-04-10 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.17.
+
+2009-04-01 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.17.
+
+2009-04-01 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.17.
+
+2009-03-31 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.17.
+
+2009-03-31 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.17.
+
2009-03-05 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.17.
diff --git a/po/LINGUAS b/po/LINGUAS
index fdce04a..819fcc7 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,3 +1,5 @@
+as
+bn_IN
ca
cs
de
@@ -5,8 +7,18 @@ el
es
fi
fr
+gu
it
+kn
+mr
+nl
+or
+pa
pl
pt_BR
+sr
+sr@latin
sv
-zh_CN \ No newline at end of file
+ta
+te
+zh_CN
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index 57ef267..c7e8302 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -21,7 +21,7 @@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
PACKAGE = @PACKAGE@
VERSION = @VERSION@
-SHELL = /bin/sh
+SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -56,7 +56,7 @@ ALL_LINGUAS = @ALL_LINGUAS@
PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi)
-USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep ^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep ^$$lang$$`"; then printf "$$lang "; fi; done; fi)
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep '^$$lang$$' $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep '^$$lang$$'`"; then printf "$$lang "; fi; done; fi)
USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0d5b42f..2cd451f 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -5,7 +5,7 @@ src/modules/module-zeroconf-discover.c
src/modules/alsa/module-alsa-source.c
src/modules/module-device-restore.c
src/modules/module-match.c
-src/modules/dbus-util.c
+src/pulsecore/dbus-util.c
src/modules/module-console-kit.c
src/modules/oss/module-oss.c
src/modules/oss/oss-util.c
@@ -192,3 +192,8 @@ 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
+src/modules/alsa/module-alsa-card.c
+src/modules/bluetooth/module-bluetooth-device.c
+src/modules/reserve-wrap.c
diff --git a/po/as.po b/po/as.po
new file mode 100644
index 0000000..d1d1c5a
--- /dev/null
+++ b/po/as.po
@@ -0,0 +1,2435 @@
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Amitakhya Phukan <aphukan@fedoraproject.org>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-08 12:35+0530\n"
+"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n"
+"Language-Team: Assamese <fedora-trans-as@redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 0.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "Analog Mono"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "Analog Stereo"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "Digital Stereo (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "Digital Stereo (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "Analog ছাৰাউণ্ড 4.০"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "Digital ছাৰাউণ্ড 4.০ (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "Analog ছাৰাউণ্ড 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "Analog ছাৰাউণ্ড 5.০"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "Analog ছাৰাউণ্ড 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "Digital ছাৰাউণ্ড 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "Analog ছাৰাউণ্ড 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() এ এটা বৰ ডাঙৰ মান ঘূৰালে: %lu bytes (%lu ms) ।\n"
+"অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক "
+"জনাওক ।"
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() এ এটা বৰ ডাঙৰ মান ঘূৰালে: %li bytes (%s%lu ms) ।\n"
+"অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক "
+"জনাওক ।"
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() এ এটা বৰ ডাঙৰ মান ঘূৰালে: %lu bytes (%lu ms) ।\n"
+"অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক "
+"জনাওক ।"
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "আভ্যন্তৰীণ অ'ডিঅ'"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "মোডেম"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "প্ৰাথমিক lt_dlopen loader পোৱা ন'গ'ল ।"
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "নতুন dl loader বিতৰণ কৰিবলৈ বিফল ।"
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-loader যোগ কৰিবলৈ বিফল ।"
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "প্ৰণালীৰ bus লৈ সংযোগ কৰিব পৰা ন'গ'ল: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID ৰ পৰা caller পোৱা ন'গ'ল: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "caller বস্তুত UID নিৰ্ধাৰণ কৰিব পৰা ন'গ'ল ।"
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK অধিবেশন পাবলৈ বিফল ।"
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "অধিবেশনৰ বস্তুত UID নিৰ্ধাৰণ কৰিব নোৱাৰি ।"
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitAction বিতৰণ কৰিব নোৱাৰি ।"
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id নিৰ্ধাৰণ কৰিব নোৱাৰি ।"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext বিতৰণ কৰিব নোৱাৰি ।"
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContext আৰম্ভ কৰিব নোৱাৰি: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "caller ৰ অনুমতি আছে নে নাই নিৰ্ধাৰণ কৰিব নোৱাৰি: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "auth পাব নোৱাৰি: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit এ '%s' উত্তৰ দিলে"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "চিগ্নেল %s পোৱা গ'ল ।"
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "প্ৰস্থান কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "ব্যৱহাৰকৰ্তা '%s' পোৱা ন'গ'ল ।"
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "'%s' সমষ্টি পোৱা ন'গ'ল ।"
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "ব্যৱহাৰকৰ্তা '%s' আৰু সমষ্টি '%s' ৰ GID অমিল ।"
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' সৃষ্টি কৰিবলৈ বিফল: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "সমষ্টিৰ তালিকা সলনি কৰিবলৈ ব্যৰ্থ: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID সলনি কৰিবলৈ ব্যৰ্থ: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID সলনি কৰিবলৈ ব্যৰ্থ: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "ৰূটৰ অধিকাৰ সফলভাবে এৰোৱা গ'ল ।"
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "এই স্থাপত্যত প্ৰণালী ব্যাপক মোড অসমৰ্থিত ।"
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "আদেশ শাৰী বিশ্লেষণ কৰিবলৈ বিফল ।"
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "আমি '%s' সমষ্টিত, য'ত high-priority scheduling ৰ অনুমতি আছে ।"
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "আমি '%s' সমষ্টিত, য'ত real-time scheduling ৰ অনুমতি আছে ।"
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit এ আমাক acquire-high-priority অধিকাৰ দিয়ে ।"
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit এ acquire-high-priority অধিকাৰ নিদিয়ে ।"
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit এ আমাক acquire-real-time অধিকাৰ দিয়ে ।"
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit এ acquire-real-time অধিকাৰ নিদিয়ে ।"
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"বিন্যাস দ্বাৰা high-priority scheduling ৰ সক্ৰিয় হ'লেও নিয়মনীতি দ্বাৰা সেইটো "
+"অনুমোদিত নহয় ।"
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "RLIMIT_RTPRIO সফলতাৰে বৃদ্ধি কৰা হৈছে"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO বিফল: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE বৰ্জন কৰা হৈছে"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"বিন্যাস দ্বাৰা real-time scheduling ৰ সক্ৰিয় হ'লেও নিয়মনীতি দ্বাৰা সেইটো অনুমোদিত "
+"নহয় ।"
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "ডেমন নাই চলা"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "PID %u ৰূপে ডেমন চলিছে"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "ডেমন kill কৰিবলৈ ব্যৰ্থ: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"root পৰিচয়ে এই প্ৰোগ্ৰাম সঞ্চালিত হোৱা উচিত নহয় (ন'হ'লে --system উল্লিখিত হয়) ।"
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "Root-ৰ অধিকাৰ আৱশ্যক ।"
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "প্ৰণালী চানেকিৰ ক্ষেত্ৰত --start সমৰ্থিত নহয় ।"
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "প্ৰণালী মোডত চলিছে, কিন্তু --disallow-exit নিৰ্ধাৰিত নহয়!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr "প্ৰণালী মোডত চলিছে, কিন্তু --disallow-module-loading নিৰ্ধাৰিত নহয়!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "প্ৰণালী মোডত চলিছে, SHM মোড বলপূৰ্বক নিষ্ক্ৰিয় কৰা হৈছে!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+"প্ৰণালী মোডত চলিছে, কাম নকৰা সময়ৰ পৰা প্ৰস্থান কৰা বলপূৰ্বক নিষ্ক্ৰিয় কৰা হৈছে!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdio প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ ।"
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "pipe বিফল: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() বিফল: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() বিফল: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "ডেমন আৰম্ভ কৰিবলৈ বিফল ।"
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "সফলতাৰে ডেমন আৰম্ভ কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "এইটো PulseAudio %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "সঙ্কলনৰ গৃহস্থ: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "সঙ্কলনৰ CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "গৃহস্থত চলোৱা হৈছে: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPU পোৱা গৈছে ।"
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "পেজৰ মাপ %lu bytes"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind সমৰ্থনৰ সৈতে সঙ্কলন কৰা হৈছে: হয়"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind সমৰ্থনৰ সৈতে সঙ্কলন কৰা হৈছে: নহয়"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind মোডত চলিছে: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "Optimized build: হয়"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "Optimized build: নহয়"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG ব্যাখ্যা কৰা হৈছে, সকলো asserts নিষ্ক্ৰিয় কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH ব্যাখ্যা কৰা হৈছে, অকল fast path asserts নিষ্ক্ৰিয় কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "সকলো asserts সক্ৰিয় কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "যন্ত্ৰ ID প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "যন্ত্ৰ ID হ'ল %s ।"
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "যন্ত্ৰ ID হ'ল %s ।"
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "ৰান-টাইম পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "অৱস্থাসূচক পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "প্ৰণালী মোডত চলিছে: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() ব্যৰ্থ ।"
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "নতুন high-resolution timers পোৱা হয়! অভিনন্দন!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"শ্ৰীমান, আপোনাৰ কাৰ্ণেল পূৰণি! high-resolution timer সক্ৰিয় থকা Linux ক আজি "
+"উপদেশ দিয়া হয়!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() ব্যৰ্থ ।"
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "ডেমন আৰম্ভ কৰিবলৈ ব্যৰ্থ ।"
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr ""
+"তুলি লোৱা মডিউল নোহোৱাকে ডেমন আৰম্ভ কৰা হৈছে, কোনো কাম সঞ্চালন কৰা সম্ভৱ নহয় ।"
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "ডেমন আৰম্ভ কৰা সম্পূৰ্ণ ।"
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "ডেমন বন্ধ কৰাৰ প্ৰক্ৰিয়া আৰম্ভ কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "ডেমন বন্ধ কৰা হৈছে ।"
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../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 ৰ কাৰণে লগ স্তৰৰ তৰ্ক প্ৰত্যাশিত (হয় সংখ্যা ০..৪ ৰ সীমাত বা debug, "
+"info, notice, warn, error ৰ যিকোনো এটা) ।"
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "অবৈধ লগ লক্ষ্য: 'syslog', 'stderr' বা 'auto' ৰ এটা ব্যৱহাৰ কৰক"
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "resample পদ্ধতি '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm দ্বাৰা বুলিয়েন তৰ্ক প্ৰত্যাশিত"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "নাম: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "মডিউল সংক্ৰান্ত কোনো তথ্য উপলব্ধ নাই\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "সংস্কৰণ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "বিৱৰণ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "নিৰ্মাতা: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "ব্যৱহাৰ পদ্ধতি: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "এবাৰ তুলি লোৱা হ'ব: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "পাথ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] লগ লক্ষ্য '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] লগৰ স্তৰ '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] resample পদ্ধতি '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] rlimit '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] এই স্থাপত্যত rlimit সমৰ্থিত নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] চানেকিৰ বিন্যাস '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] চানেকিৰ মাত্ৰা '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] চানেকিৰ চেনেল '%s' বৈধ নহয়"
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] চেনেল মেপ '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] অংশৰ সংখ্যা '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] অংশৰ মাপ '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] nice স্তৰ '%s' বৈধ নহয় ।"
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "বিন্যাস নথিপত্ৰ খুলিবলৈ ব্যৰ্থ: %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."
+msgstr ""
+"নিৰ্ধাৰিত অবিকল্পিত চেনেল মেপত নিৰ্ধাৰিত অবিকল্পিত চেনেলৰ সংখ্যাতকে বেলেগ সংখ্যক "
+"চেনেল আছে ।"
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### চিহ্নিত বিন্যাস নথিপত্ৰৰ পৰা পঢ়া হ'ব: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "root-ৰ অধিকাৰ বৰ্জন কৰা হৈছে ।"
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "CAP_SYS_NICE লৈ কাৰ্য্যক্ষমতা সফলভাবে সীমিত কৰা হ'ল ।"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio শব্দ ব্যৱস্থা"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio শব্দ ব্যৱস্থা আৰম্ভ কৰা হ'ব"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "PulseAudio ডেমনৰ কাৰণে High-priority scheduling (ঋণাত্মক Unix nice স্তৰ)"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio ডেমনৰ কাৰণে Real-time scheduling"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "প্ৰণালীৰ নীতিয়ে PulseAudio ক high-priority scheduling পাবলৈ নিদিয়ে ।"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr "প্ৰণালীৰ নীতিয়ে PulseAudio ক real-time scheduling পাবলৈ নিদিয়ে ।"
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "মোনো"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "সন্মুখত কেন্দ্ৰস্থিত"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "সন্মুখত কেন্দ্ৰস্থিত"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "সন্মুখত বাওঁফালে"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "পিছত কেন্দ্ৰস্থিত"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "পিছত বাওঁফালে"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "পিছত সোঁফালে"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "Low Frequency Emmiter"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "সন্মুখত কেন্দ্ৰৰ-বাওঁফালে"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "সন্মুখত কেন্দ্ৰৰ-সোঁফালে"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "কাষত বাওঁফালে"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "কাষত সোঁফালে"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "অ'ক্সিলেৰি ০"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "অ'ক্সিলেৰি ০"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "অ'ক্সিলেৰি ১"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "অ'ক্সিলেৰি ৩"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "অ'ক্সিলেৰি ৪"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "অ'ক্সিলেৰি ৪"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "অ'ক্সিলেৰি ৬"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "অ'ক্সিলেৰি ৭"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "অ'ক্সিলেৰি ৮"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "অ'ক্সিলেৰি ৯"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "অ'ক্সিলেৰি ১০"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "অ'ক্সিলেৰি ১১"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "অ'ক্সিলেৰি ১২"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "অ'ক্সিলেৰি ১৩"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "অ'ক্সিলেৰি ১৪"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "অ'ক্সিলেৰি ১৫"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "অ'ক্সিলেৰি ১৬"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "অ'ক্সিলেৰি ১৭"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "অ'ক্সিলেৰি ১৮"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "অ'ক্সিলেৰি ১৯"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "অ'ক্সিলেৰি ২০"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "অ'ক্সিলেৰি ২১"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "অ'ক্সিলেৰি ২২"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "অ'ক্সিলেৰি ২৩"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "অ'ক্সিলেৰি ২৪"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "অ'ক্সিলেৰি ২৫"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "অ'ক্সিলেৰি ২৬"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "অ'ক্সিলেৰি ২৭"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "অ'ক্সিলেৰি ২৮"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "অ'ক্সিলেৰি ২৯"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "অ'ক্সিলেৰি ৩০"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "অ'ক্সিলেৰি ৩১"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "ওপৰত কেন্দ্ৰস্থিত"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "ওপৰত সন্মুখত কেন্দ্ৰস্থিত"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "ওপৰত সন্মুখত বাওঁফালে"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "ওপৰত সন্মুখত বাওঁফালে"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "ওপৰত পিছত কেন্দ্ৰস্থিত"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "ওপৰত পিছত বাওঁফালে"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(অবৈধ)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "স্টিৰিও"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "ছাৰাউণ্ড ৪.০"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "ছাৰাউণ্ড ৪.১"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "ছাৰাউণ্ড ৫.০"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "ছাৰাউণ্ড ৫.১"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "ছাৰাউণ্ড ৭.১"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "ঠিক আছে"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "ব্যৱহাৰৰ অধিকাৰ প্ৰত্যাখ্যাত"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "অজ্ঞাত নিৰ্দেশ"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "অবৈধ তৰ্ক"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "পদাৰ্থ উপস্থিত"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "এই ধৰনৰ কোনো পদাৰ্থ উপস্থিত নাই"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "সংযোগ নাকচ কৰা হৈছে"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "প্ৰোটোকল সংক্ৰান্ত ত্ৰুটি"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "সময়সীমা"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "কোনো অনুমোদনৰ-কি নাই"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "অভ্যন্তৰীণ ত্ৰুটি"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "সংযোগ বন্ধ কৰা হৈছে"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "পদাৰ্থ kill কৰা হৈছে"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "সেৱক বৈধ নহয়"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "মডিউল আৰম্ভ কৰিবলৈ ব্যৰ্থ"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "অৱস্থা সঠিক নহয়"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "তথ্য অনুপস্থিত "
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "বিসঙ্গতিপূৰ্ণ প্ৰটকল সংস্কৰণ"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "অত্যাধিক বড়"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "সমৰ্থন কৰা নহয়"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "অজানা ত্ৰুটিৰ কোড"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "এই ধৰনৰ কোনো এক্সটেনশন নাই"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "অবচিত বৈশিষ্ট্য"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "অনুপস্থিত বাস্তবায়ন"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "গ্ৰাহক ফৰ্ক কৰা হৈছে"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() ব্যৰ্থ"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "কুকিৰ তথ্য বিশ্লেষণ কৰিবলৈ ব্যৰ্থ"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "বিন্যাস নথিপত্ৰ '%s' খুলিবলৈ ব্যৰ্থ: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "কোনো কুকি তুলি লোৱা নহয় । কুকি নোহোৱাকে সংযোগৰ প্ৰচেষ্টা কৰা হৈছে ।"
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "অজানা এক্সটেনশন '%s'-ৰ বাবে বাৰ্তা প্ৰাপ্ত হৈছে"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "সফলতাৰে স্ট্ৰিম নিৰ্মিত হৈছে ।\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "চানেকি spec '%s', চেনেল মেপ '%s'প্ৰয়োগ কৰা হৈছে\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "যন্ত্ৰ %s-ৰ সৈতে সংযোগ কৰা হৈছে (%u, %ssuspended) ।\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "ষ্ট্ৰিম সংক্ৰান্ত ত্ৰুটি: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "স্ট্ৰিম যন্ত্ৰ স্থগিত কৰা হৈছে । %s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "স্ট্ৰিম যন্ত্ৰ পুনৰাৰম্ভ কৰা হৈছে । %s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "ষ্ট্ৰিম underrun: %s\n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "ষ্ট্ৰিম overrun: %s\n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "স্ট্ৰিম আৰম্ভ কৰা হৈছে । %s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "%s যন্ত্ৰলৈ স্ট্ৰিম স্থানান্তৰ কৰা হৈছে (%u, %ssuspended) ।%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "not "
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "স্ট্ৰিম প্ৰশমকৰ গুণ পৰিবৰ্তিত হৈছে । %s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "সংযোগ স্থাপিত হৈছে ।%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "চিগ্নেল পোৱা গ'ল, প্ৰস্থান কৰা হৈছে ।\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "latency পাবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"libpulse ৰ সৈতে সঙ্কলন কৰা হৈছে %s\n"
+"libpulse ৰ সৈতে যুক্ত %s\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "চেনেল মেপ '%s' বৈধ নহয়\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "অবৈধ latency নিৰ্ধাৰণ '%s'\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "অবৈধ প্ৰক্ৰিয়াৰ সময়ৰ নিৰ্ধাৰণ '%s'\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "অবৈধ চানেকি নিৰ্ধাৰিত\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "এটা %s স্ট্ৰিম চানেকি নিৰ্ধাৰণ '%s' ৰ সৈতে খোলা হৈছে ।\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "ৰেকৰ্ড কৰা হৈছে"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() ব্যৰ্থ ।\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() ব্যৰ্থ: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() ব্যৰ্থ ।\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "স্থগিত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "পুনৰাৰম্ভ কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "সতৰ্কবাৰ্তা: ধ্বনি সেৱক স্থানীয় নহয়, স্থগিত কৰা নহয় ।\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT প্ৰাপ্ত হৈছে, প্ৰস্থান কৰা হৈছে ।\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "সতৰ্কবাৰ্তা: চিগ্নেল %u দ্বাৰা চাইল্ড প্ৰক্ৰিয়া বন্ধ কৰা হৈছে\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"libpulse ৰ সৈতে সঙ্কলন কৰা হৈছে %s\n"
+"libpulse ৰ সৈতে যুক্ত %s\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "পৰিসংখ্যান পাবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, 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
+#, 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
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "চানেকি কেশ্বৰ মাপ: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "সেৱক সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"ব্যৱহাৰকৰ্তাৰ নাম: %s\n"
+"গৃহস্থৰ নাম: %s\n"
+"সেৱকৰ নাম: %s\n"
+"সেৱকৰ সংস্কৰণ: %s\n"
+"চানেকিৰ অবিকল্পিত নিৰ্ধাৰিত মান: %s\n"
+"অবিকল্পিত চেনেল মেপ: %s\n"
+"অবিকল্পিত চিঙ্ক: %s\n"
+"অবিকল্পিত উৎস: %s\n"
+"কুকি: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "চিঙ্ক সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"চিঙ্ক #%u\n"
+"\tঅৱস্থা: %s\n"
+"\tনাম: %s\n"
+"\tবিৱৰণ: %s\n"
+"\tচালক: %s\n"
+"\tচানেকি নিৰ্ধাৰণ: %s\n"
+"\tচেনেল মাপ: %s\n"
+"\tগৰাকীৰ অংশ: %u\n"
+"\tমিউট: %s\n"
+"\tধ্বনি মাত্ৰা: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase ধ্বনি: %s%s%s\n"
+"\tমণিটৰ উৎস: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tফ্লেগ: %s%s%s%s%s%s\n"
+"\tগুণ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "উৎস সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"উৎস #%u\n"
+"\tঅৱস্থা: %s\n"
+"\tনাম: %s\n"
+"\tবিৱৰণ: %s\n"
+"\tচালক: %s\n"
+"\tচানেকি নিৰ্ধাৰণ: %s\n"
+"\tচেনেল মেপ: %s\n"
+"\tগৰাকীৰ অংশ: %u\n"
+"\tমিউট: %s\n"
+"\tধ্বনিৰ মাত্ৰা: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tচিঙ্কৰ মণিটৰ: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tফ্লেগ: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "মডিউল সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"অংশ #%u\n"
+"\tনাম: %s\n"
+"\tতৰ্ক: %s\n"
+"\tব্যৱহাৰৰ কাউন্টাৰ: %s\n"
+"\tগুণ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "গ্ৰাহক সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"গ্ৰাহক #%u\n"
+"\tচালক: %s\n"
+"\tগৰাকীৰ অংশ: %s\n"
+"\tগুণ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "কাৰ্ড সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"কাৰ্ড #%u\n"
+"\tনাম: %s\n"
+"\tচালক: %s\n"
+"\tগৰাকীৰ অংশ: %s\n"
+"\tগুণ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tপাৰ্শ্বৰূপ:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tসক্ৰিয় পাৰ্শ্বৰূপ: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "চিঙ্ক নিবেশ তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"চিঙ্ক নিবেশ #%u\n"
+"\tচালক: %s\n"
+"\tগৰাকীৰ অংশ: %s\n"
+"\tগ্ৰাহক: %s\n"
+"\tচিঙ্ক: %u\n"
+"\tচানেকি নিৰ্ধাৰণ: %s\n"
+"\tচেনেল মেপ: %s\n"
+"\tমিউট: %s\n"
+"\tধ্বনি মাত্ৰা: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample ধৰণ: %s\n"
+"\tগুণ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "উৎস আউটপুট সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"উৎসৰ নিৰ্গম #%u\n"
+"\tচালক: %s\n"
+"\tগৰাকীৰ অংশ: %s\n"
+"\tগ্ৰাহক: %s\n"
+"\tউৎস: %u\n"
+"\tচানেকি নিৰ্ধাৰণ: %s\n"
+"\tচেনেল মেপ: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample ধৰণ: %s\n"
+"\tগুণ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "চানেকি সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"চানেকি #%u\n"
+"\tনাম: %s\n"
+"\tচানেকি নিৰ্ধাৰণ: %s\n"
+"\tচেনেল মেপ: %s\n"
+"\tধ্বনি মাত্ৰা: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tসময়: %0.1fs\n"
+"\tআকাৰ: %s\n"
+"\tএলেহুৱা: %s\n"
+"\tনথিপত্ৰৰ নাম: %s\n"
+"\tগুণ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "ব্যৰ্থতা: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "চানেকি আপল'ড ব্যৰ্থ: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "নথিপত্ৰৰ অসময়ত হোৱা সমাপ্তি\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulseৰ সৈতে সঙ্কলন কৰা %s\n"
+"libpulse-ৰ সৈতে যুক্ত %s\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "তুলি লোৱাৰ উদ্দেশ্যে অনুগ্ৰহ কৰে একটি চানেকি নথিপত্ৰ উল্লেখ কৰুন\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "শব্দেৰ নথিপত্ৰ খুলিবলৈ ব্যৰ্থ ।\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "বাজানোৰ উদ্দেশ্যে একটি চানেকি নথিপত্ৰ উল্লেখ কৰা আৱশ্যক\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "আঁতৰাবলৈ এটা চানেকি নাম দিব লাগিব \n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "চিঙ্ক ইনপুট ইন্ডেক্স আৰু এটা চিঙ্ক নিৰ্ধাৰণ কৰা আৱশ্যক\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "উৎস আউটপুট ইন্ডেক্স আৰু একটি উৎস নিৰ্ধাৰণ কৰা আৱশ্যক\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "মডিউলৰ নাম আৰু তৰ্ক নিৰ্ধাৰণ কৰা আৱশ্যক\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "মডিউল ইন্ডেক্স নিৰ্ধাৰণ কৰা আৱশ্যক\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "কাৰ্ডেৰ নাম/ইন্ডেক্স আৰু একটি পাৰ্শ্বৰূপৰ নাম উল্লেখ কৰা আৱশ্যক\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "সঞ্চালনৰ বাবে আদেশ নিৰ্ধাৰিত নহয় ।\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "আদেশ-শাৰী বিশ্লেষণ কৰিবলৈ ব্যৰ্থ ।\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "সেৱক: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "উৎস: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "চিঙ্ক: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "কুকি: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "কুকি সংক্ৰান্ত তথ্য বিশ্লেষণ কৰিবলৈ ব্যৰ্থ\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "কুকি সংক্ৰান্ত তথ্য সংৰক্ষণ কৰিবলৈ ব্যৰ্থ\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "গ্ৰাহক বিন্যাস নথিপত্ৰ তুলিবলৈ ব্যৰ্থ ।\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "পৰিবেশ বিন্যাস সংক্ৰান্ত তথ্য পঢ়িবলৈ ব্যৰ্থ ।\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDN প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ ।\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "কুকি সংক্ৰান্ত তথ্য তুলিবলৈ ব্যৰ্থ\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "এতিয়াও বাস্তবায়িত নহয় ।\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio ডেমন kill কৰিবলৈ ব্যৰ্থ ।"
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "ডেমনৰ পৰা কোনো প্ৰতিক্ৰিয়া পোৱা নাযায় ।"
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA ই আমাক যন্ত্ৰৰ পৰা নতুন তথ্য লিখিবলৈ উথালে, কিন্তু একো লিখিবলৈ নাছিল!\n"
+"অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক "
+"জনাওক ।\n"
+"POLLOUT নিৰ্ধাৰিত হোৱাৰি পিছতো আমি উথিলো -- কিন্তু তাৰ পিছৰ snd_pcm_avail() এ ০ "
+"দিলে বা অন্য এটা মান < min_avail."
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA ই আমাক যন্ত্ৰৰ পৰা নতুন তথ্য পঢ়িবলৈ উথালে, কিন্তু একো পঢ়িবলৈ নাছিল!\n"
+"অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক "
+"জনাওক ।\n"
+"POLLIN নিৰ্ধাৰিত হোৱাৰি পিছতো আমি উথিলো -- কিন্তু তাৰ পিছৰ snd_pcm_avail() এ ০ "
+"দিলে বা অন্য এটা মান < min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "নিৰ্গম %s + নিবেশ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "নিৰ্গম %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "নিবেশ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "বন্ধ"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "High Fidelity Playback (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Telephony Duplex (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio ধ্বনি সেৱক"
diff --git a/po/bn_IN.po b/po/bn_IN.po
new file mode 100644
index 0000000..c2e9f91
--- /dev/null
+++ b/po/bn_IN.po
@@ -0,0 +1,2451 @@
+# translation of pulseaudio.master-tx.po to Bengali INDIA
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Runa Bhattacharjee <runab@fedoraproject.org>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-08 16:21+0530\n"
+"Last-Translator: Runa Bhattacharjee <runab@fedoraproject.org>\n"
+"Language-Team: Bengali INDIA <fedora-trans-bn_in@redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "অ্যানালগ মোনো"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "অ্যানালগ স্টিরিও"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "ডিজিট্যাল স্টিরিও (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "ডিজিট্যাল স্টিরিও (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "অ্যানালগ স্টিরিও ৪.০"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "ডিজিট্যাল সারাউন্ড ৪.০ (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "অ্যানালগ সারাউন্ড ৪.১"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "অ্যানালগ সারাউন্ড ৫.০"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "অ্যানালগ সারাউন্ড ৫.১"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "ডিজিট্যাল সারাউন্ড ৫.১ (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "অ্যানালগ সারাউন্ড ৭.১"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() থেকে প্রাপ্ত মান অত্যাধিক বড়: %lu বাইট (%lu ms)।\n"
+"সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA "
+"ডিভেলপরদের সূচিত করুন।"
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() থেকে প্রাপ্ত মান অত্যাধিক বড়: %li বাইট (%s%lu ms)।\n"
+"সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA "
+"ডিভেলপরদের সূচিত করুন।"
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() থেকে প্রাপ্ত মান অত্যাধিক বড়: %lu বাইট (%lu ms)।\n"
+"সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA "
+"ডিভেলপরদের সূচিত করুন।"
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "অভ্যন্তরীণ অডিও"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "মোডেম"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "মূল lt_dlopen লোডার সনাক্ত করতে ব্যর্থ।"
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "নতুন dl লোডার বরাদ্দ করতে ব্যর্থ।"
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-loader যোগ করতে ব্যর্থ।"
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "সিস্টেম বাসের সাথে সংযোগ করতে ব্যর্থ: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID থেকে কলারের তথ্য প্রাপ্ত করতে ব্যর্থ: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "কলার অবজেক্টের UID নির্ধারণ করতে ব্যর্থ।"
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK সেশান প্রাপ্ত করতে ব্যর্থ।"
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "সেশান অবজেক্টের UID নির্ধারণ করতে ব্যর্থ।"
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitAction বরাদ্দ করতে ব্যর্থ।"
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id নির্ধারণ করতে ব্যর্থ"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext বরাদ্দ করতে ব্যর্থ।"
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContext আরম্ভ করতে ব্যর্থ: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "কলার অনুমোদিত কি না তা নির্ধারণ করা সম্ভব নয়: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "auth প্রাপ্ত করতে ব্যর্থ: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit থেকে '%s' প্রাপ্ত হয়েছে"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "%s সিগন্যাল প্রাপ্ত হয়েছে।"
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "প্রস্থান করা হচ্ছে।"
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "'%s' ব্যবহারকারী সন্ধান করতে ব্যর্থ।"
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "দল '%s' সন্ধান করতে ব্যর্থ।"
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "'%s' ব্যবহারকারীর ও '%s' দলের GID-র মধ্যে গরমিল।"
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' নির্মাণ করতে ব্যর্থ: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "দলের তালিকা পরিবর্তন করতে ব্যর্থ: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID পরিবর্তন করতে ব্যর্থ: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID পরিবর্তন করতে ব্যর্থ: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "root-র অধিকার সাফল্যের সাথে বর্জন করা হয়েছে।"
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "এই প্ল্যাটফর্মে, সিস্টেমব্যাপী মোড সমর্থিত নয়।"
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "কমান্ড-লাইন পার্স করতে ব্যর্থ।"
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "অধিক গুরুত্বসহ শিডিউলিংয়ের সুবিধা উপলব্ধকারী '%s' দলে আমরা উপস্থিত।"
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "রিয়েল-টাইম শিডিউলিংয়ের সুবিধা উপলব্ধকারী '%s' দলে আমরা উপস্থিত।"
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit-র পক্ষ থেকে acquire-high-priority অধিকার প্রাপ্ত হয়েছে।"
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit-র পক্ষ থেকে acquire-high-priority অধিকার প্রত্যাখ্যাত হয়েছে।"
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit-র পক্ষ থেকে acquire-real-priority অধিকার প্রাপ্ত হয়েছে।"
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit-র পক্ষ থেকে acquire-real-priority অধিকার প্রত্যাখ্যাত হয়েছে।"
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"SUID root কল করা হয়েছে এবং কনফিগারেশনের মধ্যে রিয়েল-টাইম এবং/অথবা উচ্চ-গুরুত্বের "
+"শিডিউলিংয়ের অনুরোধ জানানো হয়েছে, কিন্তু পর্যাপ্ত অনুমতি উপস্থিত নেই:\n"
+"'%s' দলে অন্তর্ভুক্ত নয়, PolicyKit দ্বারা পর্যাপ্ত অনুমতি প্রদান করা হয়নি এবং "
+"RLIMIT_NICE/RLIMIT_RTPRIO রিসোর্সের সীমা বৃদ্ধির করতে হবে।\n"
+"রিয়েল-টাইম/উচ্চ-গুরুত্বের শিডিউলিং সক্রিয় করার জন্য অনুগ্রহ করে প্রযোজ্য PolicyKit "
+"অধিকার প্রাপ্ত করুন, অথবা '%s' দলের সদস্য হন, অথবা সংশ্লিষ্ট ব্যবহারকারীর জন্য "
+"RLIMIT_NICE/RLIMIT_RTPRIO রিসোর্সের সীমা বৃদ্ধি করুন।"
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"কনফিগারেশন দ্বারা high-priority শিডিইলিংয়ের সুবিধা উপলব্ধ হলেও নিয়মনীতি দ্বারা "
+"তা অনুমোদিত নয়।"
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "RLIMIT_RTPRIO সাফল্যের সাথে বৃদ্ধি করা হয়েছে"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO বিফল: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE বর্জন করা হচ্ছে"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"কনফিগারেশন দ্বারা real-time শিডিইলিংয়ের সুবিধা উপলব্ধ হলেও নিয়মনীতি দ্বারা তা "
+"অনুমোদিত নয়।"
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "ডেমন চলছে না"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "PID %u রূপে ডেমন চলছে"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "ডেমন kill করতে ব্যর্থ: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"root পরিচয়ে এই প্রোগ্রামটি সঞ্চালিত হওয়া উচিত নয় (যদি না --system উল্লিখিত হয়)।"
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "Root-র অধিকার আবশ্যক।"
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "সিস্টেম ইনস্ট্যান্সের ক্ষেত্রে --start সমর্থিত নয়।"
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "সিস্টেম মোডে চলছে, কিন্তু --disallow-exit নির্ধারিত হয়নি!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr "সিস্টেম মোডে চলছে, কিন্তু --disallow-module-loading নির্ধারিত হয়নি!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "সিস্টেম মোডে চলছে, SHM মোড বলপূর্বক নিষ্ক্রিয় করা হচ্ছে!"
+
+# http://linux.die.net/man/1/pulseaudio এখানে রেফারেন্স পাওয়া যাবে
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+"সিস্টেম মোডে চলছে, কর্মহীন অবস্থার জন্য ধার্য সময়সীমা পূর্তী পরে প্রস্থানের ব্যবস্থা "
+"বলপূর্বক নিষ্ক্রিয় করা হচ্ছে!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdio প্রাপ্ত করতে ব্যর্থ।"
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "পাইপ বিফল: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() বিফল: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() বিফল: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "ডেমন আরম্ভ করতে বিফল।"
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "সাফল্যের সাথে ডেমন আরম্ভ করা হয়েছে।"
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "এটি PulseAudio %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "কম্পাইলেশনের হোস্ট: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "কম্পাইলশনের CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "চিহ্নিত হোস্টে চলছে: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPU পাওয়া গিয়েছে।"
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "পেজের মাপ %lu বাইট"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind সমর্থন সহ কম্পাইল করা হয়েছে: হ্যাঁ"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind সমর্থন সহ কম্পাইল করা হয়েছে: না"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind মোডে চলছে: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "সর্বাপেক্ষ উত্তম বিল্ড: হ্যাঁ"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "সর্বাপেক্ষ উত্তম বিল্ড: না"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG ব্যাখ্যা করা হয়েছে, সকল অ্যাসার্ট নিষ্ক্রিয় করা হয়েছে।"
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH ব্যাখ্যা করা হয়েছে, শুধুমাত্র ফাস্ট পাথ অ্যাসার্ট নিষ্ক্রিয় করা হয়েছে।"
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "সকল অ্যাসার্ট সক্রিয় করা হয়েছে।"
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "মেশিন ID প্রাপ্ত করতে ব্যর্থ"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "মেশিন ID হল %s।"
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "মেশিন ID হল %s।"
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "রান-টাইম ডিরেক্টরি %s ব্যবহার করা হচ্ছে।"
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "অবস্থাসূচক ডিরেক্টরি %s ব্যবহার করা হচ্ছে।"
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "সিস্টেম মোডে চলছে: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() ব্যর্থ।"
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার উপলব্ধ রয়েছে! পরীক্ষা করে দেখুন!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার সহ Linux সক্রিয় করা বাঞ্ছনীয়!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() ব্যর্থ।"
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "ডেমন আরম্ভ করতে ব্যর্থ।"
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr ""
+"লোড করা মডিউল বিনা ডেমন আরম্ভ করা হয়েছে এবং কোনো কর্ম সঞ্চালন করা সম্ভব নয়।"
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "ডেমন আরম্ভ করা হয়েছে।"
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "ডেমন বন্ধ করার প্রক্রিয়া আরম্ভ করা হয়েছে।"
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "ডেমন বন্ধ করা হয়েছে।"
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help সাহায্যের এই বার্তা প্রদর্শন করা হবে\n"
+" --version সংস্করণ প্রদর্শন করা হবে\n"
+" --dump-conf ডিফল্ট কনফিগারেশন ডাম্প করা হবে\n"
+" --dump-modules উপলব্ধ মডিউলের তালিকা ডাম্প করা হবে\n"
+" --dump-resample-methods উপলব্ধ রি-স্যাম্পেলের পদ্ধতি ডাম্প করা "
+"হবে\n"
+" --cleanup-shm যৌথরূপে ব্যবহৃত মেমরির পুরোনো অংশগুলি "
+"পরিশ্রুত করা হবে\n"
+" --start ডেমন সক্রিয় না হলে তা আরম্ভ করুন\n"
+" -k --kill চলমান ডেমন kill করুন\n"
+" --check চলমান ডেমন পরীক্ষা করুন (শুধুমাত্র এক্সিট "
+"কোড উৎপন্ন হবে)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] সিস্টেমব্যাপী ইন্সট্যান্স রূপে সঞ্চালিত "
+"হবে\n"
+" -D, --daemonize[=BOOL] আরম্ভের পরে ডেমন নির্মাণ করা হবে\n"
+" --fail[=BOOL] আরম্ভ করতে ব্যর্থ হলে প্রস্থান করা হবে\n"
+" --high-priority[=BOOL] nice-র উচ্চ মাত্রা ধার্যের প্রচেষ্টা করা "
+"হবে\n"
+" (root, SUID অথবা\n"
+" উচ্চ মাত্রার RLIMIT_NICE-র ক্ষেত্রে "
+"উপলব্ধ করা হবে)\n"
+" --realtime[=BOOL] রিয়েল-টাইম শিডিউলিং সক্রিয় করার "
+"প্রচেষ্টা করুন\n"
+" (root, SUID অথবা\n"
+" উচ্চ মাত্রার RLIMIT_RTPRIO-র ক্ষেত্রে "
+"উপলব্ধ করা হবে)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] ব্যবহারকারী দ্বারা প্রস্থানের অনুরোধ "
+"গ্রাহ্য করা হবে না\n"
+" --exit-idle-time=SECS কর্মহীন অবস্থায় চিহ্নিত সময় অতিবাহিত "
+"হলে, ডেমনটি\n"
+" বন্ধ করুন\n"
+" --module-idle-time=SECS কর্মহীন অবস্থায় চিহ্নিত সময় অতিবাহিত "
+"হলে, অটো-লোড করা\n"
+" মডিউলগুলি আন-লোড করুন\n"
+" --scache-idle-time=SECS কর্মহীন অবস্থায় চিহ্নিত সময় অতিবাহিত "
+"হলে, অটো-লোড করা\n"
+" স্যাম্পেলগুলি আন-লোড করুন\n"
+" --log-level[=LEVEL] ভার্বোসিটির মাত্রা বৃদ্ধি অথবা নির্ধারণ "
+"করুন\n"
+" -v ভার্বোসিটির মাত্রা বৃদ্ধি করুন\n"
+" --log-target={auto,syslog,stderr} লগের উদ্দিষ্ট স্থান উল্লেখ করা হবে\n"
+" --log-meta[=BOOL] লগ-বার্তার মধ্যে কোডের অবস্থান অন্তর্ভুক্ত "
+"করা হবে\n"
+" --log-time[=BOOL] লগ-বার্তার মধ্যে সময় অন্তর্ভুক্ত করা হবে\n"
+" --log-backtrace=FRAMES লগ-বার্তার মধ্যে ব্যাক-ট্রেস অন্তর্ভুক্ত করা "
+"হবে\n"
+" -p, --dl-search-path=PATH পরিবর্তনশীল যৌথব্যবহারের অবজেক্ট (প্লাগ-"
+"ইন) অনুসন্ধানের\n"
+" পাথ নির্ধারণ করুন\n"
+" --resample-method=METHOD উল্লিখিত রি-স্যাম্পলিং পদ্ধতি প্রয়োগ করা "
+"হবে\n"
+" (সম্ভাব্য মান জানার জন্য --dump-"
+"resample-methods\n"
+" দেখুন)\n"
+" --use-pid-file[=BOOL] একটি PID ফাইল নির্মাণ করুন\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] যৌথ মেমরি ব্যবহারের সমর্থন নিষ্ক্রিয় করা "
+"হবে।\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" চিহ্নিত আর্গুমেন্ট সহ, উল্লিখিত প্লাগ-"
+"ইন\n"
+" লোড করা হবে\n"
+" -F, --file=FILENAME চিহ্নিত স্ক্রিপ্ট সঞ্চালন করুন\n"
+" -C প্রারম্ভের পরে চলমান TTY-র মধ্যে একটি "
+"কমান্ড-লাইন\n"
+" আরম্ভ করুন\n"
+"\n"
+" -n ডিফল্ট স্ক্রিপ্ট ফাইল লোড করা হবে না\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../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-র ক্ষেত্রে লগ স্তরের আর্গুমেন্ট প্রত্যাশিত (0..4 সীমার মধ্যে একটি সংখ্যা "
+"অথবা debug, info, notice, warn, ও error-র মধ্যে একটি মান)।"
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "লগের উদ্দিষ্ট স্থন বৈধ নয়: 'syslog', 'stderr' অথবা 'auto' প্রয়োগ করুন।"
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।"
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm দ্বারা বুলিয়ান আর্গুমেন্ট প্রত্যাশিত"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "নাম: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "মডিউল সংক্রান্ত কোনো তথ্য উপলব্ধ নেই\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "সংস্করণ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "বিবরণ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "নির্মাতা: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "ব্যবহার পদ্ধতি: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "একবার লোড করা হবে: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "পাথ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] লগ টার্গেট '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] লগের স্তর '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] rlimit '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] এই প্ল্যাটফর্মে rlimit সমর্থিত নয়।"
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] স্যাম্পেলের বিন্যাস '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] স্যাম্পেলের মাত্রা '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] স্যাম্পেলের চ্যানেল '%s' বৈধ নয়"
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] চ্যানেল ম্যাপ '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] অংশ সংখ্যা '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] অংশের মাপ '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] nice স্তর '%s' বৈধ নয়।"
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "কনফিগারেশন ফাইল খুলতে ব্যর্থ: %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."
+msgstr ""
+"ডিফল্ট চ্যানেল ম্যাপের মধ্যে অন্তর্ভুক্ত চ্যানেলের সংখ্যা ও চ্যানেলের ডিফল্ট সংখ্যার মধ্যে "
+"গরমিল।"
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### চিহ্নিত কনফিগারেশন ফাইল থেকে পড়া হবে: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "root-র অধিকার বর্জন করা হচ্ছে।"
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "সাফল্যের সাথে CAP_SYS_NICE-এ কর্মক্ষমতা সীমিত করা হয়েছে।"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio শব্দ ব্যবস্থা"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio শব্দ ব্যবস্থা আরম্ভ করা হবে"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "PulseAudio ডেমনের জন্য উচ্চ-গুরুত্বের শিডিউলিং (Unix nice-র মাত্রা নঞর্থক)"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio ডেমনের জন্য রিয়েল-টাইম শিডিউলিং"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"সিস্টেমের নিয়ম-নীতির কারণে PulseAudio দ্বারা উচ্চ-গুরুত্বের শিডিউলিং প্রয়োগ করা "
+"সম্ভব হচ্ছে না।"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+"সিস্টেমের নিয়ম-নীতির কারণে PulseAudio দ্বারা রিয়েল-টাইম শিডিউলিং প্রয়োগ করা "
+"সম্ভব হচ্ছে না।"
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "মোনো"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "সামনে কেন্দ্রস্থিত"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "সামনে বাঁদিকে"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "সামনে ডানদিকে"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "পিছনে কেন্দ্রস্থিত"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "পিছনে বাঁদিকে"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "পিছনে ডানদিকে"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "কম ফ্রিকোয়েন্সির নিঃসরণকারী"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "সামনে কেন্দ্রের-বাঁদিকে"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "সামনে কেন্দ্রের-ডানদিকে"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "পাশে বাঁদিকে"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "পাশে ডানদিকে"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "অক্সিলারি ০"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "অক্সিলারি ১"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "অক্সিলারি ২"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "অক্সিলারি ৩"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "অক্সিলারি ৪"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "অক্সিলারি ৫"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "অক্সিলারি ৬"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "অক্সিলারি ৭"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "অক্সিলারি ৮"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "অক্সিলারি ৯"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "অক্সিলারি ১০"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "অক্সিলারি ১১"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "অক্সিলারি ১২"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "অক্সিলারি ১৩"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "অক্সিলারি ১৪"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "অক্সিলারি ১৫"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "অক্সিলারি ১৬"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "অক্সিলারি ১৭"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "অক্সিলারি ১৮"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "অক্সিলারি ১৯"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "অক্সিলারি ২০"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "অক্সিলারি ২১"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "অক্সিলারি ২২"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "অক্সিলারি ২৩"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "অক্সিলারি ২৪"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "অক্সিলারি ২৫"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "অক্সিলারি ২৬"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "অক্সিলারি ২৭"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "অক্সিলারি ২৮"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "অক্সিলারি ২৯"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "অক্সিলারি ৩০"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "অক্সিলারি ৩১"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "উপরে কেন্দ্রস্থিত"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "উপরে সামনে কেন্দ্রস্থিত"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "উপরে সামনে বাঁদিকে"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "উপরে সামনে ডানদিকে"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "উপরে পিছনে কেন্দ্রস্থিত"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "উপরে পিছনে বাঁদিকে"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(অবৈধ)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "স্টিরিও"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "সারাউন্ড ৪.০"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "সারাউন্ড ৪.১"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "সারাউন্ড ৫.০"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "সারাউন্ড ৫.১"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "সারাউন্ড ৭.১"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "ঠিক আছে"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "ব্যবহারাধিকার প্রত্যাখ্যাত"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "অজানা কমান্ড"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "অবৈধ আর্গুমেন্ট"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "এনটিটি উপস্থিত রয়েছে"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "এই ধরনের কোনো এনটিটি উপস্থিত নেই"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "সংযোগ প্রত্যাখ্যান করা হয়েছে"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "প্রোটোকল সংক্রান্ত ত্রুটি"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "সময়সীমা"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "কোনো অনুমোদনের-কি নেই"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "অভ্যন্তরীণ ত্রুটি"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "সংযোগ বন্ধ করা হয়েছে"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "এনটিটি kill করা হয়েছে"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "সার্ভার বৈধ নয়"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "মডিউল আরম্ভ করতে ব্যর্থ"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "অবস্থা সঠিক নয়"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "তথ্য অনুপস্থিত "
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "প্রোটোকলের সংস্করণে গরমিল"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "অত্যাধিক বড়"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "সমর্থিত নয়"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "অজানা ত্রুটির কোড"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "এই ধরনের কোনো এক্সটেনশন নেই"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "অবচিত বৈশিষ্ট্য"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "অনুপস্থিত বাস্তবায়ন"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "ক্লায়েন্ট ফর্ক করা হয়েছে"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f গিবিবাইট"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f মিবিবাইট"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f কিবিবাইট"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u বাইট"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() ব্যর্থ"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "কুকির তথ্য পার্স করতে ব্যর্থ"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "কনফিগারেশন ফাইল '%s' খুলতে ব্যর্থ: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "কোনো কুকি লোড করা হয়নি। কুকি বিনা সংযোগের প্রচেষ্টা করা হচ্ছে।"
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "অজানা এক্সটেনশন '%s'-র জন্য বার্তা প্রাপ্ত হয়েছে"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "সাফল্যের সাথে স্ট্রিম নির্মিত হয়েছে।\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "স্যাম্পেলের spec '%s', ও চ্যানেল ম্যাপ '%s' ব্যবহার করা হচ্ছে।\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "ষ্ট্রিম সংক্রান্ত ত্রুটি: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "স্ট্রিম ডিভাইস স্থগিত করা হয়েছে। %s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "স্ট্রিম ডিভাইস পুনরারম্ভ করা হয়েছে। %s \n"
+
+# underrun = ধীর গতির স্ট্রিম
+#: ../src/utils/pacat.c:217
+#, 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
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "স্ট্রিম মাত্রা অতিক্রম করেছে।%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "স্ট্রিম আরম্ভ করা হয়েছে। %s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "%s ডিভাইসে স্ট্রিম স্থানান্তর করা হয়েছে (%u, %ssuspended)।%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "না "
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "স্ট্রিম বাফারের অ্যাট্রিবিউট পরিবর্তিত হয়েছে। %s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "সংযোগ স্থাপিত হয়েছে।%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "সিগন্যাল প্রাপ্ত হয়েছে, প্রস্থান করা হবে।\n"
+
+# latency here = delay (technical term
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "লেটেন্সির পরিমাণ প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgstr "সময়: %0.3f সেকেন্ড; লেটেন্সি: %0.0f usec. \r"
+
+#: ../src/utils/pacat.c:498
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help এই সাহায্য বার্তা প্রদর্শন করা হবে\n"
+" --version সংস্করণ প্রদর্শন করা হবে\n"
+"\n"
+" -r, --record রেকর্ডিংয়ের জন্য সংযোগ স্থাপন করা হবে\n"
+" -p, --playback প্লে-ব্যাকের জন্য সংযোগ স্থাপন করা হবে\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"
+" --rate=SAMPLERATE Hz অনুযায়ী নির্ধারিত ডিফল্ট স্যাম্পেলের "
+"মাত্রা (ডিফল্ট মান 44100)\n"
+" --format=SAMPLEFORMAT স্যাম্পেলের ধরন, সম্ভাব্য মান হল s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(ডিফল্ট মান s16ne)\n"
+" --channels=CHANNELS চ্যানেলের সংখ্যা, মোনোর ক্ষেত্রে 1, "
+"স্টিরিওর ক্ষেত্রে 2\n"
+" (ডিফল্ট মান 2)\n"
+" --channel-map=CHANNELMAP ডিফল্টের পরিবর্তে ব্যবহারযোগ্য চ্যানেলের "
+"ম্যাপ\n"
+" --fix-format যে সিংকের সাথে স্ট্রিম সংযোগ স্থাপন "
+"করেছে, সেটি থেকে স্যাম্পেলের\n"
+" বিন্যাস প্রাপ্ত করুন।\n"
+" --fix-rate যে সিংকের সাথে স্ট্রিম সংযোগ স্থাপন "
+"করেছে, সেটি থেকে স্যাম্পলিংয়ের\n"
+" হার প্রাপ্ত করুন।\n"
+" --fix-channels যে সিংকের সাথে স্ট্রিম সংযোগ স্থাপন "
+"করেছে, সেটি থেকে চ্যানেলের সংখ্যা ও\n"
+" চ্যানেলের নাম প্রাপ্ত করুন।\n"
+" --no-remix চ্যানোল আপ-মিক্স অথবা ডাউন-মিক্স করা "
+"হবে না।\n"
+" --no-remap নামের পরিবর্তে ইন্ডেক্স অনুযায়ী চ্যানেল "
+"ম্যাপ করা হয়।\n"
+" --latency=BYTES বাইট অনুযায়ী নির্ধারিত লেটেন্সির অনুরোধ "
+"জানান।\n"
+" --process-time=BYTES বাইট অনুযায়ী, প্রতিটি অনুরোধের জন্য "
+"নির্ধারিত প্রসেস সময় অনুরোধ জানিয়ে দিন।\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"libpulse সহযোগে কম্পাইল করা হয়েছে %s\n"
+"libpulse-র সাথে যুক্ত %s\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "চ্যানেল ম্যাপ '%s' বৈধ নয়\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "লেটেন্সির জন্য নির্ধারিত বৈশিষ্ট্য '%s' বৈধ নয়\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "প্রসেসের সময়ের বৈশিষ্ট্য '%s' বৈধ নয়\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "অবৈধ স্যাম্পেল নির্ধারিত\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "একটি %s স্ট্রিম '%s' স্যাম্পেল বৈশিষ্ট্য সহ খোলা হচ্ছে।\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "রেকর্ড করা হচ্ছে"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() ব্যর্থ।\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() ব্যর্থ: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() ব্যর্থ।\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "স্থগিত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "পুনরারম্ভ করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "সতর্কবার্তা: শব্দের সার্ভারটি স্থানীয় নয় ও স্থগিত করা হচ্ছে না।\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT প্রাপ্ত হয়েছে, প্রস্থান করা হয়েছে।\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "সতর্কবার্তা: সিগন্যাল %u দ্বারা চাইল্ড প্রসেস বন্ধ করা হয়েছে\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help এই সাহায্য বার্তা প্রদর্শন করা হবে\n"
+" --version সংস্করণ প্রদর্শন করা হবে\n"
+" -s, --server=SERVER সংযোগ করার উদ্দেশ্যে চিহ্নিত সার্ভারের "
+"নাম\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"libpulse সহযোগে কম্পাইল করা হয়েছে %s\n"
+"libpulse-র সাথে যুক্ত %s\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "পরিসংখ্যান: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "বর্তমানে ব্যবহৃত: %u ব্লকের মধ্যে উপস্থিত সর্বমোট %s বাইট।\n"
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr ""
+"সম্পূর্ণ কর্মকালের জন্য বরাদ্দ করা হয়েছে: %u ব্লকের মধ্যে উপস্থিত সর্বমোট %s বাইট।\n"
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "স্যাম্পেল ক্যাশের মাপ: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "সার্ভার সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"ব্যবহারকারীর নাম: %s\n"
+"হোস্ট-নেম: %s\n"
+"সার্ভারের নাম: %s\n"
+"সার্ভারের সংস্করণ: %s\n"
+"স্যাম্পেলের ডিফল্ট নির্ধারিত মান: %s\n"
+"ডিফল্ট চ্যানেল ম্যাপ: %s\n"
+"ডিফল্ট সিংক: %s\n"
+"ডিফল্ট সোর্স: %s\n"
+"কুকি: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "সিংক সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"সিংক #%u\n"
+"\tঅবস্থা: %s\n"
+"\tনাম: %s\n"
+"\tবিবরণ: %s\n"
+"\tড্রাইভার: %s\n"
+"\tস্যাম্পেলের বৈশিষ্ট্য: %s\n"
+"\tচ্যানেল ম্যাপ: %s\n"
+"\tচিহ্নিত মডিউলের মালিকানাধীন: %u\n"
+"\tনিঃশব্দ: %s\n"
+"\tআওয়াজ: %s%s%s\n"
+"\t ভারসাম্য %0.2f\n"
+"\tআওয়াজের মূল মাত্রা: %s%s%s\n"
+"\tসোর্স নিরীক্ষণ: %s\n"
+"\tলেটেন্সি: %0.0f usec, কনফিগার করা হয়েছে %0.0f usec\n"
+"\tফ্ল্যাগ: %s%s%s%s%s%s\n"
+"\tবিবিধ বৈশিষ্ট্য:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "সোর্স সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"সোর্স #%u\n"
+"\tঅবস্থা: %s\n"
+"\tনাম: %s\n"
+"\tবিবরণ: %s\n"
+"\tড্রাইভার: %s\n"
+"\tস্যাম্পেলের বৈশিষ্ট্য: %s\n"
+"\tচ্যানেল ম্যাপ: %s\n"
+"\tচিহ্নিত মডিউলের মালিকানাধীন: %u\n"
+"\tনিঃশব্দ: %s\n"
+"\tআওয়াজ: %s%s%s\n"
+"\t ভারসাম্য %0.2f\n"
+"\tআওয়াজের মূল মাত্রা: %s%s%s\n"
+"\tসিংক নিরীক্ষণ: %s\n"
+"\tলেটেন্সি: %0.0f usec, কনফিগার করা হয়েছে %0.0f usec\n"
+"\tফ্ল্যাগ: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "মডিউল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"মডিউল #%u\n"
+"\tনাম: %s\n"
+"\tআর্গুমেন্ট: %s\n"
+"\tব্যবহারের সংখ্যা: %s\n"
+"\tবিবিধ বৈশিষ্ট্য:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "ক্লায়েন্ট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ক্লায়েন্ট #%u\n"
+"\tড্রাইভার: %s\n"
+"\tচিহ্নিত মডিউলের মালিকানাধীন: %s\n"
+"\tবিবিধ বৈশিষ্ট্য:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "কার্ড সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"কার্ড #%u\n"
+"\tনাম: %s\n"
+"\tড্রাইভার: %s\n"
+"\tচিহ্নিত মডিউলের মালিকানাধীন: %s\n"
+"\tবিবিধ বৈশিষ্ট্য:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tপ্রোফাইল:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tসক্রিয় প্রোফাইল: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "সিংক ইনপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"সিংক ইনপুট #%u\n"
+"\tড্রাইভার: %s\n"
+"\tচিহ্নিত মডিউলের মালিকানাধীন: %s\n"
+"\tক্লায়েন্ট: %s\n"
+"\tসিংক: %u\n"
+"\tস্যাম্পেলের বৈশিষ্ট্য: %s\n"
+"\tচ্যানেল ম্যাপ: %s\n"
+"\tনিঃশব্দ: %s\n"
+"\tআওয়াজ: %s\n"
+"\t %s\n"
+"\t ভারসাম্য %0.2f\n"
+"\tবাফারের লেটেন্সি: %0.0f usec\n"
+"\tসিংকের লেটেন্সি: %0.0f usec\n"
+"\tরি-স্যাম্পেলের পদ্ধতি %s\n"
+"\tবিবিধ বৈশিষ্ট্য:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "সোর্স আউটপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"সোর্সের আউটপুট #%u\n"
+"\tড্রাইভার: %s\n"
+"\tচিহ্নিত মডিউলের মালিকানাধীন: %s\n"
+"\tক্লায়েন্ট: %s\n"
+"\tসোর্স: %u\n"
+"\tস্যাম্পেলের বৈশিষ্ট্য: %s\n"
+"\tচ্যানেলের ম্যাপ: %s\n"
+"\tবাফারের লেটেন্সি: %0.0f usec\n"
+"\tসোর্সের লেটেন্সি: %0.0f usec\n"
+"\tরি-স্যাম্পেলের পদ্ধতি: %s\n"
+"\tবিবিধ বৈশিষ্ট্য:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n"
+
+# Lazy = low quality sample
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"স্যাম্পেল #%u\n"
+"\tনাম: %s\n"
+"\tস্যাম্পেলের বৈশিষ্ট্য: %s\n"
+"\tচ্যানেলের ম্যাপ: %s\n"
+"\tআওয়াজ: %s\n"
+"\t %s\n"
+"\t ভারসাম্য %0.2f\n"
+"\tঅবকাল: %0.1fs\n"
+"\tমাপ: %s\n"
+"\tলেজি (নিম্নমান): %s\n"
+"\tফাইলের নাম: %s\n"
+"\tবিবিধ বৈশিষ্ট্য:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "ব্যর্থতা: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "স্যাম্পেল আপলোড করতে ব্যর্থ: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "সম্পূর্ণ হওয়ার পূর্বে ফাইল সমাপ্ত হয়েছে\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help এই সাহায্য বার্তা প্রদর্শন করা হবে\n"
+" --version সংস্করণ সংখ্যা প্রদর্শন করা হবে\n"
+"\n"
+" -s, --server=SERVER সংযোগ করার উদ্দেশ্যে চিহ্নিত সার্ভার\n"
+" -n, --client-name=NAME সার্ভারের মধ্যে এই ক্লায়েন্টের পরিচয়\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulse সহযোগে কম্পাইল করা %s\n"
+"libpulse-র সাথে যুক্ত %s\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "লোড করার উদ্দেশ্যে অনুগ্রহ করে একটি স্যাম্পেল ফাইল উল্লেখ করুন\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "শব্দের ফাইল খুলতে ব্যর্থ।\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "বাজানোর উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "অপসারণের উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "সিংক ইনপুট ইন্ডেক্স ও একটি সিংক নির্ধারণ করা আবশ্যক\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "সোর্স আউটপুট ইন্ডেক্স ও একটি সোর্স নির্ধারণ করা আবশ্যক\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "মডিউলের নাম ও আর্গুমেন্ট নির্ধারণ করা আবশ্যক\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "মডিউল ইন্ডেক্স নির্ধারণ করা আবশ্যক\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "কার্ডের নাম/ইন্ডেক্স ও একটি প্রোফাইলের নাম উল্লেখ করা আবশ্যক\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "কোনো কমান্ড নির্ধারিত হয়নি।\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d X11 প্রদর্শনের সাথে যুক্ত PulseAudio-র বর্তমান তথ্য প্রদর্শন করা হবে (ডিফল্ট)\n"
+" -e স্থানীয় PulseAudio-র তথ্য X11 প্রদর্শনে এক্সপোর্ট করা হবে\n"
+" -i X11 প্রদর্শন থেকে PulseAudio-র তথ্য স্থানীয় এনভায়রনমেন্ট ভেরিয়েবল ও কুকি "
+"ফাইলের মধ্যে ইম্পোর্ট করা হবে\n"
+" -r X11 প্রদর্শন থেকে PulseAudio-র তথ্য মুছে ফেলা হবে\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "কমান্ড-লাইন পার্স করতে ব্যর্থ।\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "সার্ভার: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "সোর্স: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "সিংক: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "কুকি: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "কুকি সংক্রান্ত তথ্য পার্স করতে ব্যর্থ\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "কুকি সংক্রান্ত তথ্য সংরক্ষণ করতে ব্যর্থ\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "ক্লায়েন্ট কনফিগারেশন ফাইল লোড করতে ব্যর্থ।\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "পরিবেশ কনফিগারেশন সংক্রান্ত তথ্য পড়তে ব্যর্থ।\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDN প্রাপ্ত করতে ব্যর্থ।\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "কুকি সংক্রান্ত তথ্য লোড করতে ব্যর্থ\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "এখনো বাস্তবায়িত হয়নি।\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio ডেমন kill করতে ব্যর্থ।"
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "ডেমন থেকে কোনো প্রতিক্রিয়া পাওয়া যাচ্ছে না।"
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"লেখার যোগ্য কোনো তথ্য উপস্থিত না থাকলেও, ডিভাইসের মধ্যে নতুন তথ্য লেখার উদ্দেশ্যে "
+"ALSA থেকে চেতাবনী প্রাপ্ত হয়েছে!\n"
+"সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA "
+"ডিভেলপরদের সূচিত করুন।\n"
+"POLLOUT set দ্বারা চেতাবনী সৃষ্টি হয়েছে -- পরবর্তী snd_pcm_avail() থেকে 0 অথবা < "
+"min_avail-র থেকে কম অন্য একটি মান প্রাপ্ত হয়েছে।"
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"পড়ার যোগ্য কোনো তথ্য উপস্থিত না থাকলেও, ডিভাইস থেকে নতুন তথ্য পড়ার উদ্দেশ্যে ALSA "
+"থেকে চেতাবনী প্রাপ্ত হয়েছে!\n"
+"সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA "
+"ডিভেলপরদের সূচিত করুন।\n"
+"POLLIN set দ্বারা চেতাবনী সৃষ্টি হয়েছে -- পরবর্তী snd_pcm_avail() থেকে 0 অথবা < "
+"min_avail-র থেকে কম অন্য একটি মান প্রাপ্ত হয়েছে।"
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "আউটপুট %s + ইনপুট %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "আউটপুট %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "ইনপুট %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "বন্ধ"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "হাই-ফিডেলিটি প্লে-ব্যাক (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "টেলিফোনি ডুপ্লে (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio শব্দের সার্ভার"
diff --git a/po/ca.po b/po/ca.po
index ae699a3..fe59d54 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -19,9 +19,9 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
-"PO-Revision-Date: 2009-02-15 20:53+0100\n"
-"Last-Translator: Agusti Grau <fletxa@gmail.com>\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-03-18 21:47+0100\n"
+"Last-Translator: Agustí Grau <fletxa@gmail.com>\n"
"Language-Team: Catalan <fedora@softcatala.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -29,49 +29,49 @@ msgstr ""
#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
-msgstr ""
+msgstr "Mono analògic"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
-msgstr ""
+msgstr "Estèreo analògic"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
-msgstr ""
+msgstr "Estèreo digital (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
-msgstr ""
+msgstr "Estèreo digital (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
-msgstr ""
+msgstr "Envolvent 4.0 analògic"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
+msgstr "Envolvent 4.0 digital (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
-msgstr ""
+msgstr "Envolvent 4.1 analògic"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
-msgstr ""
+msgstr "Envolvent 5.0 analògic"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
-msgstr ""
+msgstr "Envolvent 5.1 analògic"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
+msgstr "Envolvent 5.1 digital (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
-msgstr ""
+msgstr "Envolvent analògic 7.1"
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -79,8 +79,13 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_avail() ha retornat un valor que és excepcionalment gran: %lu bytes "
+"(%lu ms).\n"
+"En la majoria dels casos és un error del controlador ALSA '%s'. Siusplau, "
+"informeu d'aquest\n"
+"incident als desenvolupadors d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -88,8 +93,13 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_delay() ha retornat un valor excepcionalment gran: %li bytes (%s%lu "
+"ms).\n"
+"En la majoria dels casos és un error del controlador ALSA '%s'. Siusplau, "
+"informeu d'aquest\n"
+"incident als desenvolupadors d'ALSA."
-#: ../src/modules/alsa/alsa-util.c:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -97,25 +107,28 @@ 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() ha retornat un valor excepcionalment gran: %lu bytes (%"
+"lu ms).\n"
+"En la majoria dels casos és un error del controlador ALSA '%s'. Siusplau, "
+"informeu d'aquest\n"
+"incident als desenvolupadors d'ALSA."
-#: ../src/pulsecore/sink.c:1963
+#: ../src/pulsecore/sink.c:2141
#, fuzzy
msgid "Internal Audio"
msgstr "S'ha produït un error intern"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
msgstr ""
#: ../src/daemon/ltdl-bind-now.c:124
-#, fuzzy
msgid "Failed to find original lt_dlopen loader."
-msgstr "No s'ha trobat el carregador dlopen original."
+msgstr "No s'ha trobat el carregador lt_dlopen original."
#: ../src/daemon/ltdl-bind-now.c:129
-#, fuzzy
msgid "Failed to allocate new dl loader."
-msgstr "No s'ha trobat el carregador dlopen original."
+msgstr "S'ha produït un error en allotjar el nou carregador dl."
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
@@ -175,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:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "S'ha obtingut la senyal %s."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "S'està sortint."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "S'ha produït un error en trobar l'usuari '%s'."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "S'ha produït un error en trobar el grup '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "S'ha produït un error durant la creació '%s': %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, 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:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "S'ha produït un error en canviar la GID: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "S'ha produït un error en canviar la UID: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "S'han lliberat els permissos de root amb éxit."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr "El mode de sistema ampli no està suportat en aquesta plataforma."
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, 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:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "S'ha produït un error en interpretar la línia de comandes."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, 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:465
+#: ../src/daemon/main.c:507
#, 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:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr "PolicyKit ha permés el permís acquire-high-priority."
+msgstr "PolicyKit ha permés el privilegi acquire-high-priority."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr "PolicyKit ha rebutjat el permís acquire-high-priority."
+msgstr "PolicyKit ha rebutjat el privilegi acquire-high-priority."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr "PolicyKit h permés el permís acquire-real-time."
+msgstr "PolicyKit h permés el privilegi acquire-real-time."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr "PolicyKit ha rebutjat el permís acquire-real-time."
+msgstr "PolicyKit ha rebutjat el privilegi acquire-real-time."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -287,49 +300,57 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
+"S'ha demanat SUID de root i una planificació de temps real i/o d'alta "
+"prioritat. De totes formes, falten els privilegis necessaris:\n"
+"No es pertany al grup '%s'. PolicyKit no atorga els privilegis demanats i no "
+"s'ha incrementat els límits de recursos RLIMIT_NICE/RLIMIT_RTPRIO.\n"
+"Per habilitar la planificació en temps real o d'alta prioritat, heu "
+"d'obtenir els privilegis de PolicyKits adequats, o pertànyer al grup '%s', o "
+"incrementar els límits de recursos de RLIMIT_NICE/RLIMIT_RTPRIO per a aquest "
+"usuari."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
-msgstr "Es deixa CAP_NICE"
+msgstr "S'abandona CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-"La prioritat temps real està habilitada en la configuració però no està "
+"La prioritat de temps real està habilitada en la configuració però no està "
"permesa per la política."
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
-msgstr "El dimoni no s'està executant."
+msgstr "El dimoni no s'està executant"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "El dimoni s'està executant amb PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "S'ha produït un error en matar el dimoni: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -337,182 +358,198 @@ msgstr ""
"No és necessari executar aquesta aplicació com a root (excepte si "
"s'especifica --system)"
-#: ../src/daemon/main.c:677
-#, fuzzy
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
-msgstr "Es requereixen permísos de root."
+msgstr "Es requereixen privilegis de root."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "La opció --start no està suportada per a instàncies de sistema."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-"S'està executant en mode sistema, però no s'ha especificat la opció --"
+"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-exit."
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:732
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-"S'està executant en mode sistema, però no s'ha especificat la opció --"
+"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-module-loading."
-#: ../src/daemon/main.c:693
+#: ../src/daemon/main.c:735
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:698
+#: ../src/daemon/main.c:740
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:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "S'ha produït un error en adquirir stdio."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "Ha fallat la canonada: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "Ha fallat fork(): %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "Ha fallat read(): %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "S'ha produït un error en iniciar el dimoni."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "S'ha iniciat el dimoni."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Aquest és el PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilació: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilació: %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "S'està executant en el host: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
-msgstr ""
+msgstr "S'han trobat %u CPU's"
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "La mida de pàgina és de %lu bytes."
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Compilat amb suport per a Valgrind: sí"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Compilat amb suport per a Valgrind: no"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "S'està executant amb el mode valgrind: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Construcció optimitzada: sí"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Construcció optmitzada: no"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
-msgstr "S'ha produït un error en obtenir la ID de la màquina"
+msgstr "S'ha produït un error en obtenir l'ID de la màquina"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
-msgstr "La ID de la màquina és %s."
+msgstr "L'ID de la màquina és %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "L'ID de la màquina és %s."
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
-msgstr "S'esta utilitzant el directori d'execució %s."
+msgstr "S'està utilitzant el directori d'execució %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
-msgstr "Estàn disponibles els temporitzadors frescos de alta resolució."
+msgstr "Estan disponibles els temporitzadors frescos de alta resolució."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-"Es recomana la utilització d'un kernel amb els temporitzadors d'alta "
+"Es recomana la utilització d'un nucli amb els temporitzadors d'alta "
"resolució habilitats."
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
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:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
#: ../src/daemon/cmdline.c:121
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -588,15 +625,14 @@ msgstr ""
"\n"
"COMANDES:\n"
" -h, --help Mostra aquesta ajuda\n"
-" --version Mostra la versió\n"
-" --dump-conf Volca la configuració per "
-"omissió\n"
-" --dump-modules Volca la llista de mòduls\n"
-" --dump-resample-methods Volca els mètodes "
-"disponibles de remostratge\n"
-" --cleanup-shm Neteja els segments de "
-"memòria compartida sense emprar\n"
-" --start Inicia el dimoni si aquest no està "
+" --version Mostra la versió\n"
+" --dump-conf Volca la configuració per omissió\n"
+" --dump-modules Volca la llista de mòduls\n"
+" --dump-resample-methods Volca els mètodes disponibles de "
+"remostratge\n"
+" --cleanup-shm Neteja els segments de memòria "
+"compartida sense emprar\n"
+" --start Inicia el dimoni si aquest no està "
"corrent\n"
" -k --kill Mata el dimoni en execució\n"
" --check Comprova l'execució del dimoni\n"
@@ -637,7 +673,13 @@ msgstr ""
" --log-level[=NIVELL] Incrementa o especifica el nivell de "
"detall\n"
" -v Incrementa el nivell de detall\n"
-" --log-target={auto,syslog,stderr} Especifica el destí del log\n"
+" --log-target={auto,syslog,stderr} Especifica el destí del registre\n"
+" --log-meta[=BOOL] Inclou codi de localització en els "
+"missatges de registre\n"
+" --log-time[=BOOL] Inclou marques de temps en els "
+"missatges de registre\n"
+" --log-backtrace=FRAMES Inclou una traça en els missatges de "
+"registre\n"
" -p, --dl-search-path=CAMI Estableix el camí de cerca "
"d'objectes dinàmics\n"
" compartits (plugins)\n"
@@ -652,7 +694,7 @@ msgstr ""
"compartida.\n"
"\n"
"SCRIPT D'INICI:\n"
-" -L, --load=\"ARGUMENTS MODUL\" Carrega el mòdul especificat amb\n"
+" -L, --load=\"ARGUMENTS MODUL\" Carrega el mòdul especificat amb\n"
" els arguments especificats\n"
" -F, --file=NOMFITXER Executa l'script especificat\n"
" -C Obre una línia d'ordres en la TTY "
@@ -662,7 +704,6 @@ msgstr ""
" -n No carreguis el fitxer de "
"configuració per omissió\n"
-# xc
#: ../src/daemon/cmdline.c:252
msgid "--daemonize expects boolean argument"
msgstr "--daemonize necessita un argument booleà"
@@ -692,9 +733,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading necessita un argument booleà"
#: ../src/daemon/cmdline.c:302
-#, fuzzy
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit necessita un argument booleà"
+msgstr "--disallow-exit necessita d'un argument booleà"
#: ../src/daemon/cmdline.c:309
msgid "--use-pid-file expects boolean argument"
@@ -705,14 +745,12 @@ 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
-#, fuzzy
msgid "--log-time expects boolean argument"
-msgstr "--realtime necessita un argument booleà"
+msgstr "--logtime necessita un argument booleà"
#: ../src/daemon/cmdline.c:340
-#, fuzzy
msgid "--log-meta expects boolean argument"
-msgstr "--realtime necessita un argument booleà"
+msgstr "--log-meta necessita un argument booleà"
#: ../src/daemon/cmdline.c:359
#, c-format
@@ -774,12 +812,12 @@ msgstr "Ruta: %s\n"
#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
-msgstr "[%s:%u] Destí de log incorrecte '%s'"
+msgstr "[%s:%u] Destí de registre incorrecte '%s'"
#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
-msgstr "[%s:%u] Nivell de log incorrecte '%s'."
+msgstr "[%s:%u] Nivell de registre incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:247
#, c-format
@@ -812,9 +850,9 @@ msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
+msgstr "[%s:%u] Mapa de canals incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:371
#, c-format
@@ -841,6 +879,8 @@ msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"El mapa de canals especificat per omissió té un número de canals diferent "
+"del número de canals especificat per omissió."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -848,9 +888,8 @@ msgid "### Read from configuration file: %s ###\n"
msgstr "### Lectura del fitxer de configuració: %s ###\n"
#: ../src/daemon/caps.c:63
-#, fuzzy
msgid "Dropping root privileges."
-msgstr "Lliberant privilegis de root."
+msgstr "Alliberant els privilegis de root."
#: ../src/daemon/caps.c:103
msgid "Limited capabilities successfully to CAP_SYS_NICE."
@@ -858,11 +897,11 @@ msgstr "S'han limitat les capacitats cap a CAP_SYS_NICE."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "Sistema de so PulseAudio"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "Inicialitza el sistema de so PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
@@ -1097,27 +1136,27 @@ msgstr "(incorrecte)"
#: ../src/pulse/channelmap.c:808
msgid "Stereo"
-msgstr ""
+msgstr "Estèreo"
#: ../src/pulse/channelmap.c:813
msgid "Surround 4.0"
-msgstr ""
+msgstr "Envolvent 4.0"
#: ../src/pulse/channelmap.c:819
msgid "Surround 4.1"
-msgstr ""
+msgstr "Envolvent 4.1"
#: ../src/pulse/channelmap.c:825
msgid "Surround 5.0"
-msgstr ""
+msgstr "Envolvent 5.0"
#: ../src/pulse/channelmap.c:831
msgid "Surround 5.1"
-msgstr ""
+msgstr "Envolvent 5.1"
#: ../src/pulse/channelmap.c:838
msgid "Surround 7.1"
-msgstr ""
+msgstr "Envolvent 7.1"
#: ../src/pulse/error.c:43
msgid "OK"
@@ -1209,11 +1248,11 @@ msgstr "No existeix l'extensió"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "Funcionalitat obsoleta"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "Manca la implementació"
#: ../src/pulse/error.c:67
msgid "Client forked"
@@ -1222,56 +1261,56 @@ msgstr ""
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:181
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f GB"
#: ../src/pulse/sample.c:183
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f MB"
#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f KB"
#: ../src/pulse/sample.c:187
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "Ha fallat XOpenDisplay()"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Ha fallat el parseig de les dades de la cookie"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "S'ha produït un error en obrir el fitxer de configuració '%s': %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "No s'ha carregat cap cookie. S'està intentant connectar sense aquesta."
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "S'ha rebut un missatge per a l'extensió desconeguda '%s'"
@@ -1346,99 +1385,104 @@ msgstr "Desbordament de flux.%s\n"
#: ../src/utils/pacat.c:231
#, c-format
msgid "Stream started.%s \n"
-msgstr "S'ha iniciat l'stream.%s\n"
+msgstr "S'ha iniciat el flux.%s\n"
#: ../src/utils/pacat.c:238
#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
-msgstr "S'ha mogut l'stream al dispositiu %s (%u, %s suspés).%s\n"
+msgstr "S'ha mogut el flux al dispositiu %s (%u, %s suspés).%s\n"
#: ../src/utils/pacat.c:238
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Dades insuficients al flux .%s\n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "S'ha establert la connexió.%s\n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Ha fallat pa_stream_new(): %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ha fallat la connexió: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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 l'stream: %s\n"
+msgstr "S'ha produït un error en drenar el fluxe: %s\n"
-#: ../src/utils/pacat.c:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "S'ha llegit EOF.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "Ha fallat read(): %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "Ha fallat write(): %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
-msgstr "S'ha rebut una signal, s'està sortint.\n"
+msgstr "S'ha rebut un senyal, s'està sortint.\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Ha fallat en obtenir la latència: %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, 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:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1536,9 +1580,9 @@ msgstr ""
"de per nom .\n"
" --latency=BYTES Especifica la latència en bytes.\n"
" --process-time=BYTES Especifica el temps de procés per "
-"peticio en bytes.\n"
+"petició en bytes.\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1549,88 +1593,88 @@ msgstr ""
"Compil·lat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canals invàlid '%s'\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificació de latència invàlida '%s'\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificació de temps de procés invàlida '%s'\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Especificació de mostra invàlida\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
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:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "S'està obrint un flux %s amb especificació de mostra '%s'.\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "enregistrant"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "reproducció"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Hi han massa arguments.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Ha fallat pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "Ha fallat io_new().\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Ha fallat pa_context_new().\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Ha fallat pa_context_connect(): %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "Ha fallat time_new().\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -1721,7 +1765,7 @@ msgstr ""
#: ../src/utils/pactl.c:120
#, c-format
msgid "Sample cache size: %s\n"
-msgstr "Mida de caché de mostra: %s\n"
+msgstr "Mida de memòria cau de mostra: %s\n"
#: ../src/utils/pactl.c:129
#, c-format
@@ -1729,7 +1773,7 @@ msgid "Failed to get server information: %s\n"
msgstr "Ha fallat en obtenir la informació del servidor: %s\n"
#: ../src/utils/pactl.c:137
-#, fuzzy, c-format
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1746,6 +1790,7 @@ msgstr ""
"Nom del servidor: %s\n"
"Versió del servidor: %s\n"
"Especificació per omissió de la mostra: %s\n"
+"Mapa de canals per omissió: %s\n"
"Conducte per omissió: %s\n"
"Font per omissió: %s\n"
"Cookie: %08x\n"
@@ -1756,7 +1801,7 @@ msgid "Failed to get sink information: %s\n"
msgstr "Ha fallat en obtenir la informació del conducte: %s\n"
#: ../src/utils/pactl.c:194
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sink #%u\n"
"\tState: %s\n"
@@ -1776,18 +1821,23 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Conducte #%u ***\n"
-"Nom: %s\n"
-"Controlador: %s\n"
-"Especificació de mostra: %s\n"
-"Mapa de canals: %s\n"
-"Propietari del mòdul: %u\n"
-"Volum: %s\n"
-"Font del monitor: %s\n"
-"Latència: %0.0f microsegs., configurat %0.0f microsegs\n"
-"Flags: %s%s%s%s%s%s\n"
-"Propietats:\n"
-"%s"
+"Conducte #%u\n"
+"\tEstat: %s\n"
+"\tNom: %s\n"
+"\tDescripció: %s\n"
+"\tControlador: %s\n"
+"\tEspecificació de mostra: %s\n"
+"\tMapa de canals: %s\n"
+"\tPropietari del mòdul: %u\n"
+"\tSilenciat: %s\n"
+"\tVolum: %s%s%s\n"
+"\t balanceig %0.2f\n"
+"\tVolum bàsic: %s%s%s\n"
+"\tFont del monitor: %s\n"
+"\tLatència: %0.0f microsegs., configurat %0.0f microsegs\n"
+"\tModificadors: %s%s%s%s%s%s\n"
+"\tPropietats:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:258
#, c-format
@@ -1795,7 +1845,7 @@ 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
-#, fuzzy, c-format
+#, c-format
msgid ""
"Source #%u\n"
"\tState: %s\n"
@@ -1815,18 +1865,23 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Font #%u ***\n"
-"Nom: %s\n"
-"Controlador: %s\n"
-"Especificació de mostra: %s\n"
-"Mapa de canals: %s\n"
-"Propietari del mòdul: %u\n"
-"Volum: %s\n"
-"Monitor del conducte: %s\n"
-"Latència: %0.0f microsegs., configurat %0.0f microsegs.\n"
-"Flags: %s%s%s%s%s%s\n"
-"Propietats:\n"
-"%s"
+"Font #%u\n"
+"\tEstat: %s\n"
+"\tNom: %s\n"
+"\tDescripció: %s\n"
+"\tControlador: %s\n"
+"\tEspecificació de mostra: %s\n"
+"\tMapa de canals: %s\n"
+"\tPropietari del mòdul: %u\n"
+"\tSilenciat: %s\n"
+"\tVolum: %s%s%s\n"
+"\t balanceig %0.2f\n"
+"\tVolum bàsic: %s%s%s\n"
+"\tMonitor del conducte: %s\n"
+"\tLatència: %0.0f microsegs., configurat %0.0f microsegs.\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\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
@@ -1842,7 +1897,7 @@ msgid "Failed to get module information: %s\n"
msgstr "Ha fallat en obtenir informació del mòdul: %s\n"
#: ../src/utils/pactl.c:342
-#, fuzzy, c-format
+#, c-format
msgid ""
"Module #%u\n"
"\tName: %s\n"
@@ -1851,11 +1906,12 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Mòdul #%u ***\n"
-"Nom: %s\n"
-"Arguments: %s\n"
-"Contador d'utilització: %s\n"
-"Auto descàrrega: %s\n"
+"Mòdul #%u\n"
+"\tNom: %s\n"
+"\tArguments: %s\n"
+"\tContador d'utilització: %s\n"
+"\tPropietats:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:361
#, c-format
@@ -1863,7 +1919,7 @@ msgid "Failed to get client information: %s\n"
msgstr "Ha fallat en obtenir informació: %s\n"
#: ../src/utils/pactl.c:379
-#, fuzzy, c-format
+#, c-format
msgid ""
"Client #%u\n"
"\tDriver: %s\n"
@@ -1871,19 +1927,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Client #%u ***\n"
-"Controlador: %s\n"
-"Propietari del mòdul: %s\n"
-"Propietats:\n"
-"%s"
+"Client #%u\n"
+"\tControlador: %s\n"
+"\tPropietari del mòdul: %s\n"
+"\tPropietats:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:396
-#, fuzzy, c-format
+#, c-format
msgid "Failed to get card information: %s\n"
-msgstr "Ha fallat en obtenir la informació de la càrrega automàtica: %s\n"
+msgstr "Ha fallat en obtenir la informació de la targeta: %s\n"
#: ../src/utils/pactl.c:414
-#, fuzzy, c-format
+#, c-format
msgid ""
"Card #%u\n"
"\tName: %s\n"
@@ -1892,21 +1948,22 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Client #%u ***\n"
-"Controlador: %s\n"
-"Propietari del mòdul: %s\n"
-"Propietats:\n"
-"%s"
+"Targeta #%u\n"
+"\tNom: %s\n"
+"\tControlador: %s\n"
+"\tPropietari del mòdul: %s\n"
+"\tPropietats:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tPerfils:\n"
#: ../src/utils/pactl.c:434
-#, fuzzy, c-format
+#, c-format
msgid "\tActive Profile: %s\n"
-msgstr "Ha fallat la canonada: %s"
+msgstr "\tPerfil actiu: %s\n"
#: ../src/utils/pactl.c:445
#, c-format
@@ -1914,7 +1971,7 @@ 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
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sink Input #%u\n"
"\tDriver: %s\n"
@@ -1933,19 +1990,22 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Conducte d'entrada #%u ***\n"
-"Controlador: %s\n"
-"Propietari del mòdul: %s\n"
-"Client: %s\n"
-"Conducte: %u\n"
-"Especificació de mostra: %s\n"
-"Mapa de canals: %s\n"
-"Volum: %s\n"
-"Latència de búffer: %0.0f microsegs.\n"
-"Latència del conducte: %0.0f microsegs.\n"
-"Mètode de remostreig: %s\n"
-"Propietats:\n"
-"%s"
+"Conducte d'entrada #%u\n"
+"\tControlador: %s\n"
+"\tPropietari del mòdul: %s\n"
+"\tClient: %s\n"
+"\tConducte: %u\n"
+"\tEspecificació de mostra: %s\n"
+"\tMapa de canals: %s\n"
+"\tSilenciat: %s\n"
+"\tVolum: %s\n"
+"\t %s\n"
+"\t balacenig %0.2f\n"
+"\tLatència de búffer: %0.0f microsegs.\n"
+"\tLatència del conducte: %0.0f microsegs.\n"
+"\tMètode de remostreig: %s\n"
+"\tPropietats:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:503
#, c-format
@@ -1953,7 +2013,7 @@ 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
-#, fuzzy, c-format
+#, c-format
msgid ""
"Source Output #%u\n"
"\tDriver: %s\n"
@@ -1968,26 +2028,26 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Sortida de la font #%u ***\n"
-"Driver: %s\n"
-"Propietari del mòdul: %s\n"
-"Client: %s\n"
-"Font: %u\n"
-"Especificació de mostra: %s\n"
-"Mapa de canals: %s\n"
-"Latència de búffer: %0.0f microsegs.\n"
-"Latència de la font: %0.0f microsegs.\n"
-"Mètode de remostreig: %s\n"
-"Propietats:\n"
-"%s"
+"Sortida de la font #%u\n"
+"\tControladr: %s\n"
+"\tPropietari del mòdul: %s\n"
+"\tClient: %s\n"
+"\tFont: %u\n"
+"\tEspecificació de mostra: %s\n"
+"\tMapa de canals: %s\n"
+"\tLatència de búffer: %0.0f microsegs.\n"
+"\tLatència de la font: %0.0f microsegs.\n"
+"\tMètode de remostreig: %s\n"
+"\tPropietats:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
-msgstr "Ha fallat en obteinr informació de la mostra: %s\n"
+msgstr "Ha fallat en obtenir informació de la mostra: %s\n"
#: ../src/utils/pactl.c:572
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sample #%u\n"
"\tName: %s\n"
@@ -2003,17 +2063,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Mostra #%u ***\n"
-"Nom: %s\n"
-"Volum: %s\n"
-"Especificació de mostra: %s\n"
-"Mapa de canals: %s\n"
-"Duració: %0.1fs\n"
-"Mida: %s\n"
-"Lazy: %s\n"
-"Nom de fitxer: %s\n"
-"Propietats:\n"
-"%s"
+"Mostra #%u\n"
+"\tNom: %s\n"
+"\ttEspecificació de mostra: %s\n"
+"\tMapa de canals: %s\n"
+"\tVolum: %s\n"
+"\t %s\n"
+"\t balanceig %0.2f\n"
+"\tDuració: %0.1fs\n"
+"\tMida: %s\n"
+"\tLazy: %s\n"
+"\tNom de fitxer: %s\n"
+"\tPropietats:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
@@ -2031,7 +2093,7 @@ msgid "Premature end of file\n"
msgstr "S'ha trobat un fi de fitxer prematurament\n"
#: ../src/utils/pactl.c:774
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2067,14 +2129,15 @@ msgstr ""
"%s [opcions] unload-module ID\n"
"%s [opcions] suspend-sink [CONDUCTE] 1|0\n"
"%s [opcions] suspend-source [FONT] 1|0\n"
+"%s [opcions] set-card-profile [TARGETA] [PERFIL] \n"
"\n"
" -h, --help Mostra aquesta ajuda\n"
" --version Mostra la versió\n"
+"\n"
" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
"se\n"
" -n, --client-name=NOM Com cridar aquest client al "
"servidor\n"
-"\n"
#: ../src/utils/pactl.c:826
#, c-format
@@ -2084,7 +2147,7 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
"pactl %s\n"
-"Compil·lat amb libpulse %s\n"
+"Compilat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
#: ../src/utils/pactl.c:865
@@ -2128,27 +2191,26 @@ msgid "You have to specify a module index\n"
msgstr "Heu d'especificar un índex de mòdul\n"
#: ../src/utils/pactl.c:972
-#, fuzzy, c-format
+#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-"No haríeu d'especificar més d'un conducte. Heu d'especifcar com a mínim un "
-"valor booleà.\n"
+"No haríeu d'especificar més d'un conducte. Heu d'especifcar un valor "
+"booleà.\n"
#: ../src/utils/pactl.c:985
-#, fuzzy, c-format
+#, c-format
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 com a mínim un "
-"valor booleà.\n"
+"No haríeu d'especificar més d'una font. Heu d'especificar un valor booleà.\n"
#: ../src/utils/pactl.c:997
-#, fuzzy, c-format
+#, c-format
msgid "You have to specify a card name/index and a profile name\n"
-msgstr "Heu d'especificar una entrada del conducte i un conducte\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
@@ -2172,9 +2234,9 @@ msgstr ""
" -d Mostra les dades actuals de PulseAudio vinculat a una pantalla X11 "
"(per omissió)\n"
" -e Exporta les dades locals de PulseAudio a una pantalla X11\n"
-" -i Importa les dades de PulseAudio de una pantalla X11 a les variables "
+" -i Importa les dades de PulseAudio d'una pantalla X11 a les variables "
"d'entorn locals i a un fitxer cookie\n"
-" -r Esborra les dades de PulseAudio de una pantalla X11\n"
+" -r Esborra les dades de PulseAudio d'una pantalla X11\n"
#: ../src/utils/pax11publish.c:94
#, c-format
@@ -2383,6 +2445,61 @@ msgstr "S'estan utilitzant les especificacions de mostra '%s'\n"
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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+#, fuzzy
+msgid "PulseAudio Sound Server"
+msgstr "Sistema de so PulseAudio"
+
#~ 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 c4e857f..408c3ea 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
"PO-Revision-Date: 2008-10-19 22:31+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
@@ -21,47 +21,47 @@ msgstr ""
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -70,7 +70,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -79,7 +79,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -88,12 +88,12 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:1963
+#: ../src/pulsecore/sink.c:2141
#, fuzzy
msgid "Internal Audio"
msgstr "Vnitřní chyba"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
msgstr ""
@@ -165,105 +165,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:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Získán signál %s."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Ukončování."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Nezdařilo se nalézt uživatele \"%s\"."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Nezdařilo se nalézt skupinu \"%s\"."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Nezdařilo se vytvořit \"%s\": %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "Nezdařilo se změnit seznam skupin: %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "Nezdařilo se změnit GID: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "Nezdařilo se změnit UID: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "Oprávnění superuživatele úspěšně zrušena."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
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:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) selhalo: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "Nezdařila se analýza příkazového řádku."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Nacházíme se ve skupině \"%s\", což umožňuje plánování o vysoké prioritě."
-#: ../src/daemon/main.c:465
+#: ../src/daemon/main.c:507
#, 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:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nám udělil oprávnění acquire-high-priority."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit nám neudělil oprávnění acquire-high-priority."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nám udělil oprávnění acquire-real-time."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit nám neudělil oprávnění acquire-real-time."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -276,46 +276,46 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Úspěšně zvýšeno RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO selhalo: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "Vzdávání se CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
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:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "Démon neběží"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "Démon běží jako PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zabití démona se nezdařilo: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -323,143 +323,160 @@ msgstr ""
"Tento program není určen ke spuštění pod superuživatelem (není-li zadáno --"
"system)."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
#, fuzzy
msgid "Root privileges required."
msgstr "Jsou vyžadována oprávnění superuživatele."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start nepodporováno u systémových instancí."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
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:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
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:698
+#: ../src/daemon/main.c:740
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:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "Nezdařilo se získání stdio."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "pipe selhalo: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "fork() selhalo: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "read() selhalo: %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Spuštění démona selhalo."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "Spuštění démona bylo úspěšné."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Toto je PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Překladový počítač: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Překladové CFLAGS: %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "Běží na počítači: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "Velikost stránky je %lu bajtů"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Přeloženo s podporou Valgrind: ano"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Přeloženo s podporou Valgrind: ne"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Běží v režimu valgrind: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Optimalizované sestavení: ano"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Optimalizované sestavení: ne"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Nezdařilo se získání ID počítače"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "ID počítače je %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "ID počítače je %s."
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "Používán běhový adresář %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "Používán stavový adresář %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "Běží v systémovém režimu: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"Jsou dostupné výtečné časovače o vysokém rozlišení. Tak s chutí do toho!"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -467,27 +484,27 @@ msgstr ""
"Sorry, vole, kernel error! Tip šéfkuchaře na dnešní den zní: Linux se "
"zapnutými časovači o vysokém rozlišení."
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Selhalo spuštění démona."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
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:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "Spuštění démona dokončeno."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "Vypínání démona spuštěno."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "Démon ukončen."
@@ -1198,30 +1215,30 @@ msgstr ""
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:523
+#: ../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:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Přijata zpráva pro neznámé rozšíření \"%s\""
@@ -1306,88 +1323,93 @@ msgstr "Proud přesunut na zařízení %s (%u, %ssuspended).%s \n"
msgid "not "
msgstr "nikoliv "
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Podběhnutí proudu.%s \n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Spojení navázáno.%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() selhalo: %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() selhalo: %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() selhalo: %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Spojení selhalo: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "Získáno EOF.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read() selhalo: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write() selhalo: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Získán signál, ukončování.\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Nezdařilo se získat latenci: %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() selhalo: %s\n"
-#: ../src/utils/pacat.c:503
+#: ../src/utils/pacat.c:511
#, fuzzy, c-format
msgid ""
"%s [options]\n"
@@ -1467,7 +1489,7 @@ msgstr ""
" Požadavek in bajty\n"
" čas Požadavek čas in bajty n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1478,88 +1500,88 @@ msgstr ""
"Přeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Neplatná mapa kanálů \"%s\"\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Neplatné upřesnění latence \"%s\"\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Neplatné upřesnění času zpracování \"%s\"\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Neplatné upřesnění vzorkování\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
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:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Otevírání proudu %s s upřesněním vzorkování \"%s\".\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "nahrávání"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "přehrávání"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Příliš mnoho argumentů.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() selhalo.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() selhalo.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() selhalo.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() selhalo: %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() selhalo.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -2220,6 +2242,60 @@ msgstr "s n"
msgid "Cannot access autospawn lock."
msgstr "přístup."
+#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/de.po b/po/de.po
index 3e78cdb..492c99c 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
"PO-Revision-Date: 2009-02-19 12:04+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n"
@@ -22,53 +22,53 @@ msgstr ""
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
#, fuzzy
msgid "Analog Stereo"
msgstr "Stereo"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
#, fuzzy
msgid "Analog Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
#, fuzzy
msgid "Analog Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
#, fuzzy
msgid "Analog Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
#, fuzzy
msgid "Analog Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
#, fuzzy
msgid "Analog Surround 7.1"
msgstr "Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +77,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -86,7 +86,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -95,12 +95,12 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:1963
+#: ../src/pulsecore/sink.c:2141
#, fuzzy
msgid "Internal Audio"
msgstr "Interner Fehler"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
msgstr ""
@@ -170,107 +170,107 @@ msgstr "Keine Authorisierung erhalten: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit antwortete mit '%s'"
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, 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:465
+#: ../src/daemon/main.c:507
#, 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:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Richtlinien gewähren das Recht aquire-real-time."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Richtlinien verweigern das Recht acquire-real-time."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, fuzzy, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -286,44 +286,44 @@ msgstr ""
"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "Verwerfe CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -331,167 +331,184 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermaßen deaktiviert!"
-#: ../src/daemon/main.c:698
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaßen deaktiviert!"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "Seitengröße ist %lu Bytes."
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "System- ID ist %s."
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
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:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -1220,30 +1237,30 @@ msgstr "%u B"
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() fehlgeschlagen"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Parsen der Cookie-Daten fehlgeschlagen"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "Verbindungsversuch ohne Cookie, da keines geladen."
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
@@ -1327,88 +1344,93 @@ msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n"
msgid "not "
msgstr "nicht "
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Stream unterlaufen.%s \n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Verbindung hergestellt.%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Verbindungsfehler: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "EOF empfangen.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Signal empfangen, beende.\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Erhalten der Latenz fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n"
-#: ../src/utils/pacat.c:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1500,7 +1522,7 @@ msgstr ""
" --process-time=BYTES Diese Prozesszeit pro Anfrage "
"verwenden.\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1511,88 +1533,88 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Ungültige Kanal-Zuweisung '%s'\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Ungültige Latenz-Angaben '%s'\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Ungültige Prozesszeit-Angaben '%s'\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Ungültige Sample-Angaben\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
msgid "Channel map doesn't match sample specification\n"
msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "aufnehmen"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "abspielen"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Zu viele Argumente.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() fehlgeschlagen: %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -2330,6 +2352,60 @@ msgstr "Sampling-Angabe '%s' wird benutzt\n"
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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
+
#, 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 8e930fd..2da46d4 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-03-05 12:27+0100\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
"PO-Revision-Date: 2008-08-22 19:40+0300\n"
"Last-Translator: Dimitris Glezos <dimitris@glezos.com>\n"
"Language-Team: Greek <fedora-trans-el@redhat.com>\n"
@@ -20,47 +20,47 @@ msgstr ""
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, 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:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, 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:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, 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:1963
+#: ../src/pulsecore/sink.c:2141
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
msgstr ""
@@ -161,104 +161,104 @@ msgstr ""
msgid "PolicyKit responded with '%s'"
msgstr ""
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr ""
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Έξοδος."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Αποτυχία εύρεσης χρήστη '%s'."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Αποτυχία εύρεσης ομάδας χρηστών '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:193
+#: ../src/daemon/main.c:196
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:198
+#: ../src/daemon/main.c:201
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
-#: ../src/daemon/main.c:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr ""
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:465
+#: ../src/daemon/main.c:507
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -271,184 +271,201 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr ""
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:732
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:693
+#: ../src/daemon/main.c:735
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:698
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Αυτό είναι το PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, c-format
+msgid "Session ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -456,27 +473,27 @@ msgstr ""
"Δικέ μου, ο πυρήνας σου είναι για τα μπάζα! Η πρόταση του σεφ σήμερα είναι "
"Linux με ενεργοποιημένα τα high-resolution timers!"
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr ""
@@ -1130,30 +1147,30 @@ msgstr ""
msgid "XOpenDisplay() failed"
msgstr ""
-#: ../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 ""
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr ""
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr ""
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
@@ -1237,88 +1254,93 @@ msgstr ""
msgid "not "
msgstr ""
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
#, c-format
msgid "Failed to drain stream: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:346 ../src/utils/paplay.c:80
+#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
#, c-format
msgid "Playback stream drained.\n"
msgstr ""
-#: ../src/utils/pacat.c:356 ../src/utils/paplay.c:92
+#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
#, c-format
msgid "Draining connection to server.\n"
msgstr ""
-#: ../src/utils/pacat.c:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr ""
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr ""
-#: ../src/utils/pacat.c:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1371,7 +1393,7 @@ msgid ""
"per request in bytes.\n"
msgstr ""
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1379,88 +1401,88 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
msgid "Channel map doesn't match sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr ""
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr ""
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr ""
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr ""
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -2037,3 +2059,57 @@ 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
diff --git a/po/es.po b/po/es.po
index d7b434b..c658904 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,59 +8,60 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
-"PO-Revision-Date: 2009-01-16 09:25-0300\n"
-"Last-Translator: daniel cabrera <h.daniel.cabrera@gmail.com>\n"
-"Language-Team: Spanish <fedora-trans-es@redhat.com>\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-09 11:49-0300\n"
+"Last-Translator: Claudio Rodrigo Pereyra Diaz <claudio@pereyradiaz.com.ar>\n"
+"Language-Team: Fedora Spanish <fedora-trans-es@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
-msgstr ""
+msgstr "Mono Analógico"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
-msgstr ""
+msgstr "Estéreo Analógico"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
-msgstr ""
+msgstr "Estéreo Digital (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
-msgstr ""
+msgstr "Estéreo Digital (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
-msgstr ""
+msgstr "Análogo Envolvente 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
+msgstr "Digital Envolvente 4.0 (IEC9588/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
-msgstr ""
+msgstr "Análogo Envolvente 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
-msgstr ""
+msgstr "Análogo Envolvente 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
-msgstr ""
+msgstr "Análogo Envolvente 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
+msgstr "Digital Envolvente 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
-msgstr ""
+msgstr "Análogo Envolvénte 7.1"
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -68,8 +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() devolvió un valor que es excepcionalmente grande: %lu bytes "
+"(%lu ms).\n"
+"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:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -77,8 +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() devolvió un valor que es excepcionalmente grande: %li bytes "
+"(%s%lu ms).\n"
+"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:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -86,25 +95,26 @@ 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() devolvió un valor que es excepcionalmente grande: %lu "
+"bytes (%lu ms).\n"
+"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:1963
-#, fuzzy
+#: ../src/pulsecore/sink.c:2141
msgid "Internal Audio"
-msgstr "Error interno"
+msgstr "Audio Interno"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
-msgstr ""
+msgstr "Módem"
#: ../src/daemon/ltdl-bind-now.c:124
-#, fuzzy
msgid "Failed to find original lt_dlopen loader."
-msgstr "Falló al buscar cargador dlopen original."
+msgstr "Falló al buscar cargador el cargador llt_dlopen original."
#: ../src/daemon/ltdl-bind-now.c:129
-#, fuzzy
msgid "Failed to allocate new dl loader."
-msgstr "Falló al buscar cargador dlopen original."
+msgstr "Falló al asignar el cargador dl nuevo."
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
@@ -164,104 +174,104 @@ msgstr "No se pudo obtener auth: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit respondió con '%s'"
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Se obtuvo la señal %s."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Saliendo."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falló al buscar usuario '%s'."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falló al buscar grupo '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falló al crear '%s': %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falló al cambiar la lista de grupo: %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falló al cambiar GID: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falló al cambiar UID: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "Se han liberado con éxitos los privilegios de root."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
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:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falló: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "Falló al analizar la línea de comando."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, 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:465
+#: ../src/daemon/main.c:507
#, 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:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -273,49 +283,58 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-
-#: ../src/daemon/main.c:538
+"Se llamó con SUID root y se pidió planificación en tiempo real y/o de alta "
+"prioridad en la configuración. Sin embargo, no se tiene los privilegios "
+"necesarios:\n"
+"No se está en el grupo '%s'. PolicyKit rechaza darnos el permiso necesario y "
+"no se puede aumentar los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO.\n"
+"Para habilitar la planifiación de tiempo real/alta prioridad por favor "
+"adquiera los privilegios apropiados en PolicyKit, o hágase miembro de '%s', "
+"o aumente los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este "
+"usuario."
+
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Fallo en RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
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:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "El demonio no está funcionando"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "El demonio está funcionando como PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "No se ha podido detener el demonio: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -323,149 +342,165 @@ msgstr ""
"Este programa no tiene por qué ser ejecutado como root (a menos que --system "
"sea especificado)."
-#: ../src/daemon/main.c:677
-#, fuzzy
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
-msgstr "Se necesitan privilegios de usuario root."
+msgstr "Se necesitan privilegios de root."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start no está soportado para las instancias del sistema."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
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:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
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:698
+#: ../src/daemon/main.c:740
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:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "Fallo al intentar adquirir stdio."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "Falló el pipe: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "Falló el fork(): %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "Falló la operación read(): %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Falló el inicio del demonio. "
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "El demonio se inició exitosamente."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Esto es PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilación: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilación CFLAGS: %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "Ejecutándose en el host: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
-msgstr ""
+msgstr "Se encontraron %u CPUs."
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "El tamaño de la página es de %lu bytes"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Soporte para compilar con Valgrind: si"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Soporte para compilar con Valgrind: no"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Ejecutándose en modo valgrind: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Build optimizado: si"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Build optimizado: no"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Fallo al intentar obtener el ID de la máquina"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "El ID de la máquina es %s"
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilizando directorio de tiempo de ejecución %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
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:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -473,34 +508,34 @@ 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:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
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:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
#: ../src/daemon/cmdline.c:121
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -577,12 +612,11 @@ msgstr ""
"COMANDOS:\n"
" -h, --help Muestra esta ayuda\n"
" --version Muestra la versión\n"
-" --dump-conf Descarga la configuración por "
-"defecto\n"
-" --dump-modules Descarga una lista de múdulos "
+" --dump-conf Vuelca la configuración por defecto\n"
+" --dump-modules Vuelca una lista de múdulos "
"disponibles\n"
-" --dump-resample-methods Descarga los métodos disponibles de "
-"resample\n"
+" --dump-resample-methods Vuelca los métodos disponibles de "
+"remuestreo\n"
" --cleanup-shm Limpia los segmentos de memoria "
"compartidos\n"
" --start Inicia el demonio, si es que aún no "
@@ -592,8 +626,8 @@ msgstr ""
"funcionando\n"
"\n"
"OPCIONES:\n"
-" --system[=BOOL] Se ejecuta como una instancia de "
-"sistema en escala amplia\n"
+" --system[=BOOL] Se ejecuta como unica instancia a "
+"nivel del sistema\n"
" -D, --daemonize[=BOOL] Se convierte en demonio luego de "
"iniciarse\n"
" --fail[=BOOL] Se cierra cuando falla el inicio\n"
@@ -607,8 +641,8 @@ msgstr ""
" (sólo disponible como root, cuando "
"el SUID o\n"
" con RLIMIT_RTPRIO) elevado\n"
-" --disallow-module-loading[=BOOL] No permite la carga o la descarga "
-"del módulo requerida por el usuario\n"
+" --disallow-module-loading[=BOOL] No permite la carga/descarga del "
+"módulo por el usuario\n"
" después que se haya iniciado\n"
" --disallow-exit[=BOOL] No permite la petición del usuario "
"de abandonar el programa\n"
@@ -620,39 +654,37 @@ msgstr ""
"automáticamente cuando están ociosos y\n"
" ha transcurrido esta cantidad de "
"tiempo\n"
-" --scache-idle-time=SECS Descarga ejemplos que se han cargado "
-"automáticamente cuando están ociosos y\n"
-" ha transcurrido esta cantidad de "
-"tiempo\n"
-" --log-level[=LEVEL] Aumenta o define el grado de "
-"vocabulario a utilizar\n"
-" -v Aumenta el grado de verbosidad\n"
+" --scache-idle-time=SECS Descarga muestras cargadas "
+"automáticamente cuando están\n"
+" ociosos y ha transcurrido esta "
+"cantidad de tiempo\n"
+" --log-level[=LEVEL] Aumenta o define el grado de salida "
+"a utilizar\n"
+" -v Aumenta el grado de salida\n"
" --log-target={auto,syslog,stderr} Especifica el destino del log\n"
" -p, --dl-search-path=PATH Establece la ruta de búsqueda "
-"(search path) para objectos (plugins)\n"
-" dinámicamente compartidos\n"
-" --resample-method=METHOD Utiliza un método de resampling "
+"(search path) para complementos\n"
+" (plugins) compartidos\n"
+" --resample-method=METHOD Utiliza un método de remuestreo "
"específico\n"
-" (Ver --dump-resample-methods para\n"
-" valores posibles)\n"
-" --use-pid-file[=BOOL] Cun archivo PID\n"
+" (Ver en --dump-resample-methods los "
+"valores posibles)\n"
+" --use-pid-file[=BOOL] Crea el archivo PID\n"
" --no-cpu-limit[=BOOL] No instala un limitador de carga de "
"CPU en\n"
" plataformas que lo soporten.\n"
" --disable-shm[=BOOL] Deshabilita el soporte para memoria "
"compartida.\n"
"\n"
-"STARTUP SCRIPT:\n"
-" -L, --load=\"MODULE ARGUMENTS\" Carga el plugin del módulo "
-"especificado con\n"
-" el argumento especificado\n"
+"SCRIPT DE INICIO:\n"
+" -L, --load=\"ARGUMENTOS DEL MODULO\" Carga el módulo complemento con los "
+"parámetros dados\n"
" -F, --file=FILENAME Ejecuta el script especificado\n"
" -C Abre una línea de comando en el TTY "
-"que se está ejecutando\n"
-" luego del inicio\n"
+"actual después de iniciar\n"
"\n"
-" -n No carga el archivo script por "
-"defecto\n"
+" -n No carga el archivo script "
+"predeterminado\n"
#: ../src/daemon/cmdline.c:252
msgid "--daemonize expects boolean argument"
@@ -684,9 +716,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera un argumento booleano"
#: ../src/daemon/cmdline.c:302
-#, fuzzy
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit argumento booleano"
+msgstr "--disallow-exit espera un argumento booleano"
#: ../src/daemon/cmdline.c:309
msgid "--use-pid-file expects boolean argument"
@@ -697,14 +728,12 @@ 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
-#, fuzzy
msgid "--log-time expects boolean argument"
-msgstr "--realtime espera un argumento booleano"
+msgstr "--log-time espera un argumento booleano"
#: ../src/daemon/cmdline.c:340
-#, fuzzy
msgid "--log-meta expects boolean argument"
-msgstr "--disallow-exit argumento booleano"
+msgstr "--log-meta espera un argumento booleano"
#: ../src/daemon/cmdline.c:359
#, c-format
@@ -804,9 +833,9 @@ msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "[%s:%u] Canales de muestra inválidos '%s'."
+msgstr "[%s:%u] Mapa de canal inválido '%s'."
#: ../src/daemon/daemon-conf.c:371
#, c-format
@@ -833,6 +862,8 @@ msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"El mapa de canal predeterminado especificado tiene un número de canales "
+"distinto al especificado como predeterminado."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -840,7 +871,6 @@ msgid "### Read from configuration file: %s ###\n"
msgstr "### Leyendo desde el archivo de confioguración: %s ###\n"
#: ../src/daemon/caps.c:63
-#, fuzzy
msgid "Dropping root privileges."
msgstr "Abandonando privilegios de root."
@@ -850,31 +880,35 @@ msgstr "Capacidades limitadas con éxito para CAP_SYS_NICE-"
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "Sistema de Sonido PulseAudio"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "Iniciar el Sistema de Sonido PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr ""
+"Planificación de alta prioridad (nivel Unix negativo) para el demonio "
+"PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Error al intentar detener el demonio de PulseAudio."
+msgstr "Planificación de tiempo real para el demonio de PulseAudio."
#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
+msgstr ""
+"Las políticas del sistema impidieron a PulseAudio adquirir la planificación "
+"de alta prioridad."
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
+"Las políticas del sistema impidieron a PulseAudio adquirir la planificación "
+"de tiempo real."
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
@@ -1088,27 +1122,27 @@ msgstr "(inválido)"
#: ../src/pulse/channelmap.c:808
msgid "Stereo"
-msgstr ""
+msgstr "Estéreo"
#: ../src/pulse/channelmap.c:813
msgid "Surround 4.0"
-msgstr ""
+msgstr "Envolvente 4.0"
#: ../src/pulse/channelmap.c:819
msgid "Surround 4.1"
-msgstr ""
+msgstr "Envolvente 4.1"
#: ../src/pulse/channelmap.c:825
msgid "Surround 5.0"
-msgstr ""
+msgstr "Envolvente 5.0"
#: ../src/pulse/channelmap.c:831
msgid "Surround 5.1"
-msgstr ""
+msgstr "Envolvente 5.1"
#: ../src/pulse/channelmap.c:838
msgid "Surround 7.1"
-msgstr ""
+msgstr "Envolvente 7.1"
#: ../src/pulse/error.c:43
msgid "OK"
@@ -1200,69 +1234,69 @@ msgstr "No existe tal extensión"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "Funcionalidad Obsoleta"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "Falta implementación"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "Cliente iniciado"
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:181
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:183
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:187
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() falló"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Fallo al analizar los datos de la cookie"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Fallo al abrir el archivo de configuración '%s': %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "No se ha cargado ninguna cookie. Intentando conectar de todos modos."
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(:) %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Se ha recibido un mensaje para una extensión desconocida '%s'"
@@ -1346,88 +1380,93 @@ msgstr "Fujo trasladado al dispositivo %s (%u, %ssuspended). %s\n"
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Flujo agotado. %s \n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Conexión establecida. %s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() falló; %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() falló: %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falló: %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Error en la conexión: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "Hay EOF.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read() falló: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write() falló: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Hay señal, saliendo (exiting).\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "No se pudo obtener latencia: %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() falló: %s\n"
-#: ../src/utils/pacat.c:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1529,7 +1568,7 @@ msgstr ""
" --process-time=BYTES Solicitar los procesos de tiempo por "
"pedido especificados en bytes.\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1540,88 +1579,88 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canales inválido '%s'\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificación de latencia inválida '%s'\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificación de tiempo de proceso inválida '%s'\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Especificación de muestra inválida\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
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:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Abriendo un %s flujo con las especificaciones de muestra '%s'.\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "grabando"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "playback"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open() %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Demasiados argumentos.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falló.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() falló.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falló.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() falló: %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() falló.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -1721,7 +1760,7 @@ msgid "Failed to get server information: %s\n"
msgstr "Error al intentar obtener información del servidor: %s\n"
#: ../src/utils/pactl.c:137
-#, fuzzy, c-format
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1734,11 +1773,12 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
"Nombre de usuario: %s\n"
-"Nombre del host: %s\n"
+"Nombre del equipo: %s\n"
"Nombre del servidor: %s\n"
"Versión del servidor: %s\n"
"Especificación de muestra por defecto: %s\n"
-"Destino por defecto: %s\n"
+"Mapa de canal por defecto: %s\n"
+"Sumidero por defecto: %s\n"
"Fuente por defecto: %s\n"
"Cookie: %08x\n"
@@ -1748,7 +1788,7 @@ msgid "Failed to get sink information: %s\n"
msgstr "Error al intentar obtener información del destino: %s\n"
#: ../src/utils/pactl.c:194
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sink #%u\n"
"\tState: %s\n"
@@ -1768,18 +1808,23 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Destino #%u ***\n"
-"Nombre: %s\n"
-"Driver: %s\n"
-"Epecificación de muestra: %s\n"
-"Mapa de canales: %s\n"
-"Propietario del módulo: %u\n"
-"Volumen: %s\n"
-"Fuente del monitor: %s\n"
-"Latencia: %0.0f us, configurado %0.0f us\n"
-"Flags: %s%s%s%s%s%s\n"
-"Propiedades:\n"
-"%s"
+"Sumidero #%u\n"
+"\tEstado: %s\n"
+"\tNombre: %s\n"
+"\tDescripción: %s\n"
+"\tControlador: %s\n"
+"\tEspecificación de la Muestra: %s\n"
+"\tMapa del Canal: %s\n"
+"\tMódulo Dueño: %u\n"
+"\tMudo: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tVolume Base: %s%s%s\n"
+"\tMonitorear Fuente: %s\n"
+"\tLatencia: %0.0f usec, configurado %0.0f useg\n"
+"\tBanderas: %s%s%s%s%s%s\n"
+"\tPropiedades:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:258
#, c-format
@@ -1787,7 +1832,7 @@ 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
-#, fuzzy, c-format
+#, c-format
msgid ""
"Source #%u\n"
"\tState: %s\n"
@@ -1807,18 +1852,23 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Fuente #%u ***\n"
-"Nombre: %s\n"
-"Driver: %s\n"
-"Especificación de muestra: %s\n"
-"Mapa de canales: %s\n"
-"Dueño del módulo: %u\n"
-"Volumen: %s\n"
-"Monitor del destino: %s\n"
-"Latencia: %0.0f us, configurado %0.0f us\n"
-"Flags: %s%s%s%s%s%s\n"
-"Propiedades:\n"
-"%s"
+"Fuente #%u\n"
+"\tEstado: %s\n"
+"\tNombre: %s\n"
+"\tDescripción: %s\n"
+"\tControlador: %s\n"
+"\tEspecificación de la Muestra: %s\n"
+"\tMapa del Canal: %s\n"
+"\tMódulo Dueño: %u\n"
+"\tMudo: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tVolume Base: %s%s%s\n"
+"\tMonitoreo del Sumidero: %s\n"
+"\tLatencia: %0.0f usec, configurado %0.0f useg\n"
+"\tBanderas: %s%s%s%s%s%s\n"
+"\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
@@ -1834,7 +1884,7 @@ 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
-#, fuzzy, c-format
+#, c-format
msgid ""
"Module #%u\n"
"\tName: %s\n"
@@ -1843,11 +1893,12 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Módulo #%u ***\n"
-"Nombre: %s\n"
-"Argumento: %s\n"
-"Contador de uso: %s\n"
-"Descargar automáticamente: %s\n"
+"Módulo #%u\n"
+"\tNombre: %s\n"
+"\tArgumento: %s\n"
+"\tContador de uso: %s\n"
+"\tPropiedades:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:361
#, c-format
@@ -1855,7 +1906,7 @@ msgid "Failed to get client information: %s\n"
msgstr "Error al intentar obtener información del cliente: %s\n"
#: ../src/utils/pactl.c:379
-#, fuzzy, c-format
+#, c-format
msgid ""
"Client #%u\n"
"\tDriver: %s\n"
@@ -1863,19 +1914,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Cliente #%u ***\n"
-"Driver: %s\n"
-"Dueño del módulo: %s\n"
-"Propiedades:\n"
-"%s"
+"Cliente #%u\n"
+"\tControlador: %s\n"
+"\tMódulo dueño: %s\n"
+"\tPropiedades:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:396
-#, fuzzy, c-format
+#, c-format
msgid "Failed to get card information: %s\n"
-msgstr "Error al intentar obtener información de autoload: %s\n"
+msgstr "Fallo al obtener la información de la placa: %s\n"
#: ../src/utils/pactl.c:414
-#, fuzzy, c-format
+#, c-format
msgid ""
"Card #%u\n"
"\tName: %s\n"
@@ -1884,21 +1935,22 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Cliente #%u ***\n"
-"Driver: %s\n"
-"Dueño del módulo: %s\n"
-"Propiedades:\n"
-"%s"
+"Placa #%u\n"
+"\tNombre: %s\n"
+"\tControlador: %s\n"
+"\tMódulo dueño: %s\n"
+"\tPropiedades:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tPerfiles:\n"
#: ../src/utils/pactl.c:434
-#, fuzzy, c-format
+#, c-format
msgid "\tActive Profile: %s\n"
-msgstr "Falló el pipe: %s"
+msgstr "\tPerfil Activo: %s\n"
#: ../src/utils/pactl.c:445
#, c-format
@@ -1906,7 +1958,7 @@ 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
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sink Input #%u\n"
"\tDriver: %s\n"
@@ -1925,19 +1977,22 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Entrada del destino #%u ***\n"
-"Driver: %s\n"
-"Dueño del módulo: %s\n"
-"Cliente: %s\n"
-"Destino: %u\n"
-"Especificación de muestra: %s\n"
-"Mapa de canales: %s\n"
-"Volumen: %s\n"
-"Latencia del búfer: %0.0f us\n"
-"Latencia del destino: %0.0f us\n"
-"Método de resample: %s\n"
-"Propiedades:\n"
-"%s"
+"Entrada del sumidero #%u\n"
+"\tControlador: %s\n"
+"\tMódulo dueño: %s\n"
+"\tCliente: %s\n"
+"\tSumidero: %u\n"
+"\tEspecificación de muestra: %s\n"
+"\tMapa de canales: %s\n"
+"\tMudo: %s\n"
+"\tVolumen: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tLatencia del búfer: %0.0f useg\n"
+"\tLatencia del sumidero: %0.0f useg\n"
+"\tMétodo de remuestreo: %s\n"
+"\tPropiedades:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:503
#, c-format
@@ -1946,7 +2001,7 @@ msgstr ""
"Error al intentar obtener información acerca de la salida de la fuenta: %s\n"
#: ../src/utils/pactl.c:523
-#, fuzzy, c-format
+#, c-format
msgid ""
"Source Output #%u\n"
"\tDriver: %s\n"
@@ -1961,18 +2016,18 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Salida de la fuente #%u ***\n"
-"Driver: %s\n"
-"Dueño del módulo: %s\n"
-"Cliente: %s\n"
-"Fuente: %u\n"
-"Especificación de muestra: %s\n"
-"Mapa del canal: %s\n"
-"Latencia del búfer: %0.0f us\n"
-"Latencia de la fuente: %0.0f us\n"
-"Método de resample: %s\n"
-"Propiedades:\n"
-"%s"
+"Salida de la fuente #%u\n"
+"\tControlador: %s\n"
+"\tMódulo dueño: %s\n"
+"\tCliente: %s\n"
+"\tFuente: %u\n"
+"\tEspecificación de muestra: %s\n"
+"\tMapa del canal: %s\n"
+"\tLatencia del búfer: %0.0f useg\n"
+"\tLatencia de la fuente: %0.0f useg\n"
+"\tMétodo de remuestreo: %s\n"
+"\tPropiedades:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:554
#, c-format
@@ -1980,7 +2035,7 @@ msgid "Failed to get sample information: %s\n"
msgstr "Error al intentar obtener información de muestra: %s\n"
#: ../src/utils/pactl.c:572
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sample #%u\n"
"\tName: %s\n"
@@ -1996,17 +2051,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** Muestra #%u ***\n"
-"Nombre: %s\n"
-"Volumen: %s\n"
-"Especificaciones del modelo: %s\n"
-"Mapa del canal: %s\n"
-"Duración: %0.1fs\n"
-"Tamaño: %s\n"
-"Lazy: %s\n"
-"Nombre del archivo: %s\n"
-"Propiedades:\n"
-"%s"
+"Muestra #%u\n"
+"\tNombre: %s\n"
+"\tEspecificaciones de la muestra: %s\n"
+"\tMapa del canal: %s\n"
+"\tVolumen: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuración: %0.1fs\n"
+"\tTamaño: %s\n"
+"\tLazy: %s\n"
+"\tNombre del archivo: %s\n"
+"\tPropiedades:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
@@ -2024,7 +2081,7 @@ msgid "Premature end of file\n"
msgstr "Fin prematuro del archivo\n"
#: ../src/utils/pactl.c:774
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -2048,25 +2105,26 @@ msgid ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
msgstr ""
-"%s [options] stat\n"
-"%s [options] list\n"
-"%s [options] exit\n"
-"%s [options] upload-sample FILENAME [NAME]\n"
-"%s [options] play-sample NAME [SINK]\n"
-"%s [options] remove-sample NAME\n"
-"%s [options] move-sink-input ID SINK\n"
-"%s [options] move-source-output ID SOURCE\n"
-"%s [options] load-module NAME [ARGS ...]\n"
-"%s [options] unload-module ID\n"
-"%s [options] suspend-sink [SINK] 1|0\n"
-"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [opciones] stat\n"
+"%s [opciones] list\n"
+"%s [opciones] exit\n"
+"%s [opciones] upload-sample FILENAME [NAME]\n"
+"%s [opciones] play-sample NAME [SINK]\n"
+"%s [opciones] remove-sample NAME\n"
+"%s [opciones] move-sink-input ID SINK\n"
+"%s [opciones] move-source-output ID SOURCE\n"
+"%s [opciones] load-module NAME [ARGS ...]\n"
+"%s [opciones] unload-module ID\n"
+"%s [opciones] suspend-sink [SINK] 1|0\n"
+"%s [opciones] suspend-source [SOURCE] 1|0\n"
+"%s [opciones] set-card-profile [CARD] [PROFILE] \n"
"\n"
" -h, --help Muestra esta ayuda\n"
" --version Muestra la versión\n"
"\n"
" -s, --server=SERVER El nombre del servidor al que "
"conectarse\n"
-" -n, --client-name=NAME Cómo llamar a este cliente en el "
+" -n, --client-name=NAME El nombre de este cliente en el "
"servidor\n"
#: ../src/utils/pactl.c:826
@@ -2123,28 +2181,27 @@ msgid "You have to specify a module index\n"
msgstr "Debe especificar un índice de módulo\n"
#: ../src/utils/pactl.c:972
-#, fuzzy, c-format
+#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-"No puede especificar más de un destino. Tiene que especificar al menos un "
-"valor booleano.\n"
+"No puede especificar más de un sumidero. Tiene que especificar un valor "
+"booleano.\n"
#: ../src/utils/pactl.c:985
-#, fuzzy, c-format
+#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-"No puede especificar más de una fuente. Tiene que especificar al menos un "
-"valor booleano.\n"
+"No puede especificar más de una fuente. Tiene que especificar un valor "
+"booleano.\n"
#: ../src/utils/pactl.c:997
-#, fuzzy, c-format
+#, c-format
msgid "You have to specify a card name/index and a profile name\n"
-msgstr ""
-"Debe especificar un índice para las entradas del destino y un destino\n"
+msgstr "Debe especificar un nombre de placa/índice y un nombre de perfil\n"
#: ../src/utils/pactl.c:1012
#, c-format
@@ -2356,6 +2413,60 @@ msgstr "Utilizando especificaciones de muestra '%s'\n"
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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "Salida %s + Entrada %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "Salida %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "Entrada %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "Reproducción de Alta Fidelidad (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Telefonía Duplex (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "Servidor de Sonido PulseAudio"
+
#, 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 f3acfea..74efa23 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,65 +1,66 @@
# pulseaudio translation to Finnish (fi).
# Copyright (C) 2008 Timo Jyrinki
# This file is distributed under the same license as the pulseaudio package.
-# Timo Jyrinki <timo.jyrinki@iki.fi>.
-#
+# Timo Jyrinki <timo.jyrinki@iki.fi>, 2008.
+# Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
-"PO-Revision-Date: 2009-02-13 08:57+0200\n"
-"Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-05 16:24+0300\n"
+"Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu@lokalisointi.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
-msgstr ""
+msgstr "Analoginen mono"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
-msgstr ""
+msgstr "Analoginen stereo"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
-msgstr ""
+msgstr "Digitaalinen stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
-msgstr ""
+msgstr "Digitaalinen stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
-msgstr ""
+msgstr "Analoginen tilaääni 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
+msgstr "Digitaalinen tilaääni 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
-msgstr ""
+msgstr "Analoginen tilaääni 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
-msgstr ""
+msgstr "Analoginen tilaääni 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
-msgstr ""
+msgstr "Analoginen tilaääni 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
+msgstr "Digitaalinen tilaääni 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
-msgstr ""
+msgstr "Analoginen tilaääni 7.1"
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -67,8 +68,11 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_avail() palautti poikkeuksellisen suuren arvon: %lu tavua (%lu ms).\n"
+"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa ”%s”. Ilmoita tästä "
+"ongelmasta ALSA-kehittäjille."
-#: ../src/modules/alsa/alsa-util.c:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -76,8 +80,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() palautti poikkeuksellisen suuren arvon: %li tavua (%s%lu "
+"ms).\n"
+"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa ”%s”. Ilmoita tästä "
+"ongelmasta ALSA-kehittäjille."
-#: ../src/modules/alsa/alsa-util.c:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -85,180 +93,183 @@ 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() palautti poikkeuksellisen suuren arvon: %lu tavua (%lu "
+"ms).\n"
+"Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa ”%s”. Ilmoita tästä "
+"ongelmasta ALSA-kehittäjille."
-#: ../src/pulsecore/sink.c:1963
-#, fuzzy
+#: ../src/pulsecore/sink.c:2141
msgid "Internal Audio"
-msgstr "Sisäinen virhe"
+msgstr "Sisäinen äänentoisto"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
-msgstr ""
+msgstr "Modeemi"
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
-msgstr "Alkuperäisen ld_dlopen-lataimen löytäminen epäonnistui."
+msgstr "Alkuperäisen lt_dlopen-lataimen löytäminen epäonnistui."
#: ../src/daemon/ltdl-bind-now.c:129
msgid "Failed to allocate new dl loader."
-msgstr ""
+msgstr "Uuden dl-lataaminen varaaminen epäonnistui."
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
-msgstr ""
+msgstr "bind-now-loaderin lisääminen epäonnistui."
#: ../src/daemon/polkit.c:55
#, c-format
msgid "Cannot connect to system bus: %s"
-msgstr ""
+msgstr "Järjestelmäväylään ei voida yhdistää: %s"
#: ../src/daemon/polkit.c:65
#, c-format
msgid "Cannot get caller from PID: %s"
-msgstr ""
+msgstr "Kutsujaa ei saada PID:stä: %s"
#: ../src/daemon/polkit.c:77
msgid "Cannot set UID on caller object."
-msgstr ""
+msgstr "UID:tä ei voida asettaa kutsujaobjektille."
#: ../src/daemon/polkit.c:82
msgid "Failed to get CK session."
-msgstr ""
+msgstr "CK-istunnon saaminen epäonnistui."
#: ../src/daemon/polkit.c:90
msgid "Cannot set UID on session object."
-msgstr ""
+msgstr "UID:tä ei voida asettaa istunto-objektille."
#: ../src/daemon/polkit.c:95
msgid "Cannot allocate PolKitAction."
-msgstr ""
+msgstr "Ei voida varata PolKitActionia."
#: ../src/daemon/polkit.c:100
msgid "Cannot set action_id"
-msgstr ""
+msgstr "Ei voida asettaa action_id:tä"
#: ../src/daemon/polkit.c:105
msgid "Cannot allocate PolKitContext."
-msgstr ""
+msgstr "Ei voida varata PolKitContextia."
#: ../src/daemon/polkit.c:110
#, c-format
msgid "Cannot initialize PolKitContext: %s"
-msgstr ""
+msgstr "Ei voida alustaa PolKitContextia: %s"
#: ../src/daemon/polkit.c:119
#, c-format
msgid "Could not determine whether caller is authorized: %s"
-msgstr ""
+msgstr "Ei voida päätellä onko kutsujalla käyttöoikeus: %s"
#: ../src/daemon/polkit.c:139
#, c-format
msgid "Cannot obtain auth: %s"
-msgstr ""
+msgstr "Tunnistautumista ei saada: %s"
#: ../src/daemon/polkit.c:148
#, c-format
msgid "PolicyKit responded with '%s'"
-msgstr ""
+msgstr "PolicyKit vastasi ”%s”"
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
-msgstr ""
+msgstr "Saatiin signaali %s."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Poistutaan."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
-msgstr ""
+msgstr "Käyttäjää ”%s” ei löydetty."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
-msgstr ""
+msgstr "Ryhmää ”%s” ei löydetty."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
-msgstr ""
+msgstr "Löydettiin käyttäjä ”%s” (UID %lu) ja ryhmä ”%s” (GID %lu)."
-#: ../src/daemon/main.c:193
+#: ../src/daemon/main.c:196
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
-msgstr ""
+msgstr "Käyttäjän ”%s” ja ryhmän ”%s” GID:t eivät vastaa toisiaan."
-#: ../src/daemon/main.c:198
+#: ../src/daemon/main.c:201
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
-msgstr ""
+msgstr "Käyttäjän ”%s” kotihakemisto ei ole ”%s”, ohitetaan."
-#: ../src/daemon/main.c:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
-msgstr ""
+msgstr "Hakemiston ”%s” luominen epäonnistui: %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
-msgstr ""
+msgstr "Ryhmäluettelon vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
-msgstr ""
+msgstr "GID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
-msgstr ""
+msgstr "UID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
-msgstr ""
+msgstr "Root-oikeuksista luopuminen onnistui."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
-msgstr ""
+msgstr "Järjestelmänlaajuista tilaa ei tueta tällä alustalla."
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
-msgstr ""
+msgstr "setrlimit(%s, (%u, %u)) epäonnistui: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
-msgstr ""
+msgstr "Komentorivin jäsentäminen epäonnistui."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
-msgstr ""
+msgstr "Ollaan ryhmässä ”%s”, korkean prioriteetin ajoitus on sallittua."
-#: ../src/daemon/main.c:465
+#: ../src/daemon/main.c:507
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
-msgstr ""
+msgstr "Ollaan ryhmässä ”%s”, tosiaikainen vuorottaminen on sallittua."
-#: ../src/daemon/main.c:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
-msgstr ""
+msgstr "PolicyKit myöntää acquire-high-priority-oikeuden."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
-msgstr ""
+msgstr "PolicyKit ei myönnä acquire-high-priority-oikeutta."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
-msgstr ""
+msgstr "PolicyKit myöntää acquire-real-time-oikeuden."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
-msgstr ""
+msgstr "PolicyKit ei myönnä acquire-real-time-oikeutta."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -270,47 +281,57 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
+"Ohjelmaa kutsuttiin SUID-rootina ja reaaliaikaista ja/tai korkean "
+"prioriteetin ajoitusta pyydettiin asetuksissa. Tarvittavat oikeudet "
+"kuitenkin puuttuvat:\n"
+"Ei olla ryhmässä ”%s”, PolicyKit ei myönnä pyydettyjä oikeuksia ja "
+"RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja ei ole kasvatettu.\n"
+"Hanki riittävät PolicyKit-oikeudet, liity ryhmään ”%s” tai kasvata tämän "
+"käyttäjän RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja reaaliaikaisen ja/tai "
+"korkean prioriteetin ajoituksen ottamiseksi käyttöön."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
-msgstr ""
+msgstr "RLIMIT_RTPRIO:n kasvatus onnistui"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
-msgstr ""
+msgstr "RLIMIT_RTPRIO epäonnistui: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
-msgstr ""
+msgstr "Luovutaan CAP_NICE:stä"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
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:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "Taustaprosessi ei ole käynnissä"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "Taustaprosessi käynnissä prosessitunnisteella %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Taustaprosessin lopettaminen epäonnistui: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -318,144 +339,164 @@ msgstr ""
"Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --"
"system ole määritelty)."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
msgstr "Pääkäyttäjän (root) oikeudet vaaditaan."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
-msgstr ""
+msgstr "--start-valitsinta ei tueta järjestelmätilassa."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
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:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
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:698
+#: ../src/daemon/main.c:740
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:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
-msgstr ""
+msgstr "stdio:n saaminen epäonnistui."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
-msgstr ""
+msgstr "putki epäonnistui: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
-msgstr ""
+msgstr "fork() epäonnistui: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
-msgstr ""
+msgstr "read() epäonnistui: %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Taustaprosessin käynnistys epäonnistui."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "Taustaprosessin käynnistys onnistui."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Tämä on PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Käännöksen isäntäkone: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Käännösaikaiset C-liput (CFLAGS): %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "Käynnissä isäntäkoneella: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr "Löydettiin %u CPU:ta."
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "Sivun koko on %lu tavua"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Käännetty Valgrind-tuella: kyllä"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Käännetty Valgrind-tuella: ei"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Käynnissä valgrind-tilassa: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Optimoitu rakentaminen: kyllä"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Optimoitu rakentaminen: ei"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG on määritelty, kaikki assertit ovat poissa käytöstä."
+
+#: ../src/daemon/main.c:899
+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:901
+msgid "All asserts enabled."
+msgstr "Kaikki assertit ovat käytössä."
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Konetunnisteen nouto epäonnistui"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "Konetunniste on %s."
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
-msgstr ""
+msgstr "pa_pid_file_create() epäonnistui."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -463,29 +504,29 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
-msgstr ""
+msgstr "pa_core_new() epäonnistui."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
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:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
@@ -562,69 +603,154 @@ msgid ""
"\n"
" -n Don't load default script file\n"
msgstr ""
+"%s [valitsimet]\n"
+"\n"
+"KOMENNOT:\n"
+" -h, --help Näytä tämä ohje\n"
+" --version Näytä versio\n"
+" --dump-conf Tulosta oletusasetukset\n"
+" --dump-modules Tulosta saatavilla olevien\n"
+" moduulien luettelo\n"
+" --dump-resample-methods Tulosta saatavilla\n"
+" olevat\n"
+" uudelleennäytteistystavat\n"
+" --cleanup-shm Puhdista vanhentuneet jaetun\n"
+" muistin segmentit\n"
+" --start Käynnistä taustaprosessi, jos se\n"
+" ei ole käynnissä\n"
+" -k --kill Tapa suoritettava taustaprosessi\n"
+" --check Tarkista onko\n"
+" taustaprosessi suoritettavana\n"
+" (palauttaa vain lopetuskoodin)\n"
+"\n"
+"VALITSIMET:\n"
+" --system[=BOOL] Suorita järjestelmänlaajuisena\n"
+" -D, --daemonize[=BOOL] Vaihda\n"
+" taustaprosessiksi käynnistyksen\n"
+" jälkeen\n"
+" --fail[=BOOL] Lopeta kun käynnistys epäonnistuu\n"
+" --high-priority[=BOOL] Yritä asettaa korkea nice-taso\n"
+" (käytettävissä vain root-\n"
+" käyttäjänä, SUIDilla tai\n"
+" kohotetulla RLIMIT_NICE-arvolla)\n"
+" --realtime[=BOOL] Yritä asettaa reaaliaikainen\n"
+" ajoitus (käytettävissä vain\n"
+" root-käyttäjänä, SUIDilla tai\n"
+" kohotetulla RLIMIT_RTPRIO-arvolla)\n"
+" --disallow-module-loading[=BOOL] Kiellä käyttäjän pyytämä moduulin\n"
+" lataus tai poisto käynnistyksen\n"
+" jälkeen\n"
+" --disallow-exit[=BOOL] Kiellä käyttäjän pyytämä\n"
+" lopettaminen\n"
+" --exit-idle-time=SEK Lopeta taustaprosessi, kun se on\n"
+" toimettomana ja tämä aika on\n"
+" kulunut\n"
+" --module-idle-time=SEK Poista automaattisesti ladatut\n"
+" moduulit, kun taustaprosessi on\n"
+" toimettomana ja tämä aika on\n"
+" kulunut\n"
+" --scache-idle-time=SEK Poista automaattisesti ladatut\n"
+" näytteet, kun taustaprosessi on\n"
+" toimettomana ja tämä aika on\n"
+" kulunut\n"
+" --log-level[=TASO] Aseta tai kasvata\n"
+" lokikirjoituksen tasoa\n"
+" -v Kasvata tulosteiden\n"
+" yksityiskohtaisuutta\n"
+" --log-target={auto,syslog,stderr} Aseta lokikirjoituksen kohde\n"
+" --log-meta[=BOOL] Lisää koodikohta\n"
+" lokiviesteihin\n"
+" --log-time[=BOOL] Lisää aikaleima lokiviesteihin\n"
+" --log-backtrace=KEHYKSET Lisää pinolistaus lokiviesteihin\n"
+" -p, --dl-search-path=POLKU Aseta dynaamisten jaettujen\n"
+" objektien (liitännäisten)\n"
+" hakupolku\n"
+" --resample-method=TAPA Käytä määritettyä\n"
+" uudelleennäytteistyksen tapaa\n"
+" (--dump-resample-methods\n"
+" luetteloi mahdolliset arvot)\n"
+" --use-pid-file[=BOOL] Luo PID-tiedosto\n"
+" --no-cpu-limit[=BOOL] Älä asenna suoritinkuorman\n"
+" rajoitinta alustoilla, jotka\n"
+" tukevat sitä\n"
+" --disable-shm[=BOOL] Poista jaetun muistin tuki käytöstä\n"
+"\n"
+"ALOITUSKOMENTOSARJA:\n"
+" -L, --load=\"MODUULIN ARGUMENTIT\" Lataa liitännäismoduuli annetulla\n"
+" argumentilla\n"
+" -F, --file=TIEDOSTO Suorita annettu komentosarja\n"
+" -C Avaa komentokehote nykyiseen\n"
+" päätteeseen käynnistyksen jälkeen\n"
+"\n"
+" -n Älä lataa oletuskomentosarja-\n"
+" tiedostoa\n"
#: ../src/daemon/cmdline.c:252
msgid "--daemonize expects boolean argument"
-msgstr ""
+msgstr "--daemonize vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:259
msgid "--fail expects boolean argument"
-msgstr ""
+msgstr "--fail vaatii totuusarvoisen argumentin"
#: ../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 vaatii lokikirjoituksen tason argumentiksi (joko numero väliltä "
+"0..4 tai yksi seuraavista: debug, info, notice, warn, error)."
#: ../src/daemon/cmdline.c:281
msgid "--high-priority expects boolean argument"
-msgstr ""
+msgstr "--high-priority vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:288
msgid "--realtime expects boolean argument"
-msgstr ""
+msgstr "--realtime vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:295
msgid "--disallow-module-loading expects boolean argument"
-msgstr ""
+msgstr "--disallow-module-loading vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:302
msgid "--disallow-exit expects boolean argument"
-msgstr ""
+msgstr "--disallow-exit vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:309
msgid "--use-pid-file expects boolean argument"
-msgstr ""
+msgstr "--use-pid-file vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:326
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
msgid "--log-time expects boolean argument"
-msgstr ""
+msgstr "--log-time vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:340
msgid "--log-meta expects boolean argument"
-msgstr ""
+msgstr "--log-meta vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:359
#, c-format
msgid "Invalid resample method '%s'."
-msgstr "Virheellinen uudelleennäytteistyksen tapa \"%s\"."
+msgstr "Virheellinen uudelleennäytteistyksen tapa ”%s”."
#: ../src/daemon/cmdline.c:366
msgid "--system expects boolean argument"
-msgstr ""
+msgstr "--system vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:373
msgid "--no-cpu-limit expects boolean argument"
-msgstr ""
+msgstr "--no-cpu-limit vaatii totuusarvoisen argumentin"
#: ../src/daemon/cmdline.c:380
msgid "--disable-shm expects boolean argument"
-msgstr ""
+msgstr "--disable-shm vaatii totuusarvoisen argumentin"
#: ../src/daemon/dumpmodules.c:60
#, c-format
@@ -669,62 +795,62 @@ msgstr "Polku: %s\n"
#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde ”%s”."
#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen lokikirjoituksen taso ”%s”."
#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa ”%s”."
#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen rlimit ”%s”."
#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
-msgstr ""
+msgstr "[%s:%u] rlimitiä ei tueta tällä alustalla."
#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen näytemuoto ”%s”."
#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen näytteenottotaajuus ”%s”."
#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheelliset näytekanavat ”%s”."
#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "Epäkelpo kanavakartta\n"
+msgstr "[%s:%u] Virheellinen kanavakartta ”%s”."
#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen fragmenttimäärä ”%s”."
#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen fragmenttikoko ”%s”."
#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
-msgstr ""
+msgstr "[%s:%u] Virheellinen nice-taso ”%s”."
#: ../src/daemon/daemon-conf.c:522
#, c-format
@@ -736,6 +862,8 @@ msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"Kanavien oletusmäärä ja oletuskanavakartan kanavien määrä poikkeavat "
+"toisistaan."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -744,38 +872,42 @@ msgstr "### Luettu asetustiedostosta: %s ###\n"
#: ../src/daemon/caps.c:63
msgid "Dropping root privileges."
-msgstr "Pudotetaan pääkäyttäjän oikeudet."
+msgstr "Luovutaan pääkäyttäjän oikeuksista."
#: ../src/daemon/caps.c:103
msgid "Limited capabilities successfully to CAP_SYS_NICE."
-msgstr ""
+msgstr "Oikeuksien rajoittaminen CAP_SYS_NICEen onnistui."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "PulseAudio-äänijärjestelmä"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "Käynnistä PulseAudio-äänijärjestelmä"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr ""
+"Korkean prioriteetin ajoitus (negatiivinen Unix-nice-taso) PulseAudio-"
+"taustajärjestelmälle"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "PulseAudio-taustaprosessin lopettaminen epäonnistui."
+msgstr "Reaaliaikainen ajoitus PulseAudio-taustajärjestelmälle"
#: ../src/daemon/org.pulseaudio.policy.in.h:3
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
msgstr ""
+"Järjestelmäkäytäntö estää PulseAudiota saamasta korkean prioriteetin "
+"ajoitusta."
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
+"Järjestelmäkäytäntö estää PulseAudiota saamasta reaaliaikaista ajoitusta."
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
@@ -989,27 +1121,27 @@ msgstr "(virheellinen)"
#: ../src/pulse/channelmap.c:808
msgid "Stereo"
-msgstr ""
+msgstr "Stereo"
#: ../src/pulse/channelmap.c:813
msgid "Surround 4.0"
-msgstr ""
+msgstr "4.0-tilaääni"
#: ../src/pulse/channelmap.c:819
msgid "Surround 4.1"
-msgstr ""
+msgstr "4.1-tilaääni"
#: ../src/pulse/channelmap.c:825
msgid "Surround 5.0"
-msgstr ""
+msgstr "5.0-tilaääni"
#: ../src/pulse/channelmap.c:831
msgid "Surround 5.1"
-msgstr ""
+msgstr "5.1-tilaääni"
#: ../src/pulse/channelmap.c:838
msgid "Surround 7.1"
-msgstr ""
+msgstr "7.1-tilaääni"
#: ../src/pulse/error.c:43
msgid "OK"
@@ -1101,82 +1233,82 @@ msgstr "Ei kyseisenlaista laajennusta"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "Puuttuva toiminnallisuus"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "Puuttuva toteutus"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "Asiakasohjelma haarautui"
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %u kan. %uHz"
#: ../src/pulse/sample.c:181
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:183
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:187
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() epäonnistui"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Evästetietojen jäsennys epäonnistui"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
-msgstr ""
+msgstr "Asetustiedoston avaaminen epäonnistui: ”%s”: %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "Ei ladattua evästettä. Yritetään yhdistämistä ilman."
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
-msgstr ""
+msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
-msgstr ""
+msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
-msgstr ""
+msgstr "Saatiin viesti tuntemattomalle laajennokselle ”%s”"
#: ../src/utils/pacat.c:94
#, c-format
msgid "pa_stream_write() failed: %s\n"
-msgstr ""
+msgstr "pa_stream_write() epäonnistui: %s\n"
#: ../src/utils/pacat.c:133
#, c-format
msgid "pa_stream_peek() failed: %s\n"
-msgstr ""
+msgstr "pa_stream_peek() epäonnistui: %s\n"
#: ../src/utils/pacat.c:169
#, c-format
@@ -1186,22 +1318,22 @@ msgstr "Virran luonti onnistui.\n"
#: ../src/utils/pacat.c:172
#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s\n"
-msgstr ""
+msgstr "pa_stream_get_buffer_attr() epäonnistui: %s\n"
#: ../src/utils/pacat.c:176
#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
-msgstr ""
+msgstr "Puskuritiedot: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
#: ../src/utils/pacat.c:179
#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
-msgstr ""
+msgstr "Puskuritiedot: maxlength=%u, fragsize=%u\n"
#: ../src/utils/pacat.c:183
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "Käytetään näytemäärittelyä \"%s\", kanavakarttaa \"%s\".\n"
+msgstr "Käytetään näytemäärittelyä ”%s”, kanavakarttaa ”%s”.\n"
#: ../src/utils/pacat.c:187
#, c-format
@@ -1226,12 +1358,12 @@ msgstr "Virtalaite palautettu.%s \n"
#: ../src/utils/pacat.c:217
#, c-format
msgid "Stream underrun.%s \n"
-msgstr ""
+msgstr "Virran alivuoto.%s \n"
#: ../src/utils/pacat.c:224
#, c-format
msgid "Stream overrun.%s \n"
-msgstr ""
+msgstr "Virran ylivuoto.%s \n"
#: ../src/utils/pacat.c:231
#, c-format
@@ -1247,88 +1379,93 @@ msgstr "Virta siirretty laitteelle %s (%u, %ssuspended).%s \n"
msgid "not "
msgstr "ei "
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Virran puskuriattribuutteja muutettu.%s \n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Yhteys muodostettu.%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
-msgstr ""
+msgstr "pa_stream_new() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
-msgstr ""
+msgstr "pa_stream_connect_playback() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
-msgstr ""
+msgstr "pa_stream_connect_record() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Yhteysvirhe: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
#, c-format
msgid "Failed to drain stream: %s\n"
-msgstr ""
+msgstr "Virran tyhjentäminen epäonnistui: %s\n"
-#: ../src/utils/pacat.c:346 ../src/utils/paplay.c:80
+#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
#, c-format
msgid "Playback stream drained.\n"
-msgstr ""
+msgstr "Toistovirta on tyhjennetty.\n"
-#: ../src/utils/pacat.c:356 ../src/utils/paplay.c:92
+#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
#, c-format
msgid "Draining connection to server.\n"
-msgstr ""
+msgstr "Tyhjennetään yhteyttä palvelimelle.\n"
-#: ../src/utils/pacat.c:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
-msgstr ""
+msgstr "Saatiin EOF.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
-msgstr ""
+msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
-msgstr ""
+msgstr "read() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
-msgstr ""
+msgstr "write() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
-msgstr ""
+msgstr "Saatiin signaali, lopetetaan.\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Latenssin selvittäminen epäonnistui: %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
-msgstr ""
+msgstr "pa_stream_update_timing_info() epäonnistui: %s\n"
-#: ../src/utils/pacat.c:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1380,137 +1517,186 @@ msgid ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
msgstr ""
-
-#: ../src/utils/pacat.c:604
+"%s [valitsimet]\n"
+"\n"
+" -h, --help Näytä tämä ohje\n"
+" --version Näytä versio\n"
+"\n"
+" -r, --record Luo yhteys nauhoitukselle\n"
+" -p, --playback Luo yhteys toistolle\n"
+"\n"
+" -v, --verbose Yksityiskohtaiset tulosteet\n"
+"\n"
+" -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
+" yhdistetään\n"
+" -d, --device=LAITE Sen nielun/lähteen nimi, johon\n"
+" yhdistetään\n"
+" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa "
+"kutsutaan\n"
+" palvelimella\n"
+" --stream-name=NIMI Kuinka tätä virtaa kutsutaan\n"
+" palvelimella\n"
+" --volume=ÄÄNENVOIMAKKUUS Määritä (lineaarinen) aloitusäänen-\n"
+" voimakkuus väliltä 0...65536\n"
+" --rate=NÄYTTEENOTTOTAAJUUS Näytteenottotaajuus hertseinä\n"
+" (oletus: 44100)\n"
+" --format=NÄYTEMUOTO Näytteen tyyppi, yksi seuraavista:\n"
+" s16le, s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be\n"
+" (oletus s16ne)\n"
+" --channels=KANAVIA Kanavien määrä, 1=mono, 2=stereo\n"
+" (oletus: 2)\n"
+" --channel-map=KANAVAKARTTA Oletuksen sijasta käytettävä\n"
+" kanavakartta\n"
+" --fix-format Valitse näytemuoto nielusta, johon\n"
+" virtaa yhdistetään\n"
+" --fix-rate Valitse näytteenottotaajuus "
+"nielusta,\n"
+" johon virtaa yhdistetään\n"
+" --fix-channels Valitse kanavien määrä ja kanava-\n"
+" kartta nielusta, johon virtaa\n"
+" yhdistetään.\n"
+" --no-remix Älä yli- tai alimiksaa kanavia.\n"
+" --no-remap Kartoita kanavat indeksin mukaan, "
+"älä nimen mukaan.\n"
+" --latency=TAVUA Pyydä määritettyä latenssia "
+"tavuissa.\n"
+" --process-time=TAVUA Pyydä määritettyä prosessiaikaa "
+"pyyntöä kohti tavuissa.\n"
+
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pacat %s\n"
+"Käännetty libpulsen versiolle %s\n"
+"Linkitetty libpulsen versiolle %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
-msgstr ""
+msgstr "Virheellinen kanavakartta ”%s”\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
-msgstr ""
+msgstr "Virheellinen latenssimääritys ”%s”\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
-msgstr ""
+msgstr "Virheellinen prosessiajan määritys ”%s”\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
-msgstr ""
+msgstr "Virheellinen näytemääritys\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
msgid "Channel map doesn't match sample specification\n"
-msgstr ""
+msgstr "Kanavakartta ei vastaa näytemääritystä\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
-msgstr ""
+msgstr "Avataan %svirta näytemäärityksellä ”%s”.\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "nauhoitus"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "toisto"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
-msgstr ""
+msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
-msgstr ""
+msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Liian monta argumenttia.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
-msgstr ""
+msgstr "pa_mainloop_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
-msgstr ""
+msgstr "io_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
-msgstr ""
+msgstr "pa_context_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
-msgstr ""
+msgstr "pa_context_connect() epäonnistui: %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
-msgstr ""
+msgstr "time_new() epäonnistui.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
-msgstr ""
+msgstr "pa_mainloop_run() epäonnistui.\n"
#: ../src/utils/pasuspender.c:81
#, c-format
msgid "fork(): %s\n"
-msgstr ""
+msgstr "fork(): %s\n"
#: ../src/utils/pasuspender.c:92
#, c-format
msgid "execvp(): %s\n"
-msgstr ""
+msgstr "execvp(): %s\n"
#: ../src/utils/pasuspender.c:109
#, c-format
msgid "Failure to suspend: %s\n"
-msgstr ""
+msgstr "Keskeytys epäonnistui: %s\n"
#: ../src/utils/pasuspender.c:124
#, c-format
msgid "Failure to resume: %s\n"
-msgstr ""
+msgstr "Palautus epäonnistui: %s\n"
#: ../src/utils/pasuspender.c:147
#, c-format
msgid "WARNING: Sound server is not local, not suspending.\n"
-msgstr ""
+msgstr "VAROITUS: Äänipalvelin ei ole paikallinen, ei keskeytetä.\n"
#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
-msgstr ""
+msgstr "Saatiin SIGINT, lopetetaan.\n"
#: ../src/utils/pasuspender.c:194
#, c-format
msgid "WARNING: Child process terminated by signal %u\n"
-msgstr ""
+msgstr "VAROITUS: Lapsiprosessi lopetettiin signaalilla %u\n"
#: ../src/utils/pasuspender.c:212
#, c-format
@@ -1523,6 +1709,13 @@ msgid ""
"to\n"
"\n"
msgstr ""
+"%s [valitsimet] ... \n"
+"\n"
+" -h, --help Näytä tämä ohje\n"
+" --version Näytä versio\n"
+" -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
+" yhdistetään\n"
+"\n"
#: ../src/utils/pasuspender.c:251
#, c-format
@@ -1531,34 +1724,37 @@ msgid ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pasuspender %s\n"
+"Käännetty libpulsen versiolle %s\n"
+"Linkitetty libpulsen versiolle %s\n"
#: ../src/utils/pactl.c:108
#, c-format
msgid "Failed to get statistics: %s\n"
-msgstr ""
+msgstr "Tilastojen selvittäminen epäonnistui: %s\n"
#: ../src/utils/pactl.c:114
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
-msgstr ""
+msgstr "Nyt käytössä: %u lohkoa sisältäen yhteensä %s tavua.\n"
#: ../src/utils/pactl.c:117
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
-msgstr ""
+msgstr "Koko käyttöaikana varattu: %u lohkoa sisältäen yhteensä %s tavua.\n"
#: ../src/utils/pactl.c:120
#, c-format
msgid "Sample cache size: %s\n"
-msgstr ""
+msgstr "Näytevälimuistin koko: %s\n"
#: ../src/utils/pactl.c:129
#, c-format
msgid "Failed to get server information: %s\n"
-msgstr ""
+msgstr "Palvelintietojen selvittäminen epäonnistui: %s\n"
#: ../src/utils/pactl.c:137
-#, fuzzy, c-format
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1571,10 +1767,11 @@ msgid ""
"Cookie: %08x\n"
msgstr ""
"Käyttäjänimi: %s\n"
-"Isäntänimi: %s\n"
+"Konenimi: %s\n"
"Palvelimen nimi: %s\n"
"Palvelimen versio: %s\n"
"Oletusnäytemäärittely: %s\n"
+"Oletuskanavakartta: %s\n"
"Oletusnielu: %s\n"
"Oletuslähde: %s\n"
"Eväste: %08x\n"
@@ -1869,7 +2066,7 @@ msgstr "Epäonnistuminen: %s\n"
#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
-msgstr ""
+msgstr "Näytteen lähettäminen epäonnistui: %s\n"
#: ../src/utils/pactl.c:653
#, c-format
@@ -1901,6 +2098,27 @@ msgid ""
" -n, --client-name=NAME How to call this client on the "
"server\n"
msgstr ""
+"%s [valitsimet] stat\n"
+"%s [valitsimet] list\n"
+"%s [valitsimet] exit\n"
+"%s [valitsimet] upload-sample TIEDOSTONIMI [NIMI]\n"
+"%s [valitsimet] play-sample NIMI [NIELU]\n"
+"%s [valitsimet] remove-sample NIMI\n"
+"%s [valitsimet] move-sink-input TUNNISTE NIELU\n"
+"%s [valitsimet] move-source-output TUNNISTE LÄHDE\n"
+"%s [valitsimet] load-module NIMI [ARGUMENTIT ...]\n"
+"%s [valitsimet] unload-module TUNNISTE\n"
+"%s [valitsimet] suspend-sink [NIELU] 1|0\n"
+"%s [valitsimet] suspend-source [LÄHDE] 1|0\n"
+"%s [valitsimet] set-card-profile [KORTTI] [PROFIILI] \n"
+"\n"
+" -h, --help Näytä tämä ohje\n"
+" --version Näytä versio\n"
+"\n"
+" -s, --server=PALVELIN Sen palvelimen nimi, johon\n"
+" yhdistetään\n"
+" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa\n"
+" kutsutaan palvelimella\n"
#: ../src/utils/pactl.c:826
#, c-format
@@ -1909,70 +2127,73 @@ msgid ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
msgstr ""
+"pactl %s\n"
+"Käännetty libpulsen versiolle %s\n"
+"Linkitetty libpulsen versiolle %s\n"
#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
-msgstr ""
+msgstr "Anna ladattava näytetiedosto\n"
#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
-msgstr ""
+msgstr "Äänitiedoston avaaminen epäonnistui.\n"
#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
-msgstr ""
+msgstr "Soitettavan näytteen nimi on annettava\n"
#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
-msgstr ""
+msgstr "Poistettavan näytteen nimi on annettava\n"
#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
-msgstr ""
+msgstr "Nielun syöteindeksi ja nielu on annettava\n"
#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
-msgstr ""
+msgstr "Lähteen ulostuloindeksi ja lähde on annettava\n"
#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
-msgstr ""
+msgstr "Moduulin nimi ja argumentit on annettava.\n"
#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
-msgstr ""
+msgstr "Moduulin indeksi on annettava\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 ""
+msgstr "Ei voi antaa enempää kuin yhden nielun. Totuusarvo on annettava.\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 ""
+msgstr "Ei voi antaa enempää kuin yhden lähteen. Totuusarvo on annettava.\n"
#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
-msgstr ""
+msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n"
#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
-msgstr ""
+msgstr "Mitään kelvollista komentoa ei annettu.\n"
#: ../src/utils/pax11publish.c:61
#, c-format
@@ -1985,6 +2206,15 @@ msgid ""
"variables and cookie file.\n"
" -r Remove PulseAudio data from X11 display\n"
msgstr ""
+"%s [-D näyttö] [-S palvelin] [-O nielu] [-I lähde] [-c tiedosto] [-d|-e|-i|-"
+"r]\n"
+"\n"
+" -d Näytä nykyiseen X11-näyttöön yhdistetyn PulseAudion tiedot (oletus)\n"
+" -e Vie paikalliset PulseAudio-tiedot X11-näytölle\n"
+" -i Tuo PulseAudio-tiedot X11-näytöltä paikallisiin ympäristömuuttujiin "
+"ja\n"
+" evästetiedostoon.\n"
+" -r Poista PulseAudio-tiedostot X11-näytöltä\n"
#: ../src/utils/pax11publish.c:94
#, c-format
@@ -2014,47 +2244,47 @@ msgstr "Eväste: %s\n"
#: ../src/utils/pax11publish.c:132
#, c-format
msgid "Failed to parse cookie data\n"
-msgstr ""
+msgstr "Evästetietojen jäsennys epäonnistui\n"
#: ../src/utils/pax11publish.c:137
#, c-format
msgid "Failed to save cookie data\n"
-msgstr ""
+msgstr "Evästetietojen tallennus epäonnistui\n"
#: ../src/utils/pax11publish.c:152
#, c-format
msgid "Failed to load client configuration file.\n"
-msgstr ""
+msgstr "Asiakasohjelman asetustiedoston lataaminen epäonnistui.\n"
#: ../src/utils/pax11publish.c:157
#, c-format
msgid "Failed to read environment configuration data.\n"
-msgstr ""
+msgstr "Ympäristön asetustietojen lukeminen epäonnistui.\n"
#: ../src/utils/pax11publish.c:174
#, c-format
msgid "Failed to get FQDN.\n"
-msgstr ""
+msgstr "Verkkonimen saaminen epäonnistui.\n"
#: ../src/utils/pax11publish.c:194
#, c-format
msgid "Failed to load cookie data\n"
-msgstr ""
+msgstr "Evästetietojen lataaminen epäonnistui\n"
#: ../src/utils/pax11publish.c:211
#, c-format
msgid "Not yet implemented.\n"
-msgstr ""
+msgstr "Toteutusta ei vielä ole.\n"
#: ../src/utils/pacmd.c:64
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-msgstr ""
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
#: ../src/utils/pacmd.c:81
#, c-format
msgid "connect(): %s"
-msgstr ""
+msgstr "connect(): %s"
#: ../src/utils/pacmd.c:89
msgid "Failed to kill PulseAudio daemon."
@@ -2067,17 +2297,17 @@ msgstr "Taustaprosessi ei vastaa."
#: ../src/utils/pacmd.c:144
#, c-format
msgid "select(): %s"
-msgstr ""
+msgstr "select(): %s"
#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
#, c-format
msgid "read(): %s"
-msgstr ""
+msgstr "read(): %s"
#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
#, c-format
msgid "write(): %s"
-msgstr ""
+msgstr "write(): %s"
#: ../src/utils/paplay.c:139
#, c-format
@@ -2115,6 +2345,24 @@ msgid ""
"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
@@ -2130,12 +2378,12 @@ msgstr ""
#: ../src/utils/paplay.c:292
#, c-format
msgid "Invalid channel map\n"
-msgstr "Epäkelpo kanavakartta\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"
+msgstr "Tiedoston ”%s” avaaminen epäonnistui\n"
#: ../src/utils/paplay.c:350
#, c-format
@@ -2145,11 +2393,76 @@ 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"
+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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA herätti taustaprosessin kirjoittamaan uutta dataa laitteelle, mutta "
+"mitään kirjoitettavaa ei ollut!\n"
+"Tämä on luultavasti ohjelmavirhe ALSA-ajurissa ”%s”. Raportoi tästä "
+"ongelmasta ALSA-kehittäjille. Taustaprosessi herätettiin POLLOUT "
+"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
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
msgstr ""
+"ALSA herätti taustaprosessin lukemaan uutta dataa laitteelta, mutta mitään "
+"luettavaa ei ollut!\n"
+"Tämä on luultavasti ohjelmavirhe ALSA-ajurissa ”%s”. Raportoi tästä "
+"ongelmasta ALSA-kehittäjille. Taustaprosessi herätettiin POLLIN asetettuna, "
+"snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, on < min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "Ulostulo %s + Sisääntulo %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "Ulostulo %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "Sisääntulo %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "Poissa"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "Korkean äänenlaadun toisto (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio-äänipalvelin"
#~ msgid "muted"
#~ msgstr "vaimennettu"
diff --git a/po/fr.po b/po/fr.po
index fc1c57c..37caca4 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
"PO-Revision-Date: 2008-10-18 20:34+0200\n"
"Last-Translator: Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>\n"
"Language-Team: Français <fedora-trans-fr@redhat.com>\n"
@@ -23,47 +23,47 @@ msgstr ""
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -72,7 +72,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -81,7 +81,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -90,12 +90,12 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/pulsecore/sink.c:1963
+#: ../src/pulsecore/sink.c:2141
#, fuzzy
msgid "Internal Audio"
msgstr "Erreur interne"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
msgstr ""
@@ -167,108 +167,108 @@ msgstr "Impossible d'obtenir l'authentification : %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit a renvoyé « %s »"
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Signal %s obtenu."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Fermeture."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Impossible de trouver l'utilisateur « %s »."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Impossible de trouver le groupe « %s »."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Échec lors de la création de « %s » : %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "Échec lors du changement de la liste du groupe : %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "Échec lors du changement de GID : %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "Échec lors du changement d'UID : %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "Les permissions root ont été correctement abandonnées."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr "Mode système étendu non pris en charge sur cette plateforme."
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) a échoué : %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "Échec lors de l'analyse de la ligne de commande"
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, 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:465
+#: ../src/daemon/main.c:507
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Nous sommes dans le groupe « %s », permettant une planification en temps réel."
-#: ../src/daemon/main.c:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -281,48 +281,48 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Augmentation de RLIMIT_RTPRIO réussie"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO a échoué : %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "Abandon de CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
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:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "Lé démon n'est pas lancé"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "Le démon est lancé avec le PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Impossible de tuer le démon : %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -330,148 +330,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:677
+#: ../src/daemon/main.c:719
#, fuzzy
msgid "Root privileges required."
msgstr "Les permissions root sont nécessaires."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start n'est pas pris en charge pour les instances système."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
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:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
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:698
+#: ../src/daemon/main.c:740
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:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "Échec lors de l'acquisition de stdio."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "Échec du tube : %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "Échec de fork() : %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "Échec de read() : %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Échec lors du démarrage du démon."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "Démarrage du démon réussi."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Pulseaudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Hôte de compilation : %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilation : %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "Exécution sur l'hôte : %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "La taille de la page est de %lu octets"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Compilé avec la prise en charge Valgrind : oui"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Compilé avec la prise en charge Valgrind : non"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Exécution en mode valgrind : %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Construction optimisée : oui"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Construction optimisée : non"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Échec lors de l'obtention de l'ID de la machine"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "L'ID de la machine est %s."
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "Échec de pa_pid_file_create()."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -479,27 +496,27 @@ msgstr ""
"Eh mec, ton noyau il pue ! La recommandation d'aujourd'hui du patron est "
"d'activer les horloges à haute résolution sur ton Linux."
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "Échec de pa_core_new()."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Échec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
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:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "Démon terminé."
@@ -1245,30 +1262,30 @@ msgstr ""
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:523
+#: ../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:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork() : %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid() : %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Message reçu pour une extension inconnue « %s »"
@@ -1355,83 +1372,88 @@ msgstr "Flux déplacé vers le périphérique %s (%u, %ssuspendu).%s \n"
msgid "not "
msgstr "non "
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Flux vide %s \n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Connection établie.%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Échec de pa_stream_new() : %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Échec de pa_stream_connect_playback() : %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Échec de pa_stream_connect_record() : %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Échec lors de la connexion : %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "EOF obtenu.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain() : %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "Échec de read() : %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "Échec de write() : %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Signal obtenu, fermeture.\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Échec lors de l'obtention de la latence : %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Échec de pa_stream_update_timing_info() : %s\n"
@@ -1439,7 +1461,7 @@ 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:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1543,7 +1565,7 @@ msgstr ""
" --process-time=OCTETS Demande le temps de traitement "
"indiqué par requête en octets.\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1554,89 +1576,89 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Plan des canaux invalide « %s »\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Spécification de latence invalide « %s »\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Spécification de temps de traitement invalide « %s »\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Spécification d'échantillon invalide\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
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:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "enregistrement"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "lecture"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open() : %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2() : %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Trop de paramètres.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Échec de pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "Échec de io_new().\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Échec de pa_context_new().\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Échec de pa_context_connect() : %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "Échec de time_new().\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -2380,6 +2402,60 @@ msgstr "Utilisation de la spécification de l'échantillon « %s »\n"
msgid "Cannot access autospawn lock."
msgstr "Impossible d'accèder au verrou autonome."
+#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/gu.po b/po/gu.po
new file mode 100644
index 0000000..cac78f0
--- /dev/null
+++ b/po/gu.po
@@ -0,0 +1,2432 @@
+# translation of pulseaudio.po to Gujarati
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Sweta Kothari <swkothar@redhat.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-07 14:27+0530\n"
+"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n"
+"Language-Team: Gujarati\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "એનાલોગ મોનો"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "એનાલોગ સ્ટેરિઓ"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "ડિજિટલ સ્ટેરિઓ (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "ડિજિટલ સ્ટેરિઓ (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "એનાલોગ સરાઉન્ડ 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "એનાલોગ સરાઉન્ડ 4.0 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "એનાલોગ સરાઉન્ડ 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "એનાલોગ સરાઉન્ડ 4.2"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "એનાલોગ સરાઉન્ડ 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "એનાલોગ સરાઉન્ડ 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "એનાલોગ સરાઉન્ડ 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() કિંમતને પાછુ મળેલ છે કે જે અપવાદ રીતે વિશાળ છે: %lu bytes (%lu ms).\n"
+"ALSA ડ્રાઇવર '%s' માં મોટેભાગે આ ભૂલ જેવુ છે. ALSA ડેવલ્પરોમાં આ સમસ્યાને મહેરબાની કરીને "
+"અહેવાલ કરો."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() કિંમતને પાછુ મળેલ છે કે જે અપવાદ રીતે વિશાળ છે: %li bytes (%s%lu "
+"ms).\n"
+"ALSA ડ્રાઇવર '%s' માં મોટેભાગે આ ભૂલ જેવુ છે. ALSA ડેવલ્પરોમાં આ સમસ્યાને મહેરબાની કરીને "
+"અહેવાલ કરો."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() કિંમતને પાછુ મળેલ છે કે જે અપવાદ રીતે વિશાળ છે: %lu બાઇટો (%lu "
+"ms).\n"
+"ALSA ડ્રાઇવર '%s' માં મોટેભાગે આ ભૂલ જેવુ છે. ALSA ડેવલ્પરોમાં આ સમસ્યાને મહેરબાની કરીને "
+"અહેવાલ કરો."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "આંતરિક ઓડિયો"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "મોડેમ"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "મૂળ lt_dlopen લોડરને શોધવામાં નિષ્ફળ."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "નવા dl લોડરને ફાળવવાનું નિષ્ફળ."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-loader ને ઉમેરવાનું નિષ્ફળ."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "સિસ્ટમ બસને જોડી શકાતુ નથી: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID માંથી કોલરને મેળવી શકાતુ નથી: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "કોલર ઓબ્જેક્ટ પર UID ને સુયોજિત કરી શકાતુ નથી."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK સત્રને મેળવવામાં નિષ્ફળ."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "સત્ર ઓબ્જેક્ટ પર UID ને સુયોજિત કરી શકાતુ નથી."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitAction ને ફાળવી શકાતી નથી."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id ને સુયોજિત કરી શકાતુ નથી"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext ને ફાળવી શકાતી નથી."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContext નું પ્રારંભ કરી શકાતુ નથી: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "નક્કી કરી શકાયુ નહિં ક્યાંતો કોલર એ સત્તાધિકરણ થયેલ છે: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "auth મેળવા શકાતુ નથી: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "'%s' સાથે PolicyKit એ પ્રત્યુત્તર આપેલ છે"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "સંકેત %s મળ્યુ."
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "બહાર નીકળી રહ્યા છે."
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "વપરાશકર્તા '%s' ને શોધવામાં નિષ્ફળ."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "જૂથ '%s' ને શોધવામાં નિષ્ફળ."
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "વપરાશકર્તા '%s' અને જૂથ '%s' ની GID બંધબેસતુ નથી."
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' ને બનાવવામાં નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "જૂથ યાદીને બદલવામાં નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID ને બદલવામાં નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID ને બદલવામાં નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "સફળતાપૂર્વક છોડી દીધેલ રુટ અધિકારો."
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "આ પ્લેટફોર્મ પર બિનઆધારભૂત સિસ્ટમ વિશાળ સ્થિતિ."
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "આદેશ વાક્યને પદચ્છેદન કરવામાં નિષ્ફળ."
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "આપણે જૂથ '%s' માં છીએ, high-priority ગોઠવવાની પરવાનગી આપી રહ્યા છે."
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "આપણે જૂથ '%s' માં છીએ, સાચા સમયે ગોઠવવાની પરવાનગી આપી રહ્યા છે."
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit આપણને acquire-high-priority અધિકારની મંજૂરી આપે છે."
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit એ acquire-high-priority અધિકારને ફરીથી શરૂ કરે છે."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit એ acquire-real-time અધિકારની મંજૂરી આપે છે."
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit એ acquire-real-time અધિકારને ફરી શરૂ કરે છે."
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"કહેવાતી SUID અને real-time અને/અથવા high-priority ગોઠવણી રૂપરેખાંકનમાં સૂચવેલ હતી. "
+"છતાંપણ, આપણને જરૂરી અધિકારો ઓછા પડ્યા:\n"
+"આપણે જૂથ '%s' માં નથી, PolicyKit એ સૂચિત અધિકારોને આપણને મંજૂરી આપવા માટે માન્ય કરતુ "
+"નથી અને આપણે RLIMIT_NICE/RLIMIT_RTPRIO સ્ત્રોત મર્યાદાઓને વધારતા નથી.\n"
+"real-time/high-priority ગોઠવણીને સક્રિય કરવા માટે મહેરબાની કરીને અનૂકુળ PolicyKit "
+"અધિકારોને મેળવો, અથવા '%s' નાં સભ્ય બનો, અથવા આ વપરાશકર્તા માટે RLIMIT_NICE/"
+"RLIMIT_RTPRIO સ્ત્રોત મર્યાદાઓને વધારો."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"High-priority ગોઠવવાનું રૂપરેખાંકનમાં સક્રિય થયેલ છે પરંતુ પોલિસી દ્દારા પરવાનગી આપેલ નથી."
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "સફળતાપૂર્વક વધારેલ RLIMIT_RTPRIO"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE ને છોડી રહ્યા છે"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"Real-time ગોઠવવાનું એ રૂપરેખાંકનમાં સક્રિય થયેલ છે પરંતુ પોલિસી દ્દારા પરવાનગી આપેલ નથી."
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "ડિમન ચાલી રહ્યુ નથી"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "PID %u તરીકે ડિમન ચાલી રહ્યુ છે"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "ડિમનને મારવાનું નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"આ પ્રક્રિયાને રુટ તરીકે ચલાવવા માટે વિચાર થયેલ નથી (નહિં તો --system એ સ્પષ્ટ થયેલ છે)."
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "રુટ અધિકારો જરૂરી છે."
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "--start એ સિસ્ટમ ઉદાહરણો માટે આધારભૂત નથી."
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, પરંતુ --disallow-exit સુયોજિત નથી!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, પરંતુ --disallow-module-loading એ સુયોજિત નથી!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, SHM સ્થિતિને દબાણપૂર્વક નિષ્ક્રિય કરી રહ્યા છે!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+"સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, બહાર નીકળવનાં નિષ્કાર્ય સમયને દબાણપૂર્વક નિષ્ક્રિય કરી "
+"રહ્યા છે!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdio ને મેળવવામાં નિષ્ફળ."
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "પાઇપ નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() નિષ્ફળ: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "ડિમન શરૂઆત નિષ્ફળ."
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "ડિમન શરૂઆત કરવુ સફળ છે."
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "આ PulseAudio %s છે"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "કમ્પાઇલેશન યજમાન: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "કમ્પાઇલેશન CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "યજમાન પર ચાલી રહ્યુ છે: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPUs શોધાયુ."
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "પાનાંનુ માપ %lu બાઇટો છે"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind આધાર સાથે કમ્પાઇલ થયેલ છે: હા"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind આધાર સાથે કમ્પાઇલ થયેલ છે: ના"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind સ્થિતિમાં ચાલી રહ્યુ છે: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "શ્રેષ્ટ થયેલ બિલ્ડ: હા"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "શ્રેષ્ટ થયેલ બિલ્ડ: ના"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG વ્યાખ્યાયિત થયેલ છે, બધા હકો નિષ્ક્રિય થયેલ છે."
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH વ્યાખ્યાયિત થયેલ છે, ફક્ત ઝડપી પાથનાં હકો નિષ્ક્રિય થયેલ છે."
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "બધા હકો સક્રિય થયેલ છે."
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "મશીન ID ને મેળવવામાં નિષ્ફળ"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "મશીન ID %s છે."
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "મશીન ID %s છે."
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "રનટાઇમ ડિરેક્ટરી %s ને વાપરી રહ્યા છે."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "સ્થિતિ ડિરેક્ટરી %s ને વાપરી રહ્યા છે."
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() નિષ્ફળ."
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "તાજુ high-resolution ટાઇમરો ઉપલ્બધ છે! બોન એપેટાઇટ!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"મિત્ર, તમારુ કર્નલમાં ગડબડ છે! રસોઇયાનું આજે ભલામણ એ સક્રિય થયેલ high-resolution "
+"ટાઇમરો સાથે Linux નું છે!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() નિષ્ફળ."
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "ડિમનને શરૂ કરવામાં નિષ્ફળ."
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "કોઇપણ લોડ થયેલ મોડ્યુલો વગર ડિમનને શરૂ કરો, કામ કરવા માટે ફરી શરૂ કરી રહ્યા છે."
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "ડિમન પારંભ કરવાનું સમાપ્ત છે."
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "ડિમનને બંધ કરવાનું પ્રારંભ થયેલ છે."
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "ડિમનનો અંત આવેલ છે."
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help આ મદદ બતાવો\n"
+" --version આવૃત્તિ બતાવો\n"
+" --dump-conf મૂળભૂત રૂપરેખાંકનને ડમ્પ કરો\n"
+" --dump-modules ઉપલ્બધ મોડ્યુલોની યાદીને ડમ્પ કરો\n"
+" --dump-resample-methods ઉપલ્બધ resample પદ્દતિઓને ડમ્પ કરો\n"
+" --cleanup-shm વાપરેલ વહેંચાયેલ મેમરી સેગમેન્ટોને સાફ કરો\n"
+" --start ડિમન ને શરૂ કરો જો તે ચાલી રહ્યુ ન હોય "
+"તો\n"
+" -k --kill ચાલી રહેલ ડિમનને મારો\n"
+" --check ચાલતી ડિમન માટે ચકાસો (ફક્ત નીકાળેલ કોડ "
+"પાછો મળે છે)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] system-wide નમૂના તરીકે ચલાવો\n"
+" -D, --daemonize[=BOOL] શરૂઆત પછી Daemonize\n"
+" --fail[=BOOL] બહાર નીકળો જ્યારે શરૂઆત જ નિષ્ફળ થાય\n"
+" --high-priority[=BOOL] ઊંચા સરસ સ્તરને સુયોજિત કરવાનો પ્રયત્ન "
+"કરો\n"
+" (ફક્ત રુટ તરીકે, જ્યારે SUID અથવા\n"
+" ઉચ્ચસ્તર થયેલ RLIMIT_NICE સાથે)\n"
+" --realtime[=BOOL] રીઅલટાઇમ ગોઠવવાનું સક્રિય કરવા માટે "
+"પ્રયત્ન કરો\n"
+" (ફક્ત રુટ તરીકે ઉપલ્બધ, જ્યારે SUID અથવા\n"
+" ઉચ્ચસ્તર થયેલ RLIMIT_RTPRIO સાથે)\n"
+" --disallow-module-loading[=BOOL] સૂચિત મોડ્યુલ લોડીંગ/અનલોડીંગ ને શરૂઆત પછી\n"
+" મોડ્યુલ વપરાશકર્તાને પરવાનગી ન આપો\n"
+" --disallow-exit[=BOOL] સૂચિત બહાર નીકળવા વપરાશકર્તાને પરવાનગી "
+"ન આપો\n"
+" --exit-idle-time=SECS ડિમનને બહાર કાઢો જ્યારે નિષ્ક્રિય હોય અને "
+"આ\n"
+" સમય સમાપ્ત થયેલ હોય તો\n"
+" --module-idle-time=SECS આપમેળે લોડ થયેલ મોડ્યુલોને લોડ ન કરો જ્યારે "
+"તે નિષ્ક્રિય હોય અને\n"
+" આ સમય પસાર થયેલ હોય\n"
+" --scache-idle-time=SECS આપમેળે લોડ થયેલ નમૂનાઓનો લોડ ન કરો જ્યારે "
+"નિષ્ક્રિય હોય અને\n"
+" આ સમય પસાર થયેલ હોય\n"
+" --log-level[=LEVEL] વધારો અથવા વર્બોસીટી સ્તરને સુયોજિત કરો\n"
+" -v વર્બોસીટી સ્તરને વધારો\n"
+" --log-target={auto,syslog,stderr} લોગ લક્ષ્યને સ્પષ્ટ કરો\n"
+" --log-meta[=BOOL] સંદેશાઓમાં કોડ સ્થાનને સમાવો\n"
+" --log-time[=BOOL] લોગ સંદેશાઓમાં ટાઇમસ્ટેમ્પોને સમાવો\n"
+" --log-backtrace=FRAMES લોગ સંદેશાઓમાં backtrace ને સમાવો\n"
+" -p, --dl-search-path=PATH ડાયનેમિક વહેંચાયેલ માટે શોધ પાથને સુયોજિત "
+"કરો\n"
+" objects (plugins)\n"
+" --resample-method=METHOD સ્પષ્ટ થયેલ resampling પદ્દતિને વાપરો\n"
+" (શક્ય કિંમતો માટે --dump-resample-"
+"methods\n"
+" ને જુઓ)\n"
+" --use-pid-file[=BOOL] PID ફાઇલને બનાવો\n"
+" --no-cpu-limit[=BOOL] પ્લેટફોર્મો પર CPU લોડ મર્યાદા રાખનારને "
+"સ્થાપિત ન કરો\n"
+" કે જે તેને આધાર આપે છે.\n"
+" --disable-shm[=BOOL] વહેંચાયેલ મેમરી આધારને નિષ્ક્રિય કરો.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" સ્પષ્ટ થયેલ દલીલ સાથે સ્પષ્ટ થયેલ પલ્ગઇન "
+"મોડ્યુલને લોડ\n"
+" કરો\n"
+" -F, --file=FILENAME સ્પષ્ટ થયેલ સ્ક્રિપ્ટને ચલાવો\n"
+" -C શરૂઆત પછી TTY ચલાવવા પર આદેશ વાક્યને\n"
+" ખોલો\n"
+"\n"
+" -n મૂળભૂત સ્ક્રિપ્ટ ફાઇલને લોડ કરો નહિં\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../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 એ લોગ સ્તર દલીલની ઇચ્છા રાખે છે (ક્યાંતો સીમા 0..4 માં પૂર્ણસંખ્યા છે અથવા "
+"ડિબગ, જાણકારી, સૂચના, ચેતવણી, ભૂલ નું એક)."
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "અયોગ્ય લોગ લક્ષ્ય: ક્યાંતો 'syslog', 'stderr' અથવા 'auto' ને વાપરો."
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "અયોગ્ય resample પદ્દતિ '%s'."
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm એ બુલિયન દલીલની ઇચ્છા રાખે છે"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "નામ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "મોડ્યુલ જાણકારી ઉપલ્બધ નથી\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "આવૃત્તિ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "વર્ણન: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "લેખક: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "વપરાશ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "એકવાર લોડ કરો: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "પાથ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] અયોગ્ય લોગ લક્ષ્ય '%s'."
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] અયોગ્ય લોગ સ્તર '%s'."
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] અયોગ્ય resample પદ્દતિ '%s'."
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] અયોગ્ય rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit એ આ પ્લેટફોર્મ પર આધારભૂત નથી."
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] અયોગ્ય નમૂના બંધારણ '%s'."
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] અયોગ્ય નમૂના દર '%s'."
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] અયોગ્ય નમૂના ચેનલો '%s'."
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] અયોગ્ય ચેનલ મેપ '%s'."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટોનાં નંબર '%s'."
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટ માપ '%s'."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] અયોગ્ય સારુ સ્તર '%s'."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "રૂપરેખાંકન ફાઇલને ખોલવાનું નિષ્ફળ: %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."
+msgstr ""
+"સ્પષ્ટ થયેલ મૂળભૂત ચેનલ મેપ પાસે સ્પષ્ટ થયેલ ચેનલોની મૂળભૂત સંખ્યા કરતા વિવિધ ચેનલોની સંખ્યા છે."
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### રૂપરેખાંકન ફાઇલમાંથી વાંચો: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "રુટ અધિકારોને છોડી રહ્યા છે."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "CAP_SYS_NICE માં સફળતાપૂર્વક મર્યાદિત ક્ષમતાઓ."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio સાઉન્ડ સિસ્ટમ"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio સાઉન્ડ સિસ્ટમને શરૂ કરો"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "PulseAudio ડિમન માટે High-priority ગોઠવણી (નકારાત્મક Unix સારુ સ્તર)"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio ડિમન માટે Real-time ગોઠવણી"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"high-priority ગોઠવણીને પ્રાપ્ત કરવા માંથી સિસ્ટમ પોલિસી PulseAudio ને અટકાવે છે."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr "real-time ગોઠવણી પ્રાપ્ત કરવા માંથી સિસ્ટમ પોલિસી એ PulseAudio ને અટકાવે છે."
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "મોનો"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "આગળનું કેન્દ્ર"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "આગળ ડાબે"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "આગળ જમણે"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "રિઅર કેન્દ્ર"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "રિઅર ડાબે"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "રિઅર જમણે"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "Low Frequency Emmiter"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "આગળ કેન્દ્રની ડાબે"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "આગળ કેન્દ્રની જમણે"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "ડાબી બાજુ"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "જમણી બાજુ"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "ઑગ્ઝિલિઅરિ 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "ઑગ્ઝિલિઅરિ 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "ઑગ્ઝિલિઅરિ 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "ઑગ્ઝિલિઅરિ 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "ઑગ્ઝિલિઅરિ 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "ઑગ્ઝિલિઅરિ 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "ઑગ્ઝિલિઅરિ 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "ઑગ્ઝિલિઅરિ 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "ઑગ્ઝિલિઅરિ 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "ઑગ્ઝિલિઅરિ 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "ઑગ્ઝિલિઅરિ 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "ઑગ્ઝિલિઅરિ 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "ઑગ્ઝિલિઅરિ 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "ઑગ્ઝિલિઅરિ 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "ઑગ્ઝિલિઅરિ 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "ઑગ્ઝિલિઅરિ 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "ઑગ્ઝિલિઅરિ 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "ઑગ્ઝિલિઅરિ 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "ઑગ્ઝિલિઅરિ 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "ઑગ્ઝિલિઅરિ 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "ઑગ્ઝિલિઅરિ 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "ઑગ્ઝિલિઅરિ 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "ઑગ્ઝિલિઅરિ 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "ઑગ્ઝિલિઅરિ 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "ઑગ્ઝિલિઅરિ 24"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "ઑગ્ઝિલિઅરિ 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "ઑગ્ઝિલિઅરિ 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "ઑગ્ઝિલિઅરિ 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "ઑગ્ઝિલિઅરિ 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "ઑગ્ઝિલિઅરિ 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "ઑગ્ઝિલિઅરિ 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "ઑગ્ઝિલિઅરિ 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "ઊંચે કેન્દ્ર"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "ઊંચે આગળ કેન્દ્ર"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "ઊંચે આગળ ડાબે"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "ઊંચે આગળ જમણે"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "ઊંચે રિઅર કેન્દ્ર"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "ઉપર રિઅર ડાબે"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(અયોગ્ય)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "સ્ટેરિઓ"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "સરાઉન્ડ 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "સરાઉન્ડ 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "સરાઉન્ડ 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "સરાઉન્ડ 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "સરાઉન્ડ 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "બરાબર"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "પ્રવેશનો સ્વીકાર કરેલ નથી"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "અજ્ઞાત આદેશ"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "અયોગ્ય દલીલ"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "વસ્તુ અસ્તિત્વ ધરાવે છે"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "આવી વસ્તુ નથી"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "જોડાણને માન્ય ન કરવુ"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "પ્રોટોકોલ ભૂલ"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "સમય સમાપ્ત"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "સત્તાધિકરણ કી નથી"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "આંતરિક ભૂલ"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "જોડાણનો અંત થયેલ છે"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "વસ્તુને મારી નંખાયેલ છે"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "અયોગ્ય સર્વર"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "મોડ્યુલ શરૂઆત કરવાનું નિષ્ફળ"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "ખરાબ સ્થિતિ"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "માહિતી નથી"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "અસુસંગત પ્રોટોકોલ આવૃત્તિ"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "ઘણું લાંબુ છે"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "આધારભૂત નથી"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "અજ્ઞાત ભૂલ કોડ"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "આવુ એક્સટેન્શન નથી"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "અપ્રચલિત કાર્યત્મકતા"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "ગુમ થયેલ અમલીકરણ"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "ક્લાઇન્ટમાં ફાટા પડેલ છે"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() નિષ્ફળ"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "કુકીની માહિતીને પદચ્છેદન કરવામાં નિષ્ફળ"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "રૂપરેખાંકન ફાઇલ '%s' ને ખોલવામાં નિષ્ફળ: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "કુકી લોડ થયેલ નથી. તેનાં વગર જોડવાનો પ્રયત્ન કરી રહ્યા છે."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "અજ્ઞાત એક્સટેન્શન '%s' માટે મળેલ સંદેશ"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "સ્ટ્રીમ સફળતાપૂર્વક બનાવેલ છે.\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "બફર મેટ્રિક્સ: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "નમૂનો spec '%s' ને વાપરી રહ્યા છે, ચેનલ મેપ '%s'.\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "ઉપકરણ %s (%u, %ssuspended) સાથે જોડાયેલ છે.\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "સ્ટ્રીમ ભૂલ: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "સ્ટ્રીમ ઉપકરણ ને થોડા સમય માટે બંધ રાખેલ છે.%s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "સ્ટ્રીમ ઉપકરણને ફરી શરૂ કરેલ છે.%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "સ્ટ્રીમ ચલાવવા હેઠળ છે.%s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "સ્ટ્રીમ ઉપર ચાલે છે.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "સ્ટ્રીમ શરૂ થયેલ છે.%s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "સ્ટ્રીમ એ ઉપકરણ %s (%u, %ssuspended) માં ખસેડેલ છે.%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "નથી "
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "સ્ટ્રીમ બફર ગુણધર્મો બદલાયેલ છે.%s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "જોડાણ સ્થાપિત થયેલ છે.%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "સંકેત મળ્યું, બહાર નીકળી રહ્યા છે.\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "ગુપ્તતા મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"libpulse %s સાથે કમ્પાઇલ થયેલ છે\n"
+"libpulse %s સાથે કડી થયેલ છે\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "અયોગ્ય ચેનલ મેપ '%s'\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "અયોગ્ય ગુપ્તતા સ્પષ્ટીકરણ '%s'\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "અયોગ્ય પ્રક્રિયા સમય સ્પષ્ટીકરણ '%s'\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "અયોગ્ય નમૂના સ્પષ્ટીકરણ\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "નમૂના સ્પષ્ટીકરણ '%s' સાથે %s સ્ટ્રીમને ખોલી રહ્યા છે.\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "રેકોર્ડ કરી રહ્યા છે"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() નિષ્ફળ.\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() નિષ્ફળ: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() નિષ્ફળ.\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "થોડા સમય માટે બંધ કરવા માટે નિષ્ફળતા: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "ફરી શરૂ કરવામાં નિષ્ફળતા: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "ચેતવણી: સાઉન્ડ સર્વર એ સ્થાનિક નથી, થોડા સમય માટે બંધ કરવામાં આવ્યુ નથી.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT મળ્યુ, બહાર નીકળી રહ્યા છે.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "ચેતવણી: બાળ પ્રક્રિયાનો સંકેત %u દ્દારા અંત આવેલ છે\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help આ મદદ ને બતાવો\n"
+" --version આવૃત્તિને બતાવો\n"
+" -s, --server=SERVER જોડાવવા માટે સર્વરનું નામ\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"libpulse %s સાથે કમ્પાઇલ થયેલ છે\n"
+"libpulse %s સાથે કડી થયેલ છે\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "પરિસ્થિતિઓને મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "હાલમાં વપરાશમાં છે: %u બ્લોકો %s કુલ બાઇટોને સમાવી રહ્યા છે.\n"
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr "આખી જીંદગી દરમ્યાન ફાળવેલ છે: %u બ્લોકો %s કુલ બાઇટોને સમાવી રહ્યા છે.\n"
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "નમૂના કેશ માપ: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "સર્વર જાણકારી મેળવવામાં નિષ્ફળતા: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"વપરાશકર્તા નામ: %s\n"
+"યજમાન નામ: %s\n"
+"સર્વર નામ: %s\n"
+"સર્વર આવૃત્તિ: %s\n"
+"મૂળભૂત નમૂના સ્પષ્ટીકરણ: %s\n"
+"મૂળભૂત ચેનલ મેપ: %s\n"
+"મૂળભૂત સિંક: %s\n"
+"મૂળભૂત સ્ત્રોત: %s\n"
+"કુકી: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "સિંક જાણકારી મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"સિંક #%u\n"
+"\tસ્થિતિ: %s\n"
+"\tનામ: %s\n"
+"\tવર્ણન: %s\n"
+"\tડ્રાઇવર: %s\n"
+"\tનમૂના સ્પષ્ટીકરણ: %s\n"
+"\tચેનલ મેપ: %s\n"
+"\tમાલિક મોડ્યુલ: %u\n"
+"\tમૂંગુ: %s\n"
+"\tવોલ્યુમ: %s%s%s\n"
+"\t સમતુલન %0.2f\n"
+"\tઆધાર વોલ્યુમ: %s%s%s\n"
+"\tમોનિટર સ્ત્રોત: %s\n"
+"\tગુપ્તતા: %0.0f usec, configured %0.0f usec\n"
+"\tફ્લેગો: %s%s%s%s%s%s\n"
+"\tગુણધર્મો:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "સ્ત્રોત જાણકારીને મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"સ્ત્રોત #%u\n"
+"\tસ્થિતિ: %s\n"
+"\tનામ: %s\n"
+"\tવર્ણન: %s\n"
+"\tડ્રાઇવર: %s\n"
+"\tનમૂના સ્પષ્ટીકરણ: %s\n"
+"\tચેનલ મેપ: %s\n"
+"\tમાલિક મોડ્યુલ: %u\n"
+"\tમૂંગુ: %s\n"
+"\tવોલ્યુમ: %s%s%s\n"
+"\t સમતુલન %0.2f\n"
+"\tઆધાર વોલ્યુમ: %s%s%s\n"
+"\tસિંકનું મોનિટર: %s\n"
+"\tગુપ્તતા: %0.0f usec, configured %0.0f usec\n"
+"\tફ્લેગો: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "મોડ્યુલની જાણકારી મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"મોડ્યુલ #%u\n"
+"\tનામ: %s\n"
+"\tદલીલ: %s\n"
+"\tવપરાશ ગણતરી: %s\n"
+"\tગુણધર્મો:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "ક્લાઇન્ટ જાણકારી મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ક્લાઇન્ટ #%u\n"
+"\tડ્રાઇવર: %s\n"
+"\tમાલિક મોડ્યુલ: %s\n"
+"\tગુણધર્મો:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "કાર્ડ જાણકારી મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"કાર્ડ #%u\n"
+"\tનામ: %s\n"
+"\tડ્રાઇવર: %s\n"
+"\tમાલિક મોડ્યુલ: %s\n"
+"\tગુણધર્મો:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tરૂપરેખાઓ:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tસક્રિય રૂપરેખા: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "સિંક ઇનપુટ જાણકારી મેળવવામાં નિષ્ફળતા: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"સિંક ઇનપુટ #%u\n"
+"\tડ્રાઇવર: %s\n"
+"\tમાલિક મોડ્યુલ: %s\n"
+"\tક્લાઇન્ટ: %s\n"
+"\tસિંક: %u\n"
+"\tનમૂના સ્પષ્ટીકરણ: %s\n"
+"\tચેનલ મેપ %s\n"
+"\tમૂંગુ: %s\n"
+"\tવોલ્યુમ: %s\n"
+"\t %s\n"
+"\t સમતુલન %0.2f\n"
+"\tબફર ગુપ્તતા: %0.0f usec\n"
+"\tસિંક ગુપ્તતા: %0.0f usec\n"
+"\tResampl પદ્દતિ: %s\n"
+"\tગુણધર્મો:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "સ્ત્રોત આઉટપુટ જાણકારી મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"સ્ત્રોત આઉટપુટ #%u\n"
+"\tડ્રાઇવર: %s\n"
+"\tમાલિક મોડ્યુલ: %s\n"
+"\tક્લાઇન્ટ: %s\n"
+"\tસ્ત્રોત: %u\n"
+"\tનમૂના સ્પષ્ટીકરણ: %s\n"
+"\tચેનલ મેપ %s\n"
+"\tબફર ગુપ્તતા: %0.0f usec\n"
+"\tસિંક ગુપ્તતા: %0.0f usec\n"
+"\tResampl પદ્દતિ: %s\n"
+"\tગુણધર્મો:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "નમૂના જાણકારી મેળવવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"નમૂના #%u\n"
+"\tનામ: %s\n"
+"\tનમૂના સ્પષ્ટીકરણ: %s\n"
+"\tચેનલ મેપ: %s\n"
+"\tવોલ્યુમ: %s\n"
+"\t %s\n"
+"\t સમતુલન %0.2f\n"
+"\tસમયગાળો: %0.1fs\n"
+"\tમાપ: %s\n"
+"\tઆળસુ: %s\n"
+"\tફાઇલનામ: %s\n"
+"\tગુણધર્મો:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "નિષ્ફળતા: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "નમૂનાને અપલોડ કરવામાં નિષ્ફળ: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "ફાઇલનો નિયત સમય પહેલા અંત\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help આ મદદ ને બતાવો\n"
+" --version આવૃત્તિને બતાવોShow version\n"
+"\n"
+" -s, --server=SERVER જોડાવા માટે સર્વર નું નામ\n"
+" -n, --client-name=NAME સર્વર પર આ ક્લાઇન્ટને કેવી રીતે કોલ કરશો\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulse %s સાથે કમ્પાઇલ થયેલ છે\n"
+"libpulse %s સાથે કડી થયેલ છે\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "મહેરબાની કરીને લોડ કરવા માટે નમૂના ફાઇલને સ્પષ્ટ કરો\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "સાઉન્ડ ફાઇલને ખોલવામાં નિષ્ફળ.\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "વગાડવા માટે તમારે નમૂના નામને સ્પષ્ટ કરવુ જ પડશે\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "દૂર કરવા માટે તમારે નમૂના નામને સ્પષ્ટ કરવુ જ પડશે\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "સિંક ઇનપુટ અનુક્રમણિકા અને સિંકને તમારે સ્પષ્ટ કરવુ જ પડશે\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "તમારે સ્ત્રોત આઉટપુટ અનુક્રમણિકા અને સ્ત્રોતને સ્પષ્ટ કરવુ જ પડશે\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "તમારે મોડ્યુલ નામ અને દલીલોને સ્પષ્ટ કરવુ જ પડશે.\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "તમારે મોડ્યુલ અનુક્રમણિકાને સ્પષ્ટ કરવુ જ પડશે\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને રૂપરેખા નામને સ્પષ્ટ કરવુ જ પડશે\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "યોગ્ય આદેશ સ્પષ્ટ થયેલ નથી.\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d X11 દેખાવ (મૂળભૂત) માં જોડાયેલ હાલની PulseAudio માહિતીને બતાવો\n"
+" -e X11 દેખાવમાં સ્થાનિય PulseAudio માહિતીની નિકાસ કરો\n"
+" -i સ્થાનિક પર્યાવરણ ચલો અને કુકી ફાઇલમાં X11 દેખાવમાંથી PulseAudio માહિતીને આયાત "
+"કરો.\n"
+" -r X11 દેખાવમાંથી PulseAudio માહિતીને દૂર કરો\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "આદેશ વાક્યને પદચ્છેદન કરવામાં નિષ્ફળ.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "સર્વર: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "સ્ત્રોત: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "સિંક: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "કુકી: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "કુકી માહિતીને પદચ્છેદન કરવામાં નિષ્ફળ\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "કુકી માહિતીને સંગ્રહ કરવામાં નિષ્ફળ\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "ક્લાઇન્ટ રૂપરેખાંકન ફાઇલને લોડ કરવામાં નિષ્ફળ.\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "પર્યાવરણ રૂપરેખાંકન માહિતીને વાંચવામાં નિષ્ફળ.\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDN ને મેળવવામાં નિષ્ફળ.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "કુકી માહિતીને લોડ કરવામાં નિષ્ફળ\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "હજુ અમલીકરણ થયેલ નથી.\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio ડિમનને મારવામાં નિષ્ફળ."
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "ડિમન એ જવાબ આપતુ નથી."
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA એ ઉપકરણમાં નવી માહિતીને લખવા માટે આપણને જગાડતુ હતુ, પરંતુ ત્યાં વાસ્તવમાં કંઇ જ લખાયુ "
+"ન હતુ!\n"
+"મોટેભાગે આ ALSA ડ્રાઇવર '%s' માં ભૂલ જેવુ છે. મહેરબાની કરીને આ મુદ્દાને ALSA ડેવલપરોમાં "
+"અહેવાલ કરો.\n"
+"POLLOUT સુયોજન સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનું snd_pcm_avail() ને 0 પાછો મળે "
+"છે અથવા બીજી કિંમત < min_avail."
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA એ ઉપકરણમાં નવી માહિતીને વાંચવા માટે આપણને જગાડતુ હતુ, પરંતુ ત્યાં વાસ્તવમાં કંઇ જ "
+"વંચાયુ ન હતુ!\n"
+"મોટેભાગે આ ALSA ડ્રાઇવર '%s' માં ભૂલ જેવુ છે. મહેરબાની કરીને આ મુદ્દાને ALSA ડેવલપરોમાં "
+"અહેવાલ કરો.\n"
+"POLLOUT સુયોજન સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનું snd_pcm_avail() ને 0 પાછો મળે "
+"છે અથવા બીજી કિંમત < min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "આઉટપુટ %s + ઇનપુટ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "આઉટપુટ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "ઇનપુટ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "બંધ"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "High Fidelity Playback (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Telephony Duplex (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio સાઉન્ડ સર્વર"
diff --git a/po/it.po b/po/it.po
index 893d9db..8ad2c9e 100644
--- a/po/it.po
+++ b/po/it.po
@@ -2,14 +2,15 @@
# Copyright (C) 2008, 2009 The Free Software Foundation, Inc
# This file is distributed under the same license as the pulseaudio package.
# Luca Ferretti <elle.uca@libero.it>, 2008, 2009.
+# Milo Casagrande <milo@ubuntu.com>, 2009
#
msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
-"PO-Revision-Date: 2009-02-23 19:19+0100\n"
-"Last-Translator: Luca Ferretti <elle.uca@libero.it>\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-01 19:18+0200\n"
+"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,55 +18,49 @@ msgstr ""
#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
-msgstr ""
+msgstr "Mono analogico"
-#: ../src/modules/alsa/alsa-util.c:536
-#, fuzzy
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
-msgstr "Stereo"
+msgstr "Stereo analogico"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
-msgstr ""
+msgstr "Stereo digitale (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
-msgstr ""
+msgstr "Stereo digitale (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
-#, fuzzy
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
-msgstr "Surround 4.0"
+msgstr "Surround analogico 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
+msgstr "Surround digitale 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
-#, fuzzy
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
-msgstr "Surround 4.1"
+msgstr "Surround analogico 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
-#, fuzzy
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
-msgstr "Surround 5.0"
+msgstr "Surround analogico 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
-#, fuzzy
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
-msgstr "Surround 5.1"
+msgstr "Surround analogico 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
+msgstr "Surround digitale 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
-#, fuzzy
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
-msgstr "Surround 7.1"
+msgstr "Surround analogico 7.1"
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -73,8 +68,11 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_avail() ha restituito un valore molto grande: %lu byte (%lu ms).\n"
+"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
+"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -82,8 +80,11 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_delay() ha restituito un valore molto grande: %li byte (%s%lu ms).\n"
+"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
+"questo problema agli sviluppatori ALSA."
-#: ../src/modules/alsa/alsa-util.c:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -91,15 +92,18 @@ 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() ha restituito un valore molto grande: %lu byte (%lu "
+"ms).\n"
+"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare "
+"questo problema agli sviluppatori ALSA."
-#: ../src/pulsecore/sink.c:1963
-#, fuzzy
+#: ../src/pulsecore/sink.c:2141
msgid "Internal Audio"
-msgstr "Errore interno"
+msgstr "Audio interno"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
-msgstr ""
+msgstr "Modem"
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
@@ -167,105 +171,105 @@ msgstr "Impossibile ottenere l'autorizzazione: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit ha risposto con \"%s\""
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Ottenuto il segnale %s."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Uscita."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ricerca dell'utente \"%s\" non riuscita."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ricerca del gruppo \"%s\" non riuscita."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Creazione di \"%s\" non riuscita: %s"
# group list ????
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "Cambio dell'elenco di gruppo non riuscito: %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "Cambio di GID non riuscito: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "Cambio di UID non riuscito: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "Privilegi di root abbandonati con successo."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr "Modalità \"system wide\" non supportata su questa piattaforma."
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "Analisi della riga di comando non riuscita."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, 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:465
+#: ../src/daemon/main.c:507
#, 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:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority assegnati da PolicyKit."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Privilegi acquire-real-time assegnati da PolicyKit."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Privilegi acquire-real-time rifiutati da PolicyKit."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -277,50 +281,58 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-
-#: ../src/daemon/main.c:538
+"Lo SUID root e lo scheduling real-time o high-priority erano richiesti nella "
+"configurazione, ma mancano i privilegi necessari:\n"
+"non si è nel gruppo «%s», PolicyKit non consente di acquisire i privilegi "
+"richiesti e non è possibile incrementare i limiti RLIMIT_NICE/RLIMIT_RTPRIO "
+"della risorsa.\n"
+"Per abilitare lo scheduling real-time/high-priority, acquisire i privilegi "
+"PolicyKit appropriati, diventare un membro di «%s» oppure incrementare i "
+"limiti RLIMIT_NICE/RLIMIT_RTPRIO della risorsa per questo utente."
+
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Incremento di RLIMIT_RTPRIO riuscito"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO non riuscito: %s"
# abbandono??
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "Abbandono del CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
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:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "Demone non in esecuzione"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demone in esecuzione con PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Terminazione del demone non riuscita: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -328,150 +340,167 @@ msgstr ""
"Questo programma non è pensato per essere eseguito come root (a meno di "
"specificare --system)."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
msgstr "Richiesti privilegi di root."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start non supportato per le istanze di sistema."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
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:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-"In esecuzione in modalità sistema, disabilitata modalità SHM in modo forzoso."
+"In esecuzione in modalità sistema, disabilitata in modo forzoso la modalità "
+"SHM."
-# tempo idle????
-#: ../src/daemon/main.c:698
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-"In esecuzione in modalità sistema, disabilitato il tempo idle di uscita in "
-"modo forzoso."
+"In esecuzione in modalità sistema, disabilitato in modo forzoso il tempo di "
+"uscita per inattività."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "Acquisizione di STDIO non riuscita."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "pipe non riuscita: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "fork() non riuscita: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "read() non riuscita: %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Avvio del demone non riuscito."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "Avvio del demone riuscito."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Questo è PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Host di compilazione: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS di compilazione: %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "In esecuzione sull'host: %s"
# evviva il rispetto della l10n!!!
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr "Trovate %u CPU."
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "La dimensione di pagina è %lu byte"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Compilato con supporto a Valgrind: sì"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Compilato con supporto a Valgrind: no"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "In esecuzione in modalità valgrind: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Build ottimizzata: sì"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Build ottimizzata: no"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Recupero dell'ID della macchina non riuscito"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "L'ID della macchina è %s"
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "In uso directory di runtime %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
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:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -479,27 +508,27 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
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:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "Demone terminato."
@@ -617,7 +646,7 @@ msgstr ""
"elevato)\n"
" --disallow-module-loading[=BOOL] Rifiuta il caricamento/rimozione "
"dei\n"
-" moduli richiesi dall'utente dopo \n"
+" moduli richiesti dall'utente dopo \n"
" l'avvio\n"
" --disallow-exit[=BOOL] Rifiuta le richieste utente di "
"uscita\n"
@@ -705,11 +734,7 @@ msgstr "--realtime richiede un argomento booleano"
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading richiede un argomento booleano"
-# FIXME missing expects???
-#
-# Segnalato http://pulseaudio.org/ticket/484
#: ../src/daemon/cmdline.c:302
-#, fuzzy
msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit richiede un argomento booleano"
@@ -724,13 +749,10 @@ msgstr ""
"\"."
#: ../src/daemon/cmdline.c:333
-#, fuzzy
msgid "--log-time expects boolean argument"
-msgstr "--realtime richiede un argomento booleano"
+msgstr "--log-time richiede un argomento booleano"
-# FIXME missing expects???
#: ../src/daemon/cmdline.c:340
-#, fuzzy
msgid "--log-meta expects boolean argument"
msgstr "--log-meta richiede un argomento booleano"
@@ -834,9 +856,9 @@ msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
+msgstr "[%s:%u] Mappa del canale \"%s\" non valida."
#: ../src/daemon/daemon-conf.c:371
#, c-format
@@ -863,6 +885,8 @@ msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
+"La mappa del canale predefinita specificata presenta un numero diverso di "
+"canali rispetto a quello predefinito specificato."
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -879,31 +903,35 @@ msgstr "Limitazione delle capacità a CAP_SYS_NICE riuscita."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "Sistema sonoro PulseAudio"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "Avvia il sistema sonoro PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
msgstr ""
+"Scheduling high-priority (valori negativi di \"nice\") per il demone "
+"PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "Uccisione del demone PulseAudio non riuscita."
+msgstr "Scheduling realt-time per il demone PulseAudio"
#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr "Attualmente nel gruppo \"%s\", che consente scheduling high-priority."
+msgstr ""
+"La politica di sistema previene PulseAudio dall'ottenere lo scheduling high-"
+"priority."
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
msgstr ""
+"La politica di sistema previene PulseAudio dall'ottenere lo scheduling real-"
+"time."
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
@@ -925,7 +953,7 @@ msgstr "Frontale destro"
#: ../src/pulse/channelmap.c:109
msgid "Rear Center"
-msgstr "Centrale posteriore "
+msgstr "Centrale posteriore"
#: ../src/pulse/channelmap.c:110
msgid "Rear Left"
@@ -1239,7 +1267,7 @@ msgstr "Implementazione mancante"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "Fork del client"
#: ../src/pulse/sample.c:169
#, c-format
@@ -1270,30 +1298,30 @@ msgstr "%u B"
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() non riuscita"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Analisi dei dati cookie non riuscita"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Apertura del file di configurazione \"%s\" non riuscita: %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nessun cookie caricato. Tentativo di connettersi senza."
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\""
@@ -1377,91 +1405,96 @@ msgstr "Stream spostato sul device %s (%u, %ssospeso).%s \n"
#: ../src/utils/pacat.c:238
msgid "not "
-msgstr "non"
+msgstr "non "
+
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Underrun dello stream.%s\n"
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Connessione stabilita.%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() non riuscita: %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() non riuscita: %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() non riuscita: %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Connessione non riuscita: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "Ricevuto EOF.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read() non riuscita: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write() non riuscita: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Ricevuto il segnale, uscita.\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, 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:470
+#: ../src/utils/pacat.c:478
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
-msgstr "Tempo: %0.3f sec; Latenza: %0.0f millisec. \r"
+msgstr "Tempo: %0.3f sec; Latenza: %0.0f microsec. \\r"
-#: ../src/utils/pacat.c:490
+#: ../src/utils/pacat.c:498
#, 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:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1521,7 +1554,7 @@ msgstr ""
" -r, --record Crea una connessione per registrare\n"
" -p, --playback Crea una connessione per riprodurre\n"
"\n"
-" -v, --verbose Abilita la modalità prolisse\n"
+" -v, --verbose Abilita la modalità prolissa\n"
"\n"
" -s, --server=SERVER Il nome del server a cui "
"connettersi\n"
@@ -1563,7 +1596,7 @@ msgstr ""
" dei canali dal sink a cui lo "
"stream \n"
" sta per essere connesso.\n"
-" --no-remix Non eseguire l'upmix o il downmix \n"
+" --no-remix Non esegue l'upmix o il downmix \n"
" dei canali.\n"
" --no-remap Mappa i canali per indice invece "
"che \n"
@@ -1574,7 +1607,7 @@ msgstr ""
"per\n"
" richiesta specificato in byte.\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1585,89 +1618,89 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mappa di canali \"%s\" non valida\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Specifica di latenza \"%s\" non valida\n"
# esecuzione???
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Specifica di tempo di elaborazione \"%s\" non valida\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Specifica di campionamento non valida\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
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:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "registrazione"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "riproduzione"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Troppi argomenti.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() non riuscita.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() non riuscita.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() non riuscita.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() non riuscita: %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() non riuscita.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -1768,7 +1801,7 @@ msgid "Failed to get server information: %s\n"
msgstr "Recupero delle informazioni del server non riuscito: %s\n"
#: ../src/utils/pactl.c:137
-#, fuzzy, c-format
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1785,6 +1818,7 @@ msgstr ""
"Nome server: %s\n"
"Versione server: %s\n"
"Specifica campionamento predefinita: %s\n"
+"Mappa canale predefinita: %s\n"
"Sink predefinito: %s\n"
"Sorgente predefinita: %s\n"
"Cookie: %08x\n"
@@ -1831,7 +1865,7 @@ msgstr ""
"\t bilanciamento %0.2f\n"
"\tVolume base: %s%s%s\n"
"\tMonitor della sorgente: %s\n"
-"\tLatenza: %0.0f millisec, configurata %0.0f millisec\n"
+"\tLatenza: %0.0f microsec, configurata %0.0f microsec\n"
"\tFlag: %s%s%s%s%s%s\n"
"\tProprietà:\n"
"\t\t%s\n"
@@ -1875,7 +1909,7 @@ msgstr ""
"\t bilanciamento %0.2f\n"
"\tVolume base: %s%s%s\n"
"\tMonitor del sink: %s\n"
-"\tLatenza: %0.0f millisec, configurata %0.0f millisec\n"
+"\tLatenza: %0.0f microsec, configurata %0.0f microsec\n"
"\tFlag: %s%s%s%s%s%s\n"
"\tProprietà:\n"
"\t\t%s\n"
@@ -2003,8 +2037,8 @@ msgstr ""
"\tVolume: %s\n"
"\t %s\n"
"\t bilanciamento %0.2f\n"
-"\tLatenza del buffer: %0.0f millisec\n"
-"\tLatenza del sink: %0.0f millisec\n"
+"\tLatenza del buffer: %0.0f microsec\n"
+"\tLatenza del sink: %0.0f microsec\n"
"\tMetodo di ricampionamento: %s\n"
"\tProprietà:\n"
"\t\t%s\n"
@@ -2042,8 +2076,8 @@ msgstr ""
"\tSorgente: %u\n"
"\tSpecifica di campionamento: %s\n"
"\tMappa dei canali: %s\n"
-"\tLatenza del buffer: %0.0f millisec\n"
-"\tLatenza della sorgente: %0.0f millisec\n"
+"\tLatenza del buffer: %0.0f microsec\n"
+"\tLatenza della sorgente: %0.0f microsec\n"
"\tMetodo di ricampionamento: %s\n"
"\tProprietà:\n"
"\t\t%s\n"
@@ -2279,12 +2313,12 @@ msgstr "Analisi dei dati cookie non riuscita\n"
#: ../src/utils/pax11publish.c:137
#, c-format
msgid "Failed to save cookie data\n"
-msgstr "Salvataggio dei dati cookie non riuscita\n"
+msgstr "Salvataggio dei dati cookie non riuscito\n"
#: ../src/utils/pax11publish.c:152
#, c-format
msgid "Failed to load client configuration file.\n"
-msgstr "Caricamento dei file di configurazione del client non riuscita.\n"
+msgstr "Caricamento del file di configurazione del client non riuscito.\n"
#: ../src/utils/pax11publish.c:157
#, c-format
@@ -2430,22 +2464,57 @@ msgstr "In uso la specifica di campionamento \"%s\"\n"
msgid "Cannot access autospawn lock."
msgstr "Impossibile accedere al lock di autospawn."
-#~ msgid ""
-#~ "Called SUID root and real-time and/or high-priority scheduling was "
-#~ "requested in the configuration. However, we lack the necessary "
-#~ "privileges:\n"
-#~ "We are not in group '"
-#~ msgstr ""
-#~ "Lo scheduling invocato come root SUID e real-time o high-priority è stato "
-#~ "richiesto nella configurazione. Purtroppo mancano i privilegi necessari:\n"
-#~ "Non si è parte del gruppo '"
-
-# FIXME missing expects???
-#~ msgid "--log-time boolean argument"
-#~ msgstr "--log-time richiede un argomento booleano"
-
-#~ msgid "Default sink name (%s) does not exist in name register."
-#~ msgstr "Il nome del sink predefinito (%s) non esiste nel registro dei nomi."
-
-#~ msgid "pa_stream_drop() failed: %s\n"
-#~ msgstr "pa_stream_drop() non riuscita: %s\n"
+#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+#, fuzzy
+msgid "PulseAudio Sound Server"
+msgstr "Sistema sonoro PulseAudio"
diff --git a/po/kn.po b/po/kn.po
new file mode 100644
index 0000000..b1793a3
--- /dev/null
+++ b/po/kn.po
@@ -0,0 +1,2451 @@
+# translation of pulseaudio.master-tx.pulseaudio.po to Kannada
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Shankar Prasad <svenkate@redhat.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-07 11:13+0530\n"
+"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
+"Language-Team: Kannada <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "ಅನಲಾಗ್ ಮೊನೊ"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "ಅನಲಾಗ್ ಸ್ಟೀರಿಯೋ"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "ಡಿಜಿಟಲ್ ಸ್ಟೀರಿಯೋ (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "ಡಿಜಿಟಲ್ ಸ್ಟೀರಿಯೋ (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "ಅನಲಾಗ್ 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "ಡಿಜಿಟಲ್ ಸರೌಂಡ್ 4.0 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "ಅನಲಾಗ್ ಸರೌಂಡ್ 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "ಅನಲಾಗ್ ಸರೌಂಡ್ 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "ಅನಲಾಗ್ ಸರೌಂಡ್ 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "ಡಿಜಿಟಲ್ ಸರೌಂಡ್ 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "ಡಿಜಿಟಲ್ ಸರೌಂಡ್ 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() ದಿಂದ ಅತ್ಯಂತ ದೊಡ್ಡದಾದ ಮೌಲ್ಯವು ಮರಳಿದೆ: %lu ಬೈಟ್‌ಗಳು (%lu ms).\n"
+"ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA "
+"ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() ದಿಂದ ಅತ್ಯಂತ ದೊಡ್ಡದಾದ ಮೌಲ್ಯವು ಮರಳಿದೆ: %li ಬೈಟ್‌ಗಳು (%s%lu ms).\n"
+"ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA "
+"ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() ದಿಂದ ಅತ್ಯಂತ ದೊಡ್ಡದಾದ ಮೌಲ್ಯವು ಮರಳಿದೆ: %lu ಬೈಟ್‌ಗಳು (%lu ms).\n"
+"ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA "
+"ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "ಆಂತರಿಕ ಆಡಿಯೊ"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "ಮಾಡೆಮ್:"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "ಮೂಲ lt_dlopen loader ಅನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "ಹೊಸ dl ಲೋಡರ್ ಅನ್ನು ನಿಯೋಜಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-ಲೋಡರ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿಲ್ಲ."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "ವ್ಯವಸ್ಥೆಯ ಬಸ್‌ಗೆ ಸಂಪರ್ಕಜೋಡಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID ಇಂದ ಕಾಲರ್ ಅನ್ನು ಪಡೆಯಲಾಗಿಲ್ಲ: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "ಕಾಲರ್ ವಸ್ತುವಿನಲ್ಲಿ UID ಅನ್ನು ಅಣಿಗೊಳಿಸಲಾಗಲಿಲ್ಲ."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK ಅಧಿವೇಶನವನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "ಅಧಿವೇಶನದ ವಸ್ತುವಿನಲ್ಲಿ UID ಅನ್ನು ಅಣಿಗೊಳಿಸಲಾಗಲಿಲ್ಲ."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitAction ಅನ್ನು ನಿಯೋಜಿಸಲಾಗಿಲ್ಲ."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id ಅನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext ಅನ್ನು ನಿಯೋಜಿಸಲಾಗಿಲ್ಲ."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContext ಅನ್ನು ಆರಂಭಿಸಲಾಗಿಲ್ಲ: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "ಕಾಲರ್ ಅಧೀಕೃತವಾಗಿದುದೆ ಎಂದು ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "auth ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit '%s' ನೊಂದಿಗೆ ಪ್ರತ್ಯುತ್ತರಿಸಿದೆ"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "%s ನಿಂದ ಸಂಕೇತವು ದೊರೆತಿದೆ."
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "ನಿರ್ಗಮಿಸುತ್ತಿದೆ."
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "ಬಳಕೆದಾರ '%s' ಅನ್ನು ಪತ್ತೆ ಮಾಡಲು ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "ಗುಂಪು '%s' ಅನ್ನು ಪತ್ತೆ ಮಾಡಲು ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "ಬಳಕೆದಾರ '%s' ರ GID ಹಾಗು ಗುಂಪು '%s' ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ."
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' ಅನ್ನು ರಚಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "ಗುಂಪಿನ ಪಟ್ಟಿಯನ್ನು ಬದಲಾಯಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID ಅನ್ನು ಬದಲಾಯಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID ಅನ್ನು ಬದಲಾಯಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "ರೂಟ್ ಸವಲತ್ತುಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬಿಡಲಾಗಿದೆ."
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "ವ್ಯವಸ್ಥೆಯಾದ್ಯಂತದ ಕ್ರಮಕ್ಕೆ ಈ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನಲ್ಲಿ ಬೆಂಬಲವಿಲ್ಲ."
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "ಆಜ್ಞಾ ಸಾಲನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr ""
+"ನಾವು '%s' ಗುಂಪಿನಲ್ಲಿದ್ದೇವೆ, ಹಾಗು ಹೆಚ್ಚು-ಆದ್ಯತೆ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತೇವೆ."
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "ನಾವು '%s' ಗುಂಪಿನಲ್ಲಿದ್ದೇವೆ, ಹಾಗು ರಿಯಲ್-ಟೈಮ್ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತೇವೆ."
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "ಹೆಚ್ಚು-ಆದ್ಯತೆ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ಅನುಮತಿಸುತ್ತದೆ."
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "ಹೆಚ್ಚು-ಆದ್ಯತೆ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ನಿರಾಕರಿಸುತ್ತದೆ."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "ರಿಯಲ್-ಟೈಮ್ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ಅನುಮತಿಸುತ್ತದೆ."
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "ರಿಯಲ್-ಟೈಮ್ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ನಿರಾಕರಿಸುತ್ತದೆ."
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"SUID ರೂಟ್ ಅನ್ನು ಕರೆಯಲಾಗಿದೆ ಹಾಗು ಸಂರಚನೆಯಲ್ಲಿ ರಿಯಲ್-ಟೈಲ್ ಹಾಗು/ಅಥವ ಹೆಚ್ಚು-ಆದ್ಯತೆ "
+"ಶೆಡ್ಯೂಲಿಂಗ್‌ಗೆ ಮನವಿ ಸಲ್ಲಿಸಲಾಗಿದೆ. ಆದರೆ, ಅಗತ್ಯವಿರುವ ಸವಲತ್ತುಗಳು ನಮ್ಮಲ್ಲಿಲ್ಲ:\n"
+"ನಾವು '%s' ಗುಂಪಿನಲ್ಲಿಲ್ಲ,ಮನವಿ ಸಲ್ಲಿಸಲಾದ ಸವಲತ್ತುಗಳನ್ನು ಒದಗಿಸಲು PolicyKit "
+"ನಿರಾಕರಿಸಿದೆ ಹಾಗು RLIMIT_NICE/RLIMIT_RTPRIO ಸಂಪನ್ಮೂಲದ ಮಿತಿಯನ್ನು ಹೆಚ್ಚಿಸಲು ನಮ್ಮಿಂದ "
+"ಸಾಧ್ಯವಿಲ್ಲ.\n"
+"ರಿಯಲ್-ಟೈಲ್ ಹಾಗು/ಅಥವ ಹೆಚ್ಚು-ಆದ್ಯತೆ ಶೆಡ್ಯೂಲಿಂಗ್‌ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲು ದಯವಿಟ್ಟು ಸೂಕ್ತವಾದ "
+"PolicyKit ಸವಲತ್ತುಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ, ಅಥವ '%s' ನ ಸದಸ್ಯರಾಗಿ, ಅಥವ ಈ ಬಳಕೆದಾರನಿಗಾಗಿ "
+"RLIMIT_NICE/RLIMIT_RTPRIO ಸಂಪನ್ಮೂಲ ಮಿತಿಯನ್ನು ಹೆಚ್ಚಿಸಿ."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"ಸಂರಚನೆಯಲ್ಲಿ ಹೆಚ್ಚು-ಆದ್ಯತೆಯ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಪಾಲಿಸಿಯಿಂದ ಅನುಮತಿ "
+"ಇಲ್ಲ."
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "RLIMIT_RTPRIO ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಹೆಚ್ಚಿಸಲಾಗಿದೆ"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE ಅನ್ನು ಬಿಡಲಾಗುತ್ತಿದೆ"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"ಸಂರಚನೆಯಲ್ಲಿ ರಿಯಲ್-ಟೈಮ್ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಪಾಲಿಸಿಯಿಂದ ಅನುಮತಿ ಇಲ್ಲ."
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "ಡೀಮನ್ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "ಡೀಮನ್ PID %u ಯಾಗಿ ಚಲಾಯಿಗೊಳ್ಳುತ್ತಿದೆ"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "ಡೀಮನ್ ಅನ್ನು ಕೊಲ್ಲಲು ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"ಈ ಪ್ರೋಗ್ರಾಮನ್ನು ರೂಟ್‌ ಆಗಿ ಚಲಾಯಿಸುವ ಉದ್ಧೇಶವನ್ನು ಹೊಂದಿಲ್ಲ (--system ಅನ್ನು ಸೂಚಿಸದೆ "
+"ಇದ್ದಲ್ಲಿ ಮಾತ್ರ)."
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "ನಿರ್ವಾಹಕ ಸವಲತ್ತುಗಳ ಅಗತ್ಯವಿದೆ."
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "ವ್ಯವಸ್ಥೆಯ ಸನ್ನಿವೇಶದಿಂದ --start ಬೆಂಬಲಿತವಾಗಿಲ್ಲ."
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr ""
+"ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ, ಆದರೆ --disallow-exit ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+"ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ, ಆದರೆ --disallow-module-loading ಅನ್ನು "
+"ಹೊಂದಿಸಲಾಗಿಲ್ಲ!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr ""
+"ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದ್ದು, SHM ಕ್ರಮವನ್ನು ಒತ್ತಾಯಪೂರ್ವಕವಾಗಿ "
+"ಅಶಕ್ತಗೊಳಿಸುತ್ತಿದೆ!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+"ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದ್ದು, ನಿರ್ಗಮಿಸುವ ಜಡ ಸಮಯವನ್ನು ಒತ್ತಾಯಪೂರ್ವಕವಾಗಿ "
+"ಅಶಕ್ತಗೊಳಿಸುತ್ತಿದೆ!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdio ಅನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "ಪೈಪ್‌ ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "ಡೀಮನ್ ಆರಂಭಗೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "ಡೀಮನ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಆರಂಭಿಸಲಾಗಿದೆ."
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "ಇದು PulseAudio %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "ಕಂಪೈಲ್ ಮಾಡುವ ಅತಿಥೇಯ: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "ಕಂಪೈಲ್ ಮಾಡುವ CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "ಅತಿಥೇಯದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPUಗಳು ಕಂಡುಬಂದಿವೆ."
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "ಪುಟದ ಗಾತ್ರವು %lu ಬೈಟ್‌ಗಳಾಗಿವೆ"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ: ಹೌದು"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ: ಇಲ್ಲ"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿಸಲಾಗುತ್ತಿದೆ: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "ಪ್ರಶಸ್ತವಾದ ನಿರ್ಮಾಣ: ಹೌದು"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "ಪ್ರಶಸ್ತವಾದ ನಿರ್ಮಾಣ: ಇಲ್ಲ"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG ಅನ್ನು ಸೂಚಿಸಲಾಗಿದೆ, ಎಲ್ಲಾ ಪ್ರತಿಪಾದನೆಗಳನ್ನೂ ಅಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ."
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+"FASTPATH ಅನ್ನು ಸೂಚಿಸಲಾಗಿದೆ, ಕೇವಲ ವೇಗ ಮಾರ್ಗದ ಪ್ರತಿಪಾದನೆಗಳನ್ನೂ ಅಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ."
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "ಎಲ್ಲಾ ಪ್ರತಿಪಾದನೆಗಳನ್ನೂ ಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ."
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "ಮೆಶೀನ್ ID ಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "ಮೆಶೀನ್ ID ಯು %s ಆಗಿದೆ."
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "ಮೆಶೀನ್ ID ಯು %s ಆಗಿದೆ."
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "ಚಲಾವಣಾಸಮಯ(ರನ್‌ಟೈಮ್) ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "ಸ್ಥಿತಿ ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು."
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿಸಲಾಗುತ್ತಿದೆ: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "ತಾಜಾ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಲಭ್ಯವಿದೆ! Bon appetit!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"ಮಹಾಶಯರೆ, ನಿಮ್ಮ ಕರ್ನಲ್ ಕೊಳೆತುಹೋಗಿದೆ! ಅತ್ಯುತ್ತಮ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾದ "
+"ಲಿನಕ್ಸನ್ನು ಬಳಸುವಂತೆ ಅಡುಗೆಯವರು ಸಲಹೆ ಮಾಡುತ್ತಿದ್ದಾರೆ!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "ಡೀಮನ್ ಅನ್ನು ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "ಲೋಡ್ ಮಾಡಲಾದ ಯಾವುದೆ ಡೀಮನ್ ಇಲ್ಲದೆ ಆರಂಭಗೊಂಡಿದೆ, ಕೆಲಸ ಮಾಡಲು ನಿರಾಕರಿಸಿದೆ."
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "ಡೀಮನ್ ಆರಂಭಗೊಳಿಕೆ ಪೂರ್ಣಗೊಂಡಿದೆ."
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "ಡೀಮನ್ ಸ್ಥಗಿತಗೊಳಿಕೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ."
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "ಡೀಮನ್ ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸಲಾಗಿದೆ."
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [ಆಯ್ಕೆಗಳು]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help ಈ ನೆರವನ್ನು ತೋರಿಸು\n"
+" --version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು\n"
+" --dump-conf ಪೂರ್ವನಿಯೋಜಿತ ಸಂರಚನೆಯನ್ನು ಬಿಸುಡು\n"
+" --dump-modules ಲಭ್ಯವಿರುವ ಘಟಕಗಳನ್ನು ಬಿಸುಡು\n"
+" --dump-resample-methods ಲಭ್ಯವಿರುವ ಮರುನಮೂನೆ ವಿಧಾನಗಳನ್ನು ಬಿಸುಡು\n"
+" --cleanup-shm ಇಕ್ಕಟ್ಟಿನಲ್ಲಿ ಹಂಚಲಾದ ಮೆಮೊರಿ ಖಂಡಗಳನ್ನು "
+"ಸ್ವಚ್ಛಗೊಳಿಸು\n"
+" --start ಡೀಮನ್ ಚಾಲನೆಯಲ್ಲಿಲ್ಲದೆ ಇದ್ದಲ್ಲಿ ಆರಂಭಿಸು\n"
+" -k --kill ಚಾಲನೆಯಲ್ಲಿರು ಡೀಮನ್ ಅನ್ನು ಕೊಲ್ಲು\n"
+" --check ಚಾಲನೆಯಲ್ಲಿರುವ ಡೀಮನ್‌ಗಾಗಿ ಪರಿಶೀಲಿಸು "
+"(ನಿರ್ಗಮನಾ ಸಂಜ್ಞೆಯನ್ನು ಮಾತ್ರ ಮರಳಿಸುತ್ತದೆ)\n"
+"\n"
+"ಆಯ್ಕೆಗಳು:\n"
+" --system[=BOOL] ವ್ಯವಸ್ಥೆಯಾದ್ಯಂತದ ಸನ್ನಿವೇಶವಾಗಿ ಚಲಾಯಿಸು\n"
+" -D, --daemonize[=BOOL] ಆರಂಭಗೊಂಡ ನಂತರ ಡೀಮನ್ ಆಗಿ ಮಾಡು\n"
+" --fail[=BOOL] ಆರಂಭಗೊಳಿಕೆಯು ವಿಫಲಗೊಂಡಾಗ ನಿರ್ಗಮಿಸು\n"
+" --high-priority[=BOOL] ಹೆಚ್ಚಿನ ನೈಸ್‌ ಮಟ್ಟವನ್ನು ಹೊಂದಿಸಲು "
+"ಪ್ರಯತ್ನಿಸು\n"
+" (SUID ಅಥವ ಓರೆಯಾದ RLIMIT_NICE ಇದ್ದಾಗ, "
+"ಕೇವಲ\n"
+" ರೂಟ್ ಆಗಿ ಮಾತ್ರವೆ ಲಭ್ಯವಿರುತ್ತದೆ)\n"
+" --realtime[=BOOL] ರಿಯಲ್ ಟೈಮ್ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು "
+"ಶಕ್ತಗೊಳಿಸಲಾಗುತ್ತಿದೆ\n"
+" (SUID ಅಥವ ಓರೆಯಾದ RLIMIT_RTPRIO "
+"ಇದ್ದಾಗ, ಕೇವಲ\n"
+" ರೂಟ್ ಆಗಿ ಮಾತ್ರವೆ ಲಭ್ಯವಿರುತ್ತದೆ)\n"
+" --disallow-module-loading[=BOOL] ಆರಂಭಗೊಂಡ ನಂತರ ಬಳಕೆದಾರರು ಮನವಿ "
+"ಸಲ್ಲಿಸಿದಂತಹ ಘಟಕವನ್ನು\n"
+" ಲೋಡ್‌/ಅನ್‌ಲೋಡ್ ಮಾಡುವುದನ್ನು ಅನುಮತಿಸದಿರು\n"
+" --disallow-exit[=BOOL] ಬಳಕೆದಾರರು ಮನವಿ ಸಲ್ಲಿಸಿದ ನಿರ್ಗಮಿಸು "
+"ಮನವಿಯನ್ನು ಅನುಮತಿಸದಿರು\n"
+" --exit-idle-time=SECS ಡೀಮನ್ ಜಡಗೊಂಡು ಇಷ್ಟು ಸಮಯ ಕಳೆದಿದ್ದಲ್ಲಿ \n"
+" ಅದನ್ನು ಅಂತ್ಯಗೊಳಿಸು\n"
+" --module-idle-time=SECS ತಾನಾಗಿಯೆ ಲೋಡ್‌ ಆದ ಘಟಕಗಳು ಜಡಗೊಂಡು ಇಷ್ಟು "
+"ಸಮಯ\n"
+" ಕಳೆದೆದಿದ್ದಲ್ಲಿ ಅನ್‌ಲೋಡ್ ಮಾಡು\n"
+" --scache-idle-time=SECS ತಾನಾಗಿಯೆ ಲೋಡ್‌ ಆದ ನಮೂನೆಗಳು ಜಡಗೊಂಡು "
+"ಇಷ್ಟು ಸಮಯ\n"
+" ಕಳೆದೆದಿದ್ದಲ್ಲಿ ಅನ್‌ಲೋಡ್ ಮಾಡು\n"
+" --log-level[=LEVEL] ವರ್ಬೋಸ್ ಮಟ್ಟವನ್ನು ಹೆಚ್ಚಿಸು ಅಥವ ಹೊಂದಿಸು\n"
+" -v ವರ್ಬೋಸ್ ಮಟ್ಟವನ್ನು ಹೆಚ್ಚಿಸು\n"
+" --log-target={auto,syslog,stderr} ದಾಖಲೆಯ ಗುರಿಯನ್ನು ಸೂಚಿಸು\n"
+" --log-meta[=BOOL] ದಾಖಲೆಯ ಸಂದೇಶಗಳಲ್ಲಿ ಸಂಜ್ಞೆಯು ಇರುವ "
+"ಸ್ಥಳವನ್ನು ಸೇರಿಸು\n"
+" --log-time[=BOOL] ದಾಖಲೆಯ ಸಂದೇಶಗಳಲ್ಲಿ ಸಮಯದ ಮುದ್ರೆಯನ್ನು "
+"ಸೇರಿಸು\n"
+" --log-backtrace=FRAMES ದಾಖಲೆಯ ಸಂದೇಶಗಳಲ್ಲಿ ಹಿಂದಕ್ಕೆ "
+"ಹುಡುಕುವುದನ್ನು ಸೇರಿಸು\n"
+" -p, --dl-search-path=PATH ಡೈನಮಿಕ್ ಹಂಚಲಾದ ವಸ್ತುಗಳಿಗಾಗಿ (ಪ್ಲಗ್‌ಇನ್‌ಗಳು)"
+"ಹುಡುಕು\n"
+" ಮಾರ್ಗವನ್ನು ಸೂಚಿಸು\n"
+" --resample-method=METHOD ಸೂಚಿಸಲಾದ ಮರು-ನಮೂನಾ ವಿಧಾನವನ್ನು ಬಳಸಿ\n"
+" (ಸಾಧ್ಯವಿರುವ ಮೌಲ್ಯಗಳಿಗಾಗಿ --dump-"
+"resample-methods ಅನ್ನು\n"
+" ನೋಡಿ)\n"
+" --use-pid-file[=BOOL] ಒಂದು PID ಕಡತವನ್ನು ರಚಿಸು\n"
+" --no-cpu-limit[=BOOL] CPU ಲೋಡ್ ಅನ್ನು ಮಿತಿಗೊಳಿಸುವುದನ್ನು "
+"ಬೆಂಬಲಿಸುವ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನ \n"
+" ಮೇಲೆ ಅದನ್ನು ಅನುಸ್ಥಾಪಿಸಬೇಡ..\n"
+" --disable-shm[=BOOL] ಹಂಚಲಾದ ಮೆಮೊರಿ ಅಶಕ್ತಗೊಳಿಸು.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" ಸೂಚಿಸಲಾದ ಪ್ಲಗ್‌ಇನ್ ಘಟಕವನ್ನು ಸೂಚಿತ\n"
+" ಆರ್ಗುಮೆಂಟುಗಳೊಂದಿಗೆ ಲೋಡ್ ಮಾಡು\n"
+" -F, --file=FILENAME ಸೂಚಿಸಲಾದ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಚಲಾಯಿಸು\n"
+" -C ಆರಂಭಗೊಂಡ ನಂತರ TTY ಅನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ "
+"ಒಂದು \n"
+" ಆಜ್ಞಾ ಸಾಲನ್ನು ತೆರೆ\n"
+"\n"
+" -n ಪೂರ್ವನಿಯೋಜಿತ ಸ್ಕ್ರಿಪ್ಟಿನ ಕಡತವನ್ನು ಲೋಡ್ "
+"ಮಾಡಬೇಡ\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../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 ದಾಖಲೆ ಮಟ್ಟದ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ (0..4 ವ್ಯಾಪ್ತಿಯಲ್ಲಿನ ಅಂಕೆಯನ್ನು "
+"ಅಥವ debug, info, notice, warn, error ಅನ್ನು)."
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಗುರಿ: 'syslog', 'stderr' ಅಥವ 'auto' ಅನ್ನು ಬಳಸಿ."
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'."
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm ಬೂಲಿಯನ್ ಆರ್ಗುಮೆಂಟನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "ಹೆಸರು: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "ಯಾವುದೆ ಘಟಕ ಮಾಹಿತಿಯು ಲಭ್ಯವಿಲ್ಲ\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "ಆವೃತ್ತಿ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "ವಿವರಣೆ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "ಕತೃ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "ಬಳಕೆ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "ಒಮ್ಮೆ ಲೋಡ್ ಮಾಡು: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "ಮಾರ್ಗ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಗುರಿ '%s'."
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಮಟ್ಟ '%s'."
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'."
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit ಗೆ ಈ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನಲ್ಲಿ ಬೆಂಬಲವಿಲ್ಲ."
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ರಚನೆ '%s'."
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ದರ '%s'."
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ಚಾನಲ್‌ಗಳು '%s'."
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ತವಾದ ಫ್ರಾಗ್ಮೆಂಟುಗಳ ಸಂಖ್ಯೆ '%s'."
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಫ್ರಾಗ್ಮೆಂಟ್ ಗಾತ್ರ '%s'."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನೈಸ್‌ ಹಂತ '%s'."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "ಸಂರಚನಾ ಕಡತವನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ: %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."
+msgstr ""
+"ಸೂಚಿಸಲಾದ ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್ ನಕ್ಷೆಯು ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆಗಳಿಗಿಂತ ವಿಭಿನ್ನವಾದ "
+"ಮಾರ್ಗಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿದೆ."
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### ಸಂರಚನಾ ಕಡತದಿಂದ ಓದು: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "ರೂಟ್‌ ಸವಲತ್ತುಗಳನ್ನು ಬಿಡಲಾಗುತ್ತಿದೆ."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "CAP_SYS_NICE ಗಾಗಿನ ಯಶಸ್ವಿ ನಿಯಮಿತ ಸಾಮರ್ಥ್ಯಗಳು."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio ಧ್ವನಿ ವ್ಯವಸ್ಥೆ"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio ಧ್ವನಿ ವ್ಯವಸ್ಥೆಯನ್ನು ಆರಂಭಿಸಿ"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "PulseAudio ಡೀಮನ್‌ಗಾಗಿ ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯ ಶೆಡ್ಯೂಲಿಂಗ್ (ಋಣಾತ್ಮಕ ಯೂನಿಕ್ಸ್‌ ನೈಸ್ ಹಂತ)"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio ಡೀಮನ್‌ಗಾಗಿ ರಿಯಲ್-ಟೈಮ್ ಶೆಡ್ಯೂಲಿಂಗ್"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"PulseAudio ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳದಂತೆ ವ್ಯವಸ್ಥೆಯ ಪಾಲಿಸಿಯು "
+"ತಡೆಯುತ್ತದೆ."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+"PulseAudio ರಿಯಲ್-ಟೈಮ್‌ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳದಂತೆ ವ್ಯವಸ್ಥೆಯ ಪಾಲಿಸಿಯು ತಡೆಯುತ್ತದೆ."
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "ಮೊನೊ"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "ಎದುರಿನ ಮಧ್ಯಭಾಗ"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "ಎದುರಿನ ಎಡಭಾಗ"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "ಎದುರಿನ ಬಲಭಾಗ"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "ಹಿಂಬದಿಯ ಮಧ್ಯಭಾಗ"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "ಹಿಂಬದಿಯ ಎಡಭಾಗ"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "ಹಿಂಬದಿಯ ಬಲಭಾಗ"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "ಕೆಳಮಟ್ಟದ ಫ್ರೀಕ್ವೆನ್ಸಿ ಉತ್ಪಾದಕ"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "ಮಧ್ಯದ ಎಡಭಾಗದ ಎದುರುಭಾಗ"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "ಮಧ್ಯದ ಬಲಭಾಗದ ಎದುರುಭಾಗ"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "ಬದಿಯ ಎಡಭಾಗ"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "ಬದಿಯ ಬಲಭಾಗ"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "ಸಹಾಯಕ 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "ಸಹಾಯಕ 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "ಸಹಾಯಕ 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "ಸಹಾಯಕ 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "ಸಹಾಯಕ 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "ಸಹಾಯಕ 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "ಸಹಾಯಕ 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "ಸಹಾಯಕ 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "ಸಹಾಯಕ 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "ಸಹಾಯಕ 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "ಸಹಾಯಕ 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "ಸಹಾಯಕ 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "ಸಹಾಯಕ 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "ಸಹಾಯಕ 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "ಸಹಾಯಕ 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "ಸಹಾಯಕ 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "ಸಹಾಯಕ 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "ಸಹಾಯಕ 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "ಸಹಾಯಕ 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "ಸಹಾಯಕ 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "ಸಹಾಯಕ 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "ಸಹಾಯಕ 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "ಸಹಾಯಕ 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "ಸಹಾಯಕ 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "ಸಹಾಯಕ 24"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "ಸಹಾಯಕ 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "ಸಹಾಯಕ 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "ಸಹಾಯಕ 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "ಸಹಾಯಕ 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "ಸಹಾಯಕ 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "ಸಹಾಯಕ 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "ಸಹಾಯಕ 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "ಮೇಲಿನ ಮಧ್ಯಭಾಗ"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "ಮೇಲಿನ ಎದುರಿನ ಮಧ್ಯಭಾಗ"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "ಮೇಲಿನ ಎದುರಿನ ಎಡಭಾಗ"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "ಮೇಲಿನ ಎದುರಿನ ಬಲಭಾಗ"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಮಧ್ಯಭಾಗ"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಎಡಭಾಗ"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(ಅಮಾನ್ಯ)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "ಸ್ಟೀರಿಯೋ"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "ಸರೌಂಡ್‌ 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "ಸರೌಂಡ್‌ 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "ಸರೌಂಡ್‌ 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "ಸರೌಂಡ್‌ 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "ಸರೌಂಡ್‌ 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "ಸರಿ"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "ನಿಲುಕಣೆಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "ಅಜ್ಞಾತ ಆಜ್ಞೆ"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "ಅಮಾನ್ಯವಾದ ಆರ್ಗ್ಯುಮೆಂಟ್"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "ನಮೂದು ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "ಅಂತಹ ಯಾವುದೆ ನಮೂದು ಇಲ್ಲ"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "ಸಂಪರ್ಕವನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "ಪ್ರೊಟೊಕಾಲ್ ದೋಷ"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "ಕಾಲಾವಕಾಶ ಮುಗಿದಿದೆ"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "ಯಾವುದೆ ದೃಢೀಕರಣ ಕೀಲಿ ಇಲ್ಲ"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "ಆಂತರಿಕ ದೋಷ"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "ಸಂಪರ್ಕವನ್ನು ಅಂತ್ಯಗೊಳಿಸಲಾಗಿದೆ"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "ನಮೂದನ್ನು ಕೊಲ್ಲಲಾಗಿದೆ"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "ಅಮಾನ್ಯವಾದ ಪರಿಚಾರಕ"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "ಘಟಕವನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "ಸರಿಯಲ್ಲದ ಸ್ಥಿತಿ"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "ದತ್ತಾಂಶ ಇಲ್ಲ"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "ಸಹವರ್ತನೀಯವಲ್ಲದ ಪ್ರೊಟೋಕಾಲ್ ಆವೃತ್ತಿ"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "ಬಹಳ ದೊಡ್ಡದಾಗಿದೆ"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "ಬೆಂಬಲವಿಲ್ಲ"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "ಅಜ್ಞಾತ ದೋಷ ಸಂಜ್ಞೆ"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "ಅಂತಹ ಯಾವುದೆ ವಿಸ್ತರಣೆ ಇಲ್ಲ"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "ಪರಿಪೂರ್ಣ ಕ್ರಿಯಾಶೀಲತೆ"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "ಅನ್ವಯಿಸುವಿಕೆಯು ಕಾಣಿಸುತ್ತಿಲ್ಲ"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "ಕ್ಲೈಂಟ್ ಅನ್ನು ಫೋರ್ಕ್ ಮಾಡಲಾಗಿದೆ"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() ವಿಫಲಗೊಂಡಿದೆ"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "ಕುಕಿ ದತ್ತಾಂಶವನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "ಸಂರಚನಾ ಕಡತ '%s' ಅನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr ""
+"ಯಾವುದೆ ಕುಕಿಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ. ಕುಕಿ ಇಲ್ಲದೆ ಸಂಪರ್ಕಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "ಫೋರ್ಕ್(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "ಅಜ್ಞಾತ ವಿಸ್ತರಣೆ '%s' ಇಂದ ಸಂದೇಶವನ್ನು ಪಡೆದುಕೊಳ್ಳಲಾಗಿದೆ"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() failed: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() failed: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "ಸ್ಟ್ರೀಮನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ.\n"
+
+#: ../src/utils/pacat.c:172
+#, 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
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "ಬಫರ್ ಮೆಟ್ರಿಕ್‌ಗಳು: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "ನಮೂನೆಯ ವಿವರ '%s' ಅನ್ನು ಬಳಸಿಕೊಂಡು, ಚಾನಲ್‌ ನಕ್ಷೆ '%s'.\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "ಸಾಧನ %s ಕ್ಕೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲಾಗಿದೆ (%u, %ssuspended).\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "ಸ್ಟ್ರೀಮ್ ದೋಷ: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "ಸ್ಟ್ರೀಮ್ ಸಾಧನವನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ.%s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "ಸ್ಟ್ರೀಮ್ ಸಾಧನವನ್ನು ಮರಳಿ ಆರಂಭಿಸಲಾಗಿದೆ.%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಕಡಿಮೆ ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಹೆಚ್ಚು ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ.%s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "ಸಾಧನ %s ಅನ್ನು ಸ್ಟ್ರೀಮ್‌ ಸ್ಥಳಾಂತರಿಸಲಾಗಿದೆ (%u, %ssuspended).%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "ಇಲ್ಲ "
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "ಸ್ಟ್ರೀಮ್ ಬಫರ್ ಗುಣವಿಶೇಷತೆಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ.%s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "ಸಂಪರ್ಕವನ್ನು ಸಾಧಿಸಲಾಗಿದೆ.%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() failed: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() failed: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "ಓದುವಿಕೆ() ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "ಬರೆಯುವಿಕೆ() ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "ಸಂಕೇತ ದೊರೆತಿದೆ, ನಿರ್ಗಮಿಸುತ್ತಿದೆ.\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "ಅಗೋಚರತೆಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [ಆಯ್ಕೆಗಳು]\n"
+"\n"
+" -h, --help ಈ ನೆರವನ್ನು ತೋರಿಸು\n"
+" --version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು\n"
+"\n"
+" -r, --record ರೆಕಾರ್ಡಿಂಗಿಗಾಗಿ ಒಂದು ಸಂಪರ್ಕವನ್ನು ರಚಿಸು\n"
+" -p, --playback ಪ್ಲೇಬ್ಯಾಕಿಗಾಗಿ ಒಂದು ಸಂಪರ್ಕವನ್ನು ರಚಿಸಿ\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"
+" --rate=SAMPLERATE ನಮೂನೆಯ ದರ Hz ನಲ್ಲಿ (ಪೂರ್ವನಿಯೊಜಿತವು "
+"44100 ಆಗಿರುತ್ತದೆ)\n"
+" --format=SAMPLEFORMAT ನಮೂನೆಯ ಬಗೆ, s16le, s16be, u8, "
+"float32le ಗಳಲ್ಲಿ ಒಂದು,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(ಪೂರ್ವನಿಯೋಜಿತವು s16ne ಆಗಿರುತ್ತದೆ)\n"
+" --channels=CHANNELS ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆ, ಮೋನೊಗಾಗಿ 1, "
+"ಸ್ಟೀರಿಯೋಗಾಗಿ 2 ಆಗಿರುತ್ತದೆ\n"
+" (ಪೂರ್ವನಿಯೊಜಿತವು 2 ಆಗಿರುತ್ತದೆ)\n"
+" --channel-map=CHANNELMAP ಪೂರ್ವನಿಯೋಜಿತದ ಬದಲಿಗೆ ಬಳಸಬೇಕಿರುವ ಚಾನಲ್ "
+"ನಕ್ಷೆ\n"
+" --fix-format ಸ್ಟ್ರೀಮ್ ಸಂಪರ್ಕಿತಗೊಳ್ಳಲಿರುವ ಸಿಂಕಿನಿಂದ "
+"ನಮೂನೆಯ\n"
+" ರಚನೆಯನ್ನು ತೆಗೆದುಕೊ.\n"
+" --fix-rate ಸ್ಟ್ರೀಮ್ ಸಂಪರ್ಕಿತಗೊಳ್ಳಲಿರುವ ಸಿಂಕಿನಿಂದ "
+"ನಮೂನೆಯ\n"
+" ದರವನ್ನು ತೆಗೆದುಕೊ.\n"
+" --fix-channels ಸ್ಟ್ರೀಮ್ ಸಂಪರ್ಕಿತಗೊಳ್ಳಲಿರುವ ಸಿಂಕಿನಿಂದ "
+"ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆ\n"
+" ಹಾಗು ಚಾನಲ್‌ನ ನಕ್ಷೆಯನ್ನು ತೆಗೆದುಕೊ.\n"
+" --no-remix ಚಾನಲ್‌ಗಳನ್ನು upmix ಅಥವ downmix ಮಾಡಬೇಡ.\n"
+" --no-remap ಚಾನಲ್‌ಗಳನ್ನು ಹೆಸರುಗಳ ಬದಲಿಗೆ ಸೂಚಿಯಿಂದ "
+"ಮ್ಯಾಪ್ ಮಾಡು.\n"
+" --latency=BYTES ಸೂಚಿಸಲಾದ ಅಗೋಚರತೆಯನ್ನು ಬೈಟ್‌ಗಳಲ್ಲಿ ಮನವಿ "
+"ಮಾಡು.\n"
+" --process-time=BYTES ಸೂಚಿಸಲಾದ ಪ್ರತಿ ಮನವಿಯ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯವನ್ನು "
+"ಬೈಟ್‌ಗಳಲ್ಲಿ ಮನವಿ ಮಾಡು.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n"
+"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "ಅಮಾನ್ಯವಾದ ಅಗೋಚರತೆ ವಿವರಣೆ '%s'\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "ಅಮಾನ್ಯವಾದ ಪ್ರಕ್ರಿಯೆ ಸಮಯದ ವಿವರಣೆ '%s'\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "ಅಮಾನ್ಯವಾದ ನಮೂನೆ ವಿವರ\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "ಒಂದು %s ಸ್ಟ್ರೀಮ್‌ ಅನ್ನು ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ತೆರೆಯಲಾಗುತ್ತಿದೆ.\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "ರೆಕಾರ್ಡಿಂಗ್"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() failed.\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "pa_context_new() failed.\n"
+
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
+#: ../src/utils/paplay.c:404
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr "pa_context_connect() failed: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() failed.\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "ಫೋರ್ಕ್(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "ಸ್ಥಗಿತಗೊಳಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "ಮರಳಿ ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "ಎಚ್ಚರಿಕೆ: ಧ್ವನಿ ಪರಿಚಾರಕವು ಸ್ಥಳೀಯವಾಗಿಲ್ಲ, ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲಾಗುತ್ತಿಲ್ಲ.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT ದೊರೆತಿದೆ, ನಿರ್ಗಮಿಸುತ್ತಿದೆ.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "ಎಚ್ಚರಿಕೆ: ಉಪ ಪ್ರಕ್ರಿಯೆಯು %u ಸಂಕೇತದೊಂದಿಗೆ ಅಂತ್ಯಗೊಂಡಿದೆ\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [ಆಯ್ಕೆಗಳು] ... \n"
+"\n"
+" -h, --help ಈ ನೆರವನ್ನು ತೋರಿಸು\n"
+" --version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು\n"
+" -s, --server=SERVER ಸಂಪರ್ಕಸಾಧಿಸಬೇಕಿರುವ ಪರಿಚಾರಕದ ಹೆಸರು\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n"
+"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "ಅಂಕಿಅಂಶಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "ಪ್ರಸಕ್ತ ಬಳಕೆಯಲ್ಲಿರುವುದು: %u ಖಂಡಗಳು ಒಟ್ಟು %s ಬೈಟ್‌ಗಳನ್ನು ಹೊಂದಿದೆ.\n"
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr ""
+"ಸಂಪೂರ್ಣ ಜೀವಿತಾವಧಿಯ ಸಮಯದಲ್ಲಿ ನಿಯೋಜಿಸಲಾಗಿದ್ದು: %u ಖಂಡಗಳು ಒಟ್ಟು %s ಬೈಟ್‌ಗಳನ್ನು "
+"ಹೊಂದಿದೆ.\n"
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "ನಮೂನೆಯ ಕ್ಯಾಶೆ ಗಾತ್ರ: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "ಪರಿಚಾರಕದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"ಬಳಕೆದಾರ ಹೆಸರು: %s\n"
+"ಅತಿಥೇಯದ ಹೆಸರು: %s\n"
+"ಪರಿಚಾರಕದ ಹೆಸರು: %s\n"
+"ಪರಿಚಾರಕ ಆವೃತ್ತಿ: %s\n"
+"ಪೂರ್ವನಿಯೋಜಿತ ನಮೂನೆ ವಿವರಣೆ: %s\n"
+"ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್‌ ನಕ್ಷೆ: %s\n"
+"ಪೂರ್ವನಿಯೋಜಿತ ಸಿಂಕ್: %s\n"
+"ಪೂರ್ವನಿಯೋಜಿತ ಆಕರ: %s\n"
+"ಕುಕಿ: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "ಸಿಂಕ್‌ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ಸಿಂಕ್ #%u\n"
+"\tಸ್ಥಿತಿ: %s\n"
+"\tಹೆಸರು: %s\n"
+"\tವಿವರಣೆ: %s\n"
+"\tಚಾಲಕ: %s\n"
+"\tನಮೂನೆ ವಿವರಣೆ: %s\n"
+"\tಚಾನಲ್‌ ನಕ್ಷೆ: %s\n"
+"\tಮಾಲಿಕ ಘಟಕ: %u\n"
+"\tಮೂಕ: %s\n"
+"\tಧ್ವನಿ ಪ್ರಮಾಣ: %s%s%s\n"
+"\t ಸಮತೋಲನ %0.2f\n"
+"\tಮೂಲ ಧ್ವನಿ ಪ್ರಮಾಣ: %s%s%s\n"
+"\tಮೇಲ್ವಿಚಾರಕ ಆಕರ: %s\n"
+"\tಅಗೋಚರತೆ: %0.0f usec, ಸಂರಚಿತ %0.0f usec\n"
+"\tಗುರುತುಗಳು: %s%s%s%s%s%s\n"
+"\tಗುಣಗಳು:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "ಆಕರದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ಆಕರ #%u\n"
+"\tಸ್ಥಿತಿ: %s\n"
+"\tಹೆಸರು: %s\n"
+"\tವಿವರಣೆ: %s\n"
+"\tಚಾಲಕ: %s\n"
+"\tನಮೂನೆ ವಿವರಣೆ: %s\n"
+"\tಚಾನಲ್‌ ನಕ್ಷೆ: %s\n"
+"\tಮಾಲಿಕ ಘಟಕ: %u\n"
+"\tಮೂಕ: %s\n"
+"\tಧ್ವನಿ ಪ್ರಮಾಣ: %s%s%s\n"
+"\t ಸಮತೋಲನ %0.2f\n"
+"\tಮೂಲ ಧ್ವನಿ ಪ್ರಮಾಣ: %s%s%s\n"
+"\tಸಿಂಕ್‌ನ ಮೇಲ್ವಿಚಾರಣೆ: %s\n"
+"\tಅಗೋಚರತೆ: %0.0f usec, ಸಂರಚಿತ %0.0f usec\n"
+"\tಗುರುತುಗಳು: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "ಅನ್ವಯಿಸುವುದಿಲ್ಲ"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "ಘಟಕದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ಘಟಕ #%u\n"
+"\tಹೆಸರು: %s\n"
+"\tಆರ್ಗುಮೆಂಟ್‌: %s\n"
+"\tಬಳಕೆಯ ಲೆಕ್ಕಿಗ: %s\n"
+"\tಗುಣಗಳು:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "ಕ್ಲೈಂಟಿನ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ಕ್ಲೈಂಟ್‌ #%u\n"
+"\tಚಾಲಕ: %s\n"
+"\tಮಾಲಿಕ ಘಟಕ: %s\n"
+"\tಗುಣಗಳು:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "ಕಾರ್ಡಿನ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ಕಾರ್ಡ್ #%u\n"
+"\tಹೆಸರು: %s\n"
+"\tಚಾಲಕ: %s\n"
+"\tಮಾಲಿಕ ಘಟಕ: %s\n"
+"\tಗುಣಗಳು:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tಪ್ರೊಫೈಲುಗಳು:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tಸಕ್ರಿಯ ಪ್ರೊಫೈಲುಗಳು: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "ಸಿಂಕ್‌ ಇನ್‌ಪುಟ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ಸಿಂಕ್ ಇನ್‌ಪುಟ್‌ #%u\n"
+"\tಚಾಲಕ: %s\n"
+"\tಮಾಲಿಕ ಘಟಕ: %s\n"
+"\tಕ್ಲೈಂಟ್‌: %s\n"
+"\tಸಿಂಕ್: %u\n"
+"\tನಮೂನೆ ವಿವರಣೆ: %s\n"
+"\tಚಾನಲ್‌ ನಕ್ಷೆ: %s\n"
+"\tಮೂಕ: %s\n"
+"\tಧ್ವನಿ ಪ್ರಮಾಣ: %s\n"
+"\t %s\n"
+"\t ಸಮತೋಲನ %0.2f\n"
+"\tಬಫರಿನ ಅಗೋಚರತೆ: %0.0f usec\n"
+"\tಸಿಂಕ್‌ನ ಅಗೋಚರತೆ: %0.0f usec\n"
+"\tಮರುನಮೂನೆ ವಿಧಾನ: %s\n"
+"\tಗುಣಗಳು:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "ಆಕರದ ಔಟ್‌ಪುಟ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ಆಕರ ಔಟ್‌ಪುಟ್‌ #%u\n"
+"\tಚಾಲಕ: %s\n"
+"\tಮಾಲಿಕ ಘಟಕ: %s\n"
+"\tಕ್ಲೈಂಟ್‌: %s\n"
+"\tಆಕರ: %u\n"
+"\tನಮೂನೆ ವಿವರಣೆ: %s\n"
+"\tಚಾನಲ್‌ ನಕ್ಷೆ: %s\n"
+"\tಬಫರಿನ ಅಗೋಚರತೆ: %0.0f usec\n"
+"\tಆಕರದ ಅಗೋಚರತೆ: %0.0f usec\n"
+"\tಮರುನಮೂನೆ ವಿಧಾನ: %s\n"
+"\tಗುಣಗಳು:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ನಮೂನೆ #%u\n"
+"\tಹೆಸರು: %s\n"
+"\tನಮೂನೆ ವಿವರಣೆ: %s\n"
+"\tಚಾನಲ್‌ ನಕ್ಷೆ: %s\n"
+"\tಧ್ವನಿ ಪ್ರಮಾಣ: %s\n"
+"\t %s\n"
+"\t ಸಮತೋಲನ %0.2f\n"
+"\tಕಾಲಾವಧಿ: %0.1fs\n"
+"\tಗಾತ್ರ: %s\n"
+"\tಜಡ: %s\n"
+"\tಕಡತಹೆಸರು: %s\n"
+"\tಗುಣಗಳು:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "ವಿಫಲತೆ: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "ನಮೂನೆಯನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "ಕಡತದ ಅಪ್ರಾಪ್ತ ಸಮಯದಲ್ಲಿ ಅಂತ್ಯ\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [ಆಯ್ಕೆಗಳು] stat\n"
+"%s [ಆಯ್ಕೆಗಳು] list\n"
+"%s [ಆಯ್ಕೆಗಳು] exit\n"
+"%s [ಆಯ್ಕೆಗಳು] upload-sample FILENAME [NAME]\n"
+"%s [ಆಯ್ಕೆಗಳು] play-sample NAME [SINK]\n"
+"%s [ಆಯ್ಕೆಗಳು] remove-sample NAME\n"
+"%s [ಆಯ್ಕೆಗಳು] move-sink-input ID SINK\n"
+"%s [ಆಯ್ಕೆಗಳು] move-source-output ID SOURCE\n"
+"%s [ಆಯ್ಕೆಗಳು] load-module NAME [ARGS ...]\n"
+"%s [ಆಯ್ಕೆಗಳು] unload-module ID\n"
+"%s [ಆಯ್ಕೆಗಳು] suspend-sink [SINK] 1|0\n"
+"%s [ಆಯ್ಕೆಗಳು] suspend-source [SOURCE] 1|0\n"
+"%s [ಆಯ್ಕೆಗಳು] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help ಈ ನೆರವನ್ನು ತೋರಿಸು\n"
+" --version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು\n"
+"\n"
+" -s, --server=SERVER ಸಂಪರ್ಕಸಾಧಿಸಬೇಕಿರುವ ಪರಿಚಾರಕದ ಹೆಸರು\n"
+" -n, --client-name=NAME ಪರಿಚಾರಕದಲ್ಲಿ ಈ ಕ್ಲೈಂಟಿನಲ್ಲಿ ಏನೆಂದು "
+"ಕರೆಯಬೇಕು\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n"
+"libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "ಲೋಡ್ ಮಾಡಬೇಕಿರುವ ಒಂದು ಕಡತದ ನಮೂನೆಯನ್ನು ಸೂಚಿಸಿ\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ.\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "ಚಲಾಯಿಸಲು ನೀವು ಒಂದು ನಮೂನೆಯ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕಾಗುತ್ತದೆ\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "ತೆಗೆದು ಹಾಕಲು ನೀವು ಒಂದು ನಮೂನೆಯ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "ನೀವು ಒಂದು ಸಿಂಕ್ ಇನ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಸಿಂಕ್‌ ಅನ್ನು ಸೂಚಿಸಬೇಕು.\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "ನೀವು ಒಂದು ಆಕರ ಔಟ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಆಕರವನ್ನು ಸೂಚಿಸಬೇಕು.\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "ನೀವು ಒಂದು ಘಟಕದ ಹೆಸರನ್ನು ಹಾಗು ಆರ್ಗುಮೆಂಟುಗಳನ್ನು ಸೂಚಿಸಬೇಕು\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "ನೀವು ಒಂದು ಘಟಕ ಸೂಚಿಯನ್ನು ಸೂಚಿಸಬೇಕು\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "ಒಂದು ಕಾರ್ಡಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಪ್ರೊಫೈಲ್‌ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "ಯಾವುದೆ ಆಜ್ಞೆಯನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ.\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d X11 ಪ್ರದರ್ಶಕಕ್ಕೆ ಲಗತ್ತಿಸಲಾದ ಈಗಿನ PulseAudio ದತ್ತಾಂಶವನ್ನು ತೋರಿಸು "
+"(ಪೂರ್ವನಿಯೋಜಿತ)\n"
+" -e ಸ್ಥಳೀಯ PulseAudio ದತ್ತಾಂಶವನ್ನು X11 ಪ್ರದರ್ಶಕಕ್ಕೆ ರಫ್ತು ಮಾಡು\n"
+" -i PulseAudio ದತ್ತಾಂಶವನ್ನು X11 ಪ್ರದರ್ಶಕದಿಂದ ಸ್ಥಳೀಯ ಪರಿಸರ ವೇರಿಯೇಬಲ್‌ಗಳಿಗೆ ಹಾಗು "
+"ಕುಕಿ ಕಡತಗಳಿಗೆ ಆಮದು ಮಾಡಿಕೊ.\n"
+" -r PulseAudio ದತ್ತಾಂಶವನ್ನು X11 ಪ್ರದರ್ಶಕದಿಂದ ತೆಗೆದು ಹಾಕು\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "ಆಜ್ಞಾ ಸಾಲನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲತೆ.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "ಪರಿಚಾರಕ: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "ಆಕರ: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "ಸಿಂಕ್: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "ಕುಕಿ: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "ಕುಕಿ ದತ್ತಾಂಶವನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "ಕುಕಿ ದತ್ತಾಂಶವನ್ನು ಉಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "ಕ್ಲೈಂಟ್ ಸಂರಚನಾ ಕಡತವನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ.\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "ಪರಿಸರ ಸಂರಚನಾ ದತ್ತಾಂಶವನ್ನು ಓದುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDN ಅನ್ನು ಪಡೆಯಲು ವಿಫಲಗೊಂಡಿದೆ.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "ಕುಕಿ ದತ್ತಾಂಶವನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "ಇನ್ನೂ ಸಹ ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ.\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "ಸಾಕೆಟ್(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "ಸಂಪರ್ಕಿಸು(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio ಡೀಮನ್ ಅನ್ನು ಕೊಲ್ಲುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "ಡೀಮನ್ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ."
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "ಆಯ್ಕೆಮಾಡು(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "ಓದು(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ಸಾಧನಕ್ಕೆ ಹೊಸ ದತ್ತಾಂಶವನ್ನು ಬರೆಯುವಂತೆ ALSA ತಿಳಿಸಿದೆ, ಆದರೆ ಅಲ್ಲಿ ಬರೆಯಲು ಏನೂ ಇಲ್ಲ!\n"
+"ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA "
+"ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ.POLLOUT ಸೆಟ್‌ನಿಂದ ನಾವು ಎಚ್ಚೆತ್ತುಗೊಂಡಿದ್ದೇವೆ -- ಆದರೆ ನಂತರದ "
+"snd_pcm_avail() 0 ಅಥವ min_avail ಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಇನ್ನೊಂದು ಮೌಲ್ಯವನ್ನು ಮರಳಿಸಿದೆ."
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ಸಾಧನಕ್ಕೆ ಹೊಸ ದತ್ತಾಂಶವನ್ನು ಓದುವಂತೆ ALSA ತಿಳಿಸಿದೆ, ಆದರೆ ಅಲ್ಲಿ ಓದಲು ಏನೂ ಇಲ್ಲ!\n"
+"ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA "
+"ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ.POLLIN ಸೆಟ್‌ನಿಂದ ನಾವು ಎಚ್ಚೆತ್ತುಗೊಂಡಿದ್ದೇವೆ -- ಆದರೆ ನಂತರದ "
+"snd_pcm_avail() 0 ಅಥವ min_avail ಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಇನ್ನೊಂದು ಮೌಲ್ಯವನ್ನು ಮರಳಿಸಿದೆ."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "ಔಟ್‌ಪುಟ್ %s + ಇನ್‌ಪುಟ್ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "ಔಟ್‌ಪುಟ್ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "ಇನ್‌ಪುಟ್ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "ಜಡ"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "ಹೈ ಫಿಡಿಲಿಟಿ ಪ್ಲೇಬ್ಯಾಕ್ (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "ಟೆಲಿಫೋನಿ ಡ್ಯೂಪ್ಲೆಕ್ಸ್‌ (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "ಪಲ್ಸ್‍ಆಡಿಯೋ ಧ್ವನಿ ಪರಿಚಾರಕ"
diff --git a/po/mr.po b/po/mr.po
new file mode 100644
index 0000000..aa5436e
--- /dev/null
+++ b/po/mr.po
@@ -0,0 +1,2433 @@
+# translation of pulseaudio.master-tx.pulseaudio.po to marathi
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Sandeep Shedmake <sandeep.shedmake@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-06 13:43+0530\n"
+"Last-Translator: Sandeep Shedmake <sandeep.shedmake@gmail.com>\n"
+"Language-Team: marathi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "ऍनलॉग मोनो"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "ऍनलॉग स्टिरीओ"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "डिजीटल स्टिरीओ (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "डिजीटल स्टिरीओ (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "ऍनलॉग सराऊन्ड 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "डिजीटल सराऊन्ड 4.0 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "ऍनलॉग सराऊन्ड 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "ऍनलॉग सराऊन्ड 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "ऍनलॉग सराऊन्ड 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "डिजीटल सराऊन्ड 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "ऍनलॉग सराऊन्ड 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() ने अपेक्षा पेक्षा मोठे मूल्य पूरवले: %lu बाईटस् (%lu ms).\n"
+"हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग अशू शकते. कृपया या अडचणीस ALSA डेव्हलपर करीता "
+"कळवा."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() ने अपेक्षा पेक्षा मोठे मूल्य पूरवले: %li बाईटस् (%s% lu ms).\n"
+"हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग अशू शकते. कृपया या अडचणीस ALSA डेव्हलपर करीता "
+"कळवा."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, 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_nmap_begin() ने अपेक्षा पेक्षा मोठे मूल्य पूरवले: %lu बाईटस् (%lu ms).\n"
+"हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग अशू शकते. कृपया या अडचणीस ALSA डेव्हलपर करीता "
+"कळवा."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "आंतरीक ऑडिओ"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "मोडेम"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "मूळ lt_dlopen दाखलकर्ता शोधण्यास अपयशी."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "नवीन dl दाखलकर्ता वाटप करण्यास अपयशी."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-loader समावेष करण्यास अपयशी."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "प्रणाली बसशी जुळवणी करण्यास अशक्य: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID पासून कॉलर प्राप्त करणे अशक्य: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "कॉलर ऑबजेक्ट वरील UID निश्चित करणे अशक्य."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK सत्र प्राप्त करणे अपयशी."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "सत्र ऑबजेक्ट वरील UID निश्चित करणे अशक्य."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitAction वाटप करणे अशक्य."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id निश्चित करणे अशक्य"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext वाटप करणे अशक्य."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContext प्रारंभ करणे अशक्य: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "कॉलर अधिकृत आहे की नाही हे ओळखणे शक्य नाही: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "परवानगी प्राप्त करणे अशक्य: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit ने '%s' सह प्रतिसाद दिला"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "संकेत %s प्राप्त झाले."
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "बाहेर पडत आहे."
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "वापरकर्ता '%s' शोधणे अशक्य."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "गट '%s' शोधण्यास अपयशी."
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "वापरकर्ता '%s' व गट '%s' चे GID जुळत नाही."
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' बनवण्यास अपयशी: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "गट यादी बदलवण्यास अपयशी: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID बदलवण्यास अपयशी: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID बदलवण्यास अपयशी: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "रूट परवानगी यशस्वीरित्या वगळले."
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "प्रणाली भर पद्धत या प्लॅटफॉर्म करीता समर्थीत नाही."
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) अपयशी: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "आदेश ओळ वाचण्यास अपयशी."
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "आपण गट '%s' अंतर्गत आहोत, उच्च-प्राधन्यक्रम वेळपत्रक करीता परवानगी देते."
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "आपण गट '%s' अंतर्गत आहोत, रियल-टाईम वेळपत्रक करीता परवानगी देते."
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit आपल्याला acquire-high-priority परवानगी देतो."
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit acquire-high-priority परवानगी नकारतो."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit acquire-real-time परवानगी पुरवितो."
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit acquire-real-time परवानगी नकारतो."
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"SUID रूटला कॉल केले व वास्तविक-वेळ व/किंवा संयोजना अंतर्गत उच्च-प्राधान्यक्रम वेळपत्रक "
+"विनंतीकृत केले. तरी, आमच्याकडे आवश्यक परवानगी नाही:\n"
+"आम्ही गट '%s' अंतर्गत नाही, PolicyKit ने विनंतीकृत परवानगी देण्यास नकार दिला व "
+"RLIMIT_NICE/RLIMIT_RTPRIO स्त्रोत मर्यादा वाढविणे आवश्यक आहे.\n"
+"रियल-टाइम/उच्च-प्राधान्यक्रम वेळपत्रक कार्यान्वीत करण्याकरीता कृपयायोग्य PolicyKit "
+"परवानगी प्राप्त करा, किंवा '%s' चे सदस्य बनवा, किंवा या वापरकर्ता करीताRLIMIT_NICE/"
+"RLIMIT_RTPRIO स्त्रोत मर्यादा वाढवा."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"संयोजना अंतर्गत उच्च-प्राधान्यक्रम वेळपत्रक कार्यान्वीत केले करार द्वारे स्वीकार्य नाही."
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "यशस्वीरित्या RLIMIT_RTPRIO वाढवले"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO अपयशी: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE करीता प्रयत्न बंद केले"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"संयोजना अंतर्गत रियल-टाईम वेळपत्र कार्यान्वीत करत आहे परंतु करार द्वारे स्वीकार्य नाही."
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "डिमन कार्यरत नाही"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "डिमन PID %u नुरूप कार्यरत आहे"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "डिमन नष्ट करण्यास अपयशी: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr "हा कार्यक्रम रूट नुरूप चालविण्याकरीता नाही (जोपर्यंत --system निश्चित नाही)."
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "रूट परवानगी आवश्यक."
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "प्रणाली घटनांकरीता --start समर्थीत नाही."
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "प्रणाली पद्धती अंतर्गत कार्यरत, परंतु --disallow-exit निश्चित केले नाही!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+"प्रणाली पद्धती अंतर्गत कार्यरत, परंतु --disallow-module-loading निश्चित केले नाही!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "प्रणाली पद्धती अंतर्गत कार्यरत, SHM पद्धत जबरनरित्या अकार्यान्वीत करत आहे!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr "प्रणाली पद्धती अंतर्गत कार्यरत, रिकामे वेळ जबरनरित्या अकार्यान्वीत करत आहे!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdio प्राप्त करण्यास अपयशी."
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "पाइप अपयशी: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() अपयशी: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() अपयशी: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "डिमन स्टार्टअप अपयशी."
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "डिमन स्टार्टअप यशस्वी."
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "हे PulseAudio %s आहे"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "कंपाइलेशन यजमान: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "कंपाइलेशन CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "यजमान वर कार्यरत: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPUs आढळले."
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "पान आकार %lu बाईटस् आहे"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind समर्थनशी कंपाईल केले: होय"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind समर्थनशी कंपाईल केले: नाही"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind पद्धतीत कार्यरत: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "अनुकूल बिल्ड: होय"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "अनुकूल बिल्ड: नाही"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG वर्णीकृत, सर्व asserts अकार्यान्वीत."
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH वर्णीकृत, फक्त जलद मार्गीय asserts अकार्यान्वीत केले."
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "सर्व asserts कार्यान्वीत केले."
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "मशीन ID प्राप्त करण्यास अपयशी"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "मशीन ID %s आहे."
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "मशीन ID %s आहे."
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "रनटाईम डिरेक्ट्री %s वापरत आहे."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "स्थिती डिरेक्ट्री %s वापरत आहे."
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "प्रणाली पद्धतीत कार्यरत: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() अपयशी."
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "नवीन उच्च-बिंदूता टाइमर उपलब्ध! Bon appetit!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() अपयशी."
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "डिमन प्रारंभ करण्यास अपयशी."
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "विना विभाग दाखल केल्यास डिमन प्रारंभ झाले, कार्य करण्यास नकार."
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "डिमन स्टार्टअप पूर्ण झाले."
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "डिमन पूर्णपणे बंद करण्यास प्रारंभ केले."
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "डिमन नष्ट केले."
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../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 यास लॉग स्तरीय बाब अपेक्षीत आहे (एकतर क्षेत्र 0..4 अंतर्गत संख्यायी किंवा "
+"debug, info, notice, warn, error पैकी एक)."
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "अवैध लॉग लक्ष्य: 'syslog', 'stderr' किंवा 'auto' पैकी एक वापरा."
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "अवैध पुन्ह सॅम्पल पद्धत '%s'."
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm यास बूलीयन बाब अपेक्षीत आहे"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "नाव: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "घटक माहिती उपलब्ध नाही\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "आवृत्ती: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "वर्णन: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "लेखक: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "वापरणी: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "एकदा दाखल करा: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "मार्ग: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'."
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] अवैध लॉग स्तर '%s'."
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] अवैध पुन्ह सॅम्पल पद्धत '%s'."
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] अवैध rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit या प्लॅटफॉर्म वर समर्थीत नाही."
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] अवैध सॅम्पल स्वरूप '%s'."
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] अवैध सॅम्पल दर '%s'."
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] अवैध सॅम्पल मार्ग '%s'."
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] अवैध मार्ग मॅप '%s'."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] अवैध तुकडे '%s' यांची एकूण संख्या."
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] अवैध तुकड्याचे आकार '%s'."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] अवैध nice स्तर '%s'."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "संयोजना फाइल उघडण्यास अपयशी: %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."
+msgstr ""
+"निश्चित मुलभूत वाहिनी मॅपकडे निश्चित एकूण मुलभूत वाहिनी पेक्षा वेगळे वाहिनी संख्या "
+"समाविष्टीत आहे."
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### संयोजना फाइल: %s पासून वाचा ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "रुट परवानगी वगळत आहे."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "क्षमता यशस्वीरित्या CAP_SYS_NICE करीता मर्यादीत केले."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio आवाज प्रणाली"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio आवाज प्रणाली सुरू करा"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "PulseAudio डिमन करीता उच्च-प्राधान्यक्रम वेळपत्रक (नकारात्मक Unix nice स्तर)"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio डिमन करीता रियल-टाइम वेळपत्रक"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "प्रणाली करार PulseAudio ला उच्च-प्राधान्यक्रम वेळपत्रक प्राप्त करण्यापासून रोखते."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr "प्रणाली करार PulseAudio ला रियल-टाइम वेळपत्रक प्राप्त करण्यापासून रोखते."
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "मोनो"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "समोर मध्यभागी"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "समोर डावीकडे"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "समोर उजवीकडे"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "पाठीमागे भध्यभागी"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "पाठीमागे डावीकडे"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "पाठीमागे उजवीकडे"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "कमी क्रिक्वेन्सी स्त्रोत"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "समोर डावी-कडील-मध्यभागी"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "समोर उजवी-कडील-मध्यभागी"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "डावी बाजू"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "उजवी बाजू"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "ऑक्जीलरी 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "ऑक्जीलरी 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "ऑक्जीलरी 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "ऑक्जीलरी 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "ऑक्जीलरी 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "ऑक्जीलरी 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "ऑक्जीलरी 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "ऑक्जीलरी 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "ऑक्जीलरी 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "ऑक्जीलरी 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "ऑक्जीलरी 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "ऑक्जीलरी 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "ऑक्जीलरी 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "ऑक्जीलरी 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "ऑक्जीलरी 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "ऑक्जीलरी 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "ऑक्जीलरी 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "ऑक्जीलरी 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "ऑक्जीलरी 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "ऑक्जीलरी 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "ऑक्जीलरी 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "ऑक्जीलरी 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "ऑक्जीलरी 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "ऑक्जीलरी 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "ऑक्जीलरी 24"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "ऑक्जीलरी 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "ऑक्जीलरी 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "ऑक्जीलरी 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "ऑक्जीलरी 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "ऑक्जीलरी 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "ऑक्जीलरी 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "ऑक्जीलरी 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "वरील मध्य"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "वरील समोरचे मध्य"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "वरील समोरचे डावे"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "वरील समोरचे उजवे"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "वरील पाठीमागचे मध्य"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "वरील पाठीमागचे डावे"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(अवैध)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "स्टिरीओ"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "सराऊन्ड 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "सराऊन्ड 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "सराऊन्ड 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "सराऊन्ड 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "सराऊन्ड 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "ठिक"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "प्रवेश नकारले"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "अपरिचीत आदेश"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "अवैध बाब"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "घटक अस्तित्वात आहे"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "घटक आढळले नाही"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "जुळवणी नकारली"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "प्रोटोकॉल त्रुटी"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "वेळसमाप्ती"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "ओळख पटवण्याकरीता कि आढळली नाही"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "आंतरीक त्रुटी"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "वेळसमाप्ती नष्ट झाली"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "घटक नष्ट झाले"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "अवैध सर्वर"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "घटक प्रारंभ अपयशी"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "अयोग्य स्तर"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "डेटा आढळला नाही"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "असहत्व प्रोटोकॉल आवृत्ती"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "खूप मोठे"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "समर्थीत नाही"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "अपरिचीत त्रुटी कोड"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "यानुरूप वाढ आढळली नाही"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "जुणी कार्यपद्धत"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "लागू केले आहे असे आढळले नाही"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "क्लाऐंट विभाजीत केले"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() अपयशी"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "कुकी डेटा वाचण्यास अपयशी"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "संयोजना फाइल '%s' उघडण्यास अपयशी: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "कुकी दाखल केले नाही. जुळवणीचा प्रयत्न करत आहे."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "अपरिचीत वाढ '%s' करीता संदेश प्राप्त झाले"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "स्ट्रीम यशस्वीरित्या बनवले.\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "बफर मेट्रीक: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "उदाहरणतया spec '%s', वाहिनी नकाशा '%s' वापरत आहे.\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "साधन %s शी जुळले (%u, %s सस्पेंड केले).\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "स्ट्रीम त्रुटी: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "स्ट्रीम साधन सस्पेंड केले.%s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "स्ट्रीम साधन पुन्हा सुरू केले.%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "स्ट्रीम underrun.%s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "स्ट्रीम overrun.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "स्ट्रीम सुरू केले.%s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "स्ट्रीम साधन %s कडे स्थानांतरीत केले (%u, %ssuspended).%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "नाही "
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "स्ट्रीम बफर गुणधर्म बदलले.%s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "जुळवणी स्थापीत केली.%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "संकेत प्राप्त झाले, बाहेर पडत आहे.\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "विलंब प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"libpulse %s शी कंपाई केले\n"
+"libpulse %s शी लिंक केले\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "अवैध वाहिनी नकाशा '%s'\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "अवैध विलंब संयोजना '%s'\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "अवैध कार्य वेळ संयोजना '%s'\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "अवैध सॅम्पल संयोजना\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "%s स्ट्रीम सॅम्पल संयोजना '%s' शी उघडत आहे.\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "रेकॉर्डींग"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() अपयशी.\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() अपयशी: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() अपयशी.\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "सस्पेंड करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "पुन्हा चालू करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "सावधानता: आवाज सर्वर स्थानीय नाही, सस्पेंड करत नाही.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT प्राप्त झाले, बाहेर पडत आहे.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "सावधानता: उप कार्य संकेत %u द्वारे नष्ट करण्यात आले\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"libpulse %s शी कंपाई केले\n"
+"libpulse %s शी लिंक केले\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "आकडेवारी प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "वर्तमानक्षणी वापरणीत आहे: %2$s बाईटस् समाविष्टीत एकूण %1$u ब्लॉक्स् .\n"
+
+#: ../src/utils/pactl.c:117
+#, 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
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "सॅपल कॅशे आकार: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "सर्वर माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"वापरकर्ता नाव: %s\n"
+"आयोजक नाव: %s\n"
+"सर्वर नाव: %s\n"
+"सर्वर आवृत्ती: %s\n"
+"मुलभूत सॅम्पल संयोनजा: %s\n"
+"मुलभूत वाहिनी नकाशा: %s\n"
+"मुलभूत सिंक: %s\n"
+"मुलभूत स्त्रोत: %s\n"
+"कुकीज: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "sink माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "स्त्रोत माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c: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
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "विभाग माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "क्लाऐंट माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "कार्ड माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tसंक्षिप्त माहिती:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tसक्रीय संक्षिप्त माहिती: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "सिंक इनपुट माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "स्त्रोत आऊटपुट माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "सॅम्पल माहिती प्राप्त करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "सॅम्पल अपलोड करण्यास अपयशी: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "फाइलची अयोग्य समाप्ती\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulse %s सह कंपाईल केले\n"
+"libpulse %s सह जुळले\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "कृपया दाखल करण्याजोगी तात्पूर्ती फाइल निश्चित करा\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "आवाज फाइल उघडण्यास अपयशी.\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "चालविण्याकरीता तुम्हाला तात्पूर्ते नाव निश्चित करावे लागेल\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "काढूण टाकण्याकरीता तुम्हाला तात्पूर्ते नाव निश्चित करावे लागेल\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "तुम्हाला सिंक इनपुट निर्देशांक व सिंक निश्चित करावे लागेल\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "तुम्हाला आऊट इनडेक्स स्त्रोत व स्त्रोत निश्चित करावे लागेल\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "तुम्हाला विभागाचे नाव व बाब निश्चित करावे लागेल.\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "तुम्हाला विभाग निर्देशांक निश्चित करावे लागेल\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "तुम्हाला कार्ड नाव/निर्देशांक व संक्षिप्त नाव निश्चित करावे\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "वैध आदेश निश्चित केले नाही.\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "आदेश ओळ वाचण्यास अपयशी.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "सर्वर: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "स्त्रोत: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "सिंक: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "कुकीज: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "कुकीज माहिती वाचण्यास अपयशी\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "कुकी डेटा साठवण्यास अपयशी\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "क्लाऐंट संयोजना फाइल दाखल करण्यास अपयशी.\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "वातावरण संयोजना डेटा वाचण्यास अपयशी.\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDN प्राप्त करण्यास अपयशी.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "कुकी डेटा दाखल करण्यास अपयशी\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "अजूनही लागू केले नाही.\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio डिमन पूर्णपणे नष्ट करण्यास अपयशी."
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "डिमन प्रतिसाद देत नाही."
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA साधनवर नवीन डेटा लिहण्याकरीता सज्ज झाले, परंतु लिहण्याकरीता काहीच आढळले नाही!\n"
+"हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग आहे. कृपया ही अडचण ALSA डेव्हलपर करीता कळवा.\n"
+"POLLOUT द्वारे सज्ज होणे शक्य आहे -- तरी परस्पर snd_pcm_avail() ने 0 पूरविले किंवा इतर "
+"मूल्य < min_avail असावे."
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA साधनवर नवीन डेटा लिहण्याकरीता सज्ज झाले, परंतु लिहण्याकरीता काहीच आढळले नाही!\n"
+"हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग आहे. कृपया ही अडचण ALSA डेव्हलपर करीता कळवा.\n"
+"POLLIN द्वारे सज्ज होणे शक्य आहे -- तरी परस्पर snd_pcm_avail() ने 0 पूरविले किंवा इतर "
+"मूल्य < min_avail असावे."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "आऊटपुट %s + इनपुट %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "आऊटपुट %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "इनपुट %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "बंद करा"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "High Fidelity Playback (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Telephony Duplex (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio आवाज सर्वर"
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..9432a74
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,2114 @@
+# Dutch translation of pulseaudio.master-tx.
+# Copyright (C) 2009 THE pulseaudio.master-tx'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the pulseaudio.master-tx package.
+# Geert Warrink <geert.warrink@onsnet.nu>, 2009.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-13 19:22+0200\n"
+"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
+"Language-Team: Dutch <nl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr ""
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr ""
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr ""
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr ""
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr ""
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr ""
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr ""
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr ""
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr ""
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr ""
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr ""
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr ""
+
+#: ../src/daemon/main.c:191
+#, c-format
+msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
+msgstr ""
+
+#: ../src/daemon/main.c:196
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr ""
+
+#: ../src/daemon/main.c:201
+#, c-format
+msgid "Home directory of user '%s' is not '%s', ignoring."
+msgstr ""
+
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr ""
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr ""
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr ""
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr ""
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr ""
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr ""
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr ""
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr ""
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr ""
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr ""
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr ""
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr ""
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr ""
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr ""
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr ""
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr ""
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr ""
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr ""
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr ""
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr ""
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr ""
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr ""
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr ""
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr ""
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:912
+#, c-format
+msgid "Session ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr ""
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr ""
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr ""
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr ""
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr ""
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr ""
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr ""
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr ""
+
+#: ../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 ""
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr ""
+
+#: ../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."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr ""
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr ""
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr ""
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr ""
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr ""
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr ""
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr ""
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr ""
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr ""
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr ""
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr ""
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr ""
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr ""
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr ""
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr ""
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr ""
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr ""
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr ""
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr ""
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr ""
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr ""
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr ""
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr ""
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr ""
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr ""
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr ""
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr ""
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr ""
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr ""
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr ""
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr ""
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr ""
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr ""
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr ""
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr ""
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:176
+#, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:179
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr ""
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+msgid "Got EOF.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:396
+#, c-format
+msgid "pa_stream_drain(): %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:406
+#, c-format
+msgid "read() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:478
+#, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgstr ""
+
+#: ../src/utils/pacat.c:498
+#, c-format
+msgid "pa_stream_update_timing_info() failed: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:511
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:721
+#, c-format
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:728
+#, c-format
+msgid "Opening a %s stream with sample specification '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr ""
+
+#: ../src/utils/pacat.c:728
+msgid "playback"
+msgstr ""
+
+#: ../src/utils/pacat.c:736
+#, c-format
+msgid "open(): %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:741
+#, c-format
+msgid "dup2(): %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:751
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
+#: ../src/utils/paplay.c:404
+#, c-format
+msgid "pa_context_connect() failed: %s"
+msgstr ""
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c: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
+msgid "n/a"
+msgstr ""
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr ""
+
+#: ../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 ""
+
+#: ../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 ""
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr ""
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr ""
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr ""
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr ""
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr ""
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr ""
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
diff --git a/po/or.po b/po/or.po
new file mode 100644
index 0000000..6cd0a97
--- /dev/null
+++ b/po/or.po
@@ -0,0 +1,2437 @@
+# translation of pulseaudio.master-tx.pulseaudio.po to Oriya
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Manoj Kumar Giri <mgiri@redhat.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-09 13:16+0530\n"
+"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
+"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "ଅନୁରୂପ ମୋନୋ"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "ଅନୁରୂପ ଷ୍ଟେରିଓ"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "ସାଂଖିକ ଷ୍ଟେରିଓ (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "ସାଂଖିକ ଷ୍ଟେରିଓ (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "ସାଂଖିକ ଚତୁର୍ପାର୍ଶ୍ୱ 4.0 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "ସାଂଖିକ ଚତୁର୍ପାର୍ଶ୍ୱ 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, 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() 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."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, 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() 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."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, 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() 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."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "ଆଭ୍ୟନ୍ତରୀଣ ଧ୍ୱନି"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "ମଡେମ"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "ପ୍ରକୃତ lt_dlopen ଧାରକକୁ ଖୋଜି ପାଇବାରେ ବିଫଳ।"
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "ନୂତନ dl ଧାରକକୁ ବଣ୍ଟନ କରିବାରେ ବିଫଳ।"
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-loaderକୁ ଯୋଗ କରିବାରେ ବିଫଳ।"
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "ତନ୍ତ୍ର ପରିପଥ ସହିତ ସଂଯୋଗ କରିପାରିବେ ନାହିଁ: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PIDରୁ କଲରକୁ ପାଇପାରିବେ ନାହିଁ: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "କଲର ବସ୍ତୁରେ UID କୁ ସେଟ କରିପାରିବେ ନାହିଁ।"
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK ଅଧିବେଶନକୁ ପାଇବାରେ ବିଫଳ।"
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "ଅଧିବେଶନ ବସ୍ତୁରେ UID ସେଟ କରିପାରିବେ ନାହିଁ।"
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitActionକୁ ବଣ୍ଟନ କରିପାରିବେ ନାହିଁ।"
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id ସେଟ କରିପାରିବେ ନାହିଁ"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext ବଣ୍ଟନ କରିପାରିବେ ନାହିଁ।"
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContextକୁ ଆରମ୍ଭ କରିପାରିବେ ନାହିଁ: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "କଲର ଅଧିକାର ପ୍ରାପ୍ତ କି ନୁହଁ ତାହା ନିର୍ଦ୍ଧାରଣ କରି ପାରିଲା ନାହିଁ: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "auth ପାଇଲା ନାହିଁ: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit '%s' ସହିତ ଉତ୍ତର ଦେଇଥିଲା"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "ସଂକେତ %s ପାଇଲା।"
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "ଉତ୍ତେଜିତ କରୁଅଛି।"
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "ଚାଳକ '%s' କୁ ଖୋଜିବାରେ ବିଫଳ।"
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "ସମୂହ '%s' କୁ ଖୋଜି ପାଇବାରେ ବିଫଳ।"
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "ଚାଳକ '%s' ଏବଂ ସମୂହ '%s' ର GID ମେଳଖାଏନାହିଁ।"
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' ନିର୍ମାଣ କରିବାରେ ବିଫଳ: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "ସମୂହ ତାଲିକାକୁ ପରିବର୍ତ୍ତନ କରିବାରେ ବିଫଳ: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID କୁ ପରିବର୍ତ୍ତନ କରିବାରେ ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID କୁ ପରିବର୍ତ୍ତନ କରିବାରେ ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "ମୂଖ୍ୟ ଚାଳକ ଅଧିକାରକୁ ସଫଳତାର ସହିତ ପକାଯାଇଛି।"
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "ତନ୍ତ୍ରମୟ ଧାରା ଏହି ପ୍ଲାଟଫର୍ମରେ ଅସମର୍ଥିତ।"
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "ପାଠ୍ୟ ନିର୍ଦ୍ଦେଶକୁ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ।"
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "ଆମେ ମାନେ ଶ୍ରେଣୀ '%s'ରେ ଅଛୁ, ଉଚ୍ଚ-ପ୍ରାଥମିକତା ଯୋଜନାକୁ ଅନୁମତି ଦେଇ।"
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "ଆମେ ମାନେ ଶ୍ରେଣୀ '%s'ରେ ଅଛୁ, ପ୍ରକୃତ- ସମୟ ଯୋଜନାକୁ ଅନୁମତି ଦେଇ।"
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit ଆମକୁ acquire-high-priority ଅଧିକାର ଦେଇଥାଏ।"
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit acquire-high-priority ଅଧିକାରକୁ ବାରଣ କରିଥାଏ।"
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit ଆମକୁ acquire-real-time ଅଧିକାର ଦେଇଥାଏ।"
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit acquire-real-time ଅଧିକାରକୁ ବାରଣ କରିଥାଏ।"
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr "ଉଚ୍ଚ-ପ୍ରାଥମିକ ଯୋଜନା ବିନ୍ୟାସରେ ସକ୍ରିୟ କିନ୍ତୁ ନୀତି ଦ୍ୱାରା ଅନୁମୋଦିତ ନୁହଁ।"
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "RLIMIT_RTPRIO କୁ ସଫଳତାର ସହିତ ବୃଦ୍ଧିକରିଥାଏ"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE କୁ ତ୍ୟାଗ କରିଥାଏ"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr "Real-time ଯୋଜନା ବିନ୍ୟାସ ଫାଇଲରେ ସକ୍ରିୟ ହୋଇଥାଏ କିନ୍ତୁ ନିତୀ ଦ୍ୱାରା ଅନୁମୋଦିତ ନୁହଁ।"
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "ଡେମନ ଚାଲୁନାହିଁ"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "ଡେମନ PID %u ପରି ଚାଲୁଅଛି"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "ଡେମନକୁ ବନ୍ଦ କରିବାରେ ବିଫଳ: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"ଏହି ପ୍ରଗ୍ରାମଟି ମୂଖ୍ୟ ଚାଳକ ଭାବରେ ଚଲାଇବା ପାଇଁ ନିର୍ଦ୍ଦିଷ୍ଟ ହୋଇନାହିଁ (unless --system is "
+"specified)।"
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "ମୂଖ୍ୟ ଚାଳକ ଅଧିକାର ଆବଶ୍ୟକ।"
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "--start ତନ୍ତ୍ର ସ୍ଥିତି ପାଇଁ ସମର୍ଥିତ ନୁହଁ।"
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, କିନ୍ତୁ --disallow-exit କୁ ସେଟ କରାଯାଇନାହିଁ!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, କିନ୍ତୁ --disallow-module-loading କୁ ସେଟ କରାଯାଇନାହିଁ!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, SHM ଧାରାକୁ ବାଧ୍ଯତାମୁଳକ ଭାବରେ ନିଷ୍କ୍ରିୟ କରିଥାଏ!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, ପ୍ରସ୍ଥାନ ସ୍ଥିର ସମୟକୁ ବାଧ୍ଯତାମୁଳକ ଭାବରେ ନିଷ୍କ୍ରିୟ କରିଥାଏ!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdio କୁ ଅଧିକାର କରିବାରେ ବିଫଳ।"
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "ପାଇପ ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "ଡେମନ ଆରମ୍ଭ ବିଫଳ ହୋଇଛି।"
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "ଡେମନ ଆରମ୍ଭ ସଫଳ ହୋଇଛି।"
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "ଏହା ହେଉଛି PulseAudio %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "ସଂକଳନ ଆଧାର: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "ସଂକଳନ CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "ଆଧାରରେ ଚାଲୁଅଛି: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPUs ମିଳିଛି।"
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "ପୃଷ୍ଠା ଆକାରଟି ହେଉଛି %lu ବାଇଟ"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind ସମର୍ଥନ ସହିତ ସଂକଳନ ହୋଇଛି: yes"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind ସମର୍ଥନ ସହିତ ସଂକଳନ ହୋଇଛି: no"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind ଧାରାରେ ଚାଲୁଅଛି: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "ଉପଯୁକ୍ତ ନିର୍ମାଣ: yes"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "ଉପଯୁକ୍ତ ନିର୍ମାଣ: no"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG କୁ ବ୍ୟାଖ୍ୟା କରାଯାଇଛି, ସମସ୍ତ ନିଶ୍ଚୟକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।"
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH କୁ ବ୍ୟାଖ୍ୟା କରାଯାଇଛି, କେବଳ ତୀବ୍ର ପଥ ନିଶ୍ଚୟକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।"
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "ସମସ୍ତ ନିଶ୍ଚୟକୁ ସକ୍ରିୟ କରାଯାଇଛି।"
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "ଯନ୍ତ୍ର ID ପାଇବାରେ ବିଫଳ"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "ଯନ୍ତ୍ର ID ଟି ହେଉଛି %s।"
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "ଯନ୍ତ୍ର ID ଟି ହେଉଛି %s।"
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "ପ୍ରଚଳିତ ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରୁଅଛି।"
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "ସ୍ଥିତି ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରି।"
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() ବିଫଳ ହୋଇଛି।"
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "ସତେଜ ଉଚ୍ଚ-ବିଭେଦନ ସମୟ ମାପକ ଉପଲବ୍ଧ! Bon appetit!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() ବିଫଳ ହୋଇଛି।"
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "ଡେମନକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।"
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "ଧାରଣ ହୋଇଥିବା ଏକକାଂଶଗୁଡ଼ିକ ବିନା ଡେମନ ଆରମ୍ଭ ହୋଇଛି, କାର୍ଯ୍ୟ କରିବାକୁ ବାରଣ କରୁଅଛି।"
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "ଡେମନ ଆରମ୍ଭ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।"
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "ଡେମନ ବନ୍ଦକୁ ଆରମ୍ଭ କରାଯାଇଛି।"
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "ଡେମନକୁ ସମାପ୍ତ କରାଯାଇଛି।"
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help ଏହି ସହାୟତା ଦର୍ଶାନ୍ତୁ\n"
+" --version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ\n"
+" --dump-conf ପୂର୍ବନିର୍ଦ୍ଧାରିତ ବିନ୍ୟାସକୁ ଡମ୍ପ କରନ୍ତୁ\n"
+" --dump-modules ଉପଲବ୍ଧ ଏକକାଂଶଗୁଡ଼ିକର ଡମ୍ପ ତାଲିକା\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start ଡେମନକୁ ଆରମ୍ଭ କରନ୍ତୁ ଯଦି ତାହା ଚାଲୁନାହିଁ\n"
+" -k --kill ଚାଲୁଥିବା ଡେମନକୁ ବନ୍ଦ କରନ୍ତୁ\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../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 expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "ଅବୈଧ ଲଗ ଲକ୍ଷ୍ଯସ୍ଥଳ: 'syslog', 'stderr' କିମ୍ବା 'auto' କୁ ବ୍ୟବହାର କରନ୍ତୁ।"
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "ଅବୈଧ ପୁନଃ ପ୍ରତିଦର୍ଶନ ଧାରା '%s'।"
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm ବୁଲିଆନ ସ୍ୱତନ୍ତ୍ରଚର ଆଶା କରୁଅଛି"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "ନାମ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "କୌଣସି ଏକକାଂଶ ସୂଚନା ଉପଲବ୍ଧ ନାହିଁ\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "ସଂସ୍କରଣ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "ବର୍ଣ୍ଣନା: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "ଲେଖକ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "ବ୍ୟବହାର ବିଧି: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "ଥରେ ଧାରଣ କରନ୍ତୁ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "ପଥ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକ୍ଷ୍ଯସ୍ଥଳ '%s'।"
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] ଅବୈଧ ଲଗ ସ୍ତର%s'."
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] ଅବୈଧ ପୁନଃ ମିଶ୍ରଣ ଧାରା '%s'।"
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] ଅବୈଧ rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit ଏହି ପ୍ଲାଟଫର୍ମରେ ସମର୍ଥିତ ନୁହଁ।"
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଶୈଳୀ '%s'।"
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] ଅବୈଧ ନମୁନା ହାର '%s'।"
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଚ୍ୟାନେଲ '%s'।"
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] ଅବୈଧ ସଂଖ୍ୟକ ଖଣ୍ଡଗୁଡ଼ିକ '%s'."
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] ଅବୈଧ ଖଣ୍ଡ ଆକାର '%s'."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] ଅବୈଧ ସୁନ୍ଦର ସ୍ତର '%s'."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "ବିନ୍ୟାସ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ: %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."
+msgstr ""
+"ନିର୍ଦ୍ଦିଷ୍ଟିତ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚ୍ୟାନେଲ ମ୍ୟାପରେ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ସଂଖ୍ୟକ ଚ୍ୟାନେଲ ବ୍ୟତିତ ଭିନ୍ନ ସଂଖ୍ୟକ "
+"ଚ୍ୟାନେଲ ଉଲ୍ଲେଖ ଅଛି।"
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### ବିନ୍ୟାସ ଫାଇଲରୁ ପଢ଼ନ୍ତୁ: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "ମୂଖ୍ୟ ଚାଳକ ଅଧିକାରଗୁଡ଼ିକୁ ବାତିଲ କରୁଅଛି।"
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "CAP_SYS_NICE କୁ ସୀମିତ କ୍ଷମତା ସଫଳତାର ସହିତ ଦିଆହୋଇଛି।"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio ଧ୍ୱନି ତନ୍ତ୍ର"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio ଧ୍ୱନି ତନ୍ତ୍ରକୁ ଆରମ୍ଭ କରନ୍ତୁ"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "PulseAudio ଡେମନ ପାଇଁ ଉଚ୍ଚ-ପ୍ରାଥମିକତା ଯୋଜନା (ଋଣାତ୍ମକ Unix ସୁନ୍ଦର ସ୍ତର)"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio ଡେମନ ପାଇଁ ପ୍ରକୃତ-ସମୟ ଯୋଜନା"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "ତନ୍ତ୍ର ନୀତି PulseAudio କୁ ଉଚ୍ଚ-ପ୍ରାଥମିକ ଯୋଜନାକୁ ଗ୍ରହଣ କରିବାରୁ ଅଟକାଇଥାଏ।"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr "ତନ୍ତ୍ର ନୀତି PulseAudio କୁ ପ୍ରକୃତ-ସମୟ ଯୋଜନାକୁ ଗ୍ରହଣ କରିବାରୁ ଅଟକାଇଥାଏ।"
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "ମୋନୋ"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "ସାମ୍ନା ପାଖ କେନ୍ଦ୍ର"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "ସାମ୍ନା ବାମ ପାଖ"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "ସାମ୍ନା ଡ଼ାହାଣ ପାଖ"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "ପଛ ପାଖ କେନ୍ଦ୍ର"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "ପଛ ବାମ ପାଖ"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "ପଛ ଡ଼ାହାଣ ପାଖ"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "ନିମ୍ନ ଆବୃତ୍ତି ପରିତ୍ୟାଗ କାରୀ"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "ସାମ୍ନା କେନ୍ଦ୍ର-ର-ବାମ ପାଖ"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "ସାମ୍ନା କେନ୍ଦ୍ର-ର-ଡ଼ାହାଣ ପାଖ"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "ବାମ ପାର୍ଶ୍ୱ"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "ଡ଼ାହାଣ ପାର୍ଶ୍ୱ"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "ସହାୟକ 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "ସହାୟକ 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "ସହାୟକ 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "ସହାୟକ 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "ସହାୟକ 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "ସହାୟକ 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "ସହାୟକ 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "ସହାୟକ 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "ସହାୟକ 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "ସହାୟକ 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "ସହାୟକ 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "ସହାୟକ 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "ସହାୟକ 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "ସହାୟକ 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "ସହାୟକ 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "ସହାୟକ 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "ସହାୟକ 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "ସହାୟକ 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "ସହାୟକ 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "ସହାୟକ 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "ସହାୟକ 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "ସହାୟକ 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "ସହାୟକ 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "ସହାୟକ 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "ସହାୟକ 24"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "ସହାୟକ 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "ସହାୟକ 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "ସହାୟକ 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "ସହାୟକ 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "ସହାୟକ 28"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "ସହାୟକ 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "ସହାୟକ 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "ଉପର କେନ୍ଦ୍ର"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "ଉପର ସମ୍ନା ପାଖ କେନ୍ଦ୍ର"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "ଉପର ସାମ୍ନା ବାମ ପାଖ"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "ଉପର ସାମ୍ନା ଡ଼ାହାଣ ପାଖ"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "ଉପର ପଛ ପାଖ କେନ୍ଦ୍ର"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "ଉପର ପଛ ବାମ ପାଖ"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(ଅବୈଧ)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "ଷ୍ଟେରିଓ"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "OK"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "ଅଭିଗମ୍ୟତା ବାରଣ ହୋଇଛି"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "ଅଜଣା ନିର୍ଦ୍ଦେଶ"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "ଅବୈଧ ସ୍ୱତନ୍ତ୍ରଚର"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "ବସ୍ତୁ ଅବସ୍ଥିତ"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "ଏପରି କୌଣସି ବସ୍ତୁ ନାହିଁ"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "ସଂଯୋଗ ବାରଣ ହୋଇଛି"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "ପ୍ରୋଟୋକଲ ତ୍ରୁଟି"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "ସମୟ ସମାପ୍ତ"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "କୌଣସି ପ୍ରାଧିକରଣ କି ନାହିଁ"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "ଆଭ୍ୟନ୍ତରୀଣ ତ୍ରୁଟି"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "ସଂଯୋଗ ବନ୍ଦ ହୋଇଯାଇଛି"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "ବସ୍ତୁକୁ ବନ୍ଦକରାଯାଇଛି"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "ଅବୈଧ ସର୍ଭର"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "ଏକକାଂଶ ପ୍ରାରମ୍ଭିକରଣ ବିଫଳ ହୋଇଛି"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "ଖରାପ ସ୍ଥିତି"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "କୌଣସି ତଥ୍ୟ ନାହିଁ"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "ଅସଙ୍ଗତ ପ୍ରୋଟୋକଲ ସଂସ୍କରଣ"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "ଅତ୍ୟଧିକ ବଡ଼"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "ସମର୍ଥିତ ନୁହଁ"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "ଅଜଣା ତ୍ରୁଟି ସଂକେତ"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "ଏପରି କୌଣସି ଅନୁଲଗ୍ନ ନାହିଁ"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "ଅଚଳ କାର୍ଯ୍ୟକାରିତା"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "ଅନୁପସ୍ଥିତ ପ୍ରୟୋଗ"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "ଗ୍ରାହକ ଶାଖାଯୁକ୍ତ ହୋଇଛି"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() ବିଫଳ ହୋଇଛି"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "କୁକି ତଥ୍ୟକୁ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "ବିନ୍ୟାସ ଫାଇଲ '%s' କୁ ଖୋଲିବାରେ ବିଫଳ: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "କୌଣସି କୁକି ଧାରଣ କରାଯାଇନାହିଁ। ତାହା ବିନା ସଂଯୋଗ କରିବାକୁ ପ୍ରଚେଷ୍ଚା କରୁଅଛି।"
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "ଅଜଣା ଅନୁଲଗ୍ନ '%s' ପାଇଁ ସନ୍ଦେଶ ଗ୍ରହଣ କରିଅଛି"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "ଧାରା ସଫଳତାର ସହିତ ନିର୍ମାଣ ହୋଇଛି।\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "ବଫର ମେଟ୍ରିକସ: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "ନମୁନା spec '%s' ବ୍ୟବହାର କରି, ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'।\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "ଉପକରଣ %s ସହିତ ସଂଯୁକ୍ତ ହୋଇଛି (%u, %ssuspended)।\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "ଧାରା ତ୍ରୁଟି: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "ଧାରା ଉପକରଣ ନିଲମ୍ବିତ ହୋଇଛି।%s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "ଧାରା ଉପକରଣ ପୁନଃ ଚଳନ ହୋଇଛି।%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "ଧାରା underrun.%s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "ଧାରା overrun.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "ଧାରା ଆରମ୍ଭ ହୋଇଛି।%s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "ଧାରା ଉପକରଣ %sକୁ ଗତି କରିଛି (%u, %ssuspended).%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "not "
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "ଧାରା ବଫର ଗୁଣଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ ହୋଇଛି।%s\n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "ସଂଯୋଗ ସ୍ଥାପିତ ହୋଇଛି।%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() ବିଫଳ ହୋଇଛି: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "ସଂକେତ ପାଇଲା, ପ୍ରସ୍ଥାନ କରୁଅଛି।\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "ବିଳମ୍ବତା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help ଏହି ସହାୟତା ଦର୍ଶାନ୍ତୁ\n"
+" --version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ\n"
+"\n"
+" -r, --record ଲେଖିବା ପାଇଁ ସଂଯୋଗ ନିର୍ମାଣ କରନ୍ତୁ\n"
+" -p, --playback ପଛକୁ ଚଲାଇବା ପାଇଁ ଗୋଟିଏ ସଂଯୋଗ ନିର୍ମାଣ "
+"କରନ୍ତୁ\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"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"libpulse %s ସହିତ ସଂକଳିତ\n"
+"libpulse %s ସହିତ ସଂଯୁକ୍ତ\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "ଅବୈଧ ବିଳମ୍ବତା ବିଶେଷ ଲକ୍ଷଣ '%s'\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "ଅବୈଧ ପଦ୍ଧତି ସମୟ ବିଶେଷ ଲକ୍ଷଣ '%s'\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "ଅବୈଧ ନମୁନା ବିଶେଷ ଲକ୍ଷଣ\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "ନମୁନା ବିଶେଷ ଲକ୍ଷଣ '%s' ସହିତ ଗୋଟିଏ %s ଧାରାକୁ ଖୋଲୁଅଛି।\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "ଅନୁଲିପି କରୁଅଛି"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() ବିଫଳ ହୋଇଛି।\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() ବିଫଳ ହୋଇଛି: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() ବିଫଳ ହୋଇଛି।\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "ନିଲମ୍ବନ କରିବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "ପୁନଃ ଚଳନ କରିବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "WARNING: ଧ୍ୱନି ସର୍ଭରଟି ସ୍ଥାନୀୟ ନୁହଁ, ନିଲମ୍ବିତ କରୁନାହିଁ।\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT ପାଇଛି, ଉତ୍ସାହିତ କରୁଅଛି।\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "WARNING: ନିମ୍ନ ସ୍ତରର ପ୍ରକ୍ରିୟାଟି ସଂକେତ %u ଦ୍ୱାରା ସମାପ୍ତ\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help ଏହି ସହାୟତାକୁ ଦର୍ଶାନ୍ତୁ\n"
+" --version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ\n"
+" -s, --server=SERVER ସଂଯୋଗ କରିବା ପାଇଁ ସର୍ଭରର ନାମ\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"libpulse %s ସହିତ ସଂକଳିତ\n"
+"libpulse %s ସହିତ ସଂଯୁକ୍ତ\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "ପରିସଂଖ୍ୟାନ ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "ବର୍ତ୍ତମାନ ବ୍ୟବହାରରେ ଅଛି: %u ବ୍ଲକ ସମୁଦାୟ %s ବାଇଟ ଧାରଣ କରିଥାଏ।\n"
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr "ସମଗ୍ର ଜୀବନରେ ବଣ୍ଟିତ ହୋଇଥାଏ: %u ବ୍ଲକ ସମୁଦାୟ %s ବାଇଟ ଧାରଣ କରିଥାଏ।\n"
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "ନମୁନା କ୍ୟାଶେ ଆକାର: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "ସର୍ଭର ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"ଚାଳକ ନାମ: %s\n"
+"ଆଧାର ନାମ: %s\n"
+"ସର୍ଭର ନାମ: %s\n"
+"ସର୍ଭର ସଂସ୍କରଣ: %s\n"
+"ପୂର୍ବନିର୍ଦ୍ଧାରିତ ନମୁନା ବିଶିଷ୍ଟ: %s\n"
+"ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚ୍ୟାନେଲ ମ୍ୟାପ: %s\n"
+"ପୂର୍ବନିର୍ଦ୍ଧାରିତ ସିଙ୍କ: %s\n"
+"ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଉତ୍ସ: %s\n"
+"କୁକି: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "ସିଙ୍କ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ସିଙ୍କ #%u\n"
+"\tସ୍ଥିତି: %s\n"
+"\tନାମ: %s\n"
+"\tବର୍ଣ୍ଣନା: %s\n"
+"\tଡ୍ରାଇଭର: %s\n"
+"\tନମୁନା ବିଶେଷ ଲକ୍ଷଣ: %s\n"
+"\tଚ୍ୟାନେଲ ମ୍ୟାପ: %s\n"
+"\tନିଜ ଏକକାଂଶ: %u\n"
+"\tମୁକ: %s\n"
+"\tଭଲ୍ୟୁମ: %s%s%s\n"
+"\t ସମତୁଲ %0.2f\n"
+"\tଆଧାର ଭଲ୍ୟୁମ: %s%s%s\n"
+"\tପ୍ରଦର୍ଶିକା ଉତ୍ସ: %s\n"
+"\tବିଲମ୍ବତା: %0.0f usec, ବିନ୍ୟାସିତ %0.0f usec\n"
+"\tଚିହ୍ନକ: %s%s%s%s%s%s\n"
+"\tଗୁଣଧର୍ମ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "ଉତ୍ସ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ଉତ୍ସ #%u\n"
+"\tସ୍ଥିତି: %s\n"
+"\tନାମ: %s\n"
+"\tବର୍ଣ୍ଣନା: %s\n"
+"\tଡ୍ରାଇଭର: %s\n"
+"\tନମୁନା ବିଶେଷ ଲକ୍ଷଣ: %s\n"
+"\tଚ୍ୟାନେଲ ମ୍ୟାପ: %s\n"
+"\tମାଲିକ ଏକକାଂଶ: %u\n"
+"\tମୁକ: %s\n"
+"\tଭଲ୍ୟୁମ: %s%s%s\n"
+"\t ସମତୁଲ %0.2f\n"
+"\tଆଧାର ଭଲ୍ୟୁମ: %s%s%s\n"
+"\tସିଙ୍କର ପ୍ରଦର୍ଶିକା: %s\n"
+"\tବିଲମ୍ବତା: %0.0f usec, ବିନ୍ୟାସିତ %0.0f usec\n"
+"\tଚିହ୍ନକ: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "ଏକକାଂଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ଏକକାଂଶ #%u\n"
+"\tନାମ: %s\n"
+"\tସ୍ୱତନ୍ତ୍ରଚର: %s\n"
+"\tଉପଯୋଗିତା ଗଣକ: %s\n"
+"\tଗୁଣଧର୍ମ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "ଗ୍ରାହକ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ଗ୍ରାହକ #%u\n"
+"\tଡ୍ରାଇଭର: %s\n"
+"\tମାଲିକର ଏକକାଂଶ: %s\n"
+"\tଗୁଣଧର୍ମ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "କାର୍ଡ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"କାର୍ଡ #%u\n"
+"\tନାମ: %s\n"
+"\tଡ୍ରାଇଭର: %s\n"
+"\tନିଜ ଏକକାଂଶ: %s\n"
+"\tଗୁଣଧର୍ମ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tରୂପରେଖଗୁଡ଼ିକ:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tସକ୍ରିୟ ରୂପରେଖା: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "ସିଙ୍କ ନିବେଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ସିଙ୍କ ନିବେଶ #%u\n"
+"\tଡ୍ରାଇଭର: %s\n"
+"\tମାଲିକ ଏକକାଂଶ: %s\n"
+"\tଗ୍ରାହକ: %s\n"
+"\tସିଙ୍କ: %u\n"
+"\tନମୁନା ବିଶେଷ ଲକ୍ଷଣ: %s\n"
+"\tଚ୍ୟାନେଲ ମ୍ୟାପ: %s\n"
+"\tମୁକ: %s\n"
+"\tଭଲ୍ୟୁମ: %s\n"
+"\t %s\n"
+"\t ସମତୁଲ %0.2f\n"
+"\tବଫର ବିଳମ୍ବତା: %0.0f usec\n"
+"\tସିଙ୍କ ବିଳମ୍ବତା: %0.0f usec\n"
+"\tପୁନଃ ମିଶ୍ରଣ ପଦ୍ଧତି: %s\n"
+"\tଗୁଣଧର୍ମ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "ଉତ୍ସ ଫଳାଫଳ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ଉତ୍ସ ନିର୍ଗମ #%u\n"
+"\tଡ୍ରାଇଭର: %s\n"
+"\tମାଲିକ ଏକକାଂଶ: %s\n"
+"\tଗ୍ରାହକ: %s\n"
+"\tଉତ୍ସ: %u\n"
+"\tନମୁନା ବିଶେଷ ଲକ୍ଷଣ: %s\n"
+"\tଚ୍ୟାନେଲ ମ୍ୟାପ: %s\n"
+"\tବଫର ବିଳମ୍ବତା: %0.0f usec\n"
+"\tଉତ୍ସ ବିଳମ୍ବତା: %0.0f usec\n"
+"\tପୁନଃ ମିଶ୍ରଣ ପଦ୍ଧତି: %s\n"
+"\tଗୁଣଧର୍ମ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "ନମୁନା ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"ନମୁନା #%u\n"
+"\tନାମ: %s\n"
+"\tନମୁନା ବିଶେଷ ଲକ୍ଷଣ: %s\n"
+"\tଚ୍ୟାନେଲ ମ୍ୟାପ: %s\n"
+"\tଭଲ୍ୟୁମ: %s\n"
+"\t %s\n"
+"\t ସମତୁଲ %0.2f\n"
+"\tଅବଧି: %0.1fs\n"
+"\tଆକାର: %s\n"
+"\tଶିଥିଳ: %s\n"
+"\tଫାଇଲ ନାମ: %s\n"
+"\tଗୁଣଧର୍ମ:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "ବିଫଳତା: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "ନମୁନାକୁ ଧାରଣ କରିବାରେ ବିଫଳ: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "ଫାଇଲର ସମୟ ପୂର୍ବ ସମାପ୍ତି\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulse %s ସହିତ ସଂକଳିତ\n"
+"libpulse %s ସହିତ ସଂଯୁକ୍ତ\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "ଧାରଣ କରିବା ପାଇଁ ଗୋଟିଏ ନୁମନା ଫାଇଲ ଉଲ୍ଲେଖ କରନ୍ତୁ\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "ଧ୍ୱନି ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "ଚଲାଇବା ପାଇଁ ଆପଣଙ୍କୁ ଗୋଟିଏ ନମୁନା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "କାଢ଼ିବା ପାଇଁ ଆପଣଙ୍କୁ ଗୋଟିଏ ନମୁନା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନିବେଶ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ସିଙ୍କ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଉତ୍ସ ନିର୍ଗମ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ଉତ୍ସ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଏକକାଂଶ ନାମ ଏବଂ ସ୍ୱତନ୍ତ୍ରଚରଗୁଡ଼ିକୁ ଉଲ୍ଲେଖ କରିବା ଉଚିତ।\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଏକକାଂଶ ଅନୁକ୍ରମଣିକାକୁ ଉଲ୍ଲେଖ କରିବା ଉଚିତ ନୁହଁ\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ କାର୍ଡ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ରୂପରେଖା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "କୌଣସି ବୈଧ ନିର୍ଦ୍ଦେଶ ଉଲ୍ଲେଖ କରାଯାଇନାହିଁ।\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d X11 ପ୍ରଦର୍ଶିକା ସହିତ ସଂଲଗ୍ନ ପ୍ରଚଳିତ PulseAudio ତଥ୍ୟ ଦର୍ଶାନ୍ତୁ (ପୂର୍ବନିର୍ଦ୍ଧାରିତ)\n"
+" -e X11 ପ୍ରଦର୍ଶିକାକୁ ସ୍ଥାନୀୟ PulseAudio ତଥ୍ୟ ରପ୍ତାନି କରନ୍ତୁ\n"
+" -i X11 ପ୍ରଦର୍ଶିକାରୁ ସ୍ଥାନୀୟ ପରିବେଶ ପ୍ରାଚଳ ଏବଂ କୁକି ଫାଇଲକୁ ଆମଦାନି କରନ୍ତୁ।\n"
+" -r X11 ପ୍ରଦର୍ଶିକାରୁ PulseAudio ତଥ୍ୟକୁ କାଢ଼ନ୍ତୁ\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "ପାଠ୍ୟ ନିର୍ଦ୍ଦେଶକୁ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ।\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "ସର୍ଭର: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "ଉତ୍ସ: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "ସିଙ୍କ: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "କୁକି: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "କୁକି ତଥ୍ୟକୁ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "କୁକି ତଥ୍ୟକୁ ସଂରକ୍ଷଣ କରିବାରେ ବିଫଳ\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "ଗ୍ରାହକ ବିନ୍ୟାସ ଫାଇଲକୁ ଧାରଣ କରିବାରେ ବିଫଳ।\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "ପରିବେଶ ବିନ୍ୟାସ ତଥ୍ୟକୁ ପଢ଼ିବାରେ ବିଫଳ।\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDNକୁ ପାଇବାରେ ବିଫଳ।\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "କୁକି ତଥ୍ୟ ଧାରଣ କରିବାରେ ବିଫଳ\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "ଅପର୍ଯ୍ୟନ୍ତ କାର୍ଯ୍ୟକାରୀ ହୋଇନାହିଁ।\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "ସକେଟ(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "ସଂଯୋଗ କରନ୍ତୁ(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio ଡେମନକୁ ବନ୍ଦ କରିବାରେ ବିଫଳ।"
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "ଡେମନ ଉତ୍ତର ଦେଉନାହିଁ।"
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "ବାଛନ୍ତୁ(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "ପଢ଼ନ୍ତୁ(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "ଫଳାଫଳ %s + ନିବେଶ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "ଫଳାଫଳ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "ନିବେଶ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "ଅଫ"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "ଉଚ୍ଚ ଫିଡିଲିଟି ପଛଚଲା (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "ଟେଲିଫୋନି ଡ୍ୟୁପ୍ଲେକ୍ସ (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio ଧ୍ୱନି ସର୍ଭର"
diff --git a/po/pa.po b/po/pa.po
new file mode 100644
index 0000000..f53b035
--- /dev/null
+++ b/po/pa.po
@@ -0,0 +1,2126 @@
+# translation of pulseaudio.master-tx.po to Punjabi
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Amanpreet Singh Alam <aalam@users.sf.net>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2008-12-24 09:37+0530\n"
+"Last-Translator: Amanpreet Singh Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi <punjabi-l10n@users.sf.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/pulsecore/sink.c:2141
+#, fuzzy
+msgid "Internal Audio"
+msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:129
+#, fuzzy
+msgid "Failed to allocate new dl loader."
+msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।\n"
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr ""
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr ""
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr ""
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr ""
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr ""
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr ""
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr ""
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr ""
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr ""
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr ""
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr ""
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr ""
+
+#: ../src/daemon/main.c:191
+#, c-format
+msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
+msgstr ""
+
+#: ../src/daemon/main.c:196
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr ""
+
+#: ../src/daemon/main.c:201
+#, c-format
+msgid "Home directory of user '%s' is not '%s', ignoring."
+msgstr ""
+
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr ""
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr ""
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr ""
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr ""
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr ""
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr ""
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr ""
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO failed: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr ""
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr ""
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr ""
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+
+#: ../src/daemon/main.c:719
+#, fuzzy
+msgid "Root privileges required."
+msgstr "ਰੂਟ ਅਧਿਕਾਰਾਂ ਦੀ ਲੋੜ ਹੈ।"
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr ""
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr ""
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr ""
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr ""
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "pipe failed: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() ਫੇਲ੍ਹ ਹੈ: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() ਫੇਲ੍ਹ ਹੈ: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr ""
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr ""
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr ""
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr ""
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr ""
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr ""
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr ""
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr ""
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr ""
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr ""
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:912
+#, c-format
+msgid "Session ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr ""
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() ਫੇਲ੍ਹ ਹੈ।"
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr ""
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() ਫੇਲ੍ਹ ਹੈ।"
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr ""
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr ""
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr ""
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr ""
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr ""
+
+#: ../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 ""
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr ""
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "ਨਾਂ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "ਵਰਜਨ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "ਵੇਰਵਾ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "ਲੇਖਕ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "ਵਰਤੋਂ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr ""
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "ਪਾਥ: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:353
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "ਗਲਤ ਚੈਨਲ ਮੈਪ\n"
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr ""
+
+#: ../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."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr ""
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr ""
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "ਮੋਨੋ"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "ਫਰੰਟ ਸੈਂਟਰ"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "ਐਗਜਿਲਰੀ 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "ਐਗਜਿਲਰੀ 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "ਐਗਜਿਲਰੀ 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "ਐਗਜਿਲਰੀ 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "ਐਗਜਿਲਰੀ 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "ਐਗਜਿਲਰੀ 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "ਐਗਜਿਲਰੀ 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "ਐਗਜਿਲਰੀ 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "ਐਗਜਿਲਰੀ 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "ਐਗਜਿਲਰੀ 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "ਐਗਜਿਲਰੀ 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "ਐਗਜਿਲਰੀ 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "ਐਗਜਿਲਰੀ 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "ਐਗਜਿਲਰੀ 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "ਐਗਜਿਲਰੀ 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "ਐਗਜਿਲਰੀ 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "ਐਗਜਿਲਰੀ 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "ਐਗਜਿਲਰੀ 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "ਐਗਜਿਲਰੀ 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "ਐਗਜਿਲਰੀ 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "ਐਗਜਿਲਰੀ 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "ਐਗਜਿਲਰੀ 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "ਐਗਜਿਲਰੀ 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "ਐਗਜਿਲਰੀ 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "ਐਗਜਿਲਰੀ 24"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "ਐਗਜਿਲਰੀ 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "ਐਗਜਿਲਰੀ 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "ਐਗਜਿਲਰੀ 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "ਐਗਜਿਲਰੀ 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "ਐਗਜਿਲਰੀ 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "ਐਗਜਿਲਰੀ 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "ਐਗਜਿਲਰੀ 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "ਉੱਤੇ ਕੇਂਦਰੀ"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(ਗਲਤ)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr ""
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "ਠੀਕ ਹੈ"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "ਅਸੈੱਸ ਪਾਬੰਦੀ ਹੈ"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "ਅਣਜਾਣ ਕਮਾਂਡ"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr ""
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr ""
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr ""
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "ਪਰੋਟੋਕਾਲ ਗਲਤੀ"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "ਸਮਾਂ ਅੰਤਰਾਲ"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr ""
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr ""
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr ""
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr ""
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr ""
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "ਖਰਾਬ ਹਾਲਤ"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "ਕੋਈ ਡਾਟਾ ਨਹੀਂ"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr ""
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "ਬਹੁਤ ਵੱਡਾ"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "ਸਹਾਇਕ ਨਹੀਂ"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "ਅਣਜਾਣ ਗਲਤੀ ਕੋਡ"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr ""
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr ""
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr ""
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr ""
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr ""
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() ਫੇਲ੍ਹ ਹੈ"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr ""
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr ""
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr ""
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr ""
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, c-format
+msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:179
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "ਸਟਰੀਮ ਸ਼ੁਰੂ। %s\n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "ਨਹੀਂ "
+
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "ਸਟਰੀਮ ਸ਼ੁਰੂ। %s\n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:478
+#, c-format
+msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
+msgstr ""
+
+#: ../src/utils/pacat.c:498
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:721
+#, c-format
+msgid "Channel map doesn't match sample specification\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:728
+#, c-format
+msgid "Opening a %s stream with sample specification '%s'.\n"
+msgstr ""
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "ਰਿਕਾਰਡਿੰਗ"
+
+#: ../src/utils/pacat.c:728
+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 ""
+
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() ਫੇਲ੍ਹ ਹੈ।\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() ਫੇਲ੍ਹ ਹੈ: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() ਫੇਲ੍ਹ ਹੈ।\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "ਸੈਂਪਲ ਕੈਸ਼ ਸਾਈਜ਼: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c: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
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:434
+#, fuzzy, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "pipe failed: %s"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "ਫੇਲ੍ਹ: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸੈਂਪਲ ਫਾਇਲ ਦਿਓ\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr ""
+
+#: ../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 ""
+
+#: ../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 ""
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "ਸਰਵਰ: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "ਸਰੋਤ: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "ਕੂਕੀਜ਼: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr ""
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ।\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr ""
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "ਡੈਮਨ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਹੀ।"
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, c-format
+msgid "write(): %s"
+msgstr "write(): %s"
+
+#: ../src/utils/paplay.c:139
+#, c-format
+msgid "Stream successfully created\n"
+msgstr "ਸਟਰੀਮ ਠੀਕ ਤਰ੍ਹਾਂ ਬਣਾਈ ਗਈ।\n"
+
+#: ../src/utils/paplay.c:144
+#, c-format
+msgid "Stream errror: %s\n"
+msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n"
+
+#: ../src/utils/paplay.c:165
+#, c-format
+msgid "Connection established.\n"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ।\n"
+
+#: ../src/utils/paplay.c:198
+#, c-format
+msgid ""
+"%s [options] [FILE]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -v, --verbose Enable verbose operation\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink to connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --channel-map=CHANNELMAP Set the channel map to the use\n"
+msgstr ""
+
+#: ../src/utils/paplay.c:255
+#, c-format
+msgid ""
+"paplay %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+
+#: ../src/utils/paplay.c:292
+#, c-format
+msgid "Invalid channel map\n"
+msgstr "ਗਲਤ ਚੈਨਲ ਮੈਪ\n"
+
+#: ../src/utils/paplay.c:314
+#, c-format
+msgid "Failed to open file '%s'\n"
+msgstr ""
+
+#: ../src/utils/paplay.c:350
+#, c-format
+msgid "Channel map doesn't match file.\n"
+msgstr ""
+
+#: ../src/utils/paplay.c:376
+#, c-format
+msgid "Using sample spec '%s'\n"
+msgstr ""
+
+#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
+msgid "Cannot access autospawn lock."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
+
+#~ msgid "pa_stream_drop() failed: %s\n"
+#~ msgstr "pa_stream_drop() ਫੇਲ੍ਹ ਹੈ: %s\n"
+
+#~ msgid "muted"
+#~ msgstr "ਚੁੱਪ"
+
+#~ msgid "source"
+#~ msgstr "ਸਰੋਤ"
diff --git a/po/pl.po b/po/pl.po
index 24283d3..00cf77f 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
-"PO-Revision-Date: 2009-02-25 00:31+0100\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-05 16:11+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
@@ -17,47 +17,47 @@ msgstr ""
msgid "Analog Mono"
msgstr "Analogowe mono"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
msgstr "Analogowe stereo"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
msgstr "Cyfrowe stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
msgstr "Cyfrowe stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
msgstr "Analogowe surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Cyfrowe surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
msgstr "Analogowe surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
msgstr "Analogowe surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
msgstr "Analogowe surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Cyfrowe surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
msgstr "Analogowe surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, 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:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, 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:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -93,14 +93,13 @@ msgstr ""
"Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten "
"problem programistom ALSA."
-#: ../src/pulsecore/sink.c:1963
-#, fuzzy
+#: ../src/pulsecore/sink.c:2141
msgid "Internal Audio"
-msgstr "Wewnętrzny błąd"
+msgstr "Wewnętrzny dźwięk"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
-msgstr ""
+msgstr "Modem"
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
@@ -169,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:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Otrzymano sygnał %s."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Wyłączanie."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Znalezienie użytkownika \"%s\" nie powiodło się."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Znalezienie grupy \"%s\" nie powiodło się."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Utworzenie \"%s\" nie powiodło się: %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "Zmiana listy grup nie powiodła się: %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "Zmiana GID nie powiodła się: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "Zmiana UID nie powiodła się: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "Pomyślnie porzucono uprawnienia roota."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr "Tryb systemowy nie jest obsługiwany na tej platformie."
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nie powiodło się: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "Analiza wiersza poleceń nie powiodła się."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, 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:465
+#: ../src/daemon/main.c:507
#, 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:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nadał uprawnienie \"acquire-high-priority\"."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit odmówił nadania uprawnienia \"acquire-high-priority\"."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nadał uprawnienie \"acquire-real-time\"."
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit odmówił nadania uprawnienia \"acquire-real-time\"."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -289,48 +288,48 @@ msgstr ""
"\" lub zwiększyć ograniczenia zasobów RLIMIT_NICE/RLIMIT_RTPRIO dla tego "
"użytkownika."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Pomyślnie zwiększono RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO nie powiodło się: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "Oddawanie CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
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:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "Demon nie jest uruchomiony"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon jest uruchomiony jako PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zniszczenie demona nie powiodło się: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -338,146 +337,163 @@ msgstr ""
"Ten program nie powinien być uruchomiany jako root (chyba, że podano --"
"system)."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
msgstr "Wymagane są uprawnienia roota."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start nie jest obsługiwane przy uruchamianiu systemowym."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
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:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Uruchamianie w trybie systemowym, wymuszanie wyłączenia trybu SHM!"
-#: ../src/daemon/main.c:698
+#: ../src/daemon/main.c:740
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:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "Uzyskanie standardowego wejścia/wyjścia nie powiodło się."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "potok nie powiódł się: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "fork() nie powiodło się: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "read() nie powiodło się: %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Uruchomienie demona nie powiodło się."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "Pomyślnie uruchomiono demona."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "To jest PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Komputer kompilacji: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompilacji: %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "Uruchamianie na komputerze: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr "Znaleziono %u procesorów."
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "Rozmiar strony to %lu bajtów"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Skompilowano z obsługą Valgrind: tak"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Skompilowano z obsługą Valgrind: nie"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Uruchamianie w trybie Valgrind: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Budowanie optymalizowane: tak"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Budowanie optymalizowane: nie"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "Podano NDEBUG, wszystkie asercje zostały wyłączone."
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "Podano FASTPATH, tylko szybkie asercje ścieżek zostały wyłączone."
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "Wszystkie asercje są włączone."
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Uzyskanie identyfikatora komputera nie powiodło się"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "Identyfikator komputera to %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "Identyfikator komputera to %s."
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "Używanie folderu wykonywania %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodło się."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Świeże zegary o wysokiej rozdzielczości! Smacznego!"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -485,27 +501,27 @@ msgstr ""
"Koleś, twoje jądro śmierdzi! Szef kuchni poleca dzisiaj Linuksa w włączonymi "
"zegarami o wysokiej rozdzielczości!"
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodło się."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodło się."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych modułów, odmawianie pracy."
-#: ../src/daemon/main.c:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "Zakończono uruchamianie demona."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyłączenie demona."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "Demon został zniszczony."
@@ -1216,7 +1232,7 @@ msgstr "Brak implementacji"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "Rozdzielono klienta"
#: ../src/pulse/sample.c:169
#, c-format
@@ -1247,30 +1263,30 @@ msgstr "%u B"
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() nie powiodło się"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "Analiza danych ciasteczka nie powiodło się"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Otwarcie pliku konfiguracji \"%s\" nie powiodło się: %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nie wczytano ciasteczka. Próbowanie połączenia się bez niego."
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Otrzymano komunikat z nieznanego powodu \"%s\""
@@ -1354,88 +1370,93 @@ msgstr "Strumień został przeniesiony do urządzenia %s (%u, %swstrzymane).%s \
msgid "not "
msgstr "nie "
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Zmieniono atrybuty bufora strumienia.%s \n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Ustanowiono połączenie.%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, 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:307
+#: ../src/utils/pacat.c:315
#, 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:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Połączenie nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "Otrzymano EOF.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write() nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Otrzymano sygnał, wyłączanie.\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Uzyskanie opóźnienia nie powiodło się: %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, 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:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1535,7 +1556,7 @@ msgstr ""
" --process-time=BAJTY Żąda określonego czasu procesu na "
"żądanie w bajtach.\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1546,88 +1567,88 @@ msgstr ""
"Skompilowane za pomocą libpulse %s\n"
"Skonsolidowane za pomocą libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Nieprawidłowa mapa kanałów \"%s\"\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Nieprawidłowe określenie opóźnienia \"%s\"\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Nieprawidłowe określenie czasu procesu \"%s\"\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Nieprawidłowe określenie próbki\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
msgid "Channel map doesn't match sample specification\n"
msgstr "Mapa kanałów nie zgadza się z określeniem próbki\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Otwieranie strumienia %s za pomocą określenie próbki \"%s\".\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "nagrywanie"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "odtwarzanie"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Za dużo parametrów.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() nie powiodło się: %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() nie powiodło się.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -2366,3 +2387,69 @@ 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA została wybudzona, aby zapisać nowe dane do urządzenia, ale nie było "
+"nic do zapisania!\n"
+"Prawdopodobnie jest to błąd w sterowniku ALSA \"%s\". Proszę zgłosić ten "
+"problem programistom ALSA.\n"
+"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
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA została wybudzona, aby odczytać nowe dane z urządzenia, ale nie było "
+"nic do odczytania!\n"
+"Prawdopodobnie jest to błąd w sterowniku ALSA \"%s\". Proszę zgłosić ten "
+"problem programistom ALSA.\n"
+"Wybudzono za pomocą ustawienia POLLIN - ale jednoczesne wywołanie "
+"snd_pcm_avail() zwróciło zero lub inną wartość < min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "Wyjście %s + wejście %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "Wyjście %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "Wejście %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "Wyłącz"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "Odtwarzanie o wysokiej dokładności (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Duplex telefoniczny (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "Serwer dźwięku PulseAudio"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 6bb158c..cf05db2 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-03-05 12:27+0100\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
"PO-Revision-Date: 2008-11-21 01:21-0300\n"
"Last-Translator: Henrique (LonelySpooky) Junior <lspooky@fedoraproject.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br@redhat.com>\n"
@@ -22,47 +22,47 @@ msgstr ""
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, 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:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, 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:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, 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:1963
+#: ../src/pulsecore/sink.c:2141
#, fuzzy
msgid "Internal Audio"
msgstr "Erro interno"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
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:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Sinal %s recebido."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Saindo."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falha em encontrar o usuário '%s'."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falha em encontrar o grupo '%s'."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, 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:193
+#: ../src/daemon/main.c:196
#, 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:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falha em criar '%s': %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falha em alterar a lista de grupos: %s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falha em mudar o GID: %s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falha em mudar o UID: %s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "Os privilégios do root foram retirados com sucesso."
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr "O modo ampliado do sistema não tem suporte nessa plataforma."
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "Falha em interpretar a linha de comando."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, 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:465
+#: ../src/daemon/main.c:507
#, 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:473
+#: ../src/daemon/main.c:515
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:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade."
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
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:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real."
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, 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:538
+#: ../src/daemon/main.c:580
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:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO aumentado com sucesso"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO falhou: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
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:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "O daemon não está em execução"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon executando como PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Falha em encerrar o daemon: %s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -325,144 +325,161 @@ msgstr ""
"Este programa não é para ser executado como root (a não ser que --system "
"seja especificado)."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
#, fuzzy
msgid "Root privileges required."
msgstr "Privilégios de rot são requeridos."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start não tem suporte para instâncias de sistemas."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
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:690
+#: ../src/daemon/main.c:732
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:693
+#: ../src/daemon/main.c:735
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!"
-#: ../src/daemon/main.c:698
+#: ../src/daemon/main.c:740
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:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "Falha em adquirir o stdio."
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "O pipe falhou: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "O fork() falhou: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "A operação read() falhou: %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "Falha na partida do daemon."
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "Os daemons foram iniciados com sucesso."
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Este é o PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilação: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilação CFLAGS: %s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "Executando no host: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "O tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte do Valgrind: sim"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte do Valgrind: não"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Executando em modo valgrind: %s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "Build otimizado: sim"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "Build otimizado: não"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "Falha em obter o ID da máquina"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "A ID da máquina é %s."
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "Usando o diretório de runtime %s."
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponíveis! Bon appetit!"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -470,28 +487,28 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!"
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
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:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "Daemon terminado."
@@ -1227,30 +1244,30 @@ msgstr ""
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 "Falhou ao analisar os dados do cookie"
-#: ../src/pulse/client-conf.c:120
+#: ../src/pulse/client-conf.c:110
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Falha em abrir o arquivo de configuração '%s': %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nenhum cookie foi carregado. Tentativa de conexão sem eles."
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Foi recebida uma mensagem para uma extensão desconhecida '%s'"
@@ -1334,88 +1351,93 @@ msgstr "O fluxo foi movido para o dispositivo %s (%u, %ssuspended).%s \n"
msgid "not "
msgstr "não"
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Extravazamento do fluxo. %s\n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "Conexão estabelecida.%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() falhou: %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() falhou: %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falhou: %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Falha na conexão: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../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:356 ../src/utils/paplay.c:92
+#: ../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:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "Atingiu EOF.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read() falhou: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write() falhou: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Sinal recebido, saindo (exiting).\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Falhou em obter a latência: %s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, 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:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1512,7 +1534,7 @@ msgstr ""
" --process-time=BYTES Request the specified process time "
"per request in bytes.\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1523,88 +1545,88 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canal inválido '%s'\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificação de latência inválida '%s'\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificação do tempo do processo inválida '%s'\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "Especificação de amostragem inválida\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
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:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "gravando"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "playback"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "Argumentos em excesso.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falhou.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() falhou.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falhou.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() falhou: %s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() falhou.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -2330,6 +2352,60 @@ msgstr "Usando a especificação da amostragem '%s'\n"
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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
+
#, fuzzy
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..b0eeee8
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,2462 @@
+# Serbian translations for pulseaudio
+# Copyright (C) 2006 Lennart Poettering
+# This file is distributed under the same license as the pulseaudio package.
+#
+# Igor Miletic (Игор Милетић) <grejigl-gnomeprevod@yahoo.ca>, 2009.
+# Miloš Komarčević <kmilos@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-07 23:02+0100\n"
+"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
+"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: UTF-8\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Lokalize 0.3\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "Аналогни моно"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "Аналогни стерео"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "Дигитални стерео (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "Дигитални стерео (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "Аналогни окружујући 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "Дигитални окружујући 4.0 (IEC958/AC3)"
+
+# Surround можемо превести амбијентални или окружни или можда чак и сараунд? -- Игор
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "Аналогни окружујући 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "Аналогни окружујући 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "Аналогни окружујући 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "Дигитални окружујући 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "Аналогни окружујући 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() је вратио вредност која је необично велика: %lu бајтова (%lu "
+"ms).\n"
+"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
+"овај проблем ALSA програмерима."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() је вратио вредност која је необично велика: %li бајтова (%s%"
+"lu ms).\n"
+"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
+"овај проблем ALSA програмерима."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() је вратио вредност која је необично велика: %lu "
+"бајтова (%lu ms).\n"
+"Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите "
+"овај проблем ALSA програмерима."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "Унутрашњи звук"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "Модем"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "Неуспешна претрага за оригиналним lt_dlopen учитавачем."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "Неуспешно смештање новог dl учитавача."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "Неуспешно додавање „повежи одмах“ учитавача."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "Није се могуће прикључити на системску магистралу: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "Не могу добавити позивника из PID-а: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "Не могу поставити UID за позивнички објекат."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "Неуспешно добављање CK сесије."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "Не могу поставити UID за објекат сесије."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "Не могу поставити PolKitAction."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "Не могу поставити action_id"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "Не могу поставити PolKitContext."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "Не могу иницијализовати PolKitContex: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "Није могуће одредити овлашћење позивника: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "Не могу добити овлашћење: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit је одговорио са „%s“"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "Добих сигнал %s."
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "Напуштам."
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "Не могу наћи корисника „%s“."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "Не могу наћи групу „%s“."
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "GID корисника „%s“ се не поклапа са групом „%s“."
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "Неуспешно прављење „%s“: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "Неуспешна промена групног списка: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "Неуспешна промена GID-а: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "Неуспешна промена UID-а: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "Успешно одбачена root овлашћења."
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "Режим за читав систем није подржан на овој платформи."
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) није успело: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "Неуспешно тумачење командне линије."
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr ""
+"Налазимо се у групи „%s“ која дозвољава високоприоритетно распоређивање."
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr ""
+"Налазимо се у групи „%s“ која дозвољава стварновременско распоређивање."
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit нам је дао овлашћење за добијање високог приоритета."
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit одбија овлашћење за добијање високог приоритета."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit нам је дао овлашћење за добијање рада у стварном времену."
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit одбија овлашћење за добијање рада у стварном времену."
+
+#
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"SUID root и стварновременско и/или високоприоритетно распоређивање је "
+"захтевано у подешавањима. Међутим, немамо потребна овлашћења:\n"
+"нисмо у групи „%s“, PolicyKit одбија да нам да̑ тражена овлашћења и немамо "
+"средстава за повећање RLIMIT_NICE/RLIMIT_RTPRIO ограничења.\n"
+"Морате добити одговарајућа PolicyKit овлашћења, или постати члан групе „%s“, "
+"или повећати ограничења за RLIMIT_NICE/RLIMIT_RTPRIO средства овог корисника "
+"како би омогућили стварновременско или високоприоритетно распоређивање."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"Високоприоритетно распоређивање је омогућено у подешавањима, али политика то "
+"не дозвољава."
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "Успешно повећано RLIMIT_RTPRIO ограничење"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "Неуспешно постављање RLIMIT_RTPRIO-а:%s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "Одустајем од CAP_NICE"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"Стварновременско распоређивање је омогућено у подешавањима, али политика то "
+"не дозвољава."
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "Демон није покренут"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "Демон је покренут са PID-ом %u"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "Неуспешно убијање демона: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"Није намеравано да се овај програм покреће из root налога (осим у случају "
+"када је --system наведено)"
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "Потребна су root овлашћења."
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "--start није подржано за системске примерке."
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "Покренуто у системском режиму, али --disallow-exit није постављено!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+"Покренуто у системском режиму, али --disallow-module-loading није постављено!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "Покренуто у системском режиму, присилно онемогућујем SHM режим!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr ""
+"Покренуто у системском режиму, присилно онемогућујем гашење после одређеног "
+"времена мировања!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "Неуспешно проналажење стандардног улаза/излаза."
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "Неуспешно пуштање података кроз цев: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "Неуспела функција fork(): %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "Неуспела функција read(): %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "Неуспешно покретање демона."
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "Демон успешно покренут."
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "Ово је PulseAudio %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "Домаћин компајлирања: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "CFLAGS компајлирања: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "Покренут на домаћину: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "Нашао %u процесор(а)"
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "Величина странице је %lu бајтова"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Компајлирано са подршком за Valgrind: да"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Компајлирано са подршком за Valgrind: не"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "Покренут у Valgrind режиму: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "Оптимизована изградња: да"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "Оптимизована изградња: не"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG дефинисан, сва обавештења искључена."
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH дефинисан, само обавештења брзе путање искључена."
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "Сва обавештења омогућена."
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "Неуспешно добављање ИБ машине"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "ИБ машине је %s."
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "ИБ машине је %s."
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "Користи се %s извршни директоријум."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "Користи се %s директоријум стања."
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "Покренуто у системском режиму: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "Неуспела функција pa_pid_file_create()."
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "Доступни су нови бројачи високе резолуције! Пријатно!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Ваше језгро није добро подешено за pulseaudio! Препоручује Вам се да "
+"користите Linux језгро са омогућеним бројачима високе резолуције."
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "Неуспела функција pa_core_new()."
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "Неуспешно покретање демона."
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "Демон је покренут без иједног учитаног модула, одбија да ради."
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "Покретање демона успешно."
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "Покренуто гашење демона."
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "Рад демона је прекинут."
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"НАРЕДБЕ:\n"
+" -h, --help Прикажи ову помоћ\n"
+" --version Прикажи верзију\n"
+" --dump-conf Излистај подразумевана подешавања\n"
+" --dump-modules Излистај списак доступних модула\n"
+" --dump-resample-methods Излистај доступне вредности "
+"дискретизације\n"
+" --cleanup-shm Очисти бајате делове дељене "
+"меморије\n"
+" --start Покрени демон ако већ није покренут\n"
+" -k --kill Убиј покренути демон\n"
+" --check Провери постојање покренутог демона "
+"(враћа само излазни ко̑д)\n"
+"\n"
+"ОПЦИЈЕ:\n"
+" --system[=логичка вредност] Покрени као системски примерак\n"
+" -D, --daemonize[=лог. вредност] Покрени у позадини\n"
+" --fail[=лог. вредност] Изађи после неуспешног покретања\n"
+" --high-priority[=лог. вредност] Покушај поставити високоприоритетно "
+"распоређивање\n"
+" (доступно само root-у, или преко "
+"SUID-а или\n"
+" са повишеним RLIMIT_NICE нивоом)\n"
+" --realtime[=лог. вредност] Покушај омогућити стварновременско "
+"распоређивање\n"
+" (доступно само root-у, или преко "
+"SUID-а или\n"
+" са повишеним RLIMIT_RTPRIO нивоом)\n"
+" --disallow-module-loading[=лог.] Не дозвољавај учитавање/уклањање "
+"модула\n"
+" на кориснички захтев после "
+"покретања\n"
+" --disallow-exit[=лог. вредност] Не дозвољавај излаз на кориснички "
+"захтев\n"
+" --exit-idle-time=СЕКУНДИ Прекини рад демона после мировања\n"
+" од оволико секунди\n"
+" --module-idle-time=СЕКУНДИ Уклони самоучитане модуле после "
+"мировања\n"
+" од оволико секунди\n"
+" --scache-idle-time=СЕКУНДИ Уклони самоучитане примерке после "
+"мировања\n"
+" од оволико секунди\n"
+" --log-level[=НИВО] Повећај или постави ниво опширности\n"
+" -v Повећај ниво опширности\n"
+" --log-target={auto,syslog,stderr} Наведи циљни дневник\n"
+" --log-meta[=лог. вредност] Укључи место у ко̑ду у порукама "
+"дневника\n"
+" --log-time[=лог. вредност] Укључи време у порукама дневника\n"
+" --log-backtrace=FRAMES Укључи трагове у порукама дневника\n"
+" -p, --dl-search-path=ПУТАЊА Постави путању претраге за динамички "
+"дељене\n"
+" објекте (додатци)\n"
+" --resample-method=НАЧИН Користи наведени начин "
+"дискретизације\n"
+" (Погледај --dump-resample-methods "
+"за\n"
+" могуће вредности)\n"
+" --use-pid-file[=лог. вредност] Направи PID датотеку\n"
+" --no-cpu-limit[=лог. вредност] Немој инсталирати ограничавање "
+"процесорског\n"
+" терета на платформама које то "
+"подржавају.\n"
+" --disable-shm[=лог. вредност] Онемогући подршку за дељену "
+"меморију.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"ПАРАМЕТРИ МОДУЛА\" Учитај наведени модул додатка са\n"
+" наведеним параметрима\n"
+" -F, --file=ИМЕДАТОТЕКЕ Покрени наведену скрипту\n"
+" -C Отвори командну линију на покренутом "
+"TTY-у\n"
+" после покретања\n"
+"\n"
+" -n Не учитавај подразумевану датотеку "
+"скрипте.\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail очекује логичку вредност"
+
+#: ../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 очекује параметар за ниво опширности (нумеричка вредност између "
+"0 и 4 или једно од: debug, info, notice, warn, error)."
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr ""
+"Неисправан циљни дневник: користите једно од „syslog“, „stderr“ или „auto“."
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "Неисправан начин дискретизације „%s“."
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit очекује логичку вредност"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm очекује логичку вредност"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "Име: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "Подаци о модулу нису доступни\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "Верзија: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "Опис: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "Аутор: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "Употреба: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "Учитај једном: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "Путања: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] Неисправан циљни дневник „%s“."
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] Неисправан ниво опширности у дневнику „%s“."
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] Неисправан начин дискретизације „%s“."
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] Неисправан rlimit „%s“."
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit није подржан на овој платформи."
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] Неисправан формат узорка „%s“."
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] Неисправна учестаност дискретизације „%s“."
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] Неисправни канали узорка „%s“."
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Неисправна мапа канала „%s“."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] Неисправан број одломака „%s“."
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] Неисправна величина одломка „%s“."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] Неисправан ниво приоритета „%s“."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "Неуспело отварање датотеке подешавања: %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."
+msgstr ""
+"Наведена мапа канала има нема исти број канала као што је наведено у "
+"подразумеваном броју канала."
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### Прочитај из датотеке подешавања: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "Одбацујем root повластице."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "Успешно ограничио могућности на CAP_SYS_NICE."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio звучни систем"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "Покрени PulseAudio звучни систем"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+"Високоприоритетно распоређивање (негативни Unix нивои финоће, тј. nice "
+"нивои) за PulseAudio демона"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Стварновременско распоређивање за PulseAudio демона"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"Системска политика спречава PulseAudio-у да добије високоприоритетно "
+"распоређивање."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+"Системска политика спречава PulseAudio-у да добије стварновременско "
+"распоређивање."
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "Моно"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "Предњи централни"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "Предњи леви"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "Предњи десни"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "Позадински централни"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "Позадински леви"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "Позадински десни"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "Звучник за ниске фреквенције"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "Предњи лево од центра"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "Предњи десно од центра"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "Лева страна"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "Десна страна"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "Споредни 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "Споредни 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "Споредни 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "Споредни 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "Споредни 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "Споредни 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "Споредни 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "Споредни 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "Споредни 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "Споредни 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "Споредни 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "Споредни 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "Споредни 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "Споредни 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "Споредни 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "Споредни 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "Споредни 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "Споредни 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "Споредни 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "Споредни 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "Споредни 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "Споредни 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "Споредни 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "Споредни 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "Споредни 024"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "Споредни 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "Споредни 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "Споредни 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "Споредни 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "Споредни 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "Споредни 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "Споредни 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "Горњи централни"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "Горњи предњи централни"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "Горњи предњи леви"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "Горњи предњи десни"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "Горњи позадински централни"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "Горњи позадински леви"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(неисправно)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "Стерео"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "Окружујући 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "Окружујући 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "Окружујући 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "Окружујући 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "Окружујући 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "У реду"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "Забрањен приступ"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "Непозната наредба"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "Неисправан параметар"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "Ентитет постоји"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "Не постоји такав ентитет"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "Веза одбијена"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "Грешка у протоколу"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "Време истекло"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "Нема кључа за ауторизацију"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "Интерна грешка"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "Веза прекинута"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "Ентитет убијен"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "Сервер неисправан"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "Иницијализација модула није успела"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "Лоше стање"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "Нема података"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "Неусаглашена верзија протокола"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "Превелико"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "Није подржано"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "Ко̑д грешке је непознат"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "Не постоји таква екстензија"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "Избачена функционалност"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "Није одрађено"
+
+# Нисам сигуран да имамо реч за форк. Можда да користимо форкирање? Ружно звучи, али гранање није најбоље. -- Игор
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "Клијент израчван"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "Неуспела функција XOpenDisplay()"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "Неуспешно тумачење података из колачића"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "Неуспешно отварање датотеке подешавања „%s“: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "Колачић није учитан. Покушавам се повезати без колачића."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "Примио поруку за непознати локал „%s“"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "Неуспела функција pa_stream_write(): %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "Неуспела функција pa_stream_peek(): %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "Ток успешно направљен.\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "Неуспешно pa_stream_get_buffer_attr(): %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "Метрике бафера: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "Користим следеће параметре узорка „%s“ и мапу канала „%s“.\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "Прикључен на уређај %s (%u, %s обустављено).\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "Грешка тока: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "Уређај тока обустављен.%s\n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "Уређај тока настављен.%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "Ток није попуњен. %s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "Ток се прелива.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "Ток покренут. %s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "Ток пребачен на уређај %s (%u, %s обустављено). %s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "није"
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Параметри бафера тока су промењени. %s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "Веза успостављена.%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "Неуспела функција pa_stream_new() : %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "Неуспела функција pa_stream_connect_playback(): %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "Неуспела функција read(): %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "Неуспела функција write(): %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "Добио сигнал, излазим.\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "Немогу добити вредност кашњења: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s[опције]\n"
+"\n"
+" -h, --help Прикажи ову помоћ\n"
+" --version Прикажи верзију\n"
+"\n"
+" -r, --record Направи везу за снимање\n"
+" -p, --playback Направи везу за репродукцију\n"
+"\n"
+" -v, --verbose Омогући опширан опис радње\n"
+"\n"
+" -s, --server=СЕРВЕР Назив сервера са којим ће се "
+"повезати\n"
+" -d, --device=УРЕЂАЈ Назив сливника/извора на који ће се "
+"повезати\n"
+" -n, --client-name=ИМЕ Како назвати овог клијента на "
+"серверу\n"
+" --stream-name=ИМЕ Како назвати овај ток на серверу\n"
+" --volume=ГЛАСНОСТ Наведи почетну јачину звука између "
+"0...65536 (линеарна скала)\n"
+" --rate=УЧЕСТАНОСТ Учестаност дискретизације у херцима "
+"(подразумевана 44100)\n"
+" --format=ФОРМАТУЗОРКА Формат узорка, једно од s16le, s16be, "
+"u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(подразумевано s16ne)\n"
+" --channels=БРОЈКАНАЛА Број канала, 1 за моно, 2 за стерео\n"
+" (подразумевано 2)\n"
+" --channel-map=МАПАКАНАЛА Мапу канала коју треба користити "
+"уместо подразумеване\n"
+" --fix-format Преузми формат узорка из сливника\n"
+" на који је ток прикључен.\n"
+" --fix-rate Преузми учестаност дискретизације из "
+"одлива \n"
+" на који је ток прикључен.\n"
+" --fix-channels Преузми број и мапу канала из "
+"сливника на\n"
+" који је ток прикључен.\n"
+" --no-remix Без сажимања или раширивања броја "
+"канала.\n"
+" --no-remap Назначи канале по индексу уместо по "
+"називу.\n"
+" --latency=БАЈТОВА Тражи наведено кашњење у бајтовима.\n"
+" --process-time=БАЈТОВА Тражи наведено време процеса по "
+"захтеву у бајтовима.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"Компајлирано са libpulse %s\n"
+"Повезано са libpulse %s\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "Неисправна мапа канала „%s“\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "Неисправан параметар кашњења „%s“\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "Неисправан параметар за време процеса „%s“\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "Неисправни параметри узорка\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "Отварам ток %s са следећим параметрима узорка „%s“.\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "снима"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "Неуспела функција pa_mainloop_new().\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "Неуспела функција pa_context_connect(): %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "Неуспела функција pa_mainloop_run().\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "Неуспешно заустављање: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "Неуспешно настављање: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "УПОЗОРЕЊЕ: Звучни сервер није локални, не заустављам.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "Добих SIGINT, излазим.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "УПОЗОРЕЊЕ: Потлачени процес је прекинут сигналом %u\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [опције] ... \n"
+"\n"
+" -h, --help Прикажи ову помоћ\n"
+" --version Прикажи верзију\n"
+" -s, --server=СЕРВЕР Име сервера са којим се повезује\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"Компајлирано са libpulse %s\n"
+"Повезано са libpulse %s\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "Неуспешно добављање статистике: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "Тренутно у употреби: %u блокова садржи укупно %s бајтова.\n"
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr "Смештено од покретања: %u блокова садржи укупно %s бајтова.\n"
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "Величина кеш меморије узорка: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "Неуспешно добијање података о серверу: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"Корисничко име: %s\n"
+"Име домаћина: %s\n"
+"Име сервера: %s\n"
+"Верзија сервера: %s\n"
+"Подразумевани параметри узорка: %s\n"
+"Подразумевана мапа канала: %s\n"
+"Подразумевано сливник: %s\n"
+"Подразумевани извор: %s\n"
+"Колачић: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "Неуспешно добијање података о сливнику: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Сливник #%u\n"
+"\tСтање: %s\n"
+"\tИме: %s\n"
+"\tОпис: %s\n"
+"\tУправљачки програм: %s\n"
+"\tПараметри узорка: %s\n"
+"\tМапа канала: %s\n"
+"\tПрипада модулу: %u\n"
+"\tИскључен тон: %s\n"
+"\tЈачина звука: %s%s%s\n"
+"\t баланс %0.2f\n"
+"\tГласност баса: %s%s%s\n"
+"\tИзвор контролора: %s\n"
+"\tКашњење: %0.0f μs, подешено %0.0f μs\n"
+"\tЗаставице: %s%s%s%s%s%s\n"
+"\tСвојства:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "Није успело добављање података о извору: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Извор #%u\n"
+"\tСтање: %s\n"
+"\tИме: %s\n"
+"\tОпис: %s\n"
+"\tУправљачки програм: %s\n"
+"\tПараметри узорка: %s\n"
+"\tМапа канала: %s\n"
+"\tПрипада модулу: %u\n"
+"\tИскључен тон: %s\n"
+"\tЈачина звука: %s%s%s\n"
+"\t баланс %0.2f\n"
+"\tГласност баса: %s%s%s\n"
+"\tКонтролер сливника: %s\n"
+"\tКашњење: %0.0f μs, подешено %0.0f μs\n"
+"\tЗаставице: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "непознато"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "Неуспешно добијање података о модулу: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Модул #%u\n"
+"\tИме: %s\n"
+"\tПараметар: %s\n"
+"\tБројач коришћења: %s\n"
+"\tСвојства:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "Неуспешно добијање података о клијенту: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Клијент #%u\n"
+"\tУправљачки програм: %s\n"
+"\tПрипада модулу: %s\n"
+"\tСвојства:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "Неуспешно добијање података о картици: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Картица #%u\n"
+"\tИме: %s\n"
+"\tУправљачки програм: %s\n"
+"\tВласник модула: %s\n"
+"\tСвојства:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tПрофили:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tАктивни профил: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "Није успело добијање података о улазу сливника: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Улаз у сливник #%u\n"
+"\tУправљачки програм: %s\n"
+"\tПрипада модулу: %s\n"
+"\tКлијент: %s\n"
+"\tСливник: %u\n"
+"\tПараметри узорка: %s\n"
+"\tМапа канала: %s\n"
+"\tИскључен тон: %s\n"
+"\tЈачина звука: %s\n"
+"\t %s\n"
+"\t баланс %0.2f\n"
+"\tКашњење бафера: %0.0f μs\n"
+"\tКашњење сливника: %0.0f μs\n"
+"\tНачин дискретизације: %s\n"
+"\tСвојства:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "Није успело добијање података о излазу извора: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Излаз извора #%u\n"
+"\tУправљачки програм: %s\n"
+"\tПрипада модулу: %s\n"
+"\tКлијент: %s\n"
+"\tИзвор: %u\n"
+"\tПараметри узорка: %s\n"
+"\tМапа канала: %s\n"
+"\tКашњење бафера: %0.0f μs\n"
+"\tКашњење извора: %0.0f μs\n"
+"\tНачин дискретизације: %s\n"
+"\tСвојства:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "Није успело добављање података о узорку: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Узорак #%u\n"
+"\tИме: %s\n"
+"\tПараметри узорка: %s\n"
+"\tМапа канала: %s\n"
+"\tЈачина звука: %s\n"
+"\t %s\n"
+"\t баланс %0.2f\n"
+"\tДужина: %0.1fs\n"
+"\tВеличина: %s\n"
+"\tЛењ: %s\n"
+"\tИме датотеке: %s\n"
+"\tСвојства:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "Неуспех: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "Није успело учитавање узорка: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "Прерани крај датотеке\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [опције] stat\n"
+"%s [опције] list\n"
+"%s [опције] exit\n"
+"%s [опције] upload-sample ИМЕДАТОТЕКЕ [ИМЕ]\n"
+"%s [опције] play-sample ИМЕ [СЛИВНИК]\n"
+"%s [опције] remove-sample ИМЕ\n"
+"%s [опције] move-sink-input ИБ СЛИВНИКА\n"
+"%s [опције] move-source-output ИБ ИЗВОРА\n"
+"%s [опције] load-module ИМЕ [ПАРАМ. ...]\n"
+"%s [опције] unload-module ИБ\n"
+"%s [опције] suspend-sink [СЛИВНИК] 1|0\n"
+"%s [опције] suspend-source [ИЗВОР] 1|0\n"
+"%s [опције] set-card-profile [КАРТИЦА] [ПРОФИЛ] \n"
+"\n"
+" -h, --help Прикажи ову помоћ\n"
+" --version Прикажи верзију\n"
+"\n"
+" -s, --server=СЕРВЕР Име сервера на који се треба "
+"прикључити\n"
+" -n, --client-name=ИМЕ Како назвати овог клијента на "
+"серверу\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"Компајлирано са libpulse %s\n"
+"Повезано са libpulse %s\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "Наведите датотеку узорка коју треба учитати\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "Није успело отварање звучне датотеке.\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "Морате навести име узорка којег желите пустити\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "Морате навести име узорка којег желите уклонити\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "Морате навести индекс улаза у сливнику и сливник\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "Морате навести индекс излаза у извору и извор\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "Морате навести име и параметре модула.\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "Морате навести индекс модула\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "Морате навести име/индекс картице и име профила\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "Ни једна исправна наредба није наведена.\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D приказ] [-S сервер] [-O сливник] [-I извор] [-c датотека] [-d|-e|-i|-"
+"r]\n"
+"\n"
+" -d Прикажи тренутне PulseAudio податке закачене за X11 приказ "
+"(подразумевано)\n"
+" -e Извези локалне PulseAudio податке на X11 приказ\n"
+" -i Увези PulseAudio податке са X11 приказа у локалне променљиве окружења "
+"и датотеке колачића.\n"
+" -r Уклони PulseAudio податке са X11 приказа\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "Неуспешно тумачење командне линије.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "Сервер: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "Извор: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "Сливник: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "Колачић: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "Неуспешно тумачење података из колачића\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "Неуспешно записивање података колачића\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "Неуспешно учитавање клијентове датотеке подешавања.\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "Неуспешно читање података подешавања за окружење.\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "Неуспешно добијање FQDN-а.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "Неуспешно учитавање датотека колачића\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "Није још имплементирано.\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "Није успело убијање PulseAudio демона."
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "Демон се не одазива."
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA нас је пробудила да би записала нове податке на уређај, али нема ништа "
+"да се запише!\n"
+"Ово је највероватније грешка у ALSA управљачком програму „%s“. Пријавите "
+"овај проблем програмерима ALSA-е.\n"
+"Пробуђени смо са постављеним POLLOUT-ом -- али следећи snd_pcm_avail() је "
+"вратио 0 или неку другу вредност мању од min_avail."
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA нас је пробудила да би прочитала нове податке из уређаја, али нема "
+"ништа да се прочита!\n"
+"Ово је највероватније грешка у ALSA управљачком програму „%s“. Пријавите "
+"овај проблем програмерима ALSA-е.\n"
+"Пробуђени смо са постављеним POLLIN-ом -- али следећи snd_pcm_avail() је "
+"вратио 0 или неку другу вредност мању од min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "Излаз %s + улаз %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "Излаз %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "Улаз %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "Искључено"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "Репродукција високе тачности (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Двострано телефонирање (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio звучни систем"
diff --git a/po/sr@latin.po b/po/sr@latin.po
new file mode 100644
index 0000000..8ca9aec
--- /dev/null
+++ b/po/sr@latin.po
@@ -0,0 +1,2465 @@
+# Serbian(Latin) translations for pulseaudio
+# Copyright (C) 2006 Lennart Poettering
+# This file is distributed under the same license as the pulseaudio package.
+#
+# Igor Miletic (Igor Miletić) <grejigl-gnomeprevod@yahoo.ca>, 2009.
+# Miloš Komarčević <kmilos@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-07 23:02+0100\n"
+"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
+"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: UTF-8\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Lokalize 0.3\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "Analogni mono"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "Analogni stereo"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "Digitalni stereo (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "Digitalni stereo (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "Analogni okružujući 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+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:582
+msgid "Analog Surround 4.1"
+msgstr "Analogni okružujući 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "Analogni okružujući 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "Analogni okružujući 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "Digitalni okružujući 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "Analogni okružujući 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, 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() je vratio vrednost koja je neobično velika: %lu bajtova (%lu "
+"ms).\n"
+"Ovo je najverovatnije greška u „%s“ ALSA upravljačkom programu. Prijavite "
+"ovaj problem ALSA programerima."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, 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() je vratio vrednost koja je neobično velika: %li bajtova (%s%"
+"lu ms).\n"
+"Ovo je najverovatnije greška u „%s“ ALSA upravljačkom programu. Prijavite "
+"ovaj problem ALSA programerima."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, 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() je vratio vrednost koja je neobično velika: %lu "
+"bajtova (%lu ms).\n"
+"Ovo je najverovatnije greška u „%s“ ALSA upravljačkom programu. Prijavite "
+"ovaj problem ALSA programerima."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "Unutrašnji zvuk"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "Modem"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "Neuspešna pretraga za originalnim lt_dlopen učitavačem."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "Neuspešno smeštanje novog dl učitavača."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "Neuspešno dodavanje „poveži odmah“ učitavača."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "Nije se moguće priključiti na sistemsku magistralu: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "Ne mogu dobaviti pozivnika iz PID-a: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "Ne mogu postaviti UID za pozivnički objekat."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "Neuspešno dobavljanje CK sesije."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "Ne mogu postaviti UID za objekat sesije."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "Ne mogu postaviti PolKitAction."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "Ne mogu postaviti action_id"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "Ne mogu postaviti PolKitContext."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "Ne mogu inicijalizovati PolKitContex: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "Nije moguće odrediti ovlašćenje pozivnika: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "Ne mogu dobiti ovlašćenje: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit je odgovorio sa „%s“"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "Dobih signal %s."
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "Napuštam."
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "Ne mogu naći korisnika „%s“."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "Ne mogu naći grupu „%s“."
+
+#: ../src/daemon/main.c:191
+#, 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:196
+#, 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:201
+#, 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:204 ../src/daemon/main.c:209
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "Neuspešno pravljenje „%s“: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "Neuspešna promena grupnog spiska: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "Neuspešna promena GID-a: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "Neuspešna promena UID-a: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "Uspešno odbačena root ovlašćenja."
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "Režim za čitav sistem nije podržan na ovoj platformi."
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) nije uspelo: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "Neuspešno tumačenje komandne linije."
+
+#: ../src/daemon/main.c:500
+#, 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:507
+#, 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:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit nam je dao ovlašćenje za dobijanje visokog prioriteta."
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit odbija ovlašćenje za dobijanje visokog prioriteta."
+
+#: ../src/daemon/main.c:523
+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:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit odbija ovlašćenje za dobijanje rada u stvarnom vremenu."
+
+#
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"SUID root i stvarnovremensko i/ili visokoprioritetno raspoređivanje je "
+"zahtevano u podešavanjima. Međutim, nemamo potrebna ovlašćenja:\n"
+"nismo u grupi „%s“, PolicyKit odbija da nam dȃ tražena ovlašćenja i nemamo "
+"sredstava za povećanje RLIMIT_NICE/RLIMIT_RTPRIO ograničenja.\n"
+"Morate dobiti odgovarajuća PolicyKit ovlašćenja, ili postati član grupe „%"
+"s“, ili povećati ograničenja za RLIMIT_NICE/RLIMIT_RTPRIO sredstva ovog "
+"korisnika kako bi omogućili stvarnovremensko ili visokoprioritetno "
+"raspoređivanje."
+
+#: ../src/daemon/main.c:580
+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:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "Uspešno povećano RLIMIT_RTPRIO ograničenje"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "Neuspešno postavljanje RLIMIT_RTPRIO-a:%s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "Odustajem od CAP_NICE"
+
+#: ../src/daemon/main.c:626
+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:687
+msgid "Daemon not running"
+msgstr "Demon nije pokrenut"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "Demon je pokrenut sa PID-om %u"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "Neuspešno ubijanje demona: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"Nije nameravano da se ovaj program pokreće iz root naloga (osim u slučaju "
+"kada je --system navedeno)"
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "Potrebna su root ovlašćenja."
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "--start nije podržano za sistemske primerke."
+
+#: ../src/daemon/main.c:729
+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:732
+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:735
+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:740
+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:767
+msgid "Failed to acquire stdio."
+msgstr "Neuspešno pronalaženje standardnog ulaza/izlaza."
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "Neuspešno puštanje podataka kroz cev: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "Neuspela funkcija fork(): %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "Neuspela funkcija read(): %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "Neuspešno pokretanje demona."
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "Demon uspešno pokrenut."
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "Ovo je PulseAudio %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "Domaćin kompajliranja: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "CFLAGS kompajliranja: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "Pokrenut na domaćinu: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "Našao %u procesor(a)"
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "Veličina stranice je %lu bajtova"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Kompajlirano sa podrškom za Valgrind: da"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Kompajlirano sa podrškom za Valgrind: ne"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "Pokrenut u Valgrind režimu: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "Optimizovana izgradnja: da"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "Optimizovana izgradnja: ne"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG definisan, sva obaveštenja isključena."
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH definisan, samo obaveštenja brze putanje isključena."
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "Sva obaveštenja omogućena."
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "Neuspešno dobavljanje IB mašine"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "IB mašine je %s."
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "IB mašine je %s."
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "Koristi se %s izvršni direktorijum."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "Koristi se %s direktorijum stanja."
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "Pokrenuto u sistemskom režimu: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "Neuspela funkcija pa_pid_file_create()."
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "Dostupni su novi brojači visoke rezolucije! Prijatno!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+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:967
+msgid "pa_core_new() failed."
+msgstr "Neuspela funkcija pa_core_new()."
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "Neuspešno pokretanje demona."
+
+#: ../src/daemon/main.c:1034
+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:1051
+msgid "Daemon startup complete."
+msgstr "Pokretanje demona uspešno."
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "Pokrenuto gašenje demona."
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "Rad demona je prekinut."
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"NAREDBE:\n"
+" -h, --help Prikaži ovu pomoć\n"
+" --version Prikaži verziju\n"
+" --dump-conf Izlistaj podrazumevana podešavanja\n"
+" --dump-modules Izlistaj spisak dostupnih modula\n"
+" --dump-resample-methods Izlistaj dostupne vrednosti "
+"diskretizacije\n"
+" --cleanup-shm Očisti bajate delove deljene "
+"memorije\n"
+" --start Pokreni demon ako već nije pokrenut\n"
+" -k --kill Ubij pokrenuti demon\n"
+" --check Proveri postojanje pokrenutog demona "
+"(vraća samo izlazni kȏd)\n"
+"\n"
+"OPCIJE:\n"
+" --system[=logička vrednost] Pokreni kao sistemski primerak\n"
+" -D, --daemonize[=log. vrednost] Pokreni u pozadini\n"
+" --fail[=log. vrednost] Izađi posle neuspešnog pokretanja\n"
+" --high-priority[=log. vrednost] Pokušaj postaviti visokoprioritetno "
+"raspoređivanje\n"
+" (dostupno samo rootu, ili preko SUID-"
+"a ili\n"
+" sa povišenim RLIMIT_NICE nivoom)\n"
+" --realtime[=log. vrednost] Pokušaj omogućiti stvarnovremensko "
+"raspoređivanje\n"
+" (dostupno samo rootu, ili preko SUID-"
+"a ili\n"
+" sa povišenim RLIMIT_RTPRIO nivoom)\n"
+" --disallow-module-loading[=log.] Ne dozvoljavaj učitavanje/uklanjanje "
+"modula\n"
+" na korisnički zahtev posle "
+"pokretanja\n"
+" --disallow-exit[=log. vrednost] Ne dozvoljavaj izlaz na korisnički "
+"zahtev\n"
+" --exit-idle-time=SEKUNDI Prekini rad demona posle mirovanja\n"
+" od ovoliko sekundi\n"
+" --module-idle-time=SEKUNDI Ukloni samoučitane module posle "
+"mirovanja\n"
+" od ovoliko sekundi\n"
+" --scache-idle-time=SEKUNDI Ukloni samoučitane primerke posle "
+"mirovanja\n"
+" od ovoliko sekundi\n"
+" --log-level[=NIVO] Povećaj ili postavi nivo opširnosti\n"
+" -v Povećaj nivo opširnosti\n"
+" --log-target={auto,syslog,stderr} Navedi ciljni dnevnik\n"
+" --log-meta[=log. vrednost] Uključi mesto u kȏdu u porukama "
+"dnevnika\n"
+" --log-time[=log. vrednost] Uključi vreme u porukama dnevnika\n"
+" --log-backtrace=FRAMES Uključi tragove u porukama dnevnika\n"
+" -p, --dl-search-path=PUTANJA Postavi putanju pretrage za "
+"dinamički deljene\n"
+" objekte (dodatci)\n"
+" --resample-method=NAČIN Koristi navedeni način "
+"diskretizacije\n"
+" (Pogledaj --dump-resample-methods "
+"za\n"
+" moguće vrednosti)\n"
+" --use-pid-file[=log. vrednost] Napravi PID datoteku\n"
+" --no-cpu-limit[=log. vrednost] Nemoj instalirati ograničavanje "
+"procesorskog\n"
+" tereta na platformama koje to "
+"podržavaju.\n"
+" --disable-shm[=log. vrednost] Onemogući podršku za deljenu "
+"memoriju.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"PARAMETRI MODULA\" Učitaj navedeni modul dodatka sa\n"
+" navedenim parametrima\n"
+" -F, --file=IMEDATOTEKE Pokreni navedenu skriptu\n"
+" -C Otvori komandnu liniju na pokrenutom "
+"TTY-u\n"
+" posle pokretanja\n"
+"\n"
+" -n Ne učitavaj podrazumevanu datoteku "
+"skripte.\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail očekuje logičku vrednost"
+
+#: ../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 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
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:326
+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
+msgid "--log-time expects boolean argument"
+msgstr "--log-time očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "Neispravan način diskretizacije „%s“."
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit očekuje logičku vrednost"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm očekuje logičku vrednost"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "Ime: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "Podaci o modulu nisu dostupni\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "Verzija: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "Opis: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "Autor: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "Upotreba: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "Učitaj jednom: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "Putanja: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“."
+
+#: ../src/daemon/daemon-conf.c:231
+#, 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
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] Neispravan način diskretizacije „%s“."
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] Neispravan rlimit „%s“."
+
+#: ../src/daemon/daemon-conf.c:277
+#, 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
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] Neispravan format uzorka „%s“."
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] Neispravna učestanost diskretizacije „%s“."
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] Neispravni kanali uzorka „%s“."
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Neispravna mapa kanala „%s“."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] Neispravan broj odlomaka „%s“."
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] Neispravna veličina odlomka „%s“."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] Neispravan nivo prioriteta „%s“."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "Neuspelo otvaranje datoteke podešavanja: %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."
+msgstr ""
+"Navedena mapa kanala ima nema isti broj kanala kao što je navedeno u "
+"podrazumevanom broju kanala."
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### Pročitaj iz datoteke podešavanja: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "Odbacujem root povlastice."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "Uspešno ograničio mogućnosti na CAP_SYS_NICE."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio zvučni sistem"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "Pokreni PulseAudio zvučni sistem"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+"Visokoprioritetno raspoređivanje (negativni Unix nivoi finoće, tj. nice "
+"nivoi) za PulseAudio demona"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Stvarnovremensko raspoređivanje za PulseAudio demona"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"Sistemska politika sprečava PulseAudiu da dobije visokoprioritetno "
+"raspoređivanje."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+"Sistemska politika sprečava PulseAudiu da dobije stvarnovremensko "
+"raspoređivanje."
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "Mono"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "Prednji centralni"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "Prednji levi"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "Prednji desni"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "Pozadinski centralni"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "Pozadinski levi"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "Pozadinski desni"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "Zvučnik za niske frekvencije"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "Prednji levo od centra"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "Prednji desno od centra"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "Leva strana"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "Desna strana"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "Sporedni 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "Sporedni 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "Sporedni 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "Sporedni 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "Sporedni 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "Sporedni 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "Sporedni 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "Sporedni 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "Sporedni 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "Sporedni 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "Sporedni 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "Sporedni 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "Sporedni 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "Sporedni 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "Sporedni 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "Sporedni 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "Sporedni 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "Sporedni 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "Sporedni 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "Sporedni 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "Sporedni 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "Sporedni 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "Sporedni 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "Sporedni 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "Sporedni 024"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "Sporedni 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "Sporedni 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "Sporedni 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "Sporedni 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "Sporedni 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "Sporedni 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "Sporedni 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "Gornji centralni"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "Gornji prednji centralni"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "Gornji prednji levi"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "Gornji prednji desni"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "Gornji pozadinski centralni"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "Gornji pozadinski levi"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(neispravno)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "Stereo"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "Okružujući 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "Okružujući 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "Okružujući 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "Okružujući 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "Okružujući 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "U redu"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "Zabranjen pristup"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "Nepoznata naredba"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "Neispravan parametar"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "Entitet postoji"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "Ne postoji takav entitet"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "Veza odbijena"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "Greška u protokolu"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "Vreme isteklo"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "Nema ključa za autorizaciju"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "Interna greška"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "Veza prekinuta"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "Entitet ubijen"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "Server neispravan"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "Inicijalizacija modula nije uspela"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "Loše stanje"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "Nema podataka"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "Neusaglašena verzija protokola"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "Preveliko"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "Nije podržano"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "Kȏd greške je nepoznat"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "Ne postoji takva ekstenzija"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "Izbačena funkcionalnost"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "Nije odrađeno"
+
+# Nisam siguran da imamo reč za fork. Možda da koristimo forkiranje? Ružno zvuči, ali grananje nije najbolje. -- Igor
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "Klijent izračvan"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "Neuspela funkcija XOpenDisplay()"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "Neuspešno tumačenje podataka iz kolačića"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "Neuspešno otvaranje datoteke podešavanja „%s“: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "Kolačić nije učitan. Pokušavam se povezati bez kolačića."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "Primio poruku za nepoznati lokal „%s“"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "Neuspela funkcija pa_stream_write(): %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "Neuspela funkcija pa_stream_peek(): %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "Tok uspešno napravljen.\n"
+
+#: ../src/utils/pacat.c:172
+#, 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
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "Metrike bafera: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, 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
+#, 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
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "Greška toka: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "Uređaj toka obustavljen.%s\n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "Uređaj toka nastavljen.%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "Tok nije popunjen. %s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "Tok se preliva.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "Tok pokrenut. %s \n"
+
+#: ../src/utils/pacat.c:238
+#, 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
+msgid "not "
+msgstr "nije"
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "Parametri bafera toka su promenjeni. %s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "Veza uspostavljena.%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "Neuspela funkcija pa_stream_new() : %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "Neuspela funkcija pa_stream_connect_playback(): %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "Neuspela funkcija read(): %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "Neuspela funkcija write(): %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "Dobio signal, izlazim.\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "Nemogu dobiti vrednost kašnjenja: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s[opcije]\n"
+"\n"
+" -h, --help Prikaži ovu pomoć\n"
+" --version Prikaži verziju\n"
+"\n"
+" -r, --record Napravi vezu za snimanje\n"
+" -p, --playback Napravi vezu za reprodukciju\n"
+"\n"
+" -v, --verbose Omogući opširan opis radnje\n"
+"\n"
+" -s, --server=SERVER Naziv servera sa kojim će se "
+"povezati\n"
+" -d, --device=UREĐAJ Naziv slivnika/izvora na koji će se "
+"povezati\n"
+" -n, --client-name=IME Kako nazvati ovog klijenta na "
+"serveru\n"
+" --stream-name=IME Kako nazvati ovaj tok na serveru\n"
+" --volume=GLASNOST Navedi početnu jačinu zvuka između "
+"0...65536 (linearna skala)\n"
+" --rate=UČESTANOST Učestanost diskretizacije u hercima "
+"(podrazumevana 44100)\n"
+" --format=FORMATUZORKA Format uzorka, jedno od s16le, s16be, "
+"u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(podrazumevano s16ne)\n"
+" --channels=BROJKANALA Broj kanala, 1 za mono, 2 za stereo\n"
+" (podrazumevano 2)\n"
+" --channel-map=MAPAKANALA Mapu kanala koju treba koristiti "
+"umesto podrazumevane\n"
+" --fix-format Preuzmi format uzorka iz slivnika\n"
+" na koji je tok priključen.\n"
+" --fix-rate Preuzmi učestanost diskretizacije iz "
+"odliva \n"
+" na koji je tok priključen.\n"
+" --fix-channels Preuzmi broj i mapu kanala iz "
+"slivnika na\n"
+" koji je tok priključen.\n"
+" --no-remix Bez sažimanja ili raširivanja broja "
+"kanala.\n"
+" --no-remap Naznači kanale po indeksu umesto po "
+"nazivu.\n"
+" --latency=BAJTOVA Traži navedeno kašnjenje u "
+"bajtovima.\n"
+" --process-time=BAJTOVA Traži navedeno vreme procesa po "
+"zahtevu u bajtovima.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"Kompajlirano sa libpulse %s\n"
+"Povezano sa libpulse %s\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "Neispravna mapa kanala „%s“\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "Neispravan parametar kašnjenja „%s“\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "Neispravan parametar za vreme procesa „%s“\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "Neispravni parametri uzorka\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "Otvaram tok %s sa sledećim parametrima uzorka „%s“.\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "snima"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "Neuspela funkcija pa_mainloop_new().\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, c-format
+msgid "pa_context_new() failed.\n"
+msgstr "Neuspela funkcija 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"
+msgstr "Neuspela funkcija pa_context_connect(): %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "Neuspela funkcija pa_mainloop_run().\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "Neuspešno zaustavljanje: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "Neuspešno nastavljanje: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+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
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "Dobih SIGINT, izlazim.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "UPOZORENJE: Potlačeni proces je prekinut signalom %u\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [opcije] ... \n"
+"\n"
+" -h, --help Prikaži ovu pomoć\n"
+" --version Prikaži verziju\n"
+" -s, --server=SERVER Ime servera sa kojim se povezuje\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"Kompajlirano sa libpulse %s\n"
+"Povezano sa libpulse %s\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "Neuspešno dobavljanje statistike: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, 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
+#, 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
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "Veličina keš memorije uzorka: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "Neuspešno dobijanje podataka o serveru: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"Korisničko ime: %s\n"
+"Ime domaćina: %s\n"
+"Ime servera: %s\n"
+"Verzija servera: %s\n"
+"Podrazumevani parametri uzorka: %s\n"
+"Podrazumevana mapa kanala: %s\n"
+"Podrazumevano slivnik: %s\n"
+"Podrazumevani izvor: %s\n"
+"Kolačić: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "Neuspešno dobijanje podataka o slivniku: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Slivnik #%u\n"
+"\tStanje: %s\n"
+"\tIme: %s\n"
+"\tOpis: %s\n"
+"\tUpravljački program: %s\n"
+"\tParametri uzorka: %s\n"
+"\tMapa kanala: %s\n"
+"\tPripada modulu: %u\n"
+"\tIsključen ton: %s\n"
+"\tJačina zvuka: %s%s%s\n"
+"\t balans %0.2f\n"
+"\tGlasnost basa: %s%s%s\n"
+"\tIzvor kontrolora: %s\n"
+"\tKašnjenje: %0.0f μs, podešeno %0.0f μs\n"
+"\tZastavice: %s%s%s%s%s%s\n"
+"\tSvojstva:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "Nije uspelo dobavljanje podataka o izvoru: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Izvor #%u\n"
+"\tStanje: %s\n"
+"\tIme: %s\n"
+"\tOpis: %s\n"
+"\tUpravljački program: %s\n"
+"\tParametri uzorka: %s\n"
+"\tMapa kanala: %s\n"
+"\tPripada modulu: %u\n"
+"\tIsključen ton: %s\n"
+"\tJačina zvuka: %s%s%s\n"
+"\t balans %0.2f\n"
+"\tGlasnost basa: %s%s%s\n"
+"\tKontroler slivnika: %s\n"
+"\tKašnjenje: %0.0f μs, podešeno %0.0f μs\n"
+"\tZastavice: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "nepoznato"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "Neuspešno dobijanje podataka o modulu: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Modul #%u\n"
+"\tIme: %s\n"
+"\tParametar: %s\n"
+"\tBrojač korišćenja: %s\n"
+"\tSvojstva:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "Neuspešno dobijanje podataka o klijentu: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Klijent #%u\n"
+"\tUpravljački program: %s\n"
+"\tPripada modulu: %s\n"
+"\tSvojstva:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "Neuspešno dobijanje podataka o kartici: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Kartica #%u\n"
+"\tIme: %s\n"
+"\tUpravljački program: %s\n"
+"\tVlasnik modula: %s\n"
+"\tSvojstva:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tProfili:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tAktivni profil: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, 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
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Ulaz u slivnik #%u\n"
+"\tUpravljački program: %s\n"
+"\tPripada modulu: %s\n"
+"\tKlijent: %s\n"
+"\tSlivnik: %u\n"
+"\tParametri uzorka: %s\n"
+"\tMapa kanala: %s\n"
+"\tIsključen ton: %s\n"
+"\tJačina zvuka: %s\n"
+"\t %s\n"
+"\t balans %0.2f\n"
+"\tKašnjenje bafera: %0.0f μs\n"
+"\tKašnjenje slivnika: %0.0f μs\n"
+"\tNačin diskretizacije: %s\n"
+"\tSvojstva:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, 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
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Izlaz izvora #%u\n"
+"\tUpravljački program: %s\n"
+"\tPripada modulu: %s\n"
+"\tKlijent: %s\n"
+"\tIzvor: %u\n"
+"\tParametri uzorka: %s\n"
+"\tMapa kanala: %s\n"
+"\tKašnjenje bafera: %0.0f μs\n"
+"\tKašnjenje izvora: %0.0f μs\n"
+"\tNačin diskretizacije: %s\n"
+"\tSvojstva:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Uzorak #%u\n"
+"\tIme: %s\n"
+"\tParametri uzorka: %s\n"
+"\tMapa kanala: %s\n"
+"\tJačina zvuka: %s\n"
+"\t %s\n"
+"\t balans %0.2f\n"
+"\tDužina: %0.1fs\n"
+"\tVeličina: %s\n"
+"\tLenj: %s\n"
+"\tIme datoteke: %s\n"
+"\tSvojstva:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "Neuspeh: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "Nije uspelo učitavanje uzorka: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "Prerani kraj datoteke\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [opcije] stat\n"
+"%s [opcije] list\n"
+"%s [opcije] exit\n"
+"%s [opcije] upload-sample IMEDATOTEKE [IME]\n"
+"%s [opcije] play-sample IME [SLIVNIK]\n"
+"%s [opcije] remove-sample IME\n"
+"%s [opcije] move-sink-input IB SLIVNIKA\n"
+"%s [opcije] move-source-output IB IZVORA\n"
+"%s [opcije] load-module IME [PARAM. ...]\n"
+"%s [opcije] unload-module IB\n"
+"%s [opcije] suspend-sink [SLIVNIK] 1|0\n"
+"%s [opcije] suspend-source [IZVOR] 1|0\n"
+"%s [opcije] set-card-profile [KARTICA] [PROFIL] \n"
+"\n"
+" -h, --help Prikaži ovu pomoć\n"
+" --version Prikaži verziju\n"
+"\n"
+" -s, --server=SERVER Ime servera na koji se treba "
+"priključiti\n"
+" -n, --client-name=IME Kako nazvati ovog klijenta na "
+"serveru\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"Kompajlirano sa libpulse %s\n"
+"Povezano sa libpulse %s\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+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
+msgid "Failed to open sound file.\n"
+msgstr "Nije uspelo otvaranje zvučne datoteke.\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+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
+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
+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
+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
+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
+msgid "You have to specify a module index\n"
+msgstr "Morate navesti indeks modula\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 "Možete navesti samo jedan slivnik. Morate navesti logičku vrednost.\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 "Možete navesti samo jedan izvor. Morate navesti logičku vrednost.\n"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+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
+msgid "No valid command specified.\n"
+msgstr "Ni jedna ispravna naredba nije navedena.\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D prikaz] [-S server] [-O slivnik] [-I izvor] [-c datoteka] [-d|-e|-i|-"
+"r]\n"
+"\n"
+" -d Prikaži trenutne PulseAudio podatke zakačene za X11 prikaz "
+"(podrazumevano)\n"
+" -e Izvezi lokalne PulseAudio podatke na X11 prikaz\n"
+" -i Uvezi PulseAudio podatke sa X11 prikaza u lokalne promenljive "
+"okruženja i datoteke kolačića.\n"
+" -r Ukloni PulseAudio podatke sa X11 prikaza\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "Neuspešno tumačenje komandne linije.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "Server: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "Izvor: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "Slivnik: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "Kolačić: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "Neuspešno tumačenje podataka iz kolačića\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "Neuspešno zapisivanje podataka kolačića\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "Neuspešno učitavanje klijentove datoteke podešavanja.\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "Neuspešno čitanje podataka podešavanja za okruženje.\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "Neuspešno dobijanje FQDN-a.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "Neuspešno učitavanje datoteka kolačića\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "Nije još implementirano.\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "Nije uspelo ubijanje PulseAudio demona."
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "Demon se ne odaziva."
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA nas je probudila da bi zapisala nove podatke na uređaj, ali nema ništa "
+"da se zapiše!\n"
+"Ovo je najverovatnije greška u ALSA upravljačkom programu „%s“. Prijavite "
+"ovaj problem programerima ALSA-e.\n"
+"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
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA nas je probudila da bi pročitala nove podatke iz uređaja, ali nema "
+"ništa da se pročita!\n"
+"Ovo je najverovatnije greška u ALSA upravljačkom programu „%s“. Prijavite "
+"ovaj problem programerima ALSA-e.\n"
+"Probuđeni smo sa postavljenim POLLIN-om -- ali sledeći snd_pcm_avail() je "
+"vratio 0 ili neku drugu vrednost manju od min_avail."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "Izlaz %s + ulaz %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "Izlaz %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "Ulaz %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "Isključeno"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "Reprodukcija visoke tačnosti (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "Dvostrano telefoniranje (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio zvučni sistem"
diff --git a/po/sv.po b/po/sv.po
index 2e3d17e..d8bc3ab 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-03-05 12:27+0100\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
"PO-Revision-Date: 2008-09-05 18:24+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -19,47 +19,47 @@ msgstr ""
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, 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:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, 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:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, 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:1963
+#: ../src/pulsecore/sink.c:2141
#, fuzzy
msgid "Internal Audio"
msgstr "Internt fel"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
msgstr ""
@@ -162,104 +162,104 @@ msgstr ""
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit svarade med \"%s\""
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "Fick signal %s."
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "Avslutar."
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "Misslyckades med att hitta användaren \"%s\"."
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "Misslyckades med att hitta gruppen \"%s\"."
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:193
+#: ../src/daemon/main.c:196
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:198
+#: ../src/daemon/main.c:201
#, 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:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Misslyckades med att skapa \"%s\": %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:465
+#: ../src/daemon/main.c:507
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, 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:538
+#: ../src/daemon/main.c:580
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO misslyckades: %s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -317,168 +317,185 @@ msgstr ""
"Detta program är inte tänkt att köras som root (såvida inte --system har "
"angivits)."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:719
#, fuzzy
msgid "Root privileges required."
msgstr "Root-behörighet krävs."
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "--start stöds inte för systeminstanser."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:732
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:693
+#: ../src/daemon/main.c:735
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:698
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "pipe misslyckades: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "fork() misslyckades: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "read() misslyckades: %s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "Detta är PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, c-format
+msgid "Session ID is %s."
+msgstr ""
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr ""
@@ -1137,30 +1154,30 @@ msgstr ""
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() misslyckades"
-#: ../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 "Misslyckades med att öppna konfigurationsfilen \"%s\": %s"
-#: ../src/pulse/context.c:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
@@ -1244,88 +1261,93 @@ msgstr ""
msgid "not "
msgstr "inte "
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr ""
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr ""
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() misslyckades: %s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() misslyckades: %s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() misslyckades: %s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Anslutningsfel: %s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../src/utils/pacat.c:349 ../src/utils/paplay.c:75
#, c-format
msgid "Failed to drain stream: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:346 ../src/utils/paplay.c:80
+#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
#, c-format
msgid "Playback stream drained.\n"
msgstr ""
-#: ../src/utils/pacat.c:356 ../src/utils/paplay.c:92
+#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
#, c-format
msgid "Draining connection to server.\n"
msgstr ""
-#: ../src/utils/pacat.c:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "Fick filslut.\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read() misslyckades: %s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write() misslyckades: %s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr ""
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr ""
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, 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:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() misslyckades: %s\n"
-#: ../src/utils/pacat.c:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1378,7 +1400,7 @@ msgid ""
"per request in bytes.\n"
msgstr ""
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1386,88 +1408,88 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr ""
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
msgid "Channel map doesn't match sample specification\n"
msgstr ""
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr ""
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr ""
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr ""
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "För många argument.\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() misslyckades.\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() misslyckades.\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() misslyckades.\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -2054,6 +2076,60 @@ msgstr ""
msgid "Cannot access autospawn lock."
msgstr ""
+#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr ""
+
#, fuzzy
#~ msgid "--log-time boolean argument"
#~ msgstr "--disallow-exit booleskt argument"
diff --git a/po/ta.po b/po/ta.po
new file mode 100644
index 0000000..7729139
--- /dev/null
+++ b/po/ta.po
@@ -0,0 +1,2454 @@
+# translation of pulseaudio.master-tx.pulseaudio.po to Tamil
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# I. Felix <ifelix@redhat.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-12 05:02+0530\n"
+"Last-Translator: I. Felix <ifelix@redhat.com>\n"
+"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\\n\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "Analog Mono"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "Analog Stereo"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "Digital Stereo (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "Digital Stereo (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "Analog Surround 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "Digital Surround 4.0 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "Analog Surround 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "Analog Surround 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "Analog Surround 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "Digital Surround 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "Analog Surround 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, 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() 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."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, 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() 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."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, 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() 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."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "உட்புற ஆடியோ"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "மாதிரி"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "அசல் lt_dlopen ஏற்றியை காண முடியவில்லை."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "புதிய dl ஏற்றுபவரை ஒதுக்கிருவதில் தோல்வி."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "இப்போது பிணைக்கும் ஏற்பியை சேர்ப்பதில் தோல்வி."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "கணினி பஸ்ஸை இணைக்க முடியவில்லை: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID லிருந்து அழைப்பாளரை பெற முடியவில்லை: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "UID க்கு அழைப்பாளர் பொருளை அமைக்க முடியவில்லை."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK அமர்வை பெறுவதில் தோல்வி."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "அமர்வு பொருளில் UIDஐ அமைக்க முடியவில்லை."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitActionஐ ஒதுக்க இயலவில்லை."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "செயலை அமைக்க முடியவில்லை (_i)"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContextஐ ஒஉக்கிட முடியசவில்லை."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContextஐ துவக்க முடியவில்லை: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "அழைப்பாளர் அங்கீகரிக்கப்பட்டவரா என்பயை நிச்சயிக்க முடியவில்லை: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "authஐ பெற முடியவில்லை: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "'%s'உடன் பாலிஸிகிட் ஒத்துபோகிறது"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "%sக்கு சிக்னல் கிடைத்துவிட்டது."
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "வெளியேறுதல்."
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "'%s' பயனரை கண்டுபிடிப்பதில் தோல்வி."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "'%s' குழுவை கண்டுபிடிப்பதில் தோல்வி."
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "GID ன் பயனர் '%s' மற்றும் '%s' குழுவுடன் ஒத்து போகவில்லை."
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s'ஐ உருவாக்க முடியவில்லை: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "குழுப் பட்டியலை மாற்ற முடியவில்லை: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GIDக்கு மாற்றுவதில் தோல்வி: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UIDக்கு மாற்றுவதில் தோல்வி: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "ரூட் முன்னுரிமைகள் வெற்றிகரமாக விடப்பட்டது."
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "இந்த தளத்தில் கணினியின் திறந்த முறைமை துணைபுரியவில்லை."
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) தோல்வியுற்றது: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "கட்டளை வரியை மாற்றுவதில் தோல்வி."
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr ""
+"நாம் குழு '%s'ல் இருந்த போது , உயர்ந்த முதன்மை அட்டவணைப்படுத்த அனுமதி "
+"அளிக்கப்பட்டிருந்தது."
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "குழு '%s'இல் இருக்கிறோம், நிகழ்நேர திட்டமிடுதலை அனுமதிக்கிறது."
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "நமக்காக PolicyKit உயர்ந்த முக்கிய முன்னுரிமையை வழங்குகிறது."
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit உயர்ந்த முக்கிய முன்னுரிமையை மறுக்கிறது."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit acquire-real-time முன்னுரிமைகளை கொடுக்கிறது."
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit acquire-real-time முன்னுரிமைகளை நிராகரிக்கிறது."
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"உயர்ந்த சலுகைகளின் அட்டவணையை கட்டமைப்பில் செயல்படுத்தப்பட்டது ஆனால் பாலிசியால் "
+"அனுமதிக்கப்படவில்லை."
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "வெற்றிகரமாக அதிகரிக்கப்பட்டது RLIMIT_RTPRIO"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO தோல்வியுற்றது: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr ""
+"CAP_NICEஐ மேலே கொடுக்கிறது (_N\n"
+")"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"நிகழ்நேர திட்டமிடுதல் கட்டமைப்பில் செயல்படுத்தப்பட்டது ஆனால் கொள்கையால் அனுமதிக்கப்படுவதில்லை"
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "டோமோன் இயங்கவில்லை"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "PID %uவாக டோமோன் இயங்குகிறது"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "டோமோனுக்கு முடிவு கட்டுவதில் தோல்வி: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr "இந்த நிரல் ரூட்டாக இயங்க முடியவில்லை (--system குறிப்பிடாத வரை)."
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "ரூட் முன்னுரிமைகள் தேவைப்படுகிறது."
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "--start கணினி நிகழ்வில் துணைபுரியவில்லை."
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "கணினி முறைமையில் இயங்குகிறது, ஆனால் --disallow-exit அமைக்கப்படவில்லை!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr ""
+"கணினி முறைமையில் இயங்குகிறது, ஆனால் --disallow-module-loading அமைக்கப்படவில்லை!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "கணினி முறைமையில் இயங்குகிறது, SHM முறைமை செயல்நீக்குதல் கட்டாயப்படுத்துகிறது!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr "கணினி முறைமையில் இயங்குகிறது, வெறுமை நேரத்தை செயல்நீக்க கட்டாயப்படுத்துகிறது!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdioஐ பெற முடியவில்லை."
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "பைப் தோல்வியுற்றது: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() தோல்வியுற்றது: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "வாசிப்பதில்() தோல்வியுற்றது: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "டோமோனை துவக்குவதில் தோல்வியுற்றது."
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "டோமோனை வெற்றிகரமாக துவக்ககப்பட்டது."
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "இது தான் பள்ஸ் ஆடியோ %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "தொகுக்கப்பட்ட புரவலன்: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "தொகுப்பு CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "புரவலனாக இயங்குகிறத: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "CPUs %uவில் காணப்படுகிறது ."
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "பக்க அளவுகள் %lu பைட்ஸ்"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Compiled with Valgrind support: yes"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Compiled with Valgrind support: no"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind முறைமையில் இயங்குகிறது: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "Optimized build: yes"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "சுருக்கமான உருவாக்கம்: இல்லை"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr ""
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr ""
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "கணினி குறியீடை பெறுவதில் தோல்வி"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "கணினி குறியீடு %s."
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "கணினி குறியீடு %s."
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "ஓடும்நேரம் %s அடைவை பயன்படுத்துகிறது."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "%s நிலை அடைவினை பயன்படுத்துகிறது."
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "கணினியின் முறைமையில் இயங்குகிறது: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() தோல்வியுற்றது."
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "உயர்ந்த திரைத்திறன் நேரம்காட்டி கிடைக்கிளது! Bon appetit!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() தோல்வியுற்றது."
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "டோமோனை ஆரம்பிப்பதில் தோல்வி."
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "டீமான் துவக்கம் எந்த தொகுதிகளும் ஏற்றப்படாமல், வேலையை நிராகரிக்கிறது."
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "டோமோன் துவக்குவது முடிவடைந்தது."
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "டோமோன் பணிநிறுத்தம் முனைகிறது."
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "டோமோன் நீக்கப்பட்டுது."
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../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 பதிவு நிலை அளவுருவை எதிர்பார்க்கிறது (எண் 0..4 அல்லது debug, info, "
+"notice, warn, errorஇல் ஒன்று)."
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "தவறான பதிவு இலக்கு: 'syslog', 'stderr' அல்லது 'auto'ஐ பயன்படுத்தவும்."
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "தவறான மறுமாதிரி முறை '%s'."
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm பூலியன் அளவுரு எதிர்பார்க்கிறது"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "பெயர்: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "தொகுதி தகவல் கிடைக்கப் பெறவில்லை\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "பதிப்பு: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "விளக்கம்: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "ஆசிரியர்: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "பயன்பாடு: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "ஒருமுறை ஏற்றப்பட்டது: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "பாதை: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'."
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'."
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] தவறான மறுமாதிரி முறை '%s'."
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] தவறான rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit இந்த தளத்தில் துணைபுரியவில்லை."
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] தவறான மாதிரி முறை '%s'."
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] தவறான மாதிரி விலை '%s'."
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] தவறான மாதிரி சேனல்கள் '%s'."
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] தவறான சேனல் படம் '%s'."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] பகுப்பு '%s'க்கு தவறான எண்"
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] தவறான பகுப்பு அளவு '%s'."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] தவறான நல்ல நிலை '%s'."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "கட்டமைக்கப்பட்ட கோப்பினை திறப்பதில் தோல்வி: %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."
+msgstr ""
+"குறிப்பிட்ட முன்னிருப்பு சேனல் மேப் வேறுபட்ட சேனல்களின் எண்ணிக்கையை குறிப்பிட்ட "
+"முன்னிருப்பு சேனல்களின் எண்ணிக்கையை விட கொண்டுள்ளது"
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### கட்டமைப்பு கோப்பிலிருந்து வாசிக்கவும்: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "ரூட் முன்னுரிமைகள் விடுபடுகிறது."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "குறிப்பிட்ட திறன்கள் CAP_SYS_NICEக்கு அமைக்கப்பட்டது."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "பள்ஸ் ஆடியோ ஒலி கணினி"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "பள்ஸ் ஆடியோ ஒலி கணினியை துவக்கவும"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+"அதிக முன்னுரிமையுள்ள திட்டமிடுதல் (negative Unix nice level) PulseAudio daemonக்கு"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio daemonக்கான நிகழ்நேர திட்டமிடுதல்"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"கணினி கொள்கை PulseAudioஐ அதிக முன்னுரிமை திட்டமிடுதலை பெறுவதிலிருந்து தடுக்கிறது."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr "கணினி கொள்கை PulseAudio ஐ நிகழ்நேர திட்டமிடுதலை எடுக்கிறது."
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "மோனோ"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "முன் நடுவில்"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "முன் இடது"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "முன் வலது"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "பின் நடுவில்"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "பின் இடது"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "பின் வலது"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "குறைந்த அலைவரிசை எம்மிட்டர்"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "முன் இடது பக்கத்தின் நடுவில்"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "முன் வலது பக்கத்தின் நடுவில்"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "இடது பக்கம்"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "வலது பக்கம்"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "Auxiliary 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "Auxiliary 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "Auxiliary 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "Auxiliary 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "Auxiliary 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "Auxiliary 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "Auxiliary 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "Auxiliary 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "Auxiliary 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "Auxiliary 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "Auxiliary 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "Auxiliary 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "Auxiliary 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "Auxiliary 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "Auxiliary 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "Auxiliary 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "Auxiliary 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "Auxiliary 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "Auxiliary 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "Auxiliary 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "Auxiliary 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "Auxiliary 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "Auxiliary 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "Auxiliary 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "Auxiliary 24"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "Auxiliary 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "Auxiliary 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "Auxiliary 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "Auxiliary 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "Auxiliary 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "Auxiliary 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "Auxiliary 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "மேல் நடுவில"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "மேலை முன் நடுவில்"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "மேலே முன் இடது"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "மேலே முன் வலது"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "மேலே பின் நடுவில்"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "மேலே பின் இடது"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(தவறான)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "ஸ்டிரியோ"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "Surround 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "Surround 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "Surround 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "Surround 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "Surround 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "சரி"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "அணுகல் மறுக்கப்பட்டது"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "தெரியாத கட்டளை"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "தவறான விவாதம்"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "உருப்படி உள்ளது"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "உருப்படி எதுவும் இல்லை"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "இணைப்பு மறுக்கப்பட்டது"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "அறிக்கை பிழை"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "நேரம் முடிவுற்றது"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "அங்கீகார விசை இல்லை"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "உட்புற பிழை"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "இணைப்பு துண்டிக்கப்பட்டது"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "உருப்படி நீக்கப்பட்டது"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "தவறான புரவலன்"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "தொகுதியை துவக்க முடியவில்லை"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "தவறான நிலை"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "தரவு இல்லை"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "நெறிமுறை பதிப்பு உகந்ததல்ல"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "மிகப் பெரியது"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "துணைப்புரியாத"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "தெரியாத பிழைக் குறியீடு"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "இது போன்ற தொடர்ச்சி இல்லை"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "நீக்கப்படும் செயல்பாடு"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "விடுபட்ட செயல்பாடு"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "கிளையன் நீக்கப்பட்டது"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenகாட்சி() தோல்வியுற்றது"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "குக்கீ தரவை மாற்றுவதில் தோல்வியுற்றது"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "'%s'கட்டமைக்கப்பட்ட கோப்பினை திறக்க முடியவில்லை: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "குக்கி ஏற்றப்படவில்லை. இணைப்பில்லாமல் முயற்சிக்கிறது."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "தெரியாத தொடரிச்சியிலிருந்து '%s'க்கு செய்திகள் பெறப்பட்டன"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() தோல்வியுற்றது: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() தோல்வியுற்றது: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "ஸ்டிரீம் வெற்றிகரமாக உருவாக்கப்பட்டது.\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() தோல்வியுற்றது: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "குறிப்பிட்ட குறிப்பு '%s', சேனல் மேப் '%s'ஐ பயன்படுத்தி.\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "%s சாதனத்துடன் இணைக்கப்பட்டது (%u, %ssuspended).\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "ஸ்டிரீம் பிழை: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "ஸ்டீரிம் சாதனம் இடைநீக்கப்பட்டது.%s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "ஸ்டீரிம் சாதனம் தொடர்கிறது.%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "ஸ்டீரிம் இயங்குகிறது.%s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "ஸ்டீரிம் அதிகளவு இயங்கியது.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "ஸ்டிரீம் %s துவக்கப்பட்டது \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "ஸ்டிரீம் %s இயக்கிக்கு நகர்ந்தது (%u, %ssuspended).%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "இல்லை"
+
+#: ../src/utils/pacat.c:245
+#, fuzzy, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "ஸ்டீரிம் இயங்குகிறது.%s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "இணைப்பு துவக்கப்பட்டது.%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() தோல்வியுற்றது: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() தோல்வியுற்றது: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "வாசிப்பதில் () தோல்வியுற்றது: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "எழுதுவதில் () தோல்வியுற்றது: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "சிக்னல் கிடைத்தது, வெளியேறுகிறது.\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "லடன்சியை பெற முடியவில்லை: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "தவறான சேனல் வரைபடம் '%s'\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "தவறான லேடன்சி குறிப்பீடு '%s'\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "தவறான செயல் நேர குறிப்பீடு '%s'\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "தவறான மாதிரி குறிப்பீடு\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "ஒரு %s ஸ்டீரமை மாதிரி குறிப்பீடு '%s'உடன் திறக்கிறது.\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "ஒலிப்பதிவு"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() தோல்வி.\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() தோல்வி: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() தோல்வி.\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "நீக்க முடியவில்லை: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "தொடர முடியவில்லை: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "எச்சரிக்கை: ஒலி சேவையம் உள்ளமைவாக இல்லை, இடைநிறுத்தப்படவில்லை.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT பெறப்பட்டது, வெளியேறுகிறது.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "எச்சரிக்கை: சேய் செயல் சிக்னல் %uஆல் முடிக்கப்பட்டது\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [விருப்பங்கள்] ... \n"
+"\n"
+" -h, --உதவி இந்த உதவியை காட்டு\n"
+" --பதிப்பு பதிப்பினைக் காட்டு\n"
+" -s, --சேவையகம்=SERVER பெயரிடப்பட்ட சேவையகம் இணைக்கப்பட வேண்டும்\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "புள்ளிவிவரத்தை பெற இயலாது: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "தற்போது பயனிலுள்ளது: %u தொகுதிகள் %s பைட்களை மொத்தமாக கொண்டுள்ளது.\n"
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr ""
+"வாழ்க்கை முழுவதும் ஒதுக்கப்பட்டது: %u தொகுதிகள் %s பைட்களை மொத்தமாக கொண்டுள்ளது.\n"
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "மாதிரி இடையக அளவு: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "சேவையகத்தின் தகவலை பெற இயலவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"பயனர் பெயர்: %s\n"
+"புரவலன் பெயர்: %s\n"
+"Server பெயர்: %s\n"
+"Server பதிப்பு: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"முன்னிருப்பு மூலங்கள்: %s\n"
+"கூக்கி: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "சுருக்கமான தகவலை பெறு முடியவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"சுருக்கம் #%u\n"
+"\tமாநிலம்: %s\n"
+"\tபெயர்: %s\n"
+"\tவிளக்கம்: %s\n"
+"\tஇயக்கி: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner முறைமை: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t மீதி %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "மூலத்தின் தகவலை பெற இயலவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"மூலம் #%u\n"
+"\tநிலை: %s\n"
+"\tபெயர்: %s\n"
+"\tவிளக்கம்: %s\n"
+"\tஇயக்கி: %s\n"
+"\tமாதிரி குறிப்பிடுதல்: %s\n"
+"\tசேனல் வரைபடம்.: %s\n"
+"\tஉரிமையாளர் தொகுதி: %u\n"
+"\tநிறுத்தப்பட்டது: %s\n"
+"\tஒலி: %s%s%s\n"
+"\t மீதி %0.2f\n"
+"\tஅடிப்படை ஒலி: %s%s%s\n"
+"\tகணினி சுருங்கப்பட்டது: %s\n"
+"\tLatency: %0.0f usec, கட்டமைக்கப்பட்டது %0.0f usec\n"
+"\tகொடிகள்: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "n/a"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "தொகுதி தகவலை பெற முடியவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"தொகுதி #%u\n"
+"\tபெயர்: %s\n"
+"\tவிவாதம்: %s\n"
+"\tபயன்படுத்தும் கவுன்டர்: %s\n"
+"\tபண்புகள்:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "கிளையன்ட் தகவலை பெற முடியவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"கிளையன்ட் #%u\n"
+"\tஇயக்கி: %s\n"
+"\tஉரிமையாளர் தொகுதி: %s\n"
+"\tபண்புகள்:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "அட்டை தகவலை பெற முடியவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tவிவரக்குறிப்புகள்:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tசெயல்பாட்டிலுள்ள விவரக்குறிப்புகள்: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "சிங்க் தகவலை பெற முடியவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "மூல வெளிப்பாடு தகவலை பெற முடியவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "மாதிரி தகவலை பெற முடியவில்லை.: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "தோல்வி: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "மாதிரியை மேம்படுத்த முடியவில்லை: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "முன்னாக கோப்பு முடித்தல்\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "ஏற்றுவதற்கு ஒரு மாதிரி கோப்பினை குறிப்பிடவும்\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "ஒலி கோப்பினை திறக்க முடியவில்லை.\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "இயக்கிவதற்கு நீங்கள் ஒரு மாதிரி பெயர் குறிப்பிட வேண்டும்\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "நீக்குவதற்கு நீங்கள் ஒரு மாதிரி பெயர் குறிப்பிட வேண்டும்\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "நீங்கள் ஒரு சிங்க் உள்ளீடு சுட்டி மற்றும் ஒரு சிங்கை குறிப்பிட வேண்டும்\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "நீங்கள் ஒரு மூல வெளிப்பாடு சுட்டி மற்றும் ஒரு மூலத்தை குறிப்பிட வேண்டும்\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "தொகுதி பெயர் மற்றும் விவாதங்களை நீங்கள் குறிப்பிட வேண்டும். \n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "தொகுதி அட்டவணையை நீங்கள் குறிப்பிட வேண்டும்\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr ""
+"ஒரு அட்டை பெயர்/ முன்பக்கம் மற்றும் ஒரு விவரச்சீட்டு பெயர் நீங்கள் குறிப்பிட வேண்டும் \n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "சரியான கட்டளை குறிப்பிடபடவில்லை \n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "கட்டளை வரியை மாற்ற முடியவில்லை \n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "சேவையகம்: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "மூலம்: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "சுருங்குதல்: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "கூக்கீ: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "குக்கீ தரவை மாற்ற முடியவில்லை\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "குக்கீ தரவை சேமிக்க முடியவில்லை\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "கிளையன்ட் கட்டமைப்பு கோப்பினை ஏற்ற முடியவில்லை.\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "சுற்றுப்புற கட்டமைப்பு தரவினை வாணிக்க முடியவில்லை.\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDNஐ பெற முடியவில்லை.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "குக்கீ தரவை ஏற்ற முடியவில்லை\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "இன்னும் செயல்படுத்தபடவில்லை.\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio daemonஐ நிறுத்த முடியவில்லை."
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "டோமோன் பதிலளிக்க மறுக்கிறது."
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr ""
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr ""
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr ""
+
+#: ../src/modules/reserve-wrap.c:127
+#, fuzzy
+msgid "PulseAudio Sound Server"
+msgstr "பள்ஸ் ஆடியோ ஒலி கணினி"
diff --git a/po/te.po b/po/te.po
new file mode 100644
index 0000000..88b898e
--- /dev/null
+++ b/po/te.po
@@ -0,0 +1,2431 @@
+# translation of pulseaudio.master-tx.te.po to Telugu
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Krishna Babu K <kkrothap@redhat.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pulseaudio.master-tx.te\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-08 18:21+0530\n"
+"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
+"Language-Team: Telugu <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"\n"
+"\n"
+"\n"
+"\n"
+
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr "ఎనలాగ్ మోనో"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Analog Stereo"
+msgstr "ఎనలాగ్ స్టీరియో"
+
+#: ../src/modules/alsa/alsa-util.c:546
+msgid "Digital Stereo (IEC958)"
+msgstr "డిజటల్ స్టీరియో (IEC958)"
+
+#: ../src/modules/alsa/alsa-util.c:554
+msgid "Digital Stereo (HDMI)"
+msgstr "డిజిటల్ స్టీరియో (HDMI)"
+
+#: ../src/modules/alsa/alsa-util.c:563
+msgid "Analog Surround 4.0"
+msgstr "ఎనలాగ్ సరౌండ్ 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:572
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr "డిజిటల్ సరౌండ్ 4.0 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:582
+msgid "Analog Surround 4.1"
+msgstr "ఎనలాగ్ సరౌండ్ 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:592
+msgid "Analog Surround 5.0"
+msgstr "ఎనలాగ్ సరౌండ్ 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:602
+msgid "Analog Surround 5.1"
+msgstr "ఎనలాగ్ సరౌండ్ 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:612
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr "డిజిటల్ సరౌండ్ 5.1 (IEC958/AC3)"
+
+#: ../src/modules/alsa/alsa-util.c:623
+msgid "Analog Surround 7.1"
+msgstr "ఎనలాగ్ సరౌండ్ 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1644
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail() అనునది పెద్ద విలువను యిచ్చినది: %lu bytes (%lu ms).\n"
+"సాదారణంగా యిది ALSA డ్రైవర్ '%s' నందలి బగ్ కావచ్చును. దయచేసి దీనిని ALSA అభివృద్ది కారులకు "
+"నివేదించుము."
+
+#: ../src/modules/alsa/alsa-util.c:1685
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_delay() అనునది పెద్ద విలువను యిచ్చినది: %li bytes (%s%lu ms).\n"
+"సాదారణంగా యిది ALSA డ్రైవర్ '%s' నందు బగ్ కావచ్చును . దయచేసి దీనిని ALSA అభివృద్దికారులక "
+"నివేదించుము."
+
+#: ../src/modules/alsa/alsa-util.c:1732
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_mmap_begin() అనునది పెద్ద విలువను యిచ్చినది: %lu bytes (%lu ms).\n"
+"సాదారణంగా యిది ALSA డ్రైవర్ '%s'నందలి బగ్ కావచ్చును. దయచేసి దీనిని ALSA అభివృద్దికారులను నివేదించండి."
+
+#: ../src/pulsecore/sink.c:2141
+msgid "Internal Audio"
+msgstr "అంతర్గత ఆడియో"
+
+#: ../src/pulsecore/sink.c:2147
+msgid "Modem"
+msgstr "మోడెమ్"
+
+#: ../src/daemon/ltdl-bind-now.c:124
+msgid "Failed to find original lt_dlopen loader."
+msgstr "వాస్తవ lt_dlopen లోడర్ కనుగొనుటలో విఫలమైంది."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+msgid "Failed to allocate new dl loader."
+msgstr "కొత్త dl లోడర్ కేటాయించుటలో విఫలమైంది."
+
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "bind-now-loader జతచేయుటకు విఫలమైంది."
+
+#: ../src/daemon/polkit.c:55
+#, c-format
+msgid "Cannot connect to system bus: %s"
+msgstr "సిస్టమ్ బస్‌నకు అనుసంధానము కాలేకపోయింది: %s"
+
+#: ../src/daemon/polkit.c:65
+#, c-format
+msgid "Cannot get caller from PID: %s"
+msgstr "PID నుండి కాలర్‌ను పొందలేక పోయింది: %s"
+
+#: ../src/daemon/polkit.c:77
+msgid "Cannot set UID on caller object."
+msgstr "కాలర్ ఆబ్జక్టునందు UIDను అమర్చలేక పోయింది."
+
+#: ../src/daemon/polkit.c:82
+msgid "Failed to get CK session."
+msgstr "CK సెషన్ పొందుటకు విఫలమైంది."
+
+#: ../src/daemon/polkit.c:90
+msgid "Cannot set UID on session object."
+msgstr "సెషన్ ఆబ్జక్టునందు UIDను అమర్చ లేకపోయింది."
+
+#: ../src/daemon/polkit.c:95
+msgid "Cannot allocate PolKitAction."
+msgstr "PolKitAction చిరునామాను కేటాయించలేక పోయింది."
+
+#: ../src/daemon/polkit.c:100
+msgid "Cannot set action_id"
+msgstr "action_id అమర్చలేక పోయింది"
+
+#: ../src/daemon/polkit.c:105
+msgid "Cannot allocate PolKitContext."
+msgstr "PolKitContext కేటాయించలేక పోయింది."
+
+#: ../src/daemon/polkit.c:110
+#, c-format
+msgid "Cannot initialize PolKitContext: %s"
+msgstr "PolKitContext సిద్దము చేయలేక పోయింది: %s"
+
+#: ../src/daemon/polkit.c:119
+#, c-format
+msgid "Could not determine whether caller is authorized: %s"
+msgstr "కాలర్ అధికారము కలదో లేదో నిర్ణయించలేక పోయింది: %s"
+
+#: ../src/daemon/polkit.c:139
+#, c-format
+msgid "Cannot obtain auth: %s"
+msgstr "దృవీకరణ పొందలేక పోయింది: %s"
+
+#: ../src/daemon/polkit.c:148
+#, c-format
+msgid "PolicyKit responded with '%s'"
+msgstr "PolicyKit స్పందిచినది దీనితో '%s'"
+
+#: ../src/daemon/main.c:137
+#, c-format
+msgid "Got signal %s."
+msgstr "సంకేతము %s పొందినది."
+
+#: ../src/daemon/main.c:164
+msgid "Exiting."
+msgstr "నిష్క్రమించుచున్నది."
+
+#: ../src/daemon/main.c:182
+#, c-format
+msgid "Failed to find user '%s'."
+msgstr "వినియోగదారి '%s'ను కనుగొనుటకు విఫలమైంది."
+
+#: ../src/daemon/main.c:187
+#, c-format
+msgid "Failed to find group '%s'."
+msgstr "సమూహం '%s' కనుగొనుటకు విఫలమైంది."
+
+#: ../src/daemon/main.c:191
+#, 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
+#, c-format
+msgid "GID of user '%s' and of group '%s' don't match."
+msgstr "వినియోగదారి '%s' మరియు సమూహము '%s' యొక్క GID సరితూగలేదు."
+
+#: ../src/daemon/main.c:201
+#, 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
+#, c-format
+msgid "Failed to create '%s': %s"
+msgstr "'%s' సృష్టించుటకు విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:216
+#, c-format
+msgid "Failed to change group list: %s"
+msgstr "సమూహ జాబితా మార్చుటకు విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:232
+#, c-format
+msgid "Failed to change GID: %s"
+msgstr "GID మార్చుటకు విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:248
+#, c-format
+msgid "Failed to change UID: %s"
+msgstr "UID మార్చటకు విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:262
+msgid "Successfully dropped root privileges."
+msgstr "root అనుమతులు విజయవంతంగా తిసివేయబడినాయి."
+
+#: ../src/daemon/main.c:270
+msgid "System wide mode unsupported on this platform."
+msgstr "ఈ ప్లాట్‌ఫాం నందు సిస్టమ్ తరహా రీతి మద్దతీయబడదు."
+
+#: ../src/daemon/main.c:288
+#, c-format
+msgid "setrlimit(%s, (%u, %u)) failed: %s"
+msgstr "setrlimit(%s, (%u, %u)) విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:476
+msgid "Failed to parse command line."
+msgstr "ఆదేశ వరుసను పార్శ్ చేయుటకు విఫలమైంది."
+
+#: ../src/daemon/main.c:500
+#, c-format
+msgid "We're in the group '%s', allowing high-priority scheduling."
+msgstr "మనము సమూహము '%s' నందు వున్నాము, అదిక-ప్రాముఖ్యతా పణాళికను అనుమతించుచున్నది."
+
+#: ../src/daemon/main.c:507
+#, c-format
+msgid "We're in the group '%s', allowing real-time scheduling."
+msgstr "మనము సమూహము '%s' నందు వున్నాము, వాస్తవ-సమయ ప్రణాళికను అనుమతించుచున్నది."
+
+#: ../src/daemon/main.c:515
+msgid "PolicyKit grants us acquire-high-priority privilege."
+msgstr "PolicyKit మనకు acquire-high-priority అనుమతిని యిచ్చుచున్నది."
+
+#: ../src/daemon/main.c:518
+msgid "PolicyKit refuses acquire-high-priority privilege."
+msgstr "PolicyKit అనునది acquire-high-priority అనుమతిని తిరస్కరించుచున్నది."
+
+#: ../src/daemon/main.c:523
+msgid "PolicyKit grants us acquire-real-time privilege."
+msgstr "PolicyKit మనకు acquire-real-time అనుమతిని యిచ్చుచున్నది."
+
+#: ../src/daemon/main.c:526
+msgid "PolicyKit refuses acquire-real-time privilege."
+msgstr "PolicyKit acquire-real-time అనుమతిని తిరస్కరించుచున్నది."
+
+#: ../src/daemon/main.c:555
+#, c-format
+msgid ""
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
+msgstr ""
+"SUID root కాల్ చేసింది మరియు వాస్తవ-సమయ మరియు/లేదా అదిక-ప్రాముఖ్యత ప్రణాళిక అభ్యర్ధింబడింది "
+"ఆకృతీకరణనందు. ఏమైనప్పుటికి, మనకు అవసరమైన అనుమతలు లోపించినవి:\n"
+"మనము సమూహం '%s' నందు లేము, PolicyKit అనునది మనకు అభ్యర్దించిన అనుమతులను యిచ్చుటకు "
+"నిరాకరించినది మరియు మనము వృద్ది RLIMIT_NICE/RLIMIT_RTPRIO వనరు పరిమితులను కలిగిలేము.\n"
+"వాస్తవ-సమయ/అధిక-ప్రాముఖ్య ప్రణాళికను చేతనపరచుటకు దయచేసి సరైన PolicyKit అనుమతులను పొందుము, "
+"లేదా '%s' యొక్క సభ్యునివి కమ్ము, లేదా ఈ వినియోగదారికి RLIMIT_NICE/RLIMIT_RTPRIO వనరు "
+"పరిమితులను పెంచుము."
+
+#: ../src/daemon/main.c:580
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr "అధిక-ప్రాముఖ్యతా ప్రణాళిక ఆకృతీకరణనందు చేతనముచేయబడింది కాని విధానము ద్వారా అనుమతించబడింది."
+
+#: ../src/daemon/main.c:609
+msgid "Successfully increased RLIMIT_RTPRIO"
+msgstr "సమర్ధవంతంగా RLIMIT_RTPRIOను పెంచినది"
+
+#: ../src/daemon/main.c:612
+#, c-format
+msgid "RLIMIT_RTPRIO failed: %s"
+msgstr "RLIMIT_RTPRIO విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:619
+msgid "Giving up CAP_NICE"
+msgstr "CAP_NICE యిస్తోంది"
+
+#: ../src/daemon/main.c:626
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr "వాస్తవ-సమయ ప్రణాళిక ఆకృతీకరణనందు చేతనంచేయబడింది కాని విధానము ద్వారా అనుమతించబడలేదు."
+
+#: ../src/daemon/main.c:687
+msgid "Daemon not running"
+msgstr "డెమోన్ నడుచుట లేదు"
+
+#: ../src/daemon/main.c:689
+#, c-format
+msgid "Daemon running as PID %u"
+msgstr "డెమోన్ PID %u వలె నడుచుచున్నది"
+
+#: ../src/daemon/main.c:699
+#, c-format
+msgid "Failed to kill daemon: %s"
+msgstr "డెమోన్ చంపుటకు విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:717
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr "ఈ ప్రోగ్రామ్ root లా నడుపవలసింది కాదు (--system తెలిపితే తప్ప)"
+
+#: ../src/daemon/main.c:719
+msgid "Root privileges required."
+msgstr "Root అనుమతులు అవసరము."
+
+#: ../src/daemon/main.c:724
+msgid "--start not supported for system instances."
+msgstr "--start సిస్టమ్ సంభవాల ద్వారా మద్దతీయబడదు."
+
+#: ../src/daemon/main.c:729
+msgid "Running in system mode, but --disallow-exit not set!"
+msgstr "సిస్టమ్ మోడ్ నందు నడుపుతోంది, అయితే --disallow-exit అమర్చలేదు!"
+
+#: ../src/daemon/main.c:732
+msgid "Running in system mode, but --disallow-module-loading not set!"
+msgstr "సిస్టమ్ రీతినందు నడుచుచున్నది, అయితే --disallow-module-loading అమర్చలేదు!"
+
+#: ../src/daemon/main.c:735
+msgid "Running in system mode, forcibly disabling SHM mode!"
+msgstr "సిస్టమ్ రీతినందు నడుపుచున్నది, బలవంతంగా SHM రీతిని అచేతనము చేస్తోంది!"
+
+#: ../src/daemon/main.c:740
+msgid "Running in system mode, forcibly disabling exit idle time!"
+msgstr "సిస్టమ్ రీతినందు నడుచుచున్నది, బలవంతంగా నిష్క్రమణ వృధా సమయాన్ని అచేతనము చేయుచున్నది!"
+
+#: ../src/daemon/main.c:767
+msgid "Failed to acquire stdio."
+msgstr "stdio పొందుటకు విఫలమైంది."
+
+#: ../src/daemon/main.c:773
+#, c-format
+msgid "pipe failed: %s"
+msgstr "పైర్ విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:778
+#, c-format
+msgid "fork() failed: %s"
+msgstr "fork() విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:792
+#, c-format
+msgid "read() failed: %s"
+msgstr "read() విఫలమైంది: %s"
+
+#: ../src/daemon/main.c:798
+msgid "Daemon startup failed."
+msgstr "డెమోన్ ప్రారంభం విఫలమైంది."
+
+#: ../src/daemon/main.c:800
+msgid "Daemon startup successful."
+msgstr "డెమోన్ ప్రారంభము సఫలమైంది."
+
+#: ../src/daemon/main.c:870
+#, c-format
+msgid "This is PulseAudio %s"
+msgstr "ఇది PulseAudio %s"
+
+#: ../src/daemon/main.c:871
+#, c-format
+msgid "Compilation host: %s"
+msgstr "నిర్వర్తన హోస్టు: %s"
+
+#: ../src/daemon/main.c:872
+#, c-format
+msgid "Compilation CFLAGS: %s"
+msgstr "నిర్వర్తన CFLAGS: %s"
+
+#: ../src/daemon/main.c:875
+#, c-format
+msgid "Running on host: %s"
+msgstr "హోస్టును నడుపుచున్నది: %s"
+
+#: ../src/daemon/main.c:878
+#, c-format
+msgid "Found %u CPUs."
+msgstr "%u CPUలను కనుగొన్నది."
+
+#: ../src/daemon/main.c:880
+#, c-format
+msgid "Page size is %lu bytes"
+msgstr "పేజీ పరిమాణము %lu బైట్లు"
+
+#: ../src/daemon/main.c:883
+msgid "Compiled with Valgrind support: yes"
+msgstr "Valgrind మద్దతుతో నిర్వర్తించబడింది: అవును"
+
+#: ../src/daemon/main.c:885
+msgid "Compiled with Valgrind support: no"
+msgstr "Valgrind మద్దతుతో నిర్వర్తించబడింది: లేదు"
+
+#: ../src/daemon/main.c:888
+#, c-format
+msgid "Running in valgrind mode: %s"
+msgstr "valgrind రీతినందు నడుపుచున్నది: %s"
+
+#: ../src/daemon/main.c:891
+msgid "Optimized build: yes"
+msgstr "ఆప్టిమైజ్డు బుల్డు: అవును"
+
+#: ../src/daemon/main.c:893
+msgid "Optimized build: no"
+msgstr "ఆప్టిమైజ్డు బుల్డు: కాదు"
+
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "NDEBUG నిర్వచించబడింది, అన్ని స్థిరరాశులు అచేతనమైనవి."
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "FASTPATH నిర్వచించబడింది, ఫాస్ట్ పాత్ స్థిరరాశులు మాత్రమే అచేతనమైనవి."
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "అన్ని స్థిరరాశులు చేతనమైనవి."
+
+#: ../src/daemon/main.c:905
+msgid "Failed to get machine ID"
+msgstr "మిషన్ ID పొందుటకు విఫలమైంది"
+
+#: ../src/daemon/main.c:908
+#, c-format
+msgid "Machine ID is %s."
+msgstr "మిషన్ ID %s."
+
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "మిషన్ ID %s."
+
+#: ../src/daemon/main.c:918
+#, c-format
+msgid "Using runtime directory %s."
+msgstr "రన్‌టైమ్ డైరెక్టరీను వుపయోగించుచున్నది %s."
+
+#: ../src/daemon/main.c:923
+#, c-format
+msgid "Using state directory %s."
+msgstr "స్థితి డైరెక్టరీను వుపయోగించుచున్నది %s."
+
+#: ../src/daemon/main.c:926
+#, c-format
+msgid "Running in system mode: %s"
+msgstr "సిస్టమ్ రీతినందు వుపయోగించుచున్నది: %s"
+
+#: ../src/daemon/main.c:941
+msgid "pa_pid_file_create() failed."
+msgstr "pa_pid_file_create() విఫలమైంది."
+
+#: ../src/daemon/main.c:953
+msgid "Fresh high-resolution timers available! Bon appetit!"
+msgstr "తాజా అధిక-తీవ్రత కాలసూచికలు అందుబాటులో వున్నాయి! బాన్ ఎపటైట్!"
+
+#: ../src/daemon/main.c:955
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr "మిత్రమా, నీ కెర్నల్ చెడిపోయింది! అధిక-తీవ్రత కాలసూచకిలను చేతనము చేయమని సూచించడమైనది!"
+
+#: ../src/daemon/main.c:967
+msgid "pa_core_new() failed."
+msgstr "pa_core_new() విఫలమైంది."
+
+#: ../src/daemon/main.c:1029
+msgid "Failed to initialize daemon."
+msgstr "డెమోన్ సిద్దముచేయుటకు విఫలమైంది."
+
+#: ../src/daemon/main.c:1034
+msgid "Daemon startup without any loaded modules, refusing to work."
+msgstr "ఏవిధమైన మాడ్యూళ్ళు లోడవకుండా డెమోన్ ప్రారంభము, పనిచేయుటకు తిరస్కరించబడింది."
+
+#: ../src/daemon/main.c:1051
+msgid "Daemon startup complete."
+msgstr "డెమోన్ ప్రారంభము పూర్తైనది."
+
+#: ../src/daemon/main.c:1057
+msgid "Daemon shutdown initiated."
+msgstr "డెమోన్ మూసివేత సిద్దముచేయబడింది."
+
+#: ../src/daemon/main.c:1079
+msgid "Daemon terminated."
+msgstr "డెమోన్ అంతముచేయబడింది."
+
+#: ../src/daemon/cmdline.c:121
+#, c-format
+msgid ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+msgstr ""
+"%s [options]\n"
+"\n"
+"COMMANDS:\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" --dump-conf Dump default configuration\n"
+" --dump-modules Dump list of available modules\n"
+" --dump-resample-methods Dump available resample methods\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
+" -k --kill Kill a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
+"\n"
+"OPTIONS:\n"
+" --system[=BOOL] Run as system-wide instance\n"
+" -D, --daemonize[=BOOL] Daemonize after startup\n"
+" --fail[=BOOL] Quit when startup fails\n"
+" --high-priority[=BOOL] Try to set high nice level\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_NICE)\n"
+" --realtime[=BOOL] Try to enable realtime scheduling\n"
+" (only available as root, when SUID "
+"or\n"
+" with elevated RLIMIT_RTPRIO)\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
+" loading/unloading after startup\n"
+" --disallow-exit[=BOOL] Disallow user requested exit\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
+" time passed\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
+" this time passed\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
+" this time passed\n"
+" --log-level[=LEVEL] Increase or set verbosity level\n"
+" -v Increase the verbosity level\n"
+" --log-target={auto,syslog,stderr} Specify the log target\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
+" objects (plugins)\n"
+" --resample-method=METHOD Use the specified resampling method\n"
+" (See --dump-resample-methods for\n"
+" possible values)\n"
+" --use-pid-file[=BOOL] Create a PID file\n"
+" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
+" platforms that support it.\n"
+" --disable-shm[=BOOL] Disable shared memory support.\n"
+"\n"
+"STARTUP SCRIPT:\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
+" the specified argument\n"
+" -F, --file=FILENAME Run the specified script\n"
+" -C Open a command line on the running "
+"TTY\n"
+" after startup\n"
+"\n"
+" -n Don't load default script file\n"
+
+#: ../src/daemon/cmdline.c:252
+msgid "--daemonize expects boolean argument"
+msgstr "--daemonize బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:259
+msgid "--fail expects boolean argument"
+msgstr "--fail బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../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 లాగ్ స్థాయి ఆర్గుమెంట్‌ను కోరుకుంటోంది (సహజసంఖ్యను 0..4 విస్తృతిలో కాని లేదా డీబగ్‌, "
+"సమాచారము, నోటీసు, హెచ్చరిక, దోషము వీటిలో వొకటికాని)."
+
+#: ../src/daemon/cmdline.c:281
+msgid "--high-priority expects boolean argument"
+msgstr "--high-priority బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:288
+msgid "--realtime expects boolean argument"
+msgstr "--realtime బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:295
+msgid "--disallow-module-loading expects boolean argument"
+msgstr "--disallow-module-loading బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:302
+msgid "--disallow-exit expects boolean argument"
+msgstr "--disallow-exit బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:309
+msgid "--use-pid-file expects boolean argument"
+msgstr "--use-pid-file బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:326
+msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
+msgstr "చెల్లని లాగ్ టార్గెట్: 'syslog', 'stderr' లేదా 'auto' వుపయోగించుము."
+
+#: ../src/daemon/cmdline.c:333
+msgid "--log-time expects boolean argument"
+msgstr "--log-time బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:340
+msgid "--log-meta expects boolean argument"
+msgstr "--log-meta బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:359
+#, c-format
+msgid "Invalid resample method '%s'."
+msgstr "చెల్లని పునఃవుదాహరణ పద్దతి '%s'."
+
+#: ../src/daemon/cmdline.c:366
+msgid "--system expects boolean argument"
+msgstr "--system బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:373
+msgid "--no-cpu-limit expects boolean argument"
+msgstr "--no-cpu-limit బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/cmdline.c:380
+msgid "--disable-shm expects boolean argument"
+msgstr "--disable-shm బూలియన్ ఆర్గుమెంటును కోరుకుంటుంది"
+
+#: ../src/daemon/dumpmodules.c:60
+#, c-format
+msgid "Name: %s\n"
+msgstr "నామము: %s\n"
+
+#: ../src/daemon/dumpmodules.c:63
+#, c-format
+msgid "No module information available\n"
+msgstr "ఎటువంటి మాడ్యూల్ సమాచారము అందుబాటులోలేదు\n"
+
+#: ../src/daemon/dumpmodules.c:66
+#, c-format
+msgid "Version: %s\n"
+msgstr "వర్షన్: %s\n"
+
+#: ../src/daemon/dumpmodules.c:68
+#, c-format
+msgid "Description: %s\n"
+msgstr "వివరణ: %s\n"
+
+#: ../src/daemon/dumpmodules.c:70
+#, c-format
+msgid "Author: %s\n"
+msgstr "మూలకర్త: %s\n"
+
+#: ../src/daemon/dumpmodules.c:72
+#, c-format
+msgid "Usage: %s\n"
+msgstr "వాడుక: %s\n"
+
+#: ../src/daemon/dumpmodules.c:73
+#, c-format
+msgid "Load Once: %s\n"
+msgstr "ఒకసారి లోడుచేయుము: %s\n"
+
+#: ../src/daemon/dumpmodules.c:77
+#, c-format
+msgid "Path: %s\n"
+msgstr "పాత్: %s\n"
+
+#: ../src/daemon/daemon-conf.c:215
+#, c-format
+msgid "[%s:%u] Invalid log target '%s'."
+msgstr "[%s:%u] చెల్లని లాగ్ లక్ష్యము '%s'."
+
+#: ../src/daemon/daemon-conf.c:231
+#, c-format
+msgid "[%s:%u] Invalid log level '%s'."
+msgstr "[%s:%u] చెల్లని లాగ్ స్థాయి '%s'."
+
+#: ../src/daemon/daemon-conf.c:247
+#, c-format
+msgid "[%s:%u] Invalid resample method '%s'."
+msgstr "[%s:%u] చెల్లని పునఃవుదాహరణ పద్దతి '%s'."
+
+#: ../src/daemon/daemon-conf.c:270
+#, c-format
+msgid "[%s:%u] Invalid rlimit '%s'."
+msgstr "[%s:%u] చెల్లని rlimit '%s'."
+
+#: ../src/daemon/daemon-conf.c:277
+#, c-format
+msgid "[%s:%u] rlimit not supported on this platform."
+msgstr "[%s:%u] rlimit అనునది ఈ ప్లాట్‌ఫాం నందు మద్దతివ్వబడదు."
+
+#: ../src/daemon/daemon-conf.c:293
+#, c-format
+msgid "[%s:%u] Invalid sample format '%s'."
+msgstr "[%s:%u] చెల్లని మాదిరి ఫార్మాట్ '%s'."
+
+#: ../src/daemon/daemon-conf.c:311
+#, c-format
+msgid "[%s:%u] Invalid sample rate '%s'."
+msgstr "[%s:%u] చెల్లని మాదిరి రేటు '%s'."
+
+#: ../src/daemon/daemon-conf.c:335
+#, c-format
+msgid "[%s:%u] Invalid sample channels '%s'."
+msgstr "[%s:%u] చెల్లని మాదిరి చానళ్ళు '%s'."
+
+#: ../src/daemon/daemon-conf.c:353
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] చెల్లని ఛానల్ మాప్ '%s'."
+
+#: ../src/daemon/daemon-conf.c:371
+#, c-format
+msgid "[%s:%u] Invalid number of fragments '%s'."
+msgstr "[%s:%u] చెల్లని ముక్కలు సంఖ్య '%s'."
+
+#: ../src/daemon/daemon-conf.c:389
+#, c-format
+msgid "[%s:%u] Invalid fragment size '%s'."
+msgstr "[%s:%u] చెల్లని ముక్క పరిమాణము '%s'."
+
+#: ../src/daemon/daemon-conf.c:407
+#, c-format
+msgid "[%s:%u] Invalid nice level '%s'."
+msgstr "[%s:%u] చెల్లని సాదా స్థాయి '%s'."
+
+#: ../src/daemon/daemon-conf.c:522
+#, c-format
+msgid "Failed to open configuration file: %s"
+msgstr "ఆకృతీకరణ దస్త్రమును తెరుచుటకు విఫలమైంది: %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."
+msgstr ""
+"తెలుపబడిన అప్రమేయ ప్రాసారమార్గం మాప్ తెలుపబడిన అప్రమేయ ప్రసారమార్గముల కన్నా విభిన్న ప్రసారమార్గముల "
+"సంఖ్యను కలిగివుంది."
+
+#: ../src/daemon/daemon-conf.c:616
+#, c-format
+msgid "### Read from configuration file: %s ###\n"
+msgstr "### ఆకృతీకరణ దస్త్రమునుండి చదువుము: %s ###\n"
+
+#: ../src/daemon/caps.c:63
+msgid "Dropping root privileges."
+msgstr "root అనుమతులను తీసివేయుచున్నది."
+
+#: ../src/daemon/caps.c:103
+msgid "Limited capabilities successfully to CAP_SYS_NICE."
+msgstr "సామర్ధ్యాలను CAP_SYS_NICE కు సమర్దవంతంగా పరిమితం చేయబడినవి."
+
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr "PulseAudio శబ్దపు సిస్టమ్"
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr "PulseAudio శబ్దపు సిస్టమ్‌ను ప్రారంభించుము"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr "అధిక-ప్రాముఖ్యతా ప్రణాళిక (ఋణ యునిక్స్ సాదా స్థాయి) PulseAudio డెమోన్‌కు"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio డెమోన్‌ కొరకు వాస్తవ-సమయ ప్రణాళిక"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "సిస్టమ్ విధానము PulseAudio అధిక-ప్రాముఖ్యతా ప్రణాళికను పొందకుండా నిరోధిస్తున్నది."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr "సిస్టమ్ విధానము PulseAudio వాస్తవ-సమయ ప్రణాళికను పొందకుండా నిరోధిస్తోంది."
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
+msgid "Mono"
+msgstr "మోనో"
+
+#: ../src/pulse/channelmap.c:105
+msgid "Front Center"
+msgstr "ముందు మధ్యన"
+
+#: ../src/pulse/channelmap.c:106
+msgid "Front Left"
+msgstr "ముందు ఎడమవైపు"
+
+#: ../src/pulse/channelmap.c:107
+msgid "Front Right"
+msgstr "ముందు కుడివైపు"
+
+#: ../src/pulse/channelmap.c:109
+msgid "Rear Center"
+msgstr "వెనుక మధ్యన"
+
+#: ../src/pulse/channelmap.c:110
+msgid "Rear Left"
+msgstr "వెనుక ఎడమవైపు"
+
+#: ../src/pulse/channelmap.c:111
+msgid "Rear Right"
+msgstr "వెనుక కుడివైపు"
+
+#: ../src/pulse/channelmap.c:113
+msgid "Low Frequency Emmiter"
+msgstr "తక్కువ తరచుదనం వెలువరించునది"
+
+#: ../src/pulse/channelmap.c:115
+msgid "Front Left-of-center"
+msgstr "ముందు ఎడమ-మధ్య"
+
+#: ../src/pulse/channelmap.c:116
+msgid "Front Right-of-center"
+msgstr "ముందు కుడి-మధ్య"
+
+#: ../src/pulse/channelmap.c:118
+msgid "Side Left"
+msgstr "ఎడమ ప్రక్క"
+
+#: ../src/pulse/channelmap.c:119
+msgid "Side Right"
+msgstr "కుడి ప్రక్క"
+
+#: ../src/pulse/channelmap.c:121
+msgid "Auxiliary 0"
+msgstr "ఆక్సిలరి 0"
+
+#: ../src/pulse/channelmap.c:122
+msgid "Auxiliary 1"
+msgstr "ఆక్సిలరి 1"
+
+#: ../src/pulse/channelmap.c:123
+msgid "Auxiliary 2"
+msgstr "ఆక్సిలరి 2"
+
+#: ../src/pulse/channelmap.c:124
+msgid "Auxiliary 3"
+msgstr "ఆక్సిలరి 3"
+
+#: ../src/pulse/channelmap.c:125
+msgid "Auxiliary 4"
+msgstr "ఆక్సిలరి 4"
+
+#: ../src/pulse/channelmap.c:126
+msgid "Auxiliary 5"
+msgstr "ఆక్సిలరి 5"
+
+#: ../src/pulse/channelmap.c:127
+msgid "Auxiliary 6"
+msgstr "ఆక్సిలరి 6"
+
+#: ../src/pulse/channelmap.c:128
+msgid "Auxiliary 7"
+msgstr "ఆక్సిలరి 7"
+
+#: ../src/pulse/channelmap.c:129
+msgid "Auxiliary 8"
+msgstr "ఆక్సిలరి 8"
+
+#: ../src/pulse/channelmap.c:130
+msgid "Auxiliary 9"
+msgstr "ఆక్సిలరి 9"
+
+#: ../src/pulse/channelmap.c:131
+msgid "Auxiliary 10"
+msgstr "ఆక్సిలరి 10"
+
+#: ../src/pulse/channelmap.c:132
+msgid "Auxiliary 11"
+msgstr "ఆక్సిలరి 11"
+
+#: ../src/pulse/channelmap.c:133
+msgid "Auxiliary 12"
+msgstr "ఆక్సిలరి 12"
+
+#: ../src/pulse/channelmap.c:134
+msgid "Auxiliary 13"
+msgstr "ఆక్సిలరి 13"
+
+#: ../src/pulse/channelmap.c:135
+msgid "Auxiliary 14"
+msgstr "ఆక్సిలరి 14"
+
+#: ../src/pulse/channelmap.c:136
+msgid "Auxiliary 15"
+msgstr "ఆక్సిలరి 15"
+
+#: ../src/pulse/channelmap.c:137
+msgid "Auxiliary 16"
+msgstr "ఆక్సిలరి 16"
+
+#: ../src/pulse/channelmap.c:138
+msgid "Auxiliary 17"
+msgstr "ఆక్సిలరి 17"
+
+#: ../src/pulse/channelmap.c:139
+msgid "Auxiliary 18"
+msgstr "ఆక్సిలరి 18"
+
+#: ../src/pulse/channelmap.c:140
+msgid "Auxiliary 19"
+msgstr "ఆక్సిలరి 19"
+
+#: ../src/pulse/channelmap.c:141
+msgid "Auxiliary 20"
+msgstr "ఆక్సిలరి 20"
+
+#: ../src/pulse/channelmap.c:142
+msgid "Auxiliary 21"
+msgstr "ఆక్సిలరి 21"
+
+#: ../src/pulse/channelmap.c:143
+msgid "Auxiliary 22"
+msgstr "ఆక్సిలరి 22"
+
+#: ../src/pulse/channelmap.c:144
+msgid "Auxiliary 23"
+msgstr "ఆక్సిలరి 23"
+
+#: ../src/pulse/channelmap.c:145
+msgid "Auxiliary 24"
+msgstr "ఆక్సిలరి 24"
+
+#: ../src/pulse/channelmap.c:146
+msgid "Auxiliary 25"
+msgstr "ఆక్సిలరి 25"
+
+#: ../src/pulse/channelmap.c:147
+msgid "Auxiliary 26"
+msgstr "ఆక్సిలరి 26"
+
+#: ../src/pulse/channelmap.c:148
+msgid "Auxiliary 27"
+msgstr "ఆక్సిలరి 27"
+
+#: ../src/pulse/channelmap.c:149
+msgid "Auxiliary 28"
+msgstr "ఆక్సిలరి 28"
+
+#: ../src/pulse/channelmap.c:150
+msgid "Auxiliary 29"
+msgstr "ఆక్సిలరి 29"
+
+#: ../src/pulse/channelmap.c:151
+msgid "Auxiliary 30"
+msgstr "ఆక్సిలరి 30"
+
+#: ../src/pulse/channelmap.c:152
+msgid "Auxiliary 31"
+msgstr "ఆక్సిలరి 31"
+
+#: ../src/pulse/channelmap.c:154
+msgid "Top Center"
+msgstr "పై మధ్యన"
+
+#: ../src/pulse/channelmap.c:156
+msgid "Top Front Center"
+msgstr "పైన ముందు మధ్యన"
+
+#: ../src/pulse/channelmap.c:157
+msgid "Top Front Left"
+msgstr "పైన ముందు ఎడమవైపు"
+
+#: ../src/pulse/channelmap.c:158
+msgid "Top Front Right"
+msgstr "పైన ముందు కుడివైపు"
+
+#: ../src/pulse/channelmap.c:160
+msgid "Top Rear Center"
+msgstr "పైన వెనుక మధ్యన"
+
+#: ../src/pulse/channelmap.c:161
+msgid "Top Rear Left"
+msgstr "పైన వెనుక ఎడమవైపు"
+
+#: ../src/pulse/channelmap.c:162
+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
+msgid "(invalid)"
+msgstr "(చెల్లని)"
+
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr "స్టీరియో"
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr "సరౌండ్ 4.0"
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr "సరౌండ్ 4.1"
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr "సరౌండ్ 5.0"
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr "సరౌండ్ 5.1"
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr "సరౌండ్ 7.1"
+
+#: ../src/pulse/error.c:43
+msgid "OK"
+msgstr "సరే"
+
+#: ../src/pulse/error.c:44
+msgid "Access denied"
+msgstr "సాంగత్యం తిరస్కరించబడినది"
+
+#: ../src/pulse/error.c:45
+msgid "Unknown command"
+msgstr "తెలియని ఆదేశము"
+
+#: ../src/pulse/error.c:46
+msgid "Invalid argument"
+msgstr "నిస్సారమైన క్రమానుగత సంకేతం"
+
+#: ../src/pulse/error.c:47
+msgid "Entity exists"
+msgstr "ఎంటిటి నిష్క్రమించినది"
+
+#: ../src/pulse/error.c:48
+msgid "No such entity"
+msgstr "అటువంటి యెంటిటి లేదు"
+
+#: ../src/pulse/error.c:49
+msgid "Connection refused"
+msgstr "కనెక్షన్ తిరస్కరించబడింది"
+
+#: ../src/pulse/error.c:50
+msgid "Protocol error"
+msgstr "నియమం దోషం"
+
+#: ../src/pulse/error.c:51
+msgid "Timeout"
+msgstr "సమయంముగిసింది"
+
+#: ../src/pulse/error.c:52
+msgid "No authorization key"
+msgstr "ఎటువంటి ధృవీకృత కీ లేదు"
+
+#: ../src/pulse/error.c:53
+msgid "Internal error"
+msgstr "అంతర్గత దోషము"
+
+#: ../src/pulse/error.c:54
+msgid "Connection terminated"
+msgstr "అనుసంధానము అంతముచేయబడింది"
+
+#: ../src/pulse/error.c:55
+msgid "Entity killed"
+msgstr "ఎంటిటి నాశనంచేయబడింది"
+
+#: ../src/pulse/error.c:56
+msgid "Invalid server"
+msgstr "చెల్లని సేవిక"
+
+#: ../src/pulse/error.c:57
+msgid "Module initalization failed"
+msgstr "మాడ్యూల్ సిద్దీకరణ విఫలమైంది"
+
+#: ../src/pulse/error.c:58
+msgid "Bad state"
+msgstr "చెడ్డ స్థితి"
+
+#: ../src/pulse/error.c:59
+msgid "No data"
+msgstr "దత్తాంశం లేదు"
+
+#: ../src/pulse/error.c:60
+msgid "Incompatible protocol version"
+msgstr "సారూప్యతలేని ప్రోటోకాల్ వర్షన్"
+
+#: ../src/pulse/error.c:61
+msgid "Too large"
+msgstr "మరీ పెద్దది"
+
+#: ../src/pulse/error.c:62
+msgid "Not supported"
+msgstr "మద్దతీయబడదు"
+
+#: ../src/pulse/error.c:63
+msgid "Unknown error code"
+msgstr "తెలియని దోషము కోడ్"
+
+#: ../src/pulse/error.c:64
+msgid "No such extension"
+msgstr "అటువంటి పొడిగింపు లేదు"
+
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr "పనితీరు తీసివేయి"
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr "తప్పిపోయిన యింప్లిమెంటేషన్"
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr "కక్షిదారి పోర్క్ చేసిన"
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr "%s %uch %uHz"
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr "%0.1f GiB"
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr "%0.1f MiB"
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr "%0.1f KiB"
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr "%u B"
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
+msgid "XOpenDisplay() failed"
+msgstr "XOpenDisplay() విఫలమైంది"
+
+#: ../src/pulse/client-conf-x11.c:93
+msgid "Failed to parse cookie data"
+msgstr "కుకీ డాటా పార్శ్ చేయుటకు విఫలమైంది"
+
+#: ../src/pulse/client-conf.c:110
+#, c-format
+msgid "Failed to open configuration file '%s': %s"
+msgstr "ఆకృతీకరణ దస్త్రము '%s' తెరువుటకు విఫలమైంది: %s"
+
+#: ../src/pulse/context.c:546
+msgid "No cookie loaded. Attempting to connect without."
+msgstr "ఏ కుకీ లోడవలేదు. లేకుండా అనుసంధానమగుటకు ప్రయత్నిస్తోంది."
+
+#: ../src/pulse/context.c:676
+#, c-format
+msgid "fork(): %s"
+msgstr "fork(): %s"
+
+#: ../src/pulse/context.c:729
+#, c-format
+msgid "waitpid(): %s"
+msgstr "waitpid(): %s"
+
+#: ../src/pulse/context.c:1402
+#, c-format
+msgid "Received message for unknown extension '%s'"
+msgstr "తెలియని పొడిగింపు కొరకు సందేశము స్వీకరించింది '%s'"
+
+#: ../src/utils/pacat.c:94
+#, c-format
+msgid "pa_stream_write() failed: %s\n"
+msgstr "pa_stream_write() విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:133
+#, c-format
+msgid "pa_stream_peek() failed: %s\n"
+msgstr "pa_stream_peek() విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:169
+#, c-format
+msgid "Stream successfully created.\n"
+msgstr "స్ట్రీమ్ సమర్ధవంతంగా సృష్టించబడింది.\n"
+
+#: ../src/utils/pacat.c:172
+#, c-format
+msgid "pa_stream_get_buffer_attr() failed: %s\n"
+msgstr "pa_stream_get_buffer_attr() విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:176
+#, 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
+#, c-format
+msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
+msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n"
+
+#: ../src/utils/pacat.c:183
+#, c-format
+msgid "Using sample spec '%s', channel map '%s'.\n"
+msgstr "సాదారణ విశదీకరణ(స్పెక్) '%s' వుపయోగిస్తోంది, ప్రసారమార్గం మాప్ '%s'.\n"
+
+#: ../src/utils/pacat.c:187
+#, c-format
+msgid "Connected to device %s (%u, %ssuspended).\n"
+msgstr "పరికరము %s (%u, %ssuspended) కు అనుసంధానించబడింది.\n"
+
+#: ../src/utils/pacat.c:197
+#, c-format
+msgid "Stream error: %s\n"
+msgstr "స్ట్రీమ్ దోషము: %s\n"
+
+#: ../src/utils/pacat.c:207
+#, c-format
+msgid "Stream device suspended.%s \n"
+msgstr "స్ట్రీమ్ పరికరము అర్దాంతరముగా నిలిపివేయి.%s \n"
+
+#: ../src/utils/pacat.c:209
+#, c-format
+msgid "Stream device resumed.%s \n"
+msgstr "స్ట్రీమ్ పరికరము తిరిగికొనసాగించబడింది.%s \n"
+
+#: ../src/utils/pacat.c:217
+#, c-format
+msgid "Stream underrun.%s \n"
+msgstr "స్ట్రీమ్ తక్కువగానడుచుచున్నది.%s \n"
+
+#: ../src/utils/pacat.c:224
+#, c-format
+msgid "Stream overrun.%s \n"
+msgstr "స్ట్రీమ్ మించినడుచుచున్నది.%s \n"
+
+#: ../src/utils/pacat.c:231
+#, c-format
+msgid "Stream started.%s \n"
+msgstr "స్ట్రీమ్ ప్రారంభమైంది.%s \n"
+
+#: ../src/utils/pacat.c:238
+#, c-format
+msgid "Stream moved to device %s (%u, %ssuspended).%s \n"
+msgstr "స్ట్రీమ్ పరికరము %s (%u, %ssuspended) కు కదుపబడింది.%s \n"
+
+#: ../src/utils/pacat.c:238
+msgid "not "
+msgstr "కాదు "
+
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "స్ట్రీమ్ బఫర్ యాట్రిబ్యూట్లు మార్చబడినవి.%s \n"
+
+#: ../src/utils/pacat.c:278
+#, c-format
+msgid "Connection established.%s \n"
+msgstr "అనుసంధానము ఏర్పడినది.%s \n"
+
+#: ../src/utils/pacat.c:281
+#, c-format
+msgid "pa_stream_new() failed: %s\n"
+msgstr "pa_stream_new() విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:309
+#, c-format
+msgid "pa_stream_connect_playback() failed: %s\n"
+msgstr "pa_stream_connect_playback() విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:315
+#, 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
+#, 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
+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
+#, c-format
+msgid "read() failed: %s\n"
+msgstr "read() విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:438
+#, c-format
+msgid "write() failed: %s\n"
+msgstr "write() విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:459
+#, c-format
+msgid "Got signal, exiting.\n"
+msgstr "సంకేతము పొందినది, నిష్క్రమించుచున్నది.\n"
+
+#: ../src/utils/pacat.c:473
+#, c-format
+msgid "Failed to get latency: %s\n"
+msgstr "క్రియాహీనతను పొందుటలో విఫలమైంది: %s\n"
+
+#: ../src/utils/pacat.c:478
+#, 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
+#, 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
+msgid ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(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"
+msgstr ""
+"%s [options]\n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -r, --record Create a connection for recording\n"
+" -p, --playback Create a connection for playback\n"
+"\n"
+" -v, --verbose Enable verbose operations\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
+" (defaults to 2)\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
+" being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
+" --no-remix Don't upmix or downmix channels.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
+
+#: ../src/utils/pacat.c:612
+#, c-format
+msgid ""
+"pacat %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pacat %s\n"
+"libpulse తో నిర్వర్తించబడింది %s\n"
+"libpulse లింకైనది %s\n"
+
+#: ../src/utils/pacat.c:669
+#, c-format
+msgid "Invalid channel map '%s'\n"
+msgstr "చెల్లని ప్రసారమార్గ మాప్ '%s'\n"
+
+#: ../src/utils/pacat.c:698
+#, c-format
+msgid "Invalid latency specification '%s'\n"
+msgstr "చెల్లని క్రియాహీన విశదీకరణము '%s'\n"
+
+#: ../src/utils/pacat.c:705
+#, c-format
+msgid "Invalid process time specification '%s'\n"
+msgstr "చెల్లని కార్యక్రమము సమయ విశదీకరణ '%s'\n"
+
+#: ../src/utils/pacat.c:716
+#, c-format
+msgid "Invalid sample specification\n"
+msgstr "చెల్లనటువంటి మాదిరి విశదీకరణ\n"
+
+#: ../src/utils/pacat.c:721
+#, c-format
+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"
+msgstr "%s స్ట్రీమ్‌ను మాదిరి విశదీకరణి '%s'తో తెరుచుచున్నది.\n"
+
+#: ../src/utils/pacat.c:728
+msgid "recording"
+msgstr "రికార్డింగు"
+
+#: ../src/utils/pacat.c:728
+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
+#, c-format
+msgid "pa_mainloop_new() failed.\n"
+msgstr "pa_mainloop_new() విఫలమైంది.\n"
+
+#: ../src/utils/pacat.c:785
+#, c-format
+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
+#, 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"
+msgstr "pa_context_connect() విఫలమైంది: %s"
+
+#: ../src/utils/pacat.c:810
+#, c-format
+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
+#, c-format
+msgid "pa_mainloop_run() failed.\n"
+msgstr "pa_mainloop_run() విఫలమైంది.\n"
+
+#: ../src/utils/pasuspender.c:81
+#, c-format
+msgid "fork(): %s\n"
+msgstr "fork(): %s\n"
+
+#: ../src/utils/pasuspender.c:92
+#, c-format
+msgid "execvp(): %s\n"
+msgstr "execvp(): %s\n"
+
+#: ../src/utils/pasuspender.c:109
+#, c-format
+msgid "Failure to suspend: %s\n"
+msgstr "అర్ధాంతరనిలుపుదల వైఫల్యం: %s\n"
+
+#: ../src/utils/pasuspender.c:124
+#, c-format
+msgid "Failure to resume: %s\n"
+msgstr "తిరిగికొనసాగింపు వైఫల్యము: %s\n"
+
+#: ../src/utils/pasuspender.c:147
+#, c-format
+msgid "WARNING: Sound server is not local, not suspending.\n"
+msgstr "హెచ్చరిక: శబ్ధపు సేవిక స్థానికం కాదు, అర్ధాంతరనిలుపుదల కావడంలేదు.\n"
+
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
+#: ../src/utils/paplay.c:191
+#, c-format
+msgid "Got SIGINT, exiting.\n"
+msgstr "SIGINT పొందింది, నిష్క్రమించుచున్నది.\n"
+
+#: ../src/utils/pasuspender.c:194
+#, c-format
+msgid "WARNING: Child process terminated by signal %u\n"
+msgstr "హెచ్చరిక: చైల్డు కార్యక్రమము సంకేతము %u ద్వారా అంతముచేయబడింది\n"
+
+#: ../src/utils/pasuspender.c:212
+#, c-format
+msgid ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+msgstr ""
+"%s [options] ... \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+"\n"
+
+#: ../src/utils/pasuspender.c:251
+#, c-format
+msgid ""
+"pasuspender %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pasuspender %s\n"
+"libpulse తో నిర్వర్తించబడింది %s\n"
+"libpulse తో నిర్వర్తించబడింది %s\n"
+
+#: ../src/utils/pactl.c:108
+#, c-format
+msgid "Failed to get statistics: %s\n"
+msgstr "గణాంకాలను పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:114
+#, c-format
+msgid "Currently in use: %u blocks containing %s bytes total.\n"
+msgstr "ప్రస్తుతం వుపయోగంలోవుంది: %u బ్లాక్‌లు %s బైట్లను మొత్తంగా కలిగి వున్నాయి.\n"
+
+#: ../src/utils/pactl.c:117
+#, c-format
+msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
+msgstr "మొత్తం లైఫ్‌టైములో కేటాయించబడింది: %u బ్లాకులు %s బైట్లను మొత్తంగా కలిగివున్నాయి.\n"
+
+#: ../src/utils/pactl.c:120
+#, c-format
+msgid "Sample cache size: %s\n"
+msgstr "మాదిరి క్యాచి పరిమాణము: %s\n"
+
+#: ../src/utils/pactl.c:129
+#, c-format
+msgid "Failed to get server information: %s\n"
+msgstr "సేవిక సమాచారమును పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:137
+#, c-format
+msgid ""
+"User name: %s\n"
+"Host Name: %s\n"
+"Server Name: %s\n"
+"Server Version: %s\n"
+"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
+"Default Sink: %s\n"
+"Default Source: %s\n"
+"Cookie: %08x\n"
+msgstr ""
+"వినియోగదారి నామము: %s\n"
+"హోస్టు నామము: %s\n"
+"సేవిక నామము: %s\n"
+"సేవిక వర్షన్: %s\n"
+"అప్రమేయ మాదిరి విశదీకరణ: %s\n"
+"అప్రమేయ ప్రసారమార్గ మాప్: %s\n"
+"అప్రమేయ సింకు: %s\n"
+"అప్రమేయ మూలము: %s\n"
+"కుకీ: %08x\n"
+
+#: ../src/utils/pactl.c:178
+#, c-format
+msgid "Failed to get sink information: %s\n"
+msgstr "సింక్ సమాచారమును పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:194
+#, c-format
+msgid ""
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"సింక్ #%u\n"
+"\tస్థితి: %s\n"
+"\tనామము: %s\n"
+"\tవివరణ: %s\n"
+"\tడ్రైవర్: %s\n"
+"\tమాదిరి విశదీకరణ: %s\n"
+"\tప్రసారమార్గ మాప్: %s\n"
+"\tయజమాని మాడ్యూల్: %u\n"
+"\tనిశ్శబ్దము: %s\n"
+"\tధ్వని: %s%s%s\n"
+"\t సమతుల్యత %0.2f\n"
+"\tబేస్ ధ్వని: %s%s%s\n"
+"\tమానిటర్ మూలము: %s\n"
+"\tక్రియాహీనత: %0.0f usec, ఆకృతీకరించిన %0.0f usec\n"
+"\tఫ్లాగ్‌లు: %s%s%s%s%s%s\n"
+"\tలక్షణాలు:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:258
+#, c-format
+msgid "Failed to get source information: %s\n"
+msgstr "మూలము సమాచారము పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:274
+#, c-format
+msgid ""
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"మూలము #%u\n"
+"\tస్థితి: %s\n"
+"\tనామము: %s\n"
+"\tవివరణ: %s\n"
+"\tడ్రైవర్: %s\n"
+"\tమాదిరి విశదీకరణ: %s\n"
+"\tప్రసారమార్గ మాప్: %s\n"
+"\tయజమాని మాడ్యూల్: %u\n"
+"\tనిశ్శబ్దము: %s\n"
+"\tధ్వని: %s%s%s\n"
+"\t సమతుల్యత %0.2f\n"
+"\tబేస్ ధ్వని: %s%s%s\n"
+"\tసింక్ యొక్క మానిటర్: %s\n"
+"\tక్రియాహీన: %0.0f usec, ఆకృతీకరించిన %0.0f usec\n"
+"\tఫ్లాగ్‌లు: %s%s%s%s%s%s\n"
+"\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
+msgid "n/a"
+msgstr "వర్తించదు"
+
+#: ../src/utils/pactl.c:324
+#, c-format
+msgid "Failed to get module information: %s\n"
+msgstr "మాడ్యూల్ సమాచారము పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:342
+#, c-format
+msgid ""
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"మాడ్యూల్ #%u\n"
+"\tనామము: %s\n"
+"\tఆర్గుమెంట్: %s\n"
+"\tవినియోగం లెక్కించునది: %s\n"
+"\tలక్షణాలు:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:361
+#, c-format
+msgid "Failed to get client information: %s\n"
+msgstr "కక్షిదారి సమాచారము పొందుటలో విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:379
+#, c-format
+msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"కక్షిదారి #%u\n"
+"\tడ్రైవర్: %s\n"
+"\tయజమాని మాడ్యూల్: %s\n"
+"\tలక్షణాలు:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:396
+#, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "కార్డు సమాచారము పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"కార్డు #%u\n"
+"\tనామము: %s\n"
+"\tడ్రైవర్: %s\n"
+"\tయజమాని మాడ్యూల్: %s\n"
+"\tలక్షణాలు:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr "\tప్రోఫైల్సు:\n"
+
+#: ../src/utils/pactl.c:434
+#, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "\tక్రియాశీల ప్రొఫైల్: %s\n"
+
+#: ../src/utils/pactl.c:445
+#, c-format
+msgid "Failed to get sink input information: %s\n"
+msgstr "సింక్ ఇన్పుట్ సమాచారము పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:464
+#, c-format
+msgid ""
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"సింక్ ఇన్పుట్ #%u\n"
+"\tడ్రైవర్: %s\n"
+"\tయజమాని మాడ్యూల్: %s\n"
+"\tకక్షిదారి: %s\n"
+"\tసింక్: %u\n"
+"\tమాదిరి విశదీకరణము: %s\n"
+"\tప్రసారమార్గ మాప్: %s\n"
+"\tనిశ్శబ్ధము: %s\n"
+"\tవాల్యూమ్: %s\n"
+"\t %s\n"
+"\t సమతుల్యత %0.2f\n"
+"\tబఫర్ క్రియాహీనత: %0.0f usec\n"
+"\tసింక్ క్రియాహీనత: %0.0f usec\n"
+"\tపునఃవుదాహరణ పద్దతి: %s\n"
+"\tలక్షణాలు:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:503
+#, c-format
+msgid "Failed to get source output information: %s\n"
+msgstr "మూలపు అవుట్పుట్ సమాచారము పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:523
+#, c-format
+msgid ""
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"మూలము అవుట్పుట్ #%u\n"
+"\tడ్రైవర్: %s\n"
+"\tయజమాని మాడ్యూల్: %s\n"
+"\tకక్షిదారి: %s\n"
+"\tమూలము: %u\n"
+"\tమాదిరి విశదీకరణ: %s\n"
+"\tప్రసారమార్గ మాప్: %s\n"
+"\tబఫర్ క్రియాహీనత: %0.0f usec\n"
+"\tమూలము క్రియాహీనత: %0.0f usec\n"
+"\tపునఃవుదాహరణ విశదీకరణ: %s\n"
+"\tలక్షణాలు:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:554
+#, c-format
+msgid "Failed to get sample information: %s\n"
+msgstr "మాదిరి సమాచారము పొందుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:572
+#, c-format
+msgid ""
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
+"మాదిరి #%u\n"
+"\tనామము: %s\n"
+"\tమాదిరి విశదీకరణ: %s\n"
+"\tప్రసారమార్గము మాప్: %s\n"
+"\tధ్వని: %s\n"
+"\t %s\n"
+"\t సమతుల్యత %0.2f\n"
+"\tనిడివి: %0.1fs\n"
+"\tపరిమాణము: %s\n"
+"\tలేటు: %s\n"
+"\tదస్త్రనామము: %s\n"
+"\tలక్షణాలు:\n"
+"\t\t%s\n"
+
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
+#, c-format
+msgid "Failure: %s\n"
+msgstr "విఫైల్యము: %s\n"
+
+#: ../src/utils/pactl.c:636
+#, c-format
+msgid "Failed to upload sample: %s\n"
+msgstr "మాదిరి అప్‌లోడు చేయుటకు విఫలమైంది: %s\n"
+
+#: ../src/utils/pactl.c:653
+#, c-format
+msgid "Premature end of file\n"
+msgstr "దస్త్రము యొక్క అపరిపక్వ ముగింపు\n"
+
+#: ../src/utils/pactl.c:774
+#, c-format
+msgid ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+msgstr ""
+"%s [options] stat\n"
+"%s [options] list\n"
+"%s [options] exit\n"
+"%s [options] upload-sample FILENAME [NAME]\n"
+"%s [options] play-sample NAME [SINK]\n"
+"%s [options] remove-sample NAME\n"
+"%s [options] move-sink-input ID SINK\n"
+"%s [options] move-source-output ID SOURCE\n"
+"%s [options] load-module NAME [ARGS ...]\n"
+"%s [options] unload-module ID\n"
+"%s [options] suspend-sink [SINK] 1|0\n"
+"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
+"\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
+"\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+
+#: ../src/utils/pactl.c:826
+#, c-format
+msgid ""
+"pactl %s\n"
+"Compiled with libpulse %s\n"
+"Linked with libpulse %s\n"
+msgstr ""
+"pactl %s\n"
+"libpulse తో నిర్వర్తించబడింది%s\n"
+"libpulse తో లింకుచేయబడింది %s\n"
+
+#: ../src/utils/pactl.c:865
+#, c-format
+msgid "Please specify a sample file to load\n"
+msgstr "లోడువ్వుటకు దయచేసి మాదిరి దస్త్రమును తెలుపుము\n"
+
+#: ../src/utils/pactl.c:887
+#, c-format
+msgid "Failed to open sound file.\n"
+msgstr "శబ్దపు దస్త్రమును తెరువుటకు విఫలమైంది.\n"
+
+#: ../src/utils/pactl.c:899
+#, c-format
+msgid "You have to specify a sample name to play\n"
+msgstr "ప్లే చేయుటకు మీరు మాదిరి నామమును తెలుపవలసి వుంది\n"
+
+#: ../src/utils/pactl.c:911
+#, c-format
+msgid "You have to specify a sample name to remove\n"
+msgstr "తొలగించుటకు మీరు మాదిరి నామమును తెలుపవలసి వుంది\n"
+
+#: ../src/utils/pactl.c:919
+#, c-format
+msgid "You have to specify a sink input index and a sink\n"
+msgstr "మీరు సింక్ ఇన్పుట్ విషయసూచిక మరియు సింక్ తెలుపవలసి వుంది\n"
+
+#: ../src/utils/pactl.c:928
+#, c-format
+msgid "You have to specify a source output index and a source\n"
+msgstr "మీరు మూలము అవుట్పుట్ విషయసూచిక మరియు మూలము తెలుపవలసి వుంది\n"
+
+#: ../src/utils/pactl.c:942
+#, c-format
+msgid "You have to specify a module name and arguments.\n"
+msgstr "మీరు మాడ్యూల్ నామము మరియు ఆర్గుమెంట్లు తెలుపవలసి వుంది.\n"
+
+#: ../src/utils/pactl.c:962
+#, c-format
+msgid "You have to specify a module index\n"
+msgstr "మీరు మాడ్యూల్ విషయసూచిక తెలుపవలసి వుంది\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"
+
+#: ../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"
+
+#: ../src/utils/pactl.c:997
+#, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "మీరు కార్డ్ నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది\n"
+
+#: ../src/utils/pactl.c:1012
+#, c-format
+msgid "No valid command specified.\n"
+msgstr "ఎటువంటి విలువైన ఆదేశము తెలుపలేదు.\n"
+
+#: ../src/utils/pax11publish.c:61
+#, c-format
+msgid ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+msgstr ""
+"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
+"\n"
+" -d Show current PulseAudio data attached to X11 display (default)\n"
+" -e Export local PulseAudio data to X11 display\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
+" -r Remove PulseAudio data from X11 display\n"
+
+#: ../src/utils/pax11publish.c:94
+#, c-format
+msgid "Failed to parse command line.\n"
+msgstr "ఆదేశ వరుసను పార్శ్ చేయుటకు విఫలమైంది.\n"
+
+#: ../src/utils/pax11publish.c:108
+#, c-format
+msgid "Server: %s\n"
+msgstr "సేవిక: %s\n"
+
+#: ../src/utils/pax11publish.c:110
+#, c-format
+msgid "Source: %s\n"
+msgstr "మూలము: %s\n"
+
+#: ../src/utils/pax11publish.c:112
+#, c-format
+msgid "Sink: %s\n"
+msgstr "సింక్: %s\n"
+
+#: ../src/utils/pax11publish.c:114
+#, c-format
+msgid "Cookie: %s\n"
+msgstr "కుకీ: %s\n"
+
+#: ../src/utils/pax11publish.c:132
+#, c-format
+msgid "Failed to parse cookie data\n"
+msgstr "కుకీ డాటా పార్శ్ చేయుటకు విఫలమైంది\n"
+
+#: ../src/utils/pax11publish.c:137
+#, c-format
+msgid "Failed to save cookie data\n"
+msgstr "కుకీ డాటా దాయుటకు విఫలమైంది\n"
+
+#: ../src/utils/pax11publish.c:152
+#, c-format
+msgid "Failed to load client configuration file.\n"
+msgstr "కక్షిదారి ఆకృతీకరణ దస్త్రమును లోడు చేయుటకు విఫలమైంది.\n"
+
+#: ../src/utils/pax11publish.c:157
+#, c-format
+msgid "Failed to read environment configuration data.\n"
+msgstr "ఎన్విరాన్మెంట్ ఆకృతీకరణ డాటాను చదువుటకు విఫలమైంది.\n"
+
+#: ../src/utils/pax11publish.c:174
+#, c-format
+msgid "Failed to get FQDN.\n"
+msgstr "FQDN పొందుటకు విఫలమైంది.\n"
+
+#: ../src/utils/pax11publish.c:194
+#, c-format
+msgid "Failed to load cookie data\n"
+msgstr "కుకీ డాటా లోడు చేయుటకు విఫలమైంది\n"
+
+#: ../src/utils/pax11publish.c:211
+#, c-format
+msgid "Not yet implemented.\n"
+msgstr "ఇంకా యింప్లిమెంట్ చేయలేదు\n"
+
+#: ../src/utils/pacmd.c:64
+#, c-format
+msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
+
+#: ../src/utils/pacmd.c:81
+#, c-format
+msgid "connect(): %s"
+msgstr "connect(): %s"
+
+#: ../src/utils/pacmd.c:89
+msgid "Failed to kill PulseAudio daemon."
+msgstr "PulseAudio డెమోన్ నాశనం చేయుటలో విఫలమైంది."
+
+#: ../src/utils/pacmd.c:97
+msgid "Daemon not responding."
+msgstr "డెమోన్ స్పందించుటలేదు."
+
+#: ../src/utils/pacmd.c:144
+#, c-format
+msgid "select(): %s"
+msgstr "select(): %s"
+
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
+#, c-format
+msgid "read(): %s"
+msgstr "read(): %s"
+
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
+#, 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
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA కొత్త డాటాను పరికరముకు వ్రాయుటకు మనలను జాగరూక పరిచింది, అయితే అక్కడ వాస్తవంగా వ్రాయుటకు యేమి "
+"లేదు!\n"
+"సాదారణం యిది ALSA డ్రైవర్ %s నందు బగ్ కావచ్చును. దయచేసి దీనిని ALSA అభివృద్దికారులకు తెలియపరచండి.\n"
+"మనము POLLOUT అమర్పు ద్వారా జాగరూక పరచబడినాము -- ఏమైనప్పటికి snd_pcm_avail() అనునది 0 ను "
+"యిస్తుంది లేదా వేరొక విలువ < min_avail యిస్తుంది."
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA కొత్త డాటాను పరికరమునుండి చదువుటకు మనలను జాగరూక పరిచింది, అయితే అక్కడ వాస్తవంగా "
+"చదువుటకు యేమి లేదు!\n"
+"సాదారణం యిది ALSA డ్రైవర్ %s నందు బగ్ కావచ్చును. దయచేసి దీనిని ALSA అభివృద్దికారులకు తెలియపరచండి.\n"
+"మనము POLLOUT అమర్పు ద్వారా జాగరూక పరచబడినాము -- ఏమైనప్పటికి snd_pcm_avail() అనునది 0 ను "
+"యిస్తుంది లేదా వేరొక విలువ < min_avail యిస్తుంది."
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "అవుట్పుట్ %s + ఇన్పుట్ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "అవుట్పుట్ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "ఇన్పుట్ %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "ఆఫ్"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "హై ఫెడిలిటి ప్లేబ్యాక్ (A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "టెలిఫోనీ డూప్లెక్స్ (HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "పల్స్ ఆడియో సౌండ్ సేవిక"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index cbf4eaf..5563e35 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,67 +1,70 @@
+# translation of pulseaudio.master-tx.po to Simplified Chinese
# 简体中文翻译
# Copyright (C) 2008 THE 'S COPYRIGHT HOLDER
# This file is distributed under the same license as the package.
# 闫丰刚 (sainry)<sainry@gmail.com> 2008
-# 闫丰刚 <sainry@gmail.com>, 2009.
#
#
+# 闫丰刚 <sainry@gmail.com>, 2009.
+# Leah Liu <lliu@redhat.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: PulseAudio\n"
+"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 12:27+0100\n"
-"PO-Revision-Date: 2009-01-24 12:47+0800\n"
-"Last-Translator: 王泽国 <zak.zeguo.wang@gmail.com>\n"
-"Language-Team: Chinese/Simplified\n"
+"POT-Creation-Date: 2009-04-13 23:08+0200\n"
+"PO-Revision-Date: 2009-04-06 10:26+1000\n"
+"Last-Translator: Leah Liu <lliu@redhat.com>\n"
+"Language-Team: Simplified Chinese <zh@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
-msgstr ""
+msgstr "模拟单声道"
-#: ../src/modules/alsa/alsa-util.c:536
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Analog Stereo"
-msgstr ""
+msgstr "模拟立体声"
-#: ../src/modules/alsa/alsa-util.c:542
+#: ../src/modules/alsa/alsa-util.c:546
msgid "Digital Stereo (IEC958)"
-msgstr ""
+msgstr "数字立体声(IEC958)"
-#: ../src/modules/alsa/alsa-util.c:548
+#: ../src/modules/alsa/alsa-util.c:554
msgid "Digital Stereo (HDMI)"
-msgstr ""
+msgstr "数字立体声(HDMI)"
-#: ../src/modules/alsa/alsa-util.c:555
+#: ../src/modules/alsa/alsa-util.c:563
msgid "Analog Surround 4.0"
-msgstr ""
+msgstr "模拟环绕 4.0"
-#: ../src/modules/alsa/alsa-util.c:562
+#: ../src/modules/alsa/alsa-util.c:572
msgid "Digital Surround 4.0 (IEC958/AC3)"
-msgstr ""
+msgstr "数字环绕 4.0(IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:570
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 4.1"
-msgstr ""
+msgstr "模拟环绕 4.1"
-#: ../src/modules/alsa/alsa-util.c:578
+#: ../src/modules/alsa/alsa-util.c:592
msgid "Analog Surround 5.0"
-msgstr ""
+msgstr "模拟环绕 5.0"
-#: ../src/modules/alsa/alsa-util.c:586
+#: ../src/modules/alsa/alsa-util.c:602
msgid "Analog Surround 5.1"
-msgstr ""
+msgstr "模拟环绕 5.1"
-#: ../src/modules/alsa/alsa-util.c:594
+#: ../src/modules/alsa/alsa-util.c:612
msgid "Digital Surround 5.1 (IEC958/AC3)"
-msgstr ""
+msgstr "数字环绕 5.1(IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:603
+#: ../src/modules/alsa/alsa-util.c:623
msgid "Analog Surround 7.1"
-msgstr ""
+msgstr "模拟环绕 7.1"
-#: ../src/modules/alsa/alsa-util.c:1602
+#: ../src/modules/alsa/alsa-util.c:1644
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,8 +72,10 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_avail() 返回的值非常大:%lu 字节(%lu ms)。\n"
+"很可能是 ALSA 驱动程序 '%s' 中的 bug。请向 ALSA 开发者举报这个问题。"
-#: ../src/modules/alsa/alsa-util.c:1642
+#: ../src/modules/alsa/alsa-util.c:1685
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -78,8 +83,10 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_delay() 返回的值非常大:%li 字节(%s%lu ms)。\n"
+"很可能是 ALSA 驱动程序 '%s' 中的 bug。请向 ALSA 开发者举报这个问题。"
-#: ../src/modules/alsa/alsa-util.c:1688
+#: ../src/modules/alsa/alsa-util.c:1732
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -87,29 +94,28 @@ msgid ""
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
+"snd_pcm_mmap_begin() 返回的值非常大:%lu 字节(%lu ms)。\n"
+"很可能是 ALSA 驱动程序 '%s' 中的 bug。请向 ALSA 开发者举报这个问题。"
-#: ../src/pulsecore/sink.c:1963
-#, fuzzy
+#: ../src/pulsecore/sink.c:2141
msgid "Internal Audio"
-msgstr "内部错误"
+msgstr "内部音频"
-#: ../src/pulsecore/sink.c:1969
+#: ../src/pulsecore/sink.c:2147
msgid "Modem"
-msgstr ""
+msgstr "调制解调器"
#: ../src/daemon/ltdl-bind-now.c:124
-#, fuzzy
msgid "Failed to find original lt_dlopen loader."
-msgstr "查找原始dlopen加载器失败。"
+msgstr "查找原始 lt_dlopen 加载器失败。"
#: ../src/daemon/ltdl-bind-now.c:129
-#, fuzzy
msgid "Failed to allocate new dl loader."
-msgstr "查找原始dlopen加载器失败。"
+msgstr "分配新的 dl 加载器失败。"
#: ../src/daemon/ltdl-bind-now.c:142
msgid "Failed to add bind-now-loader."
-msgstr "添加bind-now-loader失败。"
+msgstr "添加 bind-now-loader 失败。"
#: ../src/daemon/polkit.c:55
#, c-format
@@ -165,104 +171,104 @@ msgstr "无法获取授权: %s"
msgid "PolicyKit responded with '%s'"
msgstr "PolicyKit回复'%s'"
-#: ../src/daemon/main.c:134
+#: ../src/daemon/main.c:137
#, c-format
msgid "Got signal %s."
msgstr "获得信号%s"
-#: ../src/daemon/main.c:161
+#: ../src/daemon/main.c:164
msgid "Exiting."
msgstr "退出"
-#: ../src/daemon/main.c:179
+#: ../src/daemon/main.c:182
#, c-format
msgid "Failed to find user '%s'."
msgstr "找不到用户 `%s' "
-#: ../src/daemon/main.c:184
+#: ../src/daemon/main.c:187
#, c-format
msgid "Failed to find group '%s'."
msgstr "找不到用户组 `%s'"
-#: ../src/daemon/main.c:188
+#: ../src/daemon/main.c:191
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "发现用户'%s' (UID %lu)和组'%s' (GID %lu)."
-#: ../src/daemon/main.c:193
+#: ../src/daemon/main.c:196
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "用户'%s'与组'%s'的GID不匹配."
-#: ../src/daemon/main.c:198
+#: ../src/daemon/main.c:201
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "用户'%s'的主文件夹不是'%s',忽略。"
-#: ../src/daemon/main.c:201 ../src/daemon/main.c:206
+#: ../src/daemon/main.c:204 ../src/daemon/main.c:209
#, c-format
msgid "Failed to create '%s': %s"
msgstr "创建'%s'失败: %s"
-#: ../src/daemon/main.c:213
+#: ../src/daemon/main.c:216
#, c-format
msgid "Failed to change group list: %s"
msgstr "更改组列表失败:%s"
-#: ../src/daemon/main.c:229
+#: ../src/daemon/main.c:232
#, c-format
msgid "Failed to change GID: %s"
msgstr "更改GID失败:%s"
-#: ../src/daemon/main.c:245
+#: ../src/daemon/main.c:248
#, c-format
msgid "Failed to change UID: %s"
msgstr "更改UID失败:%s"
-#: ../src/daemon/main.c:259
+#: ../src/daemon/main.c:262
msgid "Successfully dropped root privileges."
msgstr "成功放弃root权限。"
-#: ../src/daemon/main.c:267
+#: ../src/daemon/main.c:270
msgid "System wide mode unsupported on this platform."
msgstr "此平台不支持system-wide模式。"
-#: ../src/daemon/main.c:285
+#: ../src/daemon/main.c:288
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) 失败:%s"
-#: ../src/daemon/main.c:434
+#: ../src/daemon/main.c:476
msgid "Failed to parse command line."
msgstr "分析命令行失败。"
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:500
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "我们在'%s'组中,允许高优先级调度。"
-#: ../src/daemon/main.c:465
+#: ../src/daemon/main.c:507
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "我们在'%s'组中,允许实时调度。"
-#: ../src/daemon/main.c:473
+#: ../src/daemon/main.c:515
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit授予我们“获取高优先级”权限。"
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:518
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit拒绝“获取高优先级”权限。"
-#: ../src/daemon/main.c:481
+#: ../src/daemon/main.c:523
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit授予我们“获取实时”权限。"
-#: ../src/daemon/main.c:484
+#: ../src/daemon/main.c:526
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit拒绝我们“获取实时”权限。"
-#: ../src/daemon/main.c:513
+#: ../src/daemon/main.c:555
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -274,217 +280,238 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
+"配置中需要调用 SUID root、实时和/或者高优先调度。但是我们缺少必要的特权:\n"
+"我们不属于组群 '%s',PolicyKit 拒绝赋予我们要求的特权,而我们无法增加 "
+"RLIMIT_NICE/RLIMIT_RTPRIO 资源限制。\n"
+"要启用实时/高优先调度,请获得适当的 PolicyKit 特权,或者成为 '%s' 成员,也可"
+"以为这个用户增加 RLIMIT_NICE/RLIMIT_RTPRIO 资源限制。"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:580
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "配置中已启用高优先级调度,但策略未允许。"
-#: ../src/daemon/main.c:567
+#: ../src/daemon/main.c:609
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "提高RLIMIT_RTPRIO成功。"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:612
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO失败:%s"
-#: ../src/daemon/main.c:577
+#: ../src/daemon/main.c:619
msgid "Giving up CAP_NICE"
msgstr "正在放弃CAP_NICE"
-#: ../src/daemon/main.c:584
+#: ../src/daemon/main.c:626
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "配置中已启用实时调度,但策略未允许。"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:687
msgid "Daemon not running"
msgstr "后台程序没有运行"
-#: ../src/daemon/main.c:647
+#: ../src/daemon/main.c:689
#, c-format
msgid "Daemon running as PID %u"
msgstr "后台程序正在运行,PID %u"
-#: ../src/daemon/main.c:657
+#: ../src/daemon/main.c:699
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "杀死后台程序失败:%s"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:717
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "不应以root身份运行本程序(除非指定 --system)。"
-#: ../src/daemon/main.c:677
-#, fuzzy
+#: ../src/daemon/main.c:719
msgid "Root privileges required."
-msgstr "需要root权限。"
+msgstr "需要 root 权限。"
-#: ../src/daemon/main.c:682
+#: ../src/daemon/main.c:724
msgid "--start not supported for system instances."
msgstr "系统实例不支持 --start。"
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:729
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "正在以系统模式运行,但是 --disallow-exit 未设定!"
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:732
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "正在以系统模式运行,但是 --disallow-module-loading 未设定!"
-#: ../src/daemon/main.c:693
+#: ../src/daemon/main.c:735
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "正在以系统模式运行,强制禁用SHM模式!"
-#: ../src/daemon/main.c:698
+#: ../src/daemon/main.c:740
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "正在以系统模式运行,强制禁用退出空闲时间!"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:767
msgid "Failed to acquire stdio."
msgstr "获取stdio失败。"
-#: ../src/daemon/main.c:731
+#: ../src/daemon/main.c:773
#, c-format
msgid "pipe failed: %s"
msgstr "管道失败:%s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:778
#, c-format
msgid "fork() failed: %s"
msgstr "fork()失败:%s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:792
#, c-format
msgid "read() failed: %s"
msgstr "read()失败:%s"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:798
msgid "Daemon startup failed."
msgstr "后台程序启动失败。"
-#: ../src/daemon/main.c:758
+#: ../src/daemon/main.c:800
msgid "Daemon startup successful."
msgstr "后台程序启动成功。"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:870
#, c-format
msgid "This is PulseAudio %s"
msgstr "这是 PulseAudio %s"
-#: ../src/daemon/main.c:829
+#: ../src/daemon/main.c:871
#, c-format
msgid "Compilation host: %s"
msgstr "编译主机:%s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:872
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "编译CFLAGS:%s"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:875
#, c-format
msgid "Running on host: %s"
msgstr "正在主机上运行:%s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:878
#, c-format
msgid "Found %u CPUs."
-msgstr ""
+msgstr "找到 %u CPU。"
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:880
#, c-format
msgid "Page size is %lu bytes"
msgstr "页面大小为%lu字节"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:883
msgid "Compiled with Valgrind support: yes"
msgstr "编译启用Valgrind支持:是"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:885
msgid "Compiled with Valgrind support: no"
msgstr "编译启用Valgrind支持:否"
-#: ../src/daemon/main.c:846
+#: ../src/daemon/main.c:888
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "正在以valgrind模式运行:%s"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:891
msgid "Optimized build: yes"
msgstr "优化生成:是"
-#: ../src/daemon/main.c:851
+#: ../src/daemon/main.c:893
msgid "Optimized build: no"
msgstr "优化生成:否"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:897
+msgid "NDEBUG defined, all asserts disabled."
+msgstr "拒绝 NDEBUG,禁用所有 assert"
+
+#: ../src/daemon/main.c:899
+msgid "FASTPATH defined, only fast path asserts disabled."
+msgstr "拒绝 FASTPATH,只禁用快速路径 assert。"
+
+#: ../src/daemon/main.c:901
+msgid "All asserts enabled."
+msgstr "启用所有 assert。"
+
+#: ../src/daemon/main.c:905
msgid "Failed to get machine ID"
msgstr "获取machine ID失败"
-#: ../src/daemon/main.c:858
+#: ../src/daemon/main.c:908
#, c-format
msgid "Machine ID is %s."
msgstr "machine ID是%s。"
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:912
+#, fuzzy, c-format
+msgid "Session ID is %s."
+msgstr "machine ID是%s。"
+
+#: ../src/daemon/main.c:918
#, c-format
msgid "Using runtime directory %s."
msgstr "正在使用运行时文件夹%s。"
-#: ../src/daemon/main.c:868
+#: ../src/daemon/main.c:923
#, c-format
msgid "Using state directory %s."
msgstr "正在使用状态文件夹%s。"
-#: ../src/daemon/main.c:871
+#: ../src/daemon/main.c:926
#, c-format
msgid "Running in system mode: %s"
msgstr "正在以系统模式运行:%s"
-#: ../src/daemon/main.c:886
+#: ../src/daemon/main.c:941
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败。"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:953
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "新鲜的高分辨率计时器开锅了!吃个饱!"
-#: ../src/daemon/main.c:900
+#: ../src/daemon/main.c:955
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "老兄,你的内核真臭!现在流行的是启用了高分辩率计分器的Linux!"
-#: ../src/daemon/main.c:912
+#: ../src/daemon/main.c:967
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败。"
-#: ../src/daemon/main.c:974
+#: ../src/daemon/main.c:1029
msgid "Failed to initialize daemon."
msgstr "后台程序初始化失败。"
-#: ../src/daemon/main.c:979
+#: ../src/daemon/main.c:1034
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "后台程序启动未加载任何模块,拒绝工作。"
-#: ../src/daemon/main.c:992
+#: ../src/daemon/main.c:1051
msgid "Daemon startup complete."
msgstr "后台程序启动完成。"
-#: ../src/daemon/main.c:998
+#: ../src/daemon/main.c:1057
msgid "Daemon shutdown initiated."
msgstr "开始关闭后台程序。"
-#: ../src/daemon/main.c:1016
+#: ../src/daemon/main.c:1079
msgid "Daemon terminated."
msgstr "后台程序已终止。"
#: ../src/daemon/cmdline.c:121
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -561,16 +588,16 @@ msgstr ""
"COMMANDS:\n"
" -h, --help 显示此帮助\n"
" --version 显示版本号\n"
-" --dump-conf 转出默认设置\n"
-" --dump-modules 转出可用的模块列表\n"
-" --dump-resample-methods 转出可用的重采样方法\n"
+" --dump-conf 转储默认设置\n"
+" --dump-modules 转储可用的模块列表\n"
+" --dump-resample-methods 转储可用的重采样方法\n"
" --cleanup-shm 清理滞留的共享内存段\n"
" --start 如果后台程序没有运行则启动后台程序\n"
" -k --kill 杀死运行中的后台程序\n"
" --check 检查运行中的后台程序\n"
"\n"
"OPTIONS:\n"
-" --system[=BOOL] 作为系统范围实例运行\n"
+" --system[=BOOL] 作为系统范围事件运行\n"
" -D, --daemonize[=BOOL] 启动后转为后台运行\n"
" --fail[=BOOL] 启动失败则退出\n"
" --high-priority[=BOOL] 尝试设定高nice level\n"
@@ -596,9 +623,10 @@ msgstr ""
" (使用 --dump-resample-methods 查看\n"
" 可能的值)\n"
" --use-pid-file[=BOOL] 创建一个PID文件\n"
-" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n"
-" platforms that support it.\n"
-" --disable-shm[=BOOL] 禁用共享内存支持\n"
+" --no-cpu-limit[=BOOL] 不在支持它的平台中安装 CPU 载入限制程"
+"序。\n"
+" --disable-shm"
+"[=BOOL] 禁用共享内存支持\n"
"\n"
"STARTUP SCRIPT:\n"
" -L, --load=\"MODULE ARGUMENTS\" 用指令参数加载\n"
@@ -638,9 +666,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading 期待布尔参数"
#: ../src/daemon/cmdline.c:302
-#, fuzzy
msgid "--disallow-exit expects boolean argument"
-msgstr "--disallow-exit 布尔参数"
+msgstr "--disallow-exit 需要布尔值参数"
#: ../src/daemon/cmdline.c:309
msgid "--use-pid-file expects boolean argument"
@@ -651,14 +678,12 @@ msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "无效的日志目标:从syslog,stderr和auto中选取一个"
#: ../src/daemon/cmdline.c:333
-#, fuzzy
msgid "--log-time expects boolean argument"
-msgstr "--realtime 期待布尔参数"
+msgstr "--log-time 需要布尔值参数"
#: ../src/daemon/cmdline.c:340
-#, fuzzy
msgid "--log-meta expects boolean argument"
-msgstr "--disallow-exit 布尔参数"
+msgstr "--log-meta 需要布尔值参数"
#: ../src/daemon/cmdline.c:359
#, c-format
@@ -758,9 +783,9 @@ msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] 无效的样品通道'%s'。"
#: ../src/daemon/daemon-conf.c:353
-#, fuzzy, c-format
+#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
-msgstr "[%s:%u] 无效的样品通道'%s'。"
+msgstr "[%s:%u] 无效频道地图 '%s'。"
#: ../src/daemon/daemon-conf.c:371
#, c-format
@@ -786,7 +811,7 @@ msgstr "打开配置文件失败:%s"
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
-msgstr ""
+msgstr "指定的默认频道地图的频道数与指定的默认频道数不同。"
#: ../src/daemon/daemon-conf.c:616
#, c-format
@@ -794,9 +819,8 @@ msgid "### Read from configuration file: %s ###\n"
msgstr "### 从配置文件读取:%s ###\n"
#: ../src/daemon/caps.c:63
-#, fuzzy
msgid "Dropping root privileges."
-msgstr "正在取消root权限。"
+msgstr "正在取消 root 特权。"
#: ../src/daemon/caps.c:103
msgid "Limited capabilities successfully to CAP_SYS_NICE."
@@ -804,31 +828,29 @@ msgstr "性能成功限制到CAP_SYS_NICE。"
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
-msgstr ""
+msgstr "PulseAudio 声音系统"
#: ../src/daemon/pulseaudio.desktop.in.h:2
msgid "Start the PulseAudio Sound System"
-msgstr ""
+msgstr "启动 PulseAudio 声音系统"
#: ../src/daemon/org.pulseaudio.policy.in.h:1
msgid ""
"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
-msgstr ""
+msgstr "PulseAudio 守护进程的高优先调度(负的 Unix nic 等级)"
#: ../src/daemon/org.pulseaudio.policy.in.h:2
-#, fuzzy
msgid "Real-time scheduling for the PulseAudio daemon"
-msgstr "杀死PulseAudio后台程序失败。"
+msgstr "PulseAudio 守护进程的实时调度。"
#: ../src/daemon/org.pulseaudio.policy.in.h:3
-#, fuzzy
msgid ""
"System policy prevents PulseAudio from acquiring high-priority scheduling."
-msgstr "我们在'%s'组中,允许高优先级调度。"
+msgstr "系统策略防止 PulseAudio 获得高优先调度。"
#: ../src/daemon/org.pulseaudio.policy.in.h:4
msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
-msgstr ""
+msgstr "系统策略防止 PulseAudio 获得实时调度。"
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
@@ -1042,31 +1064,31 @@ msgstr "(无效)"
#: ../src/pulse/channelmap.c:808
msgid "Stereo"
-msgstr ""
+msgstr "立体声"
#: ../src/pulse/channelmap.c:813
msgid "Surround 4.0"
-msgstr ""
+msgstr "环绕 4.0 "
#: ../src/pulse/channelmap.c:819
msgid "Surround 4.1"
-msgstr ""
+msgstr "环绕 4.1"
#: ../src/pulse/channelmap.c:825
msgid "Surround 5.0"
-msgstr ""
+msgstr "环绕 5.0"
#: ../src/pulse/channelmap.c:831
msgid "Surround 5.1"
-msgstr ""
+msgstr "环绕 5.1"
#: ../src/pulse/channelmap.c:838
msgid "Surround 7.1"
-msgstr ""
+msgstr "环绕 7.1"
#: ../src/pulse/error.c:43
msgid "OK"
-msgstr "好"
+msgstr "确定"
#: ../src/pulse/error.c:44
msgid "Access denied"
@@ -1154,69 +1176,69 @@ msgstr "没有该扩展"
#: ../src/pulse/error.c:65
msgid "Obsolete functionality"
-msgstr ""
+msgstr "废弃的功能性"
#: ../src/pulse/error.c:66
msgid "Missing implementation"
-msgstr ""
+msgstr "缺少部署"
#: ../src/pulse/error.c:67
msgid "Client forked"
-msgstr ""
+msgstr "客户端分支"
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
-msgstr ""
+msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:181
#, c-format
msgid "%0.1f GiB"
-msgstr ""
+msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:183
#, c-format
msgid "%0.1f MiB"
-msgstr ""
+msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f KiB"
-msgstr ""
+msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:187
#, c-format
msgid "%u B"
-msgstr ""
+msgstr "%u B"
#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay()失败"
-#: ../src/pulse/client-conf-x11.c:78
+#: ../src/pulse/client-conf-x11.c:93
msgid "Failed to parse cookie data"
msgstr "cookie数据分析失败"
-#: ../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:523
+#: ../src/pulse/context.c:546
msgid "No cookie loaded. Attempting to connect without."
msgstr "没有加载cookie。尝试不加载cookie进行连接。"
-#: ../src/pulse/context.c:653
+#: ../src/pulse/context.c:676
#, c-format
msgid "fork(): %s"
msgstr "fork():%s"
-#: ../src/pulse/context.c:706
+#: ../src/pulse/context.c:729
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid():%s"
-#: ../src/pulse/context.c:1304
+#: ../src/pulse/context.c:1402
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "收到未知扩展'%s'的信息"
@@ -1300,88 +1322,93 @@ msgstr "流移至设备%s (%u,%s挂起)。%s\n"
msgid "not "
msgstr "not "
-#: ../src/utils/pacat.c:271
+#: ../src/utils/pacat.c:245
+#, c-format
+msgid "Stream buffer attributes changed.%s \n"
+msgstr "更改流换出属性。%s\n"
+
+#: ../src/utils/pacat.c:278
#, c-format
msgid "Connection established.%s \n"
msgstr "连接已建立。%s \n"
-#: ../src/utils/pacat.c:274
+#: ../src/utils/pacat.c:281
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new()失败:%s\n"
-#: ../src/utils/pacat.c:301
+#: ../src/utils/pacat.c:309
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback()失败:%s\n"
-#: ../src/utils/pacat.c:307
+#: ../src/utils/pacat.c:315
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_playback()失败:%s\n"
-#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pacat.c:329 ../src/utils/pasuspender.c:159
#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "连接失败:%s\n"
-#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
+#: ../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:346 ../src/utils/paplay.c:80
+#: ../src/utils/pacat.c:354 ../src/utils/paplay.c:80
#, c-format
msgid "Playback stream drained.\n"
msgstr "流播放完毕。\n"
-#: ../src/utils/pacat.c:356 ../src/utils/paplay.c:92
+#: ../src/utils/pacat.c:364 ../src/utils/paplay.c:92
#, c-format
msgid "Draining connection to server.\n"
-msgstr ""
+msgstr "Draining 连接到服务器。\n"
-#: ../src/utils/pacat.c:382
+#: ../src/utils/pacat.c:390
#, c-format
msgid "Got EOF.\n"
msgstr "收到EOF。\n"
-#: ../src/utils/pacat.c:388
+#: ../src/utils/pacat.c:396
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain():%s\n"
-#: ../src/utils/pacat.c:398
+#: ../src/utils/pacat.c:406
#, c-format
msgid "read() failed: %s\n"
msgstr "read()失败:%s\n"
-#: ../src/utils/pacat.c:430
+#: ../src/utils/pacat.c:438
#, c-format
msgid "write() failed: %s\n"
msgstr "write()失败:%s\n"
-#: ../src/utils/pacat.c:451
+#: ../src/utils/pacat.c:459
#, c-format
msgid "Got signal, exiting.\n"
msgstr "收到信号,正在退出。\n"
-#: ../src/utils/pacat.c:465
+#: ../src/utils/pacat.c:473
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "获取传输延迟失败:%s\n"
-#: ../src/utils/pacat.c:470
+#: ../src/utils/pacat.c:478
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "时间:%0.3f秒;延迟:%0.0f 微秒。 \r"
-#: ../src/utils/pacat.c:490
+#: ../src/utils/pacat.c:498
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info()失败:%s\n"
-#: ../src/utils/pacat.c:503
+#: ../src/utils/pacat.c:511
#, c-format
msgid ""
"%s [options]\n"
@@ -1466,7 +1493,7 @@ msgstr ""
" --latency=BYTES 请求指定字节数的延迟。\n"
" --process-time=BYTES 每次请求指定字节数的处理时间。\n"
-#: ../src/utils/pacat.c:604
+#: ../src/utils/pacat.c:612
#, c-format
msgid ""
"pacat %s\n"
@@ -1477,88 +1504,88 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pacat.c:661
+#: ../src/utils/pacat.c:669
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "无效的通道映射描述'%s'\n"
-#: ../src/utils/pacat.c:690
+#: ../src/utils/pacat.c:698
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "无效的延迟规格描述 %s'\n"
-#: ../src/utils/pacat.c:697
+#: ../src/utils/pacat.c:705
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "无效的处理时间描述 '%s'\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:716
#, c-format
msgid "Invalid sample specification\n"
msgstr "无效的采样描述\n"
-#: ../src/utils/pacat.c:713
+#: ../src/utils/pacat.c:721
#, c-format
msgid "Channel map doesn't match sample specification\n"
msgstr "通道映射与采样描述不匹配\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "以采样规格'%s'打开%s流。\n"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "recording"
msgstr "正在录制"
-#: ../src/utils/pacat.c:720
+#: ../src/utils/pacat.c:728
msgid "playback"
msgstr "回放"
-#: ../src/utils/pacat.c:728
+#: ../src/utils/pacat.c:736
#, c-format
msgid "open(): %s\n"
msgstr "open():%s\n"
-#: ../src/utils/pacat.c:733
+#: ../src/utils/pacat.c:741
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2():%s\n"
-#: ../src/utils/pacat.c:743
+#: ../src/utils/pacat.c:751
#, c-format
msgid "Too many arguments.\n"
msgstr "参数过多。\n"
-#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pacat.c:764 ../src/utils/pasuspender.c:280
#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new()失败。\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:785
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new()失败。\n"
-#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pacat.c:791 ../src/utils/pasuspender.c:293
#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new()失败。\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/pacat.c:799 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect()失败:%s"
-#: ../src/utils/pacat.c:802
+#: ../src/utils/pacat.c:810
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new()失败。\n"
-#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pacat.c:817 ../src/utils/pasuspender.c:301
#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
@@ -1655,7 +1682,7 @@ msgid "Failed to get server information: %s\n"
msgstr "获取服务器信息失败:%s\n"
#: ../src/utils/pactl.c:137
-#, fuzzy, c-format
+#, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
@@ -1672,8 +1699,9 @@ msgstr ""
"服务器名:%s\n"
"服务器版本:%s\n"
"默认采样规格:%s\n"
-"默认音频出口:%s\n"
+"默认频道地图:%s\n"
"默认音频入口:%s\n"
+"默认源: %s\n"
"Cookie:%08x\n"
#: ../src/utils/pactl.c:178
@@ -1682,7 +1710,7 @@ msgid "Failed to get sink information: %s\n"
msgstr "获取音频出口信息失败:%s\n"
#: ../src/utils/pactl.c:194
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sink #%u\n"
"\tState: %s\n"
@@ -1702,18 +1730,23 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 音频出口 #%u ***\n"
-"名称:%s\n"
-"驱动:%s\n"
-"采样规格:%s\n"
-"通道映射表:%s\n"
-"所有者模块:%u\n"
-"音量:%s\n"
-"音频入口监视器:%s\n"
-"延迟:%0.0f微秒,配置%0.0f微秒\n"
-"标记:%s%s%s%s%s%s\n"
-"属性:\n"
-"%s"
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:258
#, c-format
@@ -1721,7 +1754,7 @@ msgid "Failed to get source information: %s\n"
msgstr "获取音频入口信息失败:%s\n"
#: ../src/utils/pactl.c:274
-#, fuzzy, c-format
+#, c-format
msgid ""
"Source #%u\n"
"\tState: %s\n"
@@ -1741,18 +1774,23 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 音频入口 #%u ***\n"
-"名称:%s\n"
-"驱动:%s\n"
-"采样规格:%s\n"
-"通道映射表:%s\n"
-"所有者模块:%u\n"
-"音量:%s\n"
-"音频出口监视器:%s\n"
-"延迟:%0.0f微秒,配置%0.0f微秒\n"
-"标记:%s%s%s%s%s%s\n"
-"属性:\n"
-"%s"
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
@@ -1768,7 +1806,7 @@ msgid "Failed to get module information: %s\n"
msgstr "获取模块信息失败:%s\n"
#: ../src/utils/pactl.c:342
-#, fuzzy, c-format
+#, c-format
msgid ""
"Module #%u\n"
"\tName: %s\n"
@@ -1777,11 +1815,12 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 模块 #%u ***\n"
-"名称:%s\n"
-"参数:%s\n"
-"使用计数器:%s\n"
-"自动卸载:%s\n"
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:361
#, c-format
@@ -1789,7 +1828,7 @@ msgid "Failed to get client information: %s\n"
msgstr "获取客户端信息失败:%s\n"
#: ../src/utils/pactl.c:379
-#, fuzzy, c-format
+#, c-format
msgid ""
"Client #%u\n"
"\tDriver: %s\n"
@@ -1797,19 +1836,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 客户端 #%u ***\n"
-"驱动:%s\n"
-"所有者模块:%s\n"
-"属性:\n"
-"%s"
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:396
-#, fuzzy, c-format
+#, c-format
msgid "Failed to get card information: %s\n"
-msgstr "获取自动加载信息失败:%s\n"
+msgstr "获取声卡信息失败:%s\n"
#: ../src/utils/pactl.c:414
-#, fuzzy, c-format
+#, c-format
msgid ""
"Card #%u\n"
"\tName: %s\n"
@@ -1818,21 +1857,22 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 客户端 #%u ***\n"
-"驱动:%s\n"
-"所有者模块:%s\n"
-"属性:\n"
-"%s"
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
-msgstr ""
+msgstr "\tProfiles:\n"
#: ../src/utils/pactl.c:434
-#, fuzzy, c-format
+#, c-format
msgid "\tActive Profile: %s\n"
-msgstr "管道失败:%s"
+msgstr "\tActive Profile: %s\n"
#: ../src/utils/pactl.c:445
#, c-format
@@ -1840,7 +1880,7 @@ msgid "Failed to get sink input information: %s\n"
msgstr "获取音频出口输入信息失败:%s\n"
#: ../src/utils/pactl.c:464
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sink Input #%u\n"
"\tDriver: %s\n"
@@ -1859,19 +1899,22 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 音频出口输入 #%u ***\n"
-"驱动:%s\n"
-"所有者模块:%s\n"
-"客户端:%s\n"
-"音频出口:%u\n"
-"采样规格:%s\n"
-"通道映射表:%s\n"
-"音量:%s\n"
-"缓冲延迟:%0.0f微秒\n"
-"音频出口延迟:%0.0f微秒\n"
-"重采样方法:%s\n"
-"属性:\n"
-"%s"
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:503
#, c-format
@@ -1879,7 +1922,7 @@ msgid "Failed to get source output information: %s\n"
msgstr "获取音频入口输出信息失败:%s\n"
#: ../src/utils/pactl.c:523
-#, fuzzy, c-format
+#, c-format
msgid ""
"Source Output #%u\n"
"\tDriver: %s\n"
@@ -1894,18 +1937,18 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 音频入口输出 #%u ***\n"
-"驱动:%s\n"
-"所有者模块:%s\n"
-"客户端:%s\n"
-"音频入口:%u\n"
-"采样规格:%s\n"
-"通道映射表:%s\n"
-"缓冲延迟:%0.0f微秒\n"
-"音频入口延迟:%0.0f微秒\n"
-"重采样方法:%s\n"
-"属性:\n"
-"%s"
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:554
#, c-format
@@ -1913,7 +1956,7 @@ msgid "Failed to get sample information: %s\n"
msgstr "获取采样信息失败:%s\n"
#: ../src/utils/pactl.c:572
-#, fuzzy, c-format
+#, c-format
msgid ""
"Sample #%u\n"
"\tName: %s\n"
@@ -1929,17 +1972,19 @@ msgid ""
"\tProperties:\n"
"\t\t%s\n"
msgstr ""
-"*** 采样 #%u ***\n"
-"名称:%s\n"
-"音量:%s\n"
-"采样规格:%s\n"
-"通道映射表:%s\n"
-"持续时长:%0.1f秒\n"
-"大小:%s\n"
-"Lazy:%s\n"
-"文件名:%s\n"
-"属性:\n"
-"%s"
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
@@ -1957,7 +2002,7 @@ msgid "Premature end of file\n"
msgstr "文件过早结束\n"
#: ../src/utils/pactl.c:774
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -1993,12 +2038,15 @@ msgstr ""
"%s [options] unload-module ID\n"
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
"\n"
-" -h, --help 显示此帮助\n"
-" --version 显示版本\n"
+" -h, --help Show this help\n"
+" --version Show version\n"
"\n"
-" -s, --server=SERVER 要连接的服务器名\n"
-" -n, --client-name=NAME 此客户端在服务器上的名称\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
#: ../src/utils/pactl.c:826
#, c-format
@@ -2052,23 +2100,23 @@ msgid "You have to specify a module index\n"
msgstr "必须指定模块索引\n"
#: ../src/utils/pactl.c:972
-#, fuzzy, c-format
+#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
-msgstr "不可指定多个音频出口。必须指定至少一个布尔值。\n"
+msgstr "不可指定多个音频出口。必须指定一个布尔值。\n"
#: ../src/utils/pactl.c:985
-#, fuzzy, c-format
+#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
-msgstr "不可指定多个音频入口。必须指定至少一个布尔值。\n"
+msgstr "不可指定多个源。必须指定一个布尔值。\n"
#: ../src/utils/pactl.c:997
-#, fuzzy, c-format
+#, c-format
msgid "You have to specify a card name/index and a profile name\n"
-msgstr "你必须指定音频出口索引和音频出口\n"
+msgstr "你必须指定声卡名称/索引和侧写名称\n"
#: ../src/utils/pactl.c:1012
#, c-format
@@ -2272,60 +2320,66 @@ msgstr "正在使用采样规格'%s'\n"
msgid "Cannot access autospawn lock."
msgstr "不能访问autospawn锁。"
-#, fuzzy
-#~ msgid ""
-#~ "Called SUID root and real-time and/or high-priority scheduling was "
-#~ "requested in the configuration. However, we lack the necessary "
-#~ "privileges:\n"
-#~ "We are not in group '"
-#~ msgstr ""
-#~ "此配置需要调用SUID root和实时/高优先级调度。但是我们没有所需的权限:\n"
-#~ "我们不属该组"
-
-#, fuzzy
-#~ msgid "--log-time boolean argument"
-#~ msgstr "--disallow-exit 布尔参数"
-
-#~ msgid ""
-#~ "' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
-#~ "For enabling real-time scheduling please acquire the appropriate "
-#~ "PolicyKit priviliges, or become a member of '"
-#~ msgstr ""
-#~ "而且PolicyKit拒绝授予我们权限。再次取消SUID。\n"
-#~ "要启用实时调度,请取得适应的PolicyKit权限,或者成为组成员'"
-
-#~ msgid ""
-#~ "', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this "
-#~ "user."
-#~ msgstr "',或者提高本用户的RLIMIT_NICE/RLIMIT_RTPRIO资源上限。"
-
-#~ msgid "Default sink name (%s) does not exist in name register."
-#~ msgstr "名称登记表中不存在默认的音频出口名(%s)。"
-
-#~ msgid "Buffer overrun, dropping incoming data\n"
-#~ msgstr "缓冲超限,丢弃正在读入的数据\n"
-
-#~ msgid "pa_stream_drop() failed: %s\n"
-#~ msgstr "pa_stream_drop()失败:%s\n"
-
-#~ msgid "muted"
-#~ msgstr "已静音"
-
-#~ msgid ""
-#~ "*** Autoload Entry #%u ***\n"
-#~ "Name: %s\n"
-#~ "Type: %s\n"
-#~ "Module: %s\n"
-#~ "Argument: %s\n"
-#~ msgstr ""
-#~ "*** 自动加载项 #%u ***\n"
-#~ "名称:%s\n"
-#~ "类型:%s\n"
-#~ "模块:%s\n"
-#~ "参数:%s\n"
-
-#~ msgid "sink"
-#~ msgstr "音频出口"
-
-#~ msgid "source"
-#~ msgstr "音频入口"
+#: ../src/modules/alsa/alsa-sink.c:393 ../src/modules/alsa/alsa-sink.c:541
+#, c-format
+msgid ""
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA 提醒我们在该设备中写入新数据,但实际上没有什么可以写入的!\n"
+"这很可能是 ALSA 驱动程序 '%s' 中的一个 bug。请向 ALSA 开发人员报告这个问"
+"题。\n"
+"提醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者另一个小于最小可"
+"用值的数值。"
+
+#: ../src/modules/alsa/alsa-source.c:377 ../src/modules/alsa/alsa-source.c:516
+#, c-format
+msgid ""
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
+msgstr ""
+"ALSA 提醒我们从该设备中读取新数据,但实际上没有什么可以读取的!\n"
+"这很可能是 ALSA 驱动程序 '%s' 中的一个 bug。请向 ALSA 开发人员报告这个问"
+"题。\n"
+"提醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者另一个小于最小可"
+"用值的数值。"
+
+#: ../src/modules/alsa/module-alsa-card.c:114
+#, c-format
+msgid "Output %s + Input %s"
+msgstr "输出 %s + 输入 %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:117
+#, c-format
+msgid "Output %s"
+msgstr "输出 %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:121
+#, c-format
+msgid "Input %s"
+msgstr "输入 %s"
+
+#: ../src/modules/alsa/module-alsa-card.c:170
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2001
+msgid "Off"
+msgstr "关闭"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1971
+msgid "High Fidelity Playback (A2DP)"
+msgstr "高保真回放(A2DP)"
+
+#: ../src/modules/bluetooth/module-bluetooth-device.c:1986
+msgid "Telephony Duplex (HSP/HFP)"
+msgstr "双工电话(HSP/HFP)"
+
+#: ../src/modules/reserve-wrap.c:127
+msgid "PulseAudio Sound Server"
+msgstr "PulseAudio 声音服务器"
diff --git a/src/Makefile.am b/src/Makefile.am
index a99e275..0d4f53a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -633,6 +633,12 @@ if OS_IS_WIN32
libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/dllmain.c
endif
+if HAVE_DBUS
+libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/dbus-util.c pulsecore/dbus-util.h
+libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS += $(DBUS_CFLAGS)
+libpulsecommon_@PA_MAJORMINORMICRO@_la_LIBADD += $(DBUS_LIBS)
+endif
+
###################################
# Client library #
###################################
@@ -713,7 +719,7 @@ libpulse_la_SOURCES = \
pulse/volume.c pulse/volume.h \
pulse/xmalloc.c pulse/xmalloc.h
-libpulse_la_CFLAGS = $(AM_CFLAGS)
+libpulse_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
libpulse_la_LIBADD = $(AM_LIBADD) $(WINSOCK_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la
libpulse_la_LDFLAGS = $(AM_LDFLAGS) $(VERSIONING_LDFLAGS) -version-info $(LIBPULSE_VERSION_INFO)
@@ -813,6 +819,13 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS += $(X11_CFLAGS)
libpulsecore_@PA_MAJORMINORMICRO@_la_LDFLAGS += $(X11_LIBS)
endif
+
+if HAVE_DBUS
+libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/dbus-shared.c pulsecore/dbus-shared.h
+libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS += $(DBUS_CFLAGS)
+libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD += $(DBUS_LIBS)
+endif
+
# We split the foreign code off to not be annoyed by warnings we don't care about
noinst_LTLIBRARIES = libpulsecore-foreign.la
@@ -902,7 +915,6 @@ libavahi_wrap_la_LIBADD = $(AM_LIBADD) $(AVAHI_CFLAGS) libpulsecore-@PA_MAJORMIN
if HAVE_DBUS
# Serveral module (e.g. libalsa-util.la)
modlibexec_LTLIBRARIES += \
- libdbus-util.la \
module-console-kit.la
endif
@@ -1322,7 +1334,7 @@ endif
if HAVE_DBUS
libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c modules/reserve-wrap.c modules/reserve-wrap.h
-libalsa_util_la_LIBADD += $(DBUS_LIBS) libdbus-util.la
+libalsa_util_la_LIBADD += $(DBUS_LIBS)
libalsa_util_la_CFLAGS += $(DBUS_CFLAGS)
endif
@@ -1476,20 +1488,14 @@ module_jack_source_la_LDFLAGS = $(MODULE_LDFLAGS)
module_jack_source_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_jack_source_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS)
-# HAL/D-Bus
-libdbus_util_la_SOURCES = modules/dbus-util.c modules/dbus-util.h
-libdbus_util_la_LDFLAGS = -avoid-version
-libdbus_util_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
-libdbus_util_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
-
module_hal_detect_la_SOURCES = modules/module-hal-detect.c
module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_hal_detect_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS)
module_console_kit_la_SOURCES = modules/module-console-kit.c
module_console_kit_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_console_kit_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_console_kit_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_console_kit_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# GConf support
@@ -1506,7 +1512,7 @@ gconf_helper_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
# Bluetooth proximity
module_bluetooth_proximity_la_SOURCES = modules/bluetooth/module-bluetooth-proximity.c
module_bluetooth_proximity_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_bluetooth_proximity_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_bluetooth_proximity_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_bluetooth_proximity_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) -DPA_BT_PROXIMITY_HELPER=\"$(pulselibexecdir)/proximity-helper\"
proximity_helper_SOURCES = modules/bluetooth/proximity-helper.c
@@ -1517,7 +1523,7 @@ proximity_helper_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
# Bluetooth sink / source
module_bluetooth_discover_la_SOURCES = modules/bluetooth/module-bluetooth-discover.c
module_bluetooth_discover_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_bluetooth_discover_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_bluetooth_discover_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libbluetooth-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_bluetooth_discover_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
libbluetooth_sbc_la_SOURCES = modules/bluetooth/sbc.c modules/bluetooth/sbc.h modules/bluetooth/sbc_tables.h modules/bluetooth/sbc_math.h modules/bluetooth/sbc_primitives.h modules/bluetooth/sbc_primitives.c modules/bluetooth/sbc_primitives_mmx.h modules/bluetooth/sbc_primitives_neon.h modules/bluetooth/sbc_primitives_mmx.c modules/bluetooth/sbc_primitives_neon.c
@@ -1534,12 +1540,12 @@ BLUETOOTH_IPC_FILES = $(subst modules/bluetooth/,,$(libbluetooth_ipc_la_SOURCES)
libbluetooth_util_la_SOURCES = modules/bluetooth/bluetooth-util.c modules/bluetooth/bluetooth-util.h
libbluetooth_util_la_LDFLAGS = -avoid-version
-libbluetooth_util_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la libdbus-util.la
+libbluetooth_util_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
libbluetooth_util_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
module_bluetooth_device_la_SOURCES = modules/bluetooth/module-bluetooth-device.c modules/bluetooth/rtp.h
module_bluetooth_device_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libbluetooth-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_bluetooth_device_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# Apple Airtunes/RAOP
diff --git a/src/Makefile.in b/src/Makefile.in
index 3a7c5ee..784814c 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -121,36 +121,42 @@ TESTS = mainloop-test$(EXEEXT) strlist-test$(EXEEXT) \
@HAVE_LIBASYNCNS_TRUE@am__append_18 = $(LIBASYNCNS_CFLAGS)
@HAVE_LIBASYNCNS_TRUE@am__append_19 = $(LIBASYNCNS_LIBS)
@OS_IS_WIN32_TRUE@am__append_20 = pulsecore/dllmain.c
-@HAVE_AVAHI_TRUE@am__append_21 = \
+@HAVE_DBUS_TRUE@am__append_21 = pulsecore/dbus-util.c pulsecore/dbus-util.h
+@HAVE_DBUS_TRUE@am__append_22 = $(DBUS_CFLAGS)
+@HAVE_DBUS_TRUE@am__append_23 = $(DBUS_LIBS)
+@HAVE_AVAHI_TRUE@am__append_24 = \
@HAVE_AVAHI_TRUE@ pulse/browser.h
-@HAVE_AVAHI_TRUE@am__append_22 = \
+@HAVE_AVAHI_TRUE@am__append_25 = \
@HAVE_AVAHI_TRUE@ libpulse-browse.la
-@HAVE_GLIB20_TRUE@am__append_23 = \
+@HAVE_GLIB20_TRUE@am__append_26 = \
@HAVE_GLIB20_TRUE@ pulse/glib-mainloop.h
-@HAVE_GLIB20_TRUE@am__append_24 = \
+@HAVE_GLIB20_TRUE@am__append_27 = \
@HAVE_GLIB20_TRUE@ libpulse-mainloop-glib.la
-@HAVE_X11_TRUE@am__append_25 = pulse/client-conf-x11.c pulse/client-conf-x11.h
-@HAVE_X11_TRUE@am__append_26 = $(X11_CFLAGS)
-@HAVE_X11_TRUE@am__append_27 = $(X11_LIBS)
+@HAVE_X11_TRUE@am__append_28 = pulse/client-conf-x11.c pulse/client-conf-x11.h
+@HAVE_X11_TRUE@am__append_29 = $(X11_CFLAGS)
+@HAVE_X11_TRUE@am__append_30 = $(X11_LIBS)
###################################
# OSS emulation #
###################################
-@HAVE_OSS_TRUE@am__append_28 = libpulsedsp.la
-@HAVE_OSS_TRUE@am__append_29 = utils/padsp
-@HAVE_X11_TRUE@am__append_30 = pulsecore/x11wrap.c pulsecore/x11wrap.h
-@HAVE_X11_TRUE@am__append_31 = $(X11_CFLAGS)
-@HAVE_X11_TRUE@am__append_32 = $(X11_LIBS)
+@HAVE_OSS_TRUE@am__append_31 = libpulsedsp.la
+@HAVE_OSS_TRUE@am__append_32 = utils/padsp
+@HAVE_X11_TRUE@am__append_33 = pulsecore/x11wrap.c pulsecore/x11wrap.h
+@HAVE_X11_TRUE@am__append_34 = $(X11_CFLAGS)
+@HAVE_X11_TRUE@am__append_35 = $(X11_LIBS)
+@HAVE_DBUS_TRUE@am__append_36 = pulsecore/dbus-shared.c pulsecore/dbus-shared.h
+@HAVE_DBUS_TRUE@am__append_37 = $(DBUS_CFLAGS)
+@HAVE_DBUS_TRUE@am__append_38 = $(DBUS_LIBS)
# We need to emulate sendmsg/recvmsg to support this on Win32
-@OS_IS_WIN32_FALSE@am__append_33 = \
+@OS_IS_WIN32_FALSE@am__append_39 = \
@OS_IS_WIN32_FALSE@ librtp.la
-@HAVE_AVAHI_TRUE@am__append_34 = \
+@HAVE_AVAHI_TRUE@am__append_40 = \
@HAVE_AVAHI_TRUE@ libavahi-wrap.la
@@ -159,72 +165,71 @@ TESTS = mainloop-test$(EXEEXT) strlist-test$(EXEEXT) \
###################################
# Serveral module (e.g. libalsa-util.la)
-@HAVE_DBUS_TRUE@am__append_35 = \
-@HAVE_DBUS_TRUE@ libdbus-util.la \
+@HAVE_DBUS_TRUE@am__append_41 = \
@HAVE_DBUS_TRUE@ module-console-kit.la
# See comment at librtp.la above
-@OS_IS_WIN32_FALSE@am__append_36 = \
+@OS_IS_WIN32_FALSE@am__append_42 = \
@OS_IS_WIN32_FALSE@ module-rtp-send.la \
@OS_IS_WIN32_FALSE@ module-rtp-recv.la
-@HAVE_AF_UNIX_TRUE@am__append_37 = \
+@HAVE_AF_UNIX_TRUE@am__append_43 = \
@HAVE_AF_UNIX_TRUE@ module-cli-protocol-unix.la \
@HAVE_AF_UNIX_TRUE@ module-simple-protocol-unix.la \
@HAVE_AF_UNIX_TRUE@ module-http-protocol-unix.la \
@HAVE_AF_UNIX_TRUE@ module-native-protocol-unix.la \
@HAVE_AF_UNIX_TRUE@ module-esound-protocol-unix.la
-@HAVE_MKFIFO_TRUE@am__append_38 = \
+@HAVE_MKFIFO_TRUE@am__append_44 = \
@HAVE_MKFIFO_TRUE@ module-pipe-sink.la \
@HAVE_MKFIFO_TRUE@ module-pipe-source.la
-@OS_IS_WIN32_FALSE@am__append_39 = \
+@OS_IS_WIN32_FALSE@am__append_45 = \
@OS_IS_WIN32_FALSE@ module-esound-compat-spawnfd.la \
@OS_IS_WIN32_FALSE@ module-esound-compat-spawnpid.la
-@HAVE_REGEX_TRUE@am__append_40 = \
+@HAVE_REGEX_TRUE@am__append_46 = \
@HAVE_REGEX_TRUE@ module-match.la
-@HAVE_X11_TRUE@am__append_41 = \
+@HAVE_X11_TRUE@am__append_47 = \
@HAVE_X11_TRUE@ module-x11-bell.la \
@HAVE_X11_TRUE@ module-x11-publish.la \
@HAVE_X11_TRUE@ module-x11-xsmp.la \
@HAVE_X11_TRUE@ module-x11-cork-request.la
-@HAVE_OSS_TRUE@am__append_42 = \
+@HAVE_OSS_TRUE@am__append_48 = \
@HAVE_OSS_TRUE@ liboss-util.la \
@HAVE_OSS_TRUE@ module-oss.la
pulselibexec_PROGRAMS = $(am__EXEEXT_9) $(am__EXEEXT_10)
-@HAVE_ALSA_TRUE@am__append_43 = \
+@HAVE_ALSA_TRUE@am__append_49 = \
@HAVE_ALSA_TRUE@ libalsa-util.la \
@HAVE_ALSA_TRUE@ module-alsa-sink.la \
@HAVE_ALSA_TRUE@ module-alsa-source.la \
@HAVE_ALSA_TRUE@ module-alsa-card.la
-@HAVE_SOLARIS_TRUE@am__append_44 = \
+@HAVE_SOLARIS_TRUE@am__append_50 = \
@HAVE_SOLARIS_TRUE@ module-solaris.la
-@HAVE_AVAHI_TRUE@am__append_45 = \
+@HAVE_AVAHI_TRUE@am__append_51 = \
@HAVE_AVAHI_TRUE@ module-zeroconf-publish.la \
@HAVE_AVAHI_TRUE@ module-zeroconf-discover.la
-@HAVE_LIRC_TRUE@am__append_46 = \
+@HAVE_LIRC_TRUE@am__append_52 = \
@HAVE_LIRC_TRUE@ module-lirc.la
-@HAVE_EVDEV_TRUE@am__append_47 = \
+@HAVE_EVDEV_TRUE@am__append_53 = \
@HAVE_EVDEV_TRUE@ module-mmkbd-evdev.la
-@HAVE_JACK_TRUE@am__append_48 = \
+@HAVE_JACK_TRUE@am__append_54 = \
@HAVE_JACK_TRUE@ module-jack-sink.la \
@HAVE_JACK_TRUE@ module-jack-source.la
-@HAVE_GCONF_TRUE@am__append_49 = \
+@HAVE_GCONF_TRUE@am__append_55 = \
@HAVE_GCONF_TRUE@ module-gconf.la
-@HAVE_GCONF_TRUE@am__append_50 = \
+@HAVE_GCONF_TRUE@am__append_56 = \
@HAVE_GCONF_TRUE@ gconf-helper
@@ -232,10 +237,10 @@ pulselibexec_PROGRAMS = $(am__EXEEXT_9) $(am__EXEEXT_10)
#modlibexec_LTLIBRARIES += \
# module-waveout.la
#endif
-@HAVE_HAL_TRUE@am__append_51 = \
+@HAVE_HAL_TRUE@am__append_57 = \
@HAVE_HAL_TRUE@ module-hal-detect.la
-@HAVE_BLUEZ_TRUE@am__append_52 = \
+@HAVE_BLUEZ_TRUE@am__append_58 = \
@HAVE_BLUEZ_TRUE@ libbluetooth-util.la \
@HAVE_BLUEZ_TRUE@ module-bluetooth-proximity.la \
@HAVE_BLUEZ_TRUE@ module-bluetooth-discover.la \
@@ -243,25 +248,25 @@ pulselibexec_PROGRAMS = $(am__EXEEXT_9) $(am__EXEEXT_10)
@HAVE_BLUEZ_TRUE@ libbluetooth-sbc.la \
@HAVE_BLUEZ_TRUE@ module-bluetooth-device.la
-@HAVE_BLUEZ_TRUE@am__append_53 = \
+@HAVE_BLUEZ_TRUE@am__append_59 = \
@HAVE_BLUEZ_TRUE@ proximity-helper
-@HAVE_OPENSSL_TRUE@am__append_54 = \
+@HAVE_OPENSSL_TRUE@am__append_60 = \
@HAVE_OPENSSL_TRUE@ libraop.la \
@HAVE_OPENSSL_TRUE@ module-raop-sink.la
-@HAVE_AVAHI_TRUE@@HAVE_OPENSSL_TRUE@am__append_55 = \
+@HAVE_AVAHI_TRUE@@HAVE_OPENSSL_TRUE@am__append_61 = \
@HAVE_AVAHI_TRUE@@HAVE_OPENSSL_TRUE@ module-raop-discover.la
-@HAVE_HAL_TRUE@am__append_56 = modules/hal-util.h modules/hal-util.c
-@HAVE_HAL_TRUE@am__append_57 = $(HAL_LIBS)
-@HAVE_HAL_TRUE@am__append_58 = $(HAL_CFLAGS)
-@HAVE_UDEV_TRUE@am__append_59 = modules/udev-util.h modules/udev-util.c
-@HAVE_UDEV_TRUE@am__append_60 = $(UDEV_LIBS)
-@HAVE_UDEV_TRUE@am__append_61 = $(UDEV_CFLAGS)
-@HAVE_DBUS_TRUE@am__append_62 = modules/reserve.h modules/reserve.c modules/reserve-wrap.c modules/reserve-wrap.h
-@HAVE_DBUS_TRUE@am__append_63 = $(DBUS_LIBS) libdbus-util.la
-@HAVE_DBUS_TRUE@am__append_64 = $(DBUS_CFLAGS)
+@HAVE_HAL_TRUE@am__append_62 = modules/hal-util.h modules/hal-util.c
+@HAVE_HAL_TRUE@am__append_63 = $(HAL_LIBS)
+@HAVE_HAL_TRUE@am__append_64 = $(HAL_CFLAGS)
+@HAVE_UDEV_TRUE@am__append_65 = modules/udev-util.h modules/udev-util.c
+@HAVE_UDEV_TRUE@am__append_66 = $(UDEV_LIBS)
+@HAVE_UDEV_TRUE@am__append_67 = $(UDEV_CFLAGS)
+@HAVE_DBUS_TRUE@am__append_68 = modules/reserve.h modules/reserve.c modules/reserve-wrap.c modules/reserve-wrap.h
+@HAVE_DBUS_TRUE@am__append_69 = $(DBUS_LIBS)
+@HAVE_DBUS_TRUE@am__append_70 = $(DBUS_CFLAGS)
subdir = src
DIST_COMMON = $(am__pulseinclude_HEADERS_DIST) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
@@ -301,8 +306,7 @@ am__DEPENDENCIES_1 =
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
@HAVE_HAL_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
@HAVE_UDEV_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
-@HAVE_DBUS_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) \
-@HAVE_DBUS_TRUE@ libdbus-util.la
+@HAVE_DBUS_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
libalsa_util_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la \
@@ -363,8 +367,7 @@ libbluetooth_sbc_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@HAVE_BLUEZ_TRUE@ $(modlibexecdir)
libbluetooth_util_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
- libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la \
- libdbus-util.la
+ libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
am_libbluetooth_util_la_OBJECTS = \
libbluetooth_util_la-bluetooth-util.lo
libbluetooth_util_la_OBJECTS = $(am_libbluetooth_util_la_OBJECTS)
@@ -382,15 +385,6 @@ libcli_la_OBJECTS = $(am_libcli_la_OBJECTS)
libcli_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libcli_la_LDFLAGS) $(LDFLAGS) -o $@
-libdbus_util_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
- libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
-am_libdbus_util_la_OBJECTS = libdbus_util_la-dbus-util.lo
-libdbus_util_la_OBJECTS = $(am_libdbus_util_la_OBJECTS)
-libdbus_util_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libdbus_util_la_CFLAGS) \
- $(CFLAGS) $(libdbus_util_la_LDFLAGS) $(LDFLAGS) -o $@
-@HAVE_DBUS_TRUE@am_libdbus_util_la_rpath = -rpath $(modlibexecdir)
liboss_util_la_DEPENDENCIES = libpulsecore-@PA_MAJORMINORMICRO@.la \
libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
am_liboss_util_la_OBJECTS = oss-util.lo
@@ -507,7 +501,7 @@ libpulse_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
libpulsecommon_@PA_MAJORMINORMICRO@_la_DEPENDENCIES = \
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_6)
+ $(am__DEPENDENCIES_6) $(am__DEPENDENCIES_5)
am__libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES_DIST = \
pulse/client-conf.c pulse/client-conf.h pulse/i18n.c \
pulse/i18n.h pulse/fork-detect.c pulse/fork-detect.h \
@@ -554,7 +548,8 @@ am__libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES_DIST = \
pulsecore/semaphore-win32.c pulsecore/semaphore.h \
pulsecore/mutex-posix.c pulsecore/thread-posix.c \
pulsecore/semaphore-posix.c pulsecore/x11prop.c \
- pulsecore/x11prop.h pulsecore/dllmain.c
+ pulsecore/x11prop.h pulsecore/dllmain.c pulsecore/dbus-util.c \
+ pulsecore/dbus-util.h
@OS_IS_WIN32_TRUE@am__objects_5 = libpulsecommon_@PA_MAJORMINORMICRO@_la-mutex-win32.lo \
@OS_IS_WIN32_TRUE@ libpulsecommon_@PA_MAJORMINORMICRO@_la-thread-win32.lo \
@OS_IS_WIN32_TRUE@ libpulsecommon_@PA_MAJORMINORMICRO@_la-semaphore-win32.lo
@@ -563,6 +558,7 @@ am__libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES_DIST = \
@OS_IS_WIN32_FALSE@ libpulsecommon_@PA_MAJORMINORMICRO@_la-semaphore-posix.lo
@HAVE_X11_TRUE@am__objects_7 = libpulsecommon_@PA_MAJORMINORMICRO@_la-x11prop.lo
@OS_IS_WIN32_TRUE@am__objects_8 = libpulsecommon_@PA_MAJORMINORMICRO@_la-dllmain.lo
+@HAVE_DBUS_TRUE@am__objects_9 = libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.lo
am_libpulsecommon_@PA_MAJORMINORMICRO@_la_OBJECTS = \
libpulsecommon_@PA_MAJORMINORMICRO@_la-client-conf.lo \
libpulsecommon_@PA_MAJORMINORMICRO@_la-i18n.lo \
@@ -612,7 +608,7 @@ am_libpulsecommon_@PA_MAJORMINORMICRO@_la_OBJECTS = \
libpulsecommon_@PA_MAJORMINORMICRO@_la-time-smoother.lo \
libpulsecommon_@PA_MAJORMINORMICRO@_la-tokenizer.lo \
$(am__objects_5) $(am__objects_6) $(am__objects_7) \
- $(am__objects_8)
+ $(am__objects_8) $(am__objects_9)
libpulsecommon_@PA_MAJORMINORMICRO@_la_OBJECTS = \
$(am_libpulsecommon_@PA_MAJORMINORMICRO@_la_OBJECTS)
libpulsecommon_@PA_MAJORMINORMICRO@_la_LINK = $(LIBTOOL) --tag=CC \
@@ -626,7 +622,7 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_DEPENDENCIES = \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la \
- libpulsecore-foreign.la
+ libpulsecore-foreign.la $(am__DEPENDENCIES_5)
am__libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES_DIST = \
pulsecore/asyncmsgq.c pulsecore/asyncmsgq.h pulsecore/asyncq.c \
pulsecore/asyncq.h pulsecore/auth-cookie.c \
@@ -663,8 +659,10 @@ am__libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES_DIST = \
pulsecore/start-child.h pulsecore/thread-mq.c \
pulsecore/thread-mq.h pulsecore/time-smoother.c \
pulsecore/time-smoother.h pulsecore/x11wrap.c \
- pulsecore/x11wrap.h
-@HAVE_X11_TRUE@am__objects_9 = libpulsecore_@PA_MAJORMINORMICRO@_la-x11wrap.lo
+ pulsecore/x11wrap.h pulsecore/dbus-shared.c \
+ pulsecore/dbus-shared.h
+@HAVE_X11_TRUE@am__objects_10 = libpulsecore_@PA_MAJORMINORMICRO@_la-x11wrap.lo
+@HAVE_DBUS_TRUE@am__objects_11 = libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.lo
am_libpulsecore_@PA_MAJORMINORMICRO@_la_OBJECTS = \
libpulsecore_@PA_MAJORMINORMICRO@_la-asyncmsgq.lo \
libpulsecore_@PA_MAJORMINORMICRO@_la-asyncq.lo \
@@ -708,7 +706,7 @@ am_libpulsecore_@PA_MAJORMINORMICRO@_la_OBJECTS = \
libpulsecore_@PA_MAJORMINORMICRO@_la-start-child.lo \
libpulsecore_@PA_MAJORMINORMICRO@_la-thread-mq.lo \
libpulsecore_@PA_MAJORMINORMICRO@_la-time-smoother.lo \
- $(am__objects_9)
+ $(am__objects_10) $(am__objects_11)
libpulsecore_@PA_MAJORMINORMICRO@_la_OBJECTS = \
$(am_libpulsecore_@PA_MAJORMINORMICRO@_la_OBJECTS)
libpulsecore_@PA_MAJORMINORMICRO@_la_LINK = $(LIBTOOL) --tag=CC \
@@ -812,9 +810,8 @@ module_augment_properties_la_LINK = $(LIBTOOL) --tag=CC \
$(module_augment_properties_la_LDFLAGS) $(LDFLAGS) -o $@
module_bluetooth_device_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
- libdbus-util.la libbluetooth-util.la libbluetooth-ipc.la \
- libbluetooth-sbc.la libpulsecommon-@PA_MAJORMINORMICRO@.la \
- libpulse.la
+ libbluetooth-util.la libbluetooth-ipc.la libbluetooth-sbc.la \
+ libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
am_module_bluetooth_device_la_OBJECTS = \
module_bluetooth_device_la-module-bluetooth-device.lo
module_bluetooth_device_la_OBJECTS = \
@@ -827,8 +824,8 @@ module_bluetooth_device_la_LINK = $(LIBTOOL) --tag=CC \
@HAVE_BLUEZ_TRUE@ $(modlibexecdir)
module_bluetooth_discover_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
- libdbus-util.la libbluetooth-util.la \
- libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+ libbluetooth-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la \
+ libpulse.la
am_module_bluetooth_discover_la_OBJECTS = \
module_bluetooth_discover_la-module-bluetooth-discover.lo
module_bluetooth_discover_la_OBJECTS = \
@@ -841,8 +838,7 @@ module_bluetooth_discover_la_LINK = $(LIBTOOL) --tag=CC \
@HAVE_BLUEZ_TRUE@ $(modlibexecdir)
module_bluetooth_proximity_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
- libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la \
- libpulse.la
+ libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
am_module_bluetooth_proximity_la_OBJECTS = \
module_bluetooth_proximity_la-module-bluetooth-proximity.lo
module_bluetooth_proximity_la_OBJECTS = \
@@ -904,8 +900,7 @@ module_combine_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(module_combine_la_LDFLAGS) $(LDFLAGS) -o $@
module_console_kit_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
- libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la \
- libpulse.la
+ libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
am_module_console_kit_la_OBJECTS = \
module_console_kit_la-module-console-kit.lo
module_console_kit_la_OBJECTS = $(am_module_console_kit_la_OBJECTS)
@@ -1024,8 +1019,7 @@ module_gconf_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@HAVE_GCONF_TRUE@am_module_gconf_la_rpath = -rpath $(modlibexecdir)
module_hal_detect_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) libpulsecore-@PA_MAJORMINORMICRO@.la \
- libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la \
- libpulse.la
+ libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
am_module_hal_detect_la_OBJECTS = \
module_hal_detect_la-module-hal-detect.lo
module_hal_detect_la_OBJECTS = $(am_module_hal_detect_la_OBJECTS)
@@ -1609,8 +1603,8 @@ mainloop_test_DEPENDENCIES = $(am__DEPENDENCIES_2) libpulse.la
mainloop_test_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(mainloop_test_CFLAGS) \
$(CFLAGS) $(mainloop_test_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_10 = mainloop_test_glib-mainloop-test.$(OBJEXT)
-am_mainloop_test_glib_OBJECTS = $(am__objects_10)
+am__objects_12 = mainloop_test_glib-mainloop-test.$(OBJEXT)
+am_mainloop_test_glib_OBJECTS = $(am__objects_12)
mainloop_test_glib_OBJECTS = $(am_mainloop_test_glib_OBJECTS)
am__DEPENDENCIES_7 = $(am__DEPENDENCIES_2) libpulse.la
mainloop_test_glib_DEPENDENCIES = $(am__DEPENDENCIES_7) \
@@ -1743,13 +1737,13 @@ am__pulseaudio_SOURCES_DIST = daemon/caps.h daemon/caps.c \
daemon/dumpmodules.c daemon/dumpmodules.h \
daemon/ltdl-bind-now.c daemon/ltdl-bind-now.h daemon/main.c \
daemon/polkit.c daemon/polkit.h
-@HAVE_POLKIT_TRUE@am__objects_11 = pulseaudio-polkit.$(OBJEXT)
+@HAVE_POLKIT_TRUE@am__objects_13 = pulseaudio-polkit.$(OBJEXT)
am_pulseaudio_OBJECTS = pulseaudio-caps.$(OBJEXT) \
pulseaudio-cmdline.$(OBJEXT) pulseaudio-cpulimit.$(OBJEXT) \
pulseaudio-daemon-conf.$(OBJEXT) \
pulseaudio-dumpmodules.$(OBJEXT) \
pulseaudio-ltdl-bind-now.$(OBJEXT) pulseaudio-main.$(OBJEXT) \
- $(am__objects_11)
+ $(am__objects_13)
pulseaudio_OBJECTS = $(am_pulseaudio_OBJECTS)
@HAVE_POLKIT_TRUE@am__DEPENDENCIES_8 = $(am__DEPENDENCIES_1)
pulseaudio_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -1890,8 +1884,8 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
SOURCES = $(libalsa_util_la_SOURCES) $(libavahi_wrap_la_SOURCES) \
$(libbluetooth_ipc_la_SOURCES) $(libbluetooth_sbc_la_SOURCES) \
$(libbluetooth_util_la_SOURCES) $(libcli_la_SOURCES) \
- $(libdbus_util_la_SOURCES) $(liboss_util_la_SOURCES) \
- $(libprotocol_cli_la_SOURCES) $(libprotocol_esound_la_SOURCES) \
+ $(liboss_util_la_SOURCES) $(libprotocol_cli_la_SOURCES) \
+ $(libprotocol_esound_la_SOURCES) \
$(libprotocol_http_la_SOURCES) \
$(libprotocol_native_la_SOURCES) \
$(libprotocol_simple_la_SOURCES) $(libpulse_browse_la_SOURCES) \
@@ -1981,9 +1975,8 @@ SOURCES = $(libalsa_util_la_SOURCES) $(libavahi_wrap_la_SOURCES) \
DIST_SOURCES = $(am__libalsa_util_la_SOURCES_DIST) \
$(libavahi_wrap_la_SOURCES) $(libbluetooth_ipc_la_SOURCES) \
$(libbluetooth_sbc_la_SOURCES) $(libbluetooth_util_la_SOURCES) \
- $(libcli_la_SOURCES) $(libdbus_util_la_SOURCES) \
- $(liboss_util_la_SOURCES) $(libprotocol_cli_la_SOURCES) \
- $(libprotocol_esound_la_SOURCES) \
+ $(libcli_la_SOURCES) $(liboss_util_la_SOURCES) \
+ $(libprotocol_cli_la_SOURCES) $(libprotocol_esound_la_SOURCES) \
$(libprotocol_http_la_SOURCES) \
$(libprotocol_native_la_SOURCES) \
$(libprotocol_simple_la_SOURCES) $(libpulse_browse_la_SOURCES) \
@@ -2166,29 +2159,10 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
-INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
-INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
-INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
-INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
-INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
-INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
INTLTOOL_PERL = @INTLTOOL_PERL@
-INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
-INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
-INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
-INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
-INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
-INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
-INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
-INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
-INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
-INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
-INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
-INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
-INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
JACK_CFLAGS = @JACK_CFLAGS@
JACK_LIBS = @JACK_LIBS@
LD = @LD@
@@ -2433,7 +2407,7 @@ pulseaudio_DEPENDENCIES = libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@P
@FORCE_PREOPEN_TRUE@pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
@HAVE_POLKIT_TRUE@policy_in_files = daemon/org.pulseaudio.policy.in
@HAVE_POLKIT_TRUE@policy_DATA = $(policy_in_files:.policy.in=.policy)
-bin_SCRIPTS = esdcompat start-pulseaudio-x11 $(am__append_29)
+bin_SCRIPTS = esdcompat start-pulseaudio-x11 $(am__append_32)
pacat_SOURCES = utils/pacat.c
pacat_LDADD = $(AM_LDADD) libpulse.la
pacat_CFLAGS = $(AM_CFLAGS)
@@ -2641,8 +2615,8 @@ alsa_time_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(ASOUNDLIB_LIBS)
# Daemon core library #
###################################
lib_LTLIBRARIES = libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la \
- libpulse-simple.la $(am__append_22) $(am__append_24) \
- $(am__append_28) libpulsecore-@PA_MAJORMINORMICRO@.la
+ libpulse-simple.la $(am__append_25) $(am__append_27) \
+ $(am__append_31) libpulsecore-@PA_MAJORMINORMICRO@.la
libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = pulse/client-conf.c \
pulse/client-conf.h pulse/i18n.c pulse/i18n.h \
pulse/fork-detect.c pulse/fork-detect.h pulsecore/atomic.h \
@@ -2684,16 +2658,18 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = pulse/client-conf.c \
pulsecore/tagstruct.h pulsecore/time-smoother.c \
pulsecore/time-smoother.h pulsecore/tokenizer.c \
pulsecore/tokenizer.h pulsecore/winsock.h $(am__append_13) \
- $(am__append_14) $(am__append_15) $(am__append_20)
+ $(am__append_14) $(am__append_15) $(am__append_20) \
+ $(am__append_21)
# proplist-util.h uses these header files, but not the library itself!
libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) \
$(GLIB20_CFLAGS) $(GTK20_CFLAGS) $(am__append_16) \
- $(am__append_18)
+ $(am__append_18) $(am__append_22)
libpulsecommon_@PA_MAJORMINORMICRO@_la_LDFLAGS = $(AM_LDFLAGS) \
-avoid-version $(am__append_17)
libpulsecommon_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) \
- $(LIBWRAP_LIBS) $(WINSOCK_LIBS) $(LTLIBICONV) $(am__append_19)
+ $(LIBWRAP_LIBS) $(WINSOCK_LIBS) $(LTLIBICONV) $(am__append_19) \
+ $(am__append_23)
###################################
# Client library #
@@ -2706,7 +2682,7 @@ pulseinclude_HEADERS = pulse/cdecl.h pulse/channelmap.h \
pulse/sample.h pulse/scache.h pulse/simple.h pulse/stream.h \
pulse/subscribe.h pulse/thread-mainloop.h pulse/timeval.h \
pulse/utf8.h pulse/util.h pulse/version.h pulse/volume.h \
- pulse/xmalloc.h $(am__append_21) $(am__append_23)
+ pulse/xmalloc.h $(am__append_24) $(am__append_26)
# Public interface
libpulse_la_SOURCES = pulse/cdecl.h pulse/channelmap.c \
@@ -2723,11 +2699,11 @@ libpulse_la_SOURCES = pulse/cdecl.h pulse/channelmap.c \
pulse/thread-mainloop.c pulse/thread-mainloop.h \
pulse/timeval.c pulse/timeval.h pulse/utf8.c pulse/utf8.h \
pulse/util.c pulse/util.h pulse/volume.c pulse/volume.h \
- pulse/xmalloc.c pulse/xmalloc.h $(am__append_25)
-libpulse_la_CFLAGS = $(AM_CFLAGS) $(am__append_26)
+ pulse/xmalloc.c pulse/xmalloc.h $(am__append_28)
+libpulse_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) $(am__append_29)
libpulse_la_LIBADD = $(AM_LIBADD) $(WINSOCK_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la
libpulse_la_LDFLAGS = $(AM_LDFLAGS) $(VERSIONING_LDFLAGS) \
- -version-info $(LIBPULSE_VERSION_INFO) $(am__append_27)
+ -version-info $(LIBPULSE_VERSION_INFO) $(am__append_30)
libpulse_simple_la_SOURCES = pulse/simple.c pulse/simple.h
libpulse_simple_la_CFLAGS = $(AM_CFLAGS)
libpulse_simple_la_LIBADD = $(AM_LIBADD) libpulse.la libpulsecommon-@PA_MAJORMINORMICRO@.la
@@ -2780,12 +2756,16 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES = pulsecore/asyncmsgq.c \
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 $(am__append_30)
+ pulsecore/time-smoother.h $(am__append_33) $(am__append_36)
libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) \
- $(LIBOIL_CFLAGS) $(am__append_31)
+ $(LIBOIL_CFLAGS) $(am__append_34) $(am__append_37)
libpulsecore_@PA_MAJORMINORMICRO@_la_LDFLAGS = -avoid-version \
- $(am__append_32)
-libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSNDFILE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la
+ $(am__append_35)
+libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) \
+ $(LIBSAMPLERATE_LIBS) $(LIBSNDFILE_LIBS) $(LIBSPEEX_LIBS) \
+ $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) \
+ libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la \
+ libpulsecore-foreign.la $(am__append_38)
# We split the foreign code off to not be annoyed by warnings we don't care about
noinst_LTLIBRARIES = libpulsecore-foreign.la
@@ -2804,8 +2784,8 @@ libpulsecore_foreign_la_CFLAGS = $(AM_CFLAGS) $(FOREIGN_CFLAGS)
### the head, and not the other way!
modlibexec_LTLIBRARIES = libcli.la libprotocol-cli.la \
libprotocol-simple.la libprotocol-http.la \
- libprotocol-native.la libprotocol-esound.la $(am__append_33) \
- $(am__append_34) $(am__append_35) module-cli.la \
+ libprotocol-native.la libprotocol-esound.la $(am__append_39) \
+ $(am__append_40) $(am__append_41) module-cli.la \
module-cli-protocol-tcp.la module-simple-protocol-tcp.la \
module-null-sink.la module-sine-source.la module-detect.la \
module-volume-restore.la module-device-restore.la \
@@ -2819,12 +2799,12 @@ modlibexec_LTLIBRARIES = libcli.la libprotocol-cli.la \
module-esound-sink.la module-tunnel-sink.la \
module-tunnel-source.la module-position-event-sounds.la \
module-augment-properties.la module-cork-music-on-phone.la \
- $(am__append_36) $(am__append_37) $(am__append_38) \
- $(am__append_39) $(am__append_40) $(am__append_41) \
$(am__append_42) $(am__append_43) $(am__append_44) \
$(am__append_45) $(am__append_46) $(am__append_47) \
- $(am__append_48) $(am__append_49) $(am__append_51) \
- $(am__append_52) $(am__append_54) $(am__append_55)
+ $(am__append_48) $(am__append_49) $(am__append_50) \
+ $(am__append_51) $(am__append_52) $(am__append_53) \
+ $(am__append_54) $(am__append_55) $(am__append_57) \
+ $(am__append_58) $(am__append_60) $(am__append_61)
libprotocol_simple_la_SOURCES = pulsecore/protocol-simple.c pulsecore/protocol-simple.h
libprotocol_simple_la_LDFLAGS = -avoid-version
libprotocol_simple_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
@@ -3071,15 +3051,15 @@ module_oss_la_LIBADD = $(AM_LIBADD) liboss-util.la libpulsecore-@PA_MAJORMINORMI
libalsa_util_la_SOURCES = modules/alsa/alsa-util.c \
modules/alsa/alsa-util.h modules/alsa/alsa-sink.c \
modules/alsa/alsa-sink.h modules/alsa/alsa-source.c \
- modules/alsa/alsa-source.h $(am__append_56) $(am__append_59) \
- $(am__append_62)
+ modules/alsa/alsa-source.h $(am__append_62) $(am__append_65) \
+ $(am__append_68)
libalsa_util_la_LDFLAGS = -avoid-version
libalsa_util_la_LIBADD = $(AM_LIBADD) $(ASOUNDLIB_LIBS) \
libpulsecore-@PA_MAJORMINORMICRO@.la \
libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la \
- $(am__append_57) $(am__append_60) $(am__append_63)
+ $(am__append_63) $(am__append_66) $(am__append_69)
libalsa_util_la_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS) \
- $(am__append_58) $(am__append_61) $(am__append_64)
+ $(am__append_64) $(am__append_67) $(am__append_70)
module_alsa_sink_la_SOURCES = modules/alsa/module-alsa-sink.c
module_alsa_sink_la_LDFLAGS = $(MODULE_LDFLAGS)
module_alsa_sink_la_LIBADD = $(AM_LIBADD) $(ASOUNDLIB_LIBS) libalsa-util.la libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
@@ -3219,19 +3199,13 @@ module_jack_source_la_SOURCES = modules/module-jack-source.c
module_jack_source_la_LDFLAGS = $(MODULE_LDFLAGS)
module_jack_source_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_jack_source_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS)
-
-# HAL/D-Bus
-libdbus_util_la_SOURCES = modules/dbus-util.c modules/dbus-util.h
-libdbus_util_la_LDFLAGS = -avoid-version
-libdbus_util_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
-libdbus_util_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
module_hal_detect_la_SOURCES = modules/module-hal-detect.c
module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_hal_detect_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS)
module_console_kit_la_SOURCES = modules/module-console-kit.c
module_console_kit_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_console_kit_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_console_kit_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_console_kit_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# GConf support
@@ -3247,7 +3221,7 @@ gconf_helper_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
# Bluetooth proximity
module_bluetooth_proximity_la_SOURCES = modules/bluetooth/module-bluetooth-proximity.c
module_bluetooth_proximity_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_bluetooth_proximity_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_bluetooth_proximity_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_bluetooth_proximity_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) -DPA_BT_PROXIMITY_HELPER=\"$(pulselibexecdir)/proximity-helper\"
proximity_helper_SOURCES = modules/bluetooth/proximity-helper.c
proximity_helper_LDADD = $(AM_LDADD) $(BLUEZ_LIBS)
@@ -3257,7 +3231,7 @@ proximity_helper_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
# Bluetooth sink / source
module_bluetooth_discover_la_SOURCES = modules/bluetooth/module-bluetooth-discover.c
module_bluetooth_discover_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_bluetooth_discover_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_bluetooth_discover_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libbluetooth-util.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_bluetooth_discover_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
libbluetooth_sbc_la_SOURCES = modules/bluetooth/sbc.c modules/bluetooth/sbc.h modules/bluetooth/sbc_tables.h modules/bluetooth/sbc_math.h modules/bluetooth/sbc_primitives.h modules/bluetooth/sbc_primitives.c modules/bluetooth/sbc_primitives_mmx.h modules/bluetooth/sbc_primitives_neon.h modules/bluetooth/sbc_primitives_mmx.c modules/bluetooth/sbc_primitives_neon.c
libbluetooth_sbc_la_LDFLAGS = -avoid-version
@@ -3271,11 +3245,11 @@ libbluetooth_ipc_la_CFLAGS = $(AM_CFLAGS)
BLUETOOTH_IPC_FILES = $(subst modules/bluetooth/,,$(libbluetooth_ipc_la_SOURCES)) rtp.h
libbluetooth_util_la_SOURCES = modules/bluetooth/bluetooth-util.c modules/bluetooth/bluetooth-util.h
libbluetooth_util_la_LDFLAGS = -avoid-version
-libbluetooth_util_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la libdbus-util.la
+libbluetooth_util_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
libbluetooth_util_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
module_bluetooth_device_la_SOURCES = modules/bluetooth/module-bluetooth-device.c modules/bluetooth/rtp.h
module_bluetooth_device_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
+module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libbluetooth-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la
module_bluetooth_device_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# Apple Airtunes/RAOP
@@ -3396,8 +3370,6 @@ libbluetooth-util.la: $(libbluetooth_util_la_OBJECTS) $(libbluetooth_util_la_DEP
$(libbluetooth_util_la_LINK) $(am_libbluetooth_util_la_rpath) $(libbluetooth_util_la_OBJECTS) $(libbluetooth_util_la_LIBADD) $(LIBS)
libcli.la: $(libcli_la_OBJECTS) $(libcli_la_DEPENDENCIES)
$(libcli_la_LINK) -rpath $(modlibexecdir) $(libcli_la_OBJECTS) $(libcli_la_LIBADD) $(LIBS)
-libdbus-util.la: $(libdbus_util_la_OBJECTS) $(libdbus_util_la_DEPENDENCIES)
- $(libdbus_util_la_LINK) $(am_libdbus_util_la_rpath) $(libdbus_util_la_OBJECTS) $(libdbus_util_la_LIBADD) $(LIBS)
liboss-util.la: $(liboss_util_la_OBJECTS) $(liboss_util_la_DEPENDENCIES)
$(liboss_util_la_LINK) $(am_liboss_util_la_rpath) $(liboss_util_la_OBJECTS) $(liboss_util_la_LIBADD) $(LIBS)
libprotocol-cli.la: $(libprotocol_cli_la_OBJECTS) $(libprotocol_cli_la_DEPENDENCIES)
@@ -3835,7 +3807,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbluetooth_sbc_la-sbc_primitives_mmx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbluetooth_sbc_la-sbc_primitives_neon.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbluetooth_util_la-bluetooth-util.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbus_util_la-dbus-util.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulse_browse_la-avahi-wrap.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulse_browse_la-browser.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulse_la-channelmap.Plo@am__quote@
@@ -3867,6 +3838,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-conf-parser.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-core-error.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-core-util.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-dllmain.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-dynarray.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-flist.Plo@am__quote@
@@ -3926,6 +3898,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-core-scache.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-core-subscribe.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-core.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-envelope.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-fdsem.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-g711.Plo@am__quote@
@@ -4205,13 +4178,6 @@ cli.lo: pulsecore/cli.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cli.lo `test -f 'pulsecore/cli.c' || echo '$(srcdir)/'`pulsecore/cli.c
-libdbus_util_la-dbus-util.lo: modules/dbus-util.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbus_util_la_CFLAGS) $(CFLAGS) -MT libdbus_util_la-dbus-util.lo -MD -MP -MF $(DEPDIR)/libdbus_util_la-dbus-util.Tpo -c -o libdbus_util_la-dbus-util.lo `test -f 'modules/dbus-util.c' || echo '$(srcdir)/'`modules/dbus-util.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libdbus_util_la-dbus-util.Tpo $(DEPDIR)/libdbus_util_la-dbus-util.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='modules/dbus-util.c' object='libdbus_util_la-dbus-util.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbus_util_la_CFLAGS) $(CFLAGS) -c -o libdbus_util_la-dbus-util.lo `test -f 'modules/dbus-util.c' || echo '$(srcdir)/'`modules/dbus-util.c
-
oss-util.lo: modules/oss/oss-util.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT oss-util.lo -MD -MP -MF $(DEPDIR)/oss-util.Tpo -c -o oss-util.lo `test -f 'modules/oss/oss-util.c' || echo '$(srcdir)/'`modules/oss/oss-util.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/oss-util.Tpo $(DEPDIR)/oss-util.Plo
@@ -4814,6 +4780,13 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la-dllmain.lo: pulsecore/dllmain.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS) $(CFLAGS) -c -o libpulsecommon_@PA_MAJORMINORMICRO@_la-dllmain.lo `test -f 'pulsecore/dllmain.c' || echo '$(srcdir)/'`pulsecore/dllmain.c
+libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.lo: pulsecore/dbus-util.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS) $(CFLAGS) -MT libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.lo -MD -MP -MF $(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.Tpo -c -o libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.lo `test -f 'pulsecore/dbus-util.c' || echo '$(srcdir)/'`pulsecore/dbus-util.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.Tpo $(DEPDIR)/libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pulsecore/dbus-util.c' object='libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS) $(CFLAGS) -c -o libpulsecommon_@PA_MAJORMINORMICRO@_la-dbus-util.lo `test -f 'pulsecore/dbus-util.c' || echo '$(srcdir)/'`pulsecore/dbus-util.c
+
libpulsecore_@PA_MAJORMINORMICRO@_la-asyncmsgq.lo: pulsecore/asyncmsgq.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS) $(CFLAGS) -MT libpulsecore_@PA_MAJORMINORMICRO@_la-asyncmsgq.lo -MD -MP -MF $(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-asyncmsgq.Tpo -c -o libpulsecore_@PA_MAJORMINORMICRO@_la-asyncmsgq.lo `test -f 'pulsecore/asyncmsgq.c' || echo '$(srcdir)/'`pulsecore/asyncmsgq.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-asyncmsgq.Tpo $(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-asyncmsgq.Plo
@@ -5115,6 +5088,13 @@ libpulsecore_@PA_MAJORMINORMICRO@_la-x11wrap.lo: pulsecore/x11wrap.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS) $(CFLAGS) -c -o libpulsecore_@PA_MAJORMINORMICRO@_la-x11wrap.lo `test -f 'pulsecore/x11wrap.c' || echo '$(srcdir)/'`pulsecore/x11wrap.c
+libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.lo: pulsecore/dbus-shared.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS) $(CFLAGS) -MT libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.lo -MD -MP -MF $(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.Tpo -c -o libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.lo `test -f 'pulsecore/dbus-shared.c' || echo '$(srcdir)/'`pulsecore/dbus-shared.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.Tpo $(DEPDIR)/libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pulsecore/dbus-shared.c' object='libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS) $(CFLAGS) -c -o libpulsecore_@PA_MAJORMINORMICRO@_la-dbus-shared.lo `test -f 'pulsecore/dbus-shared.c' || echo '$(srcdir)/'`pulsecore/dbus-shared.c
+
libpulsecore_foreign_la-resample2.lo: pulsecore/ffmpeg/resample2.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpulsecore_foreign_la_CFLAGS) $(CFLAGS) -MT libpulsecore_foreign_la-resample2.lo -MD -MP -MF $(DEPDIR)/libpulsecore_foreign_la-resample2.Tpo -c -o libpulsecore_foreign_la-resample2.lo `test -f 'pulsecore/ffmpeg/resample2.c' || echo '$(srcdir)/'`pulsecore/ffmpeg/resample2.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libpulsecore_foreign_la-resample2.Tpo $(DEPDIR)/libpulsecore_foreign_la-resample2.Plo
diff --git a/src/daemon/cpulimit.c b/src/daemon/cpulimit.c
index 64728e2..45d6a0f 100644
--- a/src/daemon/cpulimit.c
+++ b/src/daemon/cpulimit.c
@@ -139,7 +139,7 @@ static void signal_handler(int sig) {
write_err("Soft CPU time limit exhausted, terminating.\n");
/* Try a soft cleanup */
- write(the_pipe[1], &c, sizeof(c));
+ (void) write(the_pipe[1], &c, sizeof(c));
phase = PHASE_SOFT;
reset_cpu_time(CPUTIME_INTERVAL_HARD);
diff --git a/src/daemon/default.pa.in b/src/daemon/default.pa.in
index 02ac8e5..fa0683e 100755
--- a/src/daemon/default.pa.in
+++ b/src/daemon/default.pa.in
@@ -58,9 +58,9 @@ load-module module-detect
.endif
### Automatically load driver modules for Bluetooth hardware
-#.ifexists module-bluetooth-discover@PA_SOEXT@
-#load-module module-bluetooth-discover
-#.endif
+.ifexists module-bluetooth-discover@PA_SOEXT@
+load-module module-bluetooth-discover
+.endif
### Load several protocols
.ifexists module-esound-protocol-unix@PA_SOEXT@
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 0048e7b..c456e6d 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -87,6 +87,9 @@
#include <pulsecore/thread.h>
#include <pulsecore/once.h>
#include <pulsecore/shm.h>
+#ifdef HAVE_DBUS
+#include <pulsecore/dbus-shared.h>
+#endif
#include "cmdline.h"
#include "cpulimit.h"
@@ -330,6 +333,42 @@ static void set_all_rlimits(const pa_daemon_conf *conf) {
}
#endif
+#ifdef HAVE_DBUS
+static pa_dbus_connection *register_dbus(pa_core *c) {
+ DBusError error;
+ pa_dbus_connection *conn;
+
+ dbus_error_init(&error);
+
+ if (!(conn = pa_dbus_bus_get(c, pa_in_system_mode() ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION, &error)) || dbus_error_is_set(&error)) {
+ pa_log_warn("Unable to contact D-Bus: %s: %s", error.name, error.message);
+ goto fail;
+ }
+
+ if (dbus_bus_request_name(pa_dbus_connection_get(conn), "org.pulseaudio.Server", DBUS_NAME_FLAG_DO_NOT_QUEUE, &error) == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+ pa_log_debug("Got org.pulseaudio.Server!");
+ return conn;
+ }
+
+ if (dbus_error_is_set(&error))
+ pa_log_warn("Failed to acquire org.pulseaudio.Server: %s: %s", error.name, error.message);
+ else
+ pa_log_warn("D-Bus name org.pulseaudio.Server already taken. Weird shit!");
+
+ /* PA cannot be started twice by the same user and hence we can
+ * ignore mostly the case that org.pulseaudio.Server is already
+ * taken. */
+
+fail:
+
+ if (conn)
+ pa_dbus_connection_unref(conn);
+
+ dbus_error_free(&error);
+ return NULL;
+}
+#endif
+
int main(int argc, char *argv[]) {
pa_core *c = NULL;
pa_strbuf *buf = NULL;
@@ -352,9 +391,12 @@ int main(int argc, char *argv[]) {
#endif
int autospawn_fd = -1;
pa_bool_t autospawn_locked = FALSE;
+#ifdef HAVE_DBUS
+ pa_dbus_connection *dbus = NULL;
+#endif
pa_log_set_ident("pulseaudio");
- pa_log_set_level(PA_LOG_INFO);
+ pa_log_set_level(PA_LOG_NOTICE);
pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET);
#if defined(__linux__) && defined(__OPTIMIZE__)
@@ -399,7 +441,7 @@ int main(int argc, char *argv[]) {
pa_limit_caps();
/* When capabilities are not supported we will not be able to
- * aquire RT sched anymore. But yes, that's the way it is. It
+ * acquire RT sched anymore. But yes, that's the way it is. It
* is just too risky tun let PA run as root all the time. */
}
@@ -510,7 +552,7 @@ int main(int argc, char *argv[]) {
if ((conf->high_priority && !allow_high_priority) ||
(conf->realtime_scheduling && !allow_realtime))
- pa_log_notice(_("Called SUID root and real-time and/or high-priority scheduling was requested in the configuration. However, we lack the necessary privileges:\n"
+ pa_log_info(_("Called SUID root and real-time and/or high-priority scheduling was requested in the configuration. However, we lack the necessary privileges:\n"
"We are not in group '%s', PolicyKit refuse to grant us the requested privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource limits.\n"
"For enabling real-time/high-priority scheduling please acquire the appropriate PolicyKit privileges, or become a member of '%s', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."),
PA_REALTIME_GROUP, PA_REALTIME_GROUP);
@@ -535,7 +577,7 @@ int main(int argc, char *argv[]) {
#endif
if (conf->high_priority && !pa_can_high_priority()) {
- pa_log_warn(_("High-priority scheduling enabled in configuration but not allowed by policy."));
+ pa_log_info(_("High-priority scheduling enabled in configuration but not allowed by policy."));
conf->high_priority = FALSE;
}
@@ -581,7 +623,7 @@ int main(int argc, char *argv[]) {
}
if (conf->realtime_scheduling && !pa_can_realtime()) {
- pa_log_warn(_("Real-time scheduling enabled in configuration but not allowed by policy."));
+ pa_log_info(_("Real-time scheduling enabled in configuration but not allowed by policy."));
conf->realtime_scheduling = FALSE;
}
@@ -851,6 +893,14 @@ int main(int argc, char *argv[]) {
pa_log_debug(_("Optimized build: no"));
#endif
+#ifdef NDEBUG
+ pa_log_debug(_("NDEBUG defined, all asserts disabled."));
+#elif defined(FASTPATH)
+ pa_log_debug(_("FASTPATH defined, only fast path asserts disabled."));
+#else
+ pa_log_debug(_("All asserts enabled."));
+#endif
+
if (!(s = pa_machine_id())) {
pa_log(_("Failed to get machine ID"));
goto finish;
@@ -858,6 +908,11 @@ int main(int argc, char *argv[]) {
pa_log_info(_("Machine ID is %s."), s);
pa_xfree(s);
+ if ((s = pa_session_id())) {
+ pa_log_info(_("Session ID is %s."), s);
+ pa_xfree(s);
+ }
+
if (!(s = pa_get_runtime_dir()))
goto finish;
pa_log_info(_("Using runtime directory %s."), s);
@@ -989,6 +1044,10 @@ int main(int argc, char *argv[]) {
}
#endif
+#ifdef HAVE_DBUS
+ dbus = register_dbus(c);
+#endif
+
pa_log_info(_("Daemon startup complete."));
retval = 0;
@@ -998,6 +1057,10 @@ int main(int argc, char *argv[]) {
pa_log_info(_("Daemon shutdown initiated."));
finish:
+#ifdef HAVE_DBUS
+ if (dbus)
+ pa_dbus_connection_unref(dbus);
+#endif
if (autospawn_fd >= 0) {
if (autospawn_locked)
diff --git a/src/map-file b/src/map-file
index d949659..d0102ae 100644
--- a/src/map-file
+++ b/src/map-file
@@ -233,6 +233,7 @@ pa_stream_proplist_update;
pa_stream_readable_size;
pa_stream_ref;
pa_stream_set_buffer_attr;
+pa_stream_set_buffer_attr_callback;
pa_stream_set_event_callback;
pa_stream_set_latency_update_callback;
pa_stream_set_monitor_stream;
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 7bf16c3..2fbcd7b 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -240,7 +240,7 @@ static void adjust_after_underrun(struct userdata *u) {
pa_log_notice("Increasing minimal latency to %0.2f ms",
(double) new_min_latency / PA_USEC_PER_MSEC);
- pa_sink_update_latency_range(u->sink, new_min_latency, u->sink->thread_info.max_latency);
+ pa_sink_set_latency_range_within_thread(u->sink, new_min_latency, u->sink->thread_info.max_latency);
return;
}
@@ -483,7 +483,13 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
}
}
- *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec) - process_usec;
+ *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
+
+ if (*sleep_usec > process_usec)
+ *sleep_usec -= process_usec;
+ else
+ *sleep_usec = 0;
+
return work_done ? 1 : 0;
}
@@ -605,7 +611,13 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
}
}
- *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec) - process_usec;
+ *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
+
+ if (*sleep_usec > process_usec)
+ *sleep_usec -= process_usec;
+ else
+ *sleep_usec = 0;
+
return work_done ? 1 : 0;
}
@@ -756,7 +768,7 @@ static int update_sw_params(struct userdata *u) {
return err;
}
- pa_sink_set_max_request(u->sink, u->hwbuf_size - u->hwbuf_unused);
+ pa_sink_set_max_request_within_thread(u->sink, u->hwbuf_size - u->hwbuf_unused);
return 0;
}
@@ -919,7 +931,7 @@ static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) {
return 0;
if (mask & SND_CTL_EVENT_MASK_VALUE) {
- pa_sink_get_volume(u->sink, TRUE);
+ pa_sink_get_volume(u->sink, TRUE, FALSE);
pa_sink_get_mute(u->sink, TRUE);
}
@@ -1173,7 +1185,7 @@ static void sink_update_requested_latency_cb(pa_sink *s) {
/* Let's check whether we now use only a smaller part of the
buffer then before. If so, we need to make sure that subsequent
- rewinds are relative to the new maxium fill level and not to the
+ rewinds are relative to the new maximum fill level and not to the
current fill level. Thus, let's do a full rewind once, to clear
things up. */
@@ -1286,7 +1298,7 @@ static void thread_func(void *userdata) {
pa_log_info("Starting playback.");
snd_pcm_start(u->pcm_handle);
- pa_smoother_resume(u->smoother, pa_rtclock_usec());
+ pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
}
update_smoother(u);
@@ -1300,7 +1312,7 @@ static void thread_func(void *userdata) {
/* USB devices on ALSA seem to hit a buffer
* underrun during the first iterations much
* quicker then we calculate here, probably due to
- * the transport latency. To accomodate for that
+ * the transport latency. To accommodate for that
* we artificially decrease the sleep time until
* we have filled the buffer at least once
* completely.*/
@@ -1495,7 +1507,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
snd_pcm_uframes_t period_frames, tsched_frames;
size_t frame_size;
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
- pa_usec_t usec;
pa_sink_new_data data;
pa_assert(m);
@@ -1559,10 +1570,14 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
- u->smoother = pa_smoother_new(DEFAULT_TSCHED_BUFFER_USEC*2, DEFAULT_TSCHED_BUFFER_USEC*2, TRUE, 5);
- usec = pa_rtclock_usec();
- pa_smoother_set_time_offset(u->smoother, usec);
- pa_smoother_pause(u->smoother, usec);
+ u->smoother = pa_smoother_new(
+ DEFAULT_TSCHED_BUFFER_USEC*2,
+ DEFAULT_TSCHED_BUFFER_USEC*2,
+ TRUE,
+ TRUE,
+ 5,
+ pa_rtclock_usec(),
+ TRUE);
if (reserve_init(u, pa_modargs_get_value(
ma, "device_id",
@@ -1617,6 +1632,11 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_assert(u->device_name);
pa_log_info("Successfully opened device %s.", u->device_name);
+ if (pa_alsa_pcm_is_modem(u->pcm_handle)) {
+ pa_log_notice("Device %s is modem, refusing further initialization.", u->device_name);
+ goto fail;
+ }
+
if (profile)
pa_log_info("Selected configuration '%s' (%s).", profile->description, profile->name);
@@ -1630,6 +1650,11 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->use_tsched = use_tsched = FALSE;
}
+ if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) {
+ pa_log_info("Device is not a hardware device, disabling timer-based scheduling.");
+ u->use_tsched = use_tsched = FALSE;
+ }
+
if (u->use_mmap)
pa_log_info("Successfully enabled mmap() mode.");
@@ -1639,7 +1664,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_alsa_find_mixer_and_elem(u->pcm_handle, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
pa_sink_new_data_init(&data);
data.driver = driver;
@@ -1649,7 +1674,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_sink_new_data_set_sample_spec(&data, &ss);
pa_sink_new_data_set_channel_map(&data, &map);
- pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle);
+ pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle, u->mixer_elem);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags));
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size));
@@ -1662,7 +1687,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_alsa_init_description(data.proplist);
- u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
+ 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);
if (!u->sink) {
@@ -1685,26 +1710,27 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->sink->sample_spec);
pa_cvolume_mute(&u->hardware_volume, u->sink->sample_spec.channels);
- if (use_tsched) {
- fix_min_sleep_wakeup(u);
- fix_tsched_watermark(u);
+ pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
+ nfrags, (long unsigned) u->fragment_size,
+ (double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC);
+ pa_sink_set_max_request(u->sink, u->hwbuf_size);
+ pa_sink_set_max_rewind(u->sink, u->hwbuf_size);
+
+ if (u->use_tsched) {
u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->sink->sample_spec);
- }
- pa_sink_set_max_rewind(u->sink, use_tsched ? u->hwbuf_size : 0);
- pa_sink_set_max_request(u->sink, u->hwbuf_size);
- pa_sink_set_latency_range(u->sink,
- use_tsched ? (pa_usec_t) -1 : pa_bytes_to_usec(u->hwbuf_size, &ss),
- pa_bytes_to_usec(u->hwbuf_size, &ss));
+ fix_min_sleep_wakeup(u);
+ fix_tsched_watermark(u);
- pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
- nfrags, (long unsigned) u->fragment_size,
- (double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC);
+ pa_sink_set_latency_range(u->sink,
+ 0,
+ pa_bytes_to_usec(u->hwbuf_size, &ss));
- if (use_tsched)
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);
reserve_update(u);
@@ -1714,7 +1740,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
if (setup_mixer(u, ignore_dB) < 0)
goto fail;
- pa_alsa_dump(u->pcm_handle);
+ pa_alsa_dump(PA_LOG_DEBUG, u->pcm_handle);
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index f4acad8..c59fc75 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -238,7 +238,7 @@ static void adjust_after_overrun(struct userdata *u) {
pa_log_notice("Increasing minimal latency to %0.2f ms",
(double) new_min_latency / PA_USEC_PER_MSEC);
- pa_source_update_latency_range(u->source, new_min_latency, u->source->thread_info.max_latency);
+ pa_source_set_latency_range_within_thread(u->source, new_min_latency, u->source->thread_info.max_latency);
return;
}
@@ -465,7 +465,13 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
}
}
- *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec) - process_usec;
+ *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
+
+ if (*sleep_usec > process_usec)
+ *sleep_usec -= process_usec;
+ else
+ *sleep_usec = 0;
+
return work_done ? 1 : 0;
}
@@ -575,7 +581,13 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
}
}
- *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec) - process_usec;
+ *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
+
+ if (*sleep_usec > process_usec)
+ *sleep_usec -= process_usec;
+ else
+ *sleep_usec = 0;
+
return work_done ? 1 : 0;
}
@@ -776,7 +788,7 @@ static int unsuspend(struct userdata *u) {
/* FIXME: We need to reload the volume somehow */
snd_pcm_start(u->pcm_handle);
- pa_smoother_resume(u->smoother, pa_rtclock_usec());
+ pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
pa_log_info("Resumed successfully...");
@@ -1416,8 +1428,14 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
u->alsa_rtpoll_item = NULL;
- u->smoother = pa_smoother_new(DEFAULT_TSCHED_WATERMARK_USEC*2, DEFAULT_TSCHED_WATERMARK_USEC*2, TRUE, 5);
- pa_smoother_set_time_offset(u->smoother, pa_rtclock_usec());
+ u->smoother = pa_smoother_new(
+ DEFAULT_TSCHED_WATERMARK_USEC*2,
+ DEFAULT_TSCHED_WATERMARK_USEC*2,
+ TRUE,
+ TRUE,
+ 5,
+ pa_rtclock_usec(),
+ FALSE);
if (reserve_init(u, pa_modargs_get_value(
ma, "device_id",
@@ -1469,6 +1487,11 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_assert(u->device_name);
pa_log_info("Successfully opened device %s.", u->device_name);
+ if (pa_alsa_pcm_is_modem(u->pcm_handle)) {
+ pa_log_notice("Device %s is modem, refusing further initialization.", u->device_name);
+ goto fail;
+ }
+
if (profile)
pa_log_info("Selected configuration '%s' (%s).", profile->description, profile->name);
@@ -1482,6 +1505,11 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->use_tsched = use_tsched = FALSE;
}
+ if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) {
+ pa_log_info("Device is not a hardware device, disabling timer-based scheduling.");
+ u->use_tsched = use_tsched = FALSE;
+ }
+
if (u->use_mmap)
pa_log_info("Successfully enabled mmap() mode.");
@@ -1491,7 +1519,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_alsa_find_mixer_and_elem(u->pcm_handle, &u->mixer_handle, &u->mixer_elem, pa_modargs_get_value(ma, "control", NULL), profile);
pa_source_new_data_init(&data);
data.driver = driver;
@@ -1501,7 +1529,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_source_new_data_set_sample_spec(&data, &ss);
pa_source_new_data_set_channel_map(&data, &map);
- pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle);
+ pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle, u->mixer_elem);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags));
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size));
@@ -1514,7 +1542,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_alsa_init_description(data.proplist);
- u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY);
+ 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);
if (!u->source) {
@@ -1537,24 +1565,24 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->source->sample_spec);
pa_cvolume_mute(&u->hardware_volume, u->source->sample_spec.channels);
- if (use_tsched) {
- fix_min_sleep_wakeup(u);
- fix_tsched_watermark(u);
+ pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
+ nfrags, (long unsigned) u->fragment_size,
+ (double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC);
+ if (u->use_tsched) {
u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->source->sample_spec);
- }
- pa_source_set_latency_range(u->source,
- use_tsched ? (pa_usec_t) -1 : pa_bytes_to_usec(u->hwbuf_size, &ss),
- pa_bytes_to_usec(u->hwbuf_size, &ss));
+ fix_min_sleep_wakeup(u);
+ fix_tsched_watermark(u);
- pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
- nfrags, (long unsigned) u->fragment_size,
- (double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC);
+ pa_source_set_latency_range(u->source,
+ 0,
+ pa_bytes_to_usec(u->hwbuf_size, &ss));
- if (use_tsched)
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);
reserve_update(u);
@@ -1564,7 +1592,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
if (setup_mixer(u, ignore_dB) < 0)
goto fail;
- pa_alsa_dump(u->pcm_handle);
+ pa_alsa_dump(PA_LOG_DEBUG, u->pcm_handle);
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 454cfd4..d2dc6e8 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -529,39 +529,51 @@ static const struct pa_alsa_profile_info device_table[] = {
"hw",
N_("Analog Mono"),
"analog-mono",
- 1 },
+ 1,
+ "Master", "PCM",
+ "Capture", "Mic" },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
"front",
N_("Analog Stereo"),
"analog-stereo",
- 10 },
+ 10,
+ "Master", "PCM",
+ "Capture", "Mic" },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
"iec958",
N_("Digital Stereo (IEC958)"),
"iec958-stereo",
- 5 },
+ 5,
+ "IEC958", NULL,
+ "IEC958 In", NULL },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
"hdmi",
N_("Digital Stereo (HDMI)"),
"hdmi-stereo",
- 4 },
+ 4,
+ "IEC958", NULL,
+ "IEC958 In", NULL },
{{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
"surround40",
N_("Analog Surround 4.0"),
"analog-surround-40",
- 7 },
+ 7,
+ "Master", "PCM",
+ "Capture", "Mic" },
{{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
"a52",
N_("Digital Surround 4.0 (IEC958/AC3)"),
"iec958-ac3-surround-40",
- 2 },
+ 2,
+ "Master", "PCM",
+ "Capture", "Mic" },
{{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
@@ -569,7 +581,9 @@ static const struct pa_alsa_profile_info device_table[] = {
"surround41",
N_("Analog Surround 4.1"),
"analog-surround-41",
- 7 },
+ 7,
+ "Master", "PCM",
+ "Capture", "Mic" },
{{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
@@ -577,7 +591,9 @@ static const struct pa_alsa_profile_info device_table[] = {
"surround50",
N_("Analog Surround 5.0"),
"analog-surround-50",
- 7 },
+ 7,
+ "Master", "PCM",
+ "Capture", "Mic" },
{{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
@@ -585,15 +601,19 @@ static const struct pa_alsa_profile_info device_table[] = {
"surround51",
N_("Analog Surround 5.1"),
"analog-surround-51",
- 8 },
+ 8,
+ "Master", "PCM",
+ "Capture", "Mic" },
- {{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_CENTER,
- PA_CHANNEL_POSITION_FRONT_RIGHT, PA_CHANNEL_POSITION_REAR_LEFT,
- PA_CHANNEL_POSITION_REAR_RIGHT, PA_CHANNEL_POSITION_LFE}},
+ {{ 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",
N_("Digital Surround 5.1 (IEC958/AC3)"),
"iec958-ac3-surround-51",
- 3 },
+ 3,
+ "IEC958", NULL,
+ "IEC958 In", NULL },
{{ 8, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
@@ -602,9 +622,11 @@ static const struct pa_alsa_profile_info device_table[] = {
"surround71",
N_("Analog Surround 7.1"),
"analog-surround-71",
- 7 },
+ 7,
+ "Master", "PCM",
+ "Capture", "Mic" },
- {{ 0, { 0 }}, NULL, NULL, NULL, 0 }
+ {{ 0, { 0 }}, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL }
};
snd_pcm_t *pa_alsa_open_by_device_id_auto(
@@ -705,7 +727,7 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
} else {
/* Hmm, so the next entry does not have the same
* number of channels, so let's go backwards until we
- * find the next entry with a differnt number of
+ * find the next entry with a different number of
* channels */
for (i--; i >= 0; i--)
@@ -1063,7 +1085,7 @@ snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name, const
fallback_elem = NULL;
}
- pa_log_warn("Cannot find fallback mixer control \"%s\" or mixer control is no combination of switch/volume.", snd_mixer_selem_id_get_name(sid));
+ pa_log_info("Cannot find fallback mixer control \"%s\" or mixer control is no combination of switch/volume.", snd_mixer_selem_id_get_name(sid));
}
if (elem && fallback_elem) {
@@ -1094,7 +1116,9 @@ success:
int pa_alsa_find_mixer_and_elem(
snd_pcm_t *pcm,
snd_mixer_t **_m,
- snd_mixer_elem_t **_e) {
+ snd_mixer_elem_t **_e,
+ const char *control_name,
+ const pa_alsa_profile_info *profile) {
int err;
snd_mixer_t *m;
@@ -1106,6 +1130,11 @@ int pa_alsa_find_mixer_and_elem(
pa_assert(_m);
pa_assert(_e);
+ if (control_name && *control_name == 0) {
+ pa_log_debug("Hardware mixer usage disabled because empty control name passed");
+ return -1;
+ }
+
if ((err = snd_mixer_open(&m, 0)) < 0) {
pa_log("Error opening mixer: %s", snd_strerror(err));
return -1;
@@ -1146,11 +1175,21 @@ int pa_alsa_find_mixer_and_elem(
switch (snd_pcm_stream(pcm)) {
case SND_PCM_STREAM_PLAYBACK:
- e = pa_alsa_find_elem(m, "Master", "PCM", TRUE);
+ if (control_name)
+ e = pa_alsa_find_elem(m, control_name, NULL, TRUE);
+ else if (profile)
+ e = pa_alsa_find_elem(m, profile->playback_control_name, profile->playback_control_fallback, TRUE);
+ else
+ e = pa_alsa_find_elem(m, "Master", "PCM", TRUE);
break;
case SND_PCM_STREAM_CAPTURE:
- e = pa_alsa_find_elem(m, "Capture", "Mic", FALSE);
+ if (control_name)
+ e = pa_alsa_find_elem(m, control_name, NULL, FALSE);
+ else if (profile)
+ e = pa_alsa_find_elem(m, profile->record_control_name, profile->record_control_fallback, FALSE);
+ else
+ e = pa_alsa_find_elem(m, "Capture", "Mic", FALSE);
break;
default:
@@ -1290,7 +1329,7 @@ int pa_alsa_calc_mixer_map(snd_mixer_elem_t *elem, const pa_channel_map *channel
return 0;
}
-void pa_alsa_dump(snd_pcm_t *pcm) {
+void pa_alsa_dump(pa_log_level_t level, snd_pcm_t *pcm) {
int err;
snd_output_t *out;
@@ -1299,11 +1338,11 @@ void pa_alsa_dump(snd_pcm_t *pcm) {
pa_assert_se(snd_output_buffer_open(&out) == 0);
if ((err = snd_pcm_dump(pcm, out)) < 0)
- pa_log_debug("snd_pcm_dump(): %s", snd_strerror(err));
+ pa_logl(level, "snd_pcm_dump(): %s", snd_strerror(err));
else {
char *s = NULL;
snd_output_buffer_string(out, &s);
- pa_log_debug("snd_pcm_dump():\n%s", pa_strnull(s));
+ pa_logl(level, "snd_pcm_dump():\n%s", pa_strnull(s));
}
pa_assert_se(snd_output_close(out) == 0);
@@ -1476,7 +1515,7 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
pa_alsa_init_proplist_card(c, p, card);
}
-void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm) {
+void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_mixer_elem_t *elem) {
snd_pcm_hw_params_t *hwparams;
snd_pcm_info_t *info;
int bits, err;
@@ -1492,6 +1531,9 @@ void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm) {
pa_proplist_setf(p, "alsa.resolution_bits", "%i", bits);
}
+ if (elem)
+ pa_proplist_sets(p, "alsa.mixer_element", snd_mixer_selem_get_name(elem));
+
if ((err = snd_pcm_info(pcm, info)) < 0)
pa_log_warn("Error fetching PCM info: %s", snd_strerror(err));
else
@@ -1605,6 +1647,7 @@ snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa
(unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC),
pa_strnull(dn));
pa_xfree(dn);
+ pa_alsa_dump(PA_LOG_ERROR, pcm);
} PA_ONCE_END;
/* Mhmm, let's try not to fail completely */
@@ -1646,6 +1689,7 @@ int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delay, size_t hwbuf_si
(unsigned long) (pa_bytes_to_usec(abs_k, ss) / PA_USEC_PER_MSEC),
pa_strnull(dn));
pa_xfree(dn);
+ pa_alsa_dump(PA_LOG_ERROR, pcm);
} PA_ONCE_END;
/* Mhmm, let's try not to fail completely */
@@ -1691,6 +1735,7 @@ int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas
(unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC),
pa_strnull(dn));
pa_xfree(dn);
+ pa_alsa_dump(PA_LOG_ERROR, pcm);
} PA_ONCE_END;
return r;
@@ -1716,10 +1761,11 @@ char *pa_alsa_get_driver_name(int card) {
char *pa_alsa_get_driver_name_by_pcm(snd_pcm_t *pcm) {
int card;
-
snd_pcm_info_t* info;
snd_pcm_info_alloca(&info);
+ pa_assert(pcm);
+
if (snd_pcm_info(pcm, info) < 0)
return NULL;
@@ -1749,3 +1795,27 @@ char *pa_alsa_get_reserve_name(const char *device) {
return pa_sprintf_malloc("Audio%i", i);
}
+
+pa_bool_t pa_alsa_pcm_is_hw(snd_pcm_t *pcm) {
+ snd_pcm_info_t* info;
+ snd_pcm_info_alloca(&info);
+
+ pa_assert(pcm);
+
+ if (snd_pcm_info(pcm, info) < 0)
+ return FALSE;
+
+ return snd_pcm_info_get_card(info) >= 0;
+}
+
+pa_bool_t pa_alsa_pcm_is_modem(snd_pcm_t *pcm) {
+ snd_pcm_info_t* info;
+ snd_pcm_info_alloca(&info);
+
+ pa_assert(pcm);
+
+ if (snd_pcm_info(pcm, info) < 0)
+ return FALSE;
+
+ return snd_pcm_info_get_class(info) == SND_PCM_CLASS_MODEM;
+}
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index fe0f71e..c8acc7c 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -33,6 +33,7 @@
#include <pulsecore/rtpoll.h>
#include <pulsecore/core.h>
+#include <pulsecore/log.h>
typedef struct pa_alsa_fdlist pa_alsa_fdlist;
@@ -52,18 +53,20 @@ int pa_alsa_set_hw_params(
int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min);
-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);
-
typedef struct pa_alsa_profile_info {
pa_channel_map map;
const char *alsa_name;
const char *description; /* internationalized */
const char *name;
unsigned priority;
+ const char *playback_control_name, *playback_control_fallback;
+ const char *record_control_name, *record_control_fallback;
} pa_alsa_profile_info;
+int pa_alsa_prepare_mixer(snd_mixer_t *mixer, const char *dev);
+snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name, const char *fallback, pa_bool_t playback);
+int pa_alsa_find_mixer_and_elem(snd_pcm_t *pcm, snd_mixer_t **_m, snd_mixer_elem_t **_e, const char *control_name, const pa_alsa_profile_info*profile);
+
/* Picks a working profile based on the specified ss/map */
snd_pcm_t *pa_alsa_open_by_device_id_auto(
const char *dev_id,
@@ -114,7 +117,7 @@ int pa_alsa_probe_profiles(
int pa_alsa_calc_mixer_map(snd_mixer_elem_t *elem, const pa_channel_map *channel_map, snd_mixer_selem_channel_id_t mixer_map[], pa_bool_t playback);
-void pa_alsa_dump(snd_pcm_t *pcm);
+void pa_alsa_dump(pa_log_level_t level, snd_pcm_t *pcm);
void pa_alsa_dump_status(snd_pcm_t *pcm);
void pa_alsa_redirect_errors_inc(void);
@@ -122,7 +125,7 @@ void pa_alsa_redirect_errors_dec(void);
void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *pcm_info);
void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card);
-void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm);
+void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_mixer_elem_t *elem);
pa_bool_t pa_alsa_init_description(pa_proplist *p);
int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents);
@@ -139,4 +142,8 @@ char *pa_alsa_get_driver_name_by_pcm(snd_pcm_t *pcm);
char *pa_alsa_get_reserve_name(const char *device);
+pa_bool_t pa_alsa_pcm_is_hw(snd_pcm_t *pcm);
+
+pa_bool_t pa_alsa_pcm_is_modem(snd_pcm_t *pcm);
+
#endif
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index d5e2cdc..fdc952d 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -351,7 +351,8 @@ int pa__init(pa_module *m) {
init_profile(u);
- pa_reserve_wrapper_unref(reserve);
+ if (reserve)
+ pa_reserve_wrapper_unref(reserve);
return 0;
diff --git a/src/modules/alsa/module-alsa-sink.c b/src/modules/alsa/module-alsa-sink.c
index c728a44..8e600ab 100644
--- a/src/modules/alsa/module-alsa-sink.c
+++ b/src/modules/alsa/module-alsa-sink.c
@@ -52,7 +52,8 @@ PA_MODULE_USAGE(
"tsched=<enable system timer based scheduling mode?> "
"tsched_buffer_size=<buffer size when using timer based scheduling> "
"tsched_buffer_watermark=<lower fill watermark> "
- "ignore_dB=<ignore dB information from the device?>");
+ "ignore_dB=<ignore dB information from the device?> "
+ "control=<name of mixer control>");
static const char* const valid_modargs[] = {
"name",
@@ -70,6 +71,7 @@ static const char* const valid_modargs[] = {
"tsched_buffer_size",
"tsched_buffer_watermark",
"ignore_dB",
+ "control",
NULL
};
diff --git a/src/modules/alsa/module-alsa-source.c b/src/modules/alsa/module-alsa-source.c
index 6188019..e6b27b3 100644
--- a/src/modules/alsa/module-alsa-source.c
+++ b/src/modules/alsa/module-alsa-source.c
@@ -76,7 +76,8 @@ PA_MODULE_USAGE(
"tsched=<enable system timer based scheduling mode?> "
"tsched_buffer_size=<buffer size when using timer based scheduling> "
"tsched_buffer_watermark=<upper fill watermark> "
- "ignore_dB=<ignore dB information from the device?>");
+ "ignore_dB=<ignore dB information from the device?> "
+ "control=<name of mixer control>");
static const char* const valid_modargs[] = {
"name",
@@ -94,6 +95,7 @@ static const char* const valid_modargs[] = {
"tsched_buffer_size",
"tsched_buffer_watermark",
"ignore_dB",
+ "control",
NULL
};
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index dfd3a30..5c7681d 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -24,32 +24,38 @@
#endif
#include <pulsecore/core-util.h>
-#include <modules/dbus-util.h>
+#include <pulsecore/shared.h>
+#include <pulsecore/dbus-shared.h>
#include "bluetooth-util.h"
-enum mode {
- MODE_FIND,
- MODE_GET,
- MODE_DISCOVER
-};
-
struct pa_bluetooth_discovery {
- DBusConnection *connection;
+ PA_REFCNT_DECLARE;
+
+ pa_core *core;
+ pa_dbus_connection *connection;
PA_LLIST_HEAD(pa_dbus_pending, pending);
+ pa_hashmap *devices;
+ pa_hook hook;
+};
- enum mode mode;
+static void get_properties_reply(DBusPendingCall *pending, void *userdata);
+static pa_dbus_pending* send_and_add_to_pending(pa_bluetooth_discovery *y, pa_bluetooth_device *d, DBusMessage *m, DBusPendingCallNotifyFunction func);
- /* If mode == MODE_FIND look for a specific device by its address.
- If mode == MODE_GET look for a specific device by its path. */
- const char *looking_for;
- pa_bluetooth_device *found_device;
+static pa_bt_audio_state_t pa_bt_audio_state_from_string(const char* value) {
+ pa_assert(value);
- /* If looking_for is NULL we do long-time discovery */
- pa_hashmap *devices;
- pa_bluetooth_device_callback_t callback;
- struct userdata *userdata;
-};
+ if (pa_streq(value, "disconnected"))
+ return PA_BT_AUDIO_STATE_DISCONNECTED;
+ else if (pa_streq(value, "connecting"))
+ return PA_BT_AUDIO_STATE_CONNECTING;
+ else if (pa_streq(value, "connected"))
+ return PA_BT_AUDIO_STATE_CONNECTED;
+ else if (pa_streq(value, "playing"))
+ return PA_BT_AUDIO_STATE_PLAYING;
+
+ return PA_BT_AUDIO_STATE_INVALID;
+}
static pa_bluetooth_uuid *uuid_new(const char *uuid) {
pa_bluetooth_uuid *u;
@@ -73,9 +79,9 @@ static pa_bluetooth_device* device_new(const char *path) {
d = pa_xnew(pa_bluetooth_device, 1);
- d->device_info_valid = d->audio_sink_info_valid = d->headset_info_valid = 0;
+ d->dead = FALSE;
- d->data = NULL;
+ d->device_info_valid = 0;
d->name = NULL;
d->path = pa_xstrdup(path);
@@ -87,14 +93,14 @@ static pa_bluetooth_device* device_new(const char *path) {
d->class = -1;
d->trusted = -1;
- d->audio_sink_connected = -1;
-
- d->headset_connected = -1;
+ d->audio_state = PA_BT_AUDIO_STATE_INVALID;
+ d->audio_sink_state = PA_BT_AUDIO_STATE_INVALID;
+ d->headset_state = PA_BT_AUDIO_STATE_INVALID;
return d;
}
-void pa_bluetooth_device_free(pa_bluetooth_device *d) {
+static void device_free(pa_bluetooth_device *d) {
pa_bluetooth_uuid *u;
pa_assert(d);
@@ -111,21 +117,14 @@ void pa_bluetooth_device_free(pa_bluetooth_device *d) {
pa_xfree(d);
}
-static pa_bool_t device_is_loaded(pa_bluetooth_device *d) {
- pa_assert(d);
-
- return d->device_info_valid && d->audio_sink_info_valid && d->headset_info_valid;
-}
-
static pa_bool_t device_is_audio(pa_bluetooth_device *d) {
pa_assert(d);
- pa_assert(d->device_info_valid);
- pa_assert(d->audio_sink_info_valid);
- pa_assert(d->headset_info_valid);
-
- return d->device_info_valid > 0 &&
- (d->audio_sink_info_valid > 0 || d->headset_info_valid > 0);
+ return
+ d->device_info_valid &&
+ (d->audio_state != PA_BT_AUDIO_STATE_INVALID ||
+ d->audio_sink_state != PA_BT_AUDIO_STATE_INVALID ||
+ d->headset_state != PA_BT_AUDIO_STATE_INVALID);
}
static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device *d, DBusMessageIter *i) {
@@ -221,11 +220,25 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device
while (dbus_message_iter_get_arg_type(&ai) != DBUS_TYPE_INVALID) {
pa_bluetooth_uuid *node;
const char *value;
+ DBusMessage *m;
dbus_message_iter_get_basic(&ai, &value);
node = uuid_new(value);
PA_LLIST_PREPEND(pa_bluetooth_uuid, d->uuids, node);
+ /* this might eventually be racy if .Audio is not there yet, but the State change will come anyway later, so this call is for cold-detection mostly */
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Audio", "GetProperties"));
+ send_and_add_to_pending(y, d, m, get_properties_reply);
+
+ /* Vudentz said the interfaces are here when the UUIDs are announced */
+ if (strcasecmp(HSP_HS_UUID, value) == 0 || strcasecmp(HFP_HS_UUID, value) == 0) {
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Headset", "GetProperties"));
+ send_and_add_to_pending(y, d, m, get_properties_reply);
+ } else if (strcasecmp(A2DP_SINK_UUID, value) == 0) {
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.AudioSink", "GetProperties"));
+ send_and_add_to_pending(y, d, m, get_properties_reply);
+ }
+
if (!dbus_message_iter_next(&ai))
break;
}
@@ -238,12 +251,12 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device
return 0;
}
-static int parse_audio_property(pa_bluetooth_discovery *u, int *connected, DBusMessageIter *i) {
+static int parse_audio_property(pa_bluetooth_discovery *u, int *state, DBusMessageIter *i) {
const char *key;
DBusMessageIter variant_i;
pa_assert(u);
- pa_assert(connected);
+ pa_assert(state);
pa_assert(i);
if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING) {
@@ -265,19 +278,18 @@ static int parse_audio_property(pa_bluetooth_discovery *u, int *connected, DBusM
dbus_message_iter_recurse(i, &variant_i);
-/* pa_log_debug("Parsing property org.bluez.{AudioSink|Headset}.%s", key); */
+/* pa_log_debug("Parsing property org.bluez.{Audio|AudioSink|Headset}.%s", key); */
switch (dbus_message_iter_get_arg_type(&variant_i)) {
- case DBUS_TYPE_BOOLEAN: {
+ case DBUS_TYPE_STRING: {
- dbus_bool_t value;
+ const char *value;
dbus_message_iter_get_basic(&variant_i, &value);
- if (pa_streq(key, "Connected"))
- *connected = !!value;
-
-/* pa_log_debug("Value %s", pa_yes_no(value)); */
+ if (pa_streq(key, "State"))
+ *state = pa_bt_audio_state_from_string(value);
+/* pa_log_debug("Value %s", value); */
break;
}
@@ -286,21 +298,15 @@ static int parse_audio_property(pa_bluetooth_discovery *u, int *connected, DBusM
return 0;
}
-static void run_callback(pa_bluetooth_discovery *y, pa_bluetooth_device *d, pa_bool_t good) {
+static void run_callback(pa_bluetooth_discovery *y, pa_bluetooth_device *d, pa_bool_t dead) {
pa_assert(y);
pa_assert(d);
- if (y->mode != MODE_DISCOVER)
- return;
-
- if (!device_is_loaded(d))
- return;
-
if (!device_is_audio(d))
return;
- y->callback(y->userdata, d, good);
-
+ d->dead = dead;
+ pa_hook_fire(&y->hook, d);
}
static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
@@ -325,10 +331,6 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
if (dbus_message_is_method_call(p->message, "org.bluez.Device", "GetProperties"))
d->device_info_valid = valid;
- else if (dbus_message_is_method_call(p->message, "org.bluez.Headset", "GetProperties"))
- d->headset_info_valid = valid;
- else if (dbus_message_is_method_call(p->message, "org.bluez.AudioSink", "GetProperties"))
- d->audio_sink_info_valid = valid;
if (dbus_message_get_type(r) == DBUS_MESSAGE_TYPE_ERROR) {
@@ -360,12 +362,16 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
if (parse_device_property(y, d, &dict_i) < 0)
goto finish;
+ } else if (dbus_message_has_interface(p->message, "org.bluez.Audio")) {
+ if (parse_audio_property(y, &d->audio_state, &dict_i) < 0)
+ goto finish;
+
} else if (dbus_message_has_interface(p->message, "org.bluez.Headset")) {
- if (parse_audio_property(y, &d->headset_connected, &dict_i) < 0)
+ if (parse_audio_property(y, &d->headset_state, &dict_i) < 0)
goto finish;
} else if (dbus_message_has_interface(p->message, "org.bluez.AudioSink")) {
- if (parse_audio_property(y, &d->audio_sink_connected, &dict_i) < 0)
+ if (parse_audio_property(y, &d->audio_sink_state, &dict_i) < 0)
goto finish;
}
}
@@ -375,7 +381,7 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) {
}
finish:
- run_callback(y, d, TRUE);
+ run_callback(y, d, FALSE);
dbus_message_unref(r);
@@ -390,9 +396,9 @@ static pa_dbus_pending* send_and_add_to_pending(pa_bluetooth_discovery *y, pa_bl
pa_assert(y);
pa_assert(m);
- pa_assert_se(dbus_connection_send_with_reply(y->connection, m, &call, -1));
+ pa_assert_se(dbus_connection_send_with_reply(pa_dbus_connection_get(y->connection), m, &call, -1));
- p = pa_dbus_pending_new(m, call, y, d);
+ p = pa_dbus_pending_new(pa_dbus_connection_get(y->connection), m, call, y, d);
PA_LLIST_PREPEND(pa_dbus_pending, y->pending, p);
dbus_pending_call_set_notify(call, func, p, NULL);
@@ -408,22 +414,13 @@ static void found_device(pa_bluetooth_discovery *y, const char* path) {
d = device_new(path);
- if (y->mode == MODE_DISCOVER) {
- pa_assert(y->devices);
- pa_hashmap_put(y->devices, d->path, d);
- } else {
- pa_assert(!y->found_device);
- y->found_device = d;
- }
+ pa_hashmap_put(y->devices, d->path, d);
pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.Device", "GetProperties"));
send_and_add_to_pending(y, d, m, get_properties_reply);
- pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.Headset", "GetProperties"));
- send_and_add_to_pending(y, d, m, get_properties_reply);
-
- pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.AudioSink", "GetProperties"));
- send_and_add_to_pending(y, d, m, get_properties_reply);
+ /* Before we read the other properties (Audio, AudioSink, Headset) we wait
+ * that the UUID is read */
}
static void list_devices_reply(DBusPendingCall *pending, void *userdata) {
@@ -467,57 +464,11 @@ end:
pa_dbus_pending_free(p);
}
-static void find_device_reply(DBusPendingCall *pending, void *userdata) {
- DBusError e;
- DBusMessage *r;
- char *path = NULL;
- pa_dbus_pending *p;
- pa_bluetooth_discovery *y;
-
- pa_assert(pending);
-
- dbus_error_init(&e);
-
- pa_assert_se(p = userdata);
- pa_assert_se(y = p->context_data);
- pa_assert_se(r = dbus_pending_call_steal_reply(pending));
-
- if (dbus_message_get_type(r) == DBUS_MESSAGE_TYPE_ERROR) {
- pa_log("Error from FindDevice reply: %s", dbus_message_get_error_name(r));
- goto end;
- }
-
- if (!dbus_message_get_args(r, &e, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) {
- pa_log("org.bluez.Adapter.FindDevice returned an error: '%s'\n", e.message);
- dbus_error_free(&e);
- } else
- found_device(y, path);
-
-end:
- dbus_message_unref(r);
-
- PA_LLIST_REMOVE(pa_dbus_pending, y->pending, p);
- pa_dbus_pending_free(p);
-}
-
static void found_adapter(pa_bluetooth_discovery *y, const char *path) {
DBusMessage *m;
- if (y->mode == MODE_FIND) {
- pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.Adapter", "FindDevice"));
-
- pa_assert_se(dbus_message_append_args(m,
- DBUS_TYPE_STRING, &y->looking_for,
- DBUS_TYPE_INVALID));
-
- send_and_add_to_pending(y, NULL, m, find_device_reply);
-
- } else {
- pa_assert(y->mode == MODE_DISCOVER);
-
- pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.Adapter", "ListDevices"));
- send_and_add_to_pending(y, NULL, m, list_devices_reply);
- }
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.Adapter", "ListDevices"));
+ send_and_add_to_pending(y, NULL, m, list_devices_reply);
}
static void list_adapters_reply(DBusPendingCall *pending, void *userdata) {
@@ -597,14 +548,11 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
pa_log_debug("Device %s removed", path);
if ((d = pa_hashmap_remove(y->devices, path))) {
-
- pa_assert_se(y->mode == MODE_DISCOVER);
- run_callback(y, d, FALSE);
-
- pa_bluetooth_device_free(d);
+ run_callback(y, d, TRUE);
+ device_free(d);
}
- return DBUS_HANDLER_RESULT_HANDLED;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
} else if (dbus_message_is_signal(m, "org.bluez.Adapter", "DeviceCreated")) {
const char *path;
@@ -617,7 +565,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
pa_log_debug("Device %s created", path);
found_device(y, path);
- return DBUS_HANDLER_RESULT_HANDLED;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
} else if (dbus_message_is_signal(m, "org.bluez.Manager", "AdapterAdded")) {
const char *path;
@@ -630,9 +578,10 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
pa_log_debug("Adapter %s created", path);
found_adapter(y, path);
- return DBUS_HANDLER_RESULT_HANDLED;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- } else if (dbus_message_is_signal(m, "org.bluez.Headset", "PropertyChanged") ||
+ } else if (dbus_message_is_signal(m, "org.bluez.Audio", "PropertyChanged") ||
+ dbus_message_is_signal(m, "org.bluez.Headset", "PropertyChanged") ||
dbus_message_is_signal(m, "org.bluez.AudioSink", "PropertyChanged") ||
dbus_message_is_signal(m, "org.bluez.Device", "PropertyChanged")) {
@@ -650,20 +599,23 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
if (parse_device_property(y, d, &arg_i) < 0)
goto fail;
+ } else if (dbus_message_has_interface(m, "org.bluez.Audio")) {
+ if (parse_audio_property(y, &d->audio_state, &arg_i) < 0)
+ goto fail;
+
} else if (dbus_message_has_interface(m, "org.bluez.Headset")) {
- if (parse_audio_property(y, &d->headset_connected, &arg_i) < 0)
+ if (parse_audio_property(y, &d->headset_state, &arg_i) < 0)
goto fail;
} else if (dbus_message_has_interface(m, "org.bluez.AudioSink")) {
- if (parse_audio_property(y, &d->audio_sink_connected, &arg_i) < 0)
+ if (parse_audio_property(y, &d->audio_sink_state, &arg_i) < 0)
goto fail;
}
- pa_assert_se(y->mode == MODE_DISCOVER);
- run_callback(y, d, TRUE);
+ run_callback(y, d, FALSE);
}
- return DBUS_HANDLER_RESULT_HANDLED;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
fail:
@@ -672,86 +624,86 @@ fail:
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
-pa_bluetooth_device* pa_bluetooth_find_device(DBusConnection *c, const char* address) {
- pa_bluetooth_discovery y;
-
- memset(&y, 0, sizeof(y));
- y.mode = MODE_FIND;
- y.looking_for = address;
- y.connection = c;
- PA_LLIST_HEAD_INIT(pa_dbus_pending, y.pending);
-
- list_adapters(&y);
+const pa_bluetooth_device* pa_bluetooth_discovery_get_by_address(pa_bluetooth_discovery *y, const char* address) {
+ pa_bluetooth_device *d;
+ void *state = NULL;
- pa_dbus_sync_pending_list(&y.pending);
- pa_assert(!y.pending);
+ pa_assert(y);
+ pa_assert(PA_REFCNT_VALUE(y) > 0);
+ pa_assert(address);
- if (y.found_device) {
- pa_assert(device_is_loaded(y.found_device));
+ if (!pa_hook_is_firing(&y->hook))
+ pa_bluetooth_discovery_sync(y);
- if (!device_is_audio(y.found_device)) {
- pa_bluetooth_device_free(y.found_device);
- return NULL;
- }
- }
+ while ((d = pa_hashmap_iterate(y->devices, &state, NULL)))
+ if (pa_streq(d->address, address))
+ return d;
- return y.found_device;
+ return NULL;
}
-pa_bluetooth_device* pa_bluetooth_get_device(DBusConnection *c, const char* path) {
- pa_bluetooth_discovery y;
+const pa_bluetooth_device* pa_bluetooth_discovery_get_by_path(pa_bluetooth_discovery *y, const char* path) {
+ pa_assert(y);
+ pa_assert(PA_REFCNT_VALUE(y) > 0);
+ pa_assert(path);
- memset(&y, 0, sizeof(y));
- y.mode = MODE_GET;
- y.connection = c;
- PA_LLIST_HEAD_INIT(pa_dbus_pending, y.pending);
+ if (!pa_hook_is_firing(&y->hook))
+ pa_bluetooth_discovery_sync(y);
- found_device(&y, path);
+ return pa_hashmap_get(y->devices, path);
+}
- pa_dbus_sync_pending_list(&y.pending);
- pa_assert(!y.pending);
+static int setup_dbus(pa_bluetooth_discovery *y) {
+ DBusError err;
- if (y.found_device) {
- pa_assert(device_is_loaded(y.found_device));
+ dbus_error_init(&err);
- if (!device_is_audio(y.found_device)) {
- pa_bluetooth_device_free(y.found_device);
- return NULL;
- }
+ y->connection = pa_dbus_bus_get(y->core, DBUS_BUS_SYSTEM, &err);
+
+ if (dbus_error_is_set(&err) || !y->connection) {
+ pa_log("Failed to get D-Bus connection: %s", err.message);
+ dbus_error_free(&err);
+ return -1;
}
- return y.found_device;
+ return 0;
}
-pa_bluetooth_discovery* pa_bluetooth_discovery_new(DBusConnection *c, pa_bluetooth_device_callback_t cb, struct userdata *u) {
+pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) {
DBusError err;
pa_bluetooth_discovery *y;
pa_assert(c);
- pa_assert(cb);
dbus_error_init(&err);
+ if ((y = pa_shared_get(c, "bluetooth-discovery")))
+ return pa_bluetooth_discovery_ref(y);
+
y = pa_xnew0(pa_bluetooth_discovery, 1);
- y->mode = MODE_DISCOVER;
- y->connection = c;
- y->callback = cb;
- y->userdata = u;
+ PA_REFCNT_INIT(y);
+ y->core = c;
y->devices = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
PA_LLIST_HEAD_INIT(pa_dbus_pending, y->pending);
+ pa_hook_init(&y->hook, y);
+ pa_shared_set(c, "bluetooth-discovery", y);
+
+ if (setup_dbus(y) < 0)
+ goto fail;
/* dynamic detection of bluetooth audio devices */
- if (!dbus_connection_add_filter(c, filter_cb, y, NULL)) {
+ if (!dbus_connection_add_filter(pa_dbus_connection_get(y->connection), filter_cb, y, NULL)) {
pa_log_error("Failed to add filter function");
goto fail;
}
if (pa_dbus_add_matches(
- c, &err,
+ pa_dbus_connection_get(y->connection), &err,
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'",
"type='signal',sender='org.bluez',interface='org.bluez.Device',member='PropertyChanged'",
+ "type='signal',sender='org.bluez',interface='org.bluez.Audio',member='PropertyChanged'",
"type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged'",
"type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", NULL) < 0) {
pa_log("Failed to add D-Bus matches: %s", err.message);
@@ -763,46 +715,82 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_new(DBusConnection *c, pa_bluetoo
return y;
fail:
+
+ if (y)
+ pa_bluetooth_discovery_unref(y);
+
dbus_error_free(&err);
+
return NULL;
}
-void pa_bluetooth_discovery_free(pa_bluetooth_discovery *y) {
+pa_bluetooth_discovery* pa_bluetooth_discovery_ref(pa_bluetooth_discovery *y) {
+ pa_assert(y);
+ pa_assert(PA_REFCNT_VALUE(y) > 0);
+
+ PA_REFCNT_INC(y);
+
+ return y;
+}
+
+void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) {
pa_bluetooth_device *d;
pa_assert(y);
+ pa_assert(PA_REFCNT_VALUE(y) > 0);
+
+ if (PA_REFCNT_DEC(y) > 0)
+ return;
pa_dbus_free_pending_list(&y->pending);
if (y->devices) {
while ((d = pa_hashmap_steal_first(y->devices))) {
- run_callback(y, d, FALSE);
- pa_bluetooth_device_free(d);
+ run_callback(y, d, TRUE);
+ device_free(d);
}
pa_hashmap_free(y->devices, NULL, NULL);
}
if (y->connection) {
- pa_dbus_remove_matches(y->connection,
+ pa_dbus_remove_matches(pa_dbus_connection_get(y->connection),
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'",
"type='signal',sender='org.bluez',interface='org.bluez.Device',member='PropertyChanged'",
+ "type='signal',sender='org.bluez',interface='org.bluez.Audio',member='PropertyChanged'",
"type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged'",
"type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", NULL);
- dbus_connection_remove_filter(y->connection, filter_cb, y);
+ dbus_connection_remove_filter(pa_dbus_connection_get(y->connection), filter_cb, y);
+
+ pa_dbus_connection_unref(y->connection);
}
+
+ pa_hook_done(&y->hook);
+
+ if (y->core)
+ pa_shared_remove(y->core, "bluetooth-discovery");
+
+ pa_xfree(y);
}
void pa_bluetooth_discovery_sync(pa_bluetooth_discovery *y) {
pa_assert(y);
+ pa_assert(PA_REFCNT_VALUE(y) > 0);
pa_dbus_sync_pending_list(&y->pending);
}
+pa_hook* pa_bluetooth_discovery_hook(pa_bluetooth_discovery *y) {
+ pa_assert(y);
+ pa_assert(PA_REFCNT_VALUE(y) > 0);
+
+ return &y->hook;
+}
+
const char*pa_bluetooth_get_form_factor(uint32_t class) {
unsigned i;
const char *r;
@@ -862,3 +850,16 @@ char *pa_bluetooth_cleanup_name(const char *name) {
return t;
}
+
+pa_bool_t pa_bluetooth_uuid_has(pa_bluetooth_uuid *uuids, const char *uuid) {
+ pa_assert(uuid);
+
+ while (uuids) {
+ if (strcasecmp(uuids->uuid, uuid) == 0)
+ return TRUE;
+
+ uuids = uuids->next;
+ }
+
+ return FALSE;
+}
diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h
index 0364c97..265caf4 100644
--- a/src/modules/bluetooth/bluetooth-util.h
+++ b/src/modules/bluetooth/bluetooth-util.h
@@ -28,6 +28,20 @@
#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
+/* UUID copied from bluez/audio/device.h */
+#define GENERIC_AUDIO_UUID "00001203-0000-1000-8000-00805F9B34FB"
+
+#define HSP_HS_UUID "00001108-0000-1000-8000-00805F9B34FB"
+#define HSP_AG_UUID "00001112-0000-1000-8000-00805F9B34FB"
+
+#define HFP_HS_UUID "0000111E-0000-1000-8000-00805F9B34FB"
+#define HFP_AG_UUID "0000111F-0000-1000-8000-00805F9B34FB"
+
+#define ADVANCED_AUDIO_UUID "0000110D-0000-1000-8000-00805F9B34FB"
+
+#define A2DP_SOURCE_UUID "0000110A-0000-1000-8000-00805F9B34FB"
+#define A2DP_SINK_UUID "0000110B-0000-1000-8000-00805F9B34FB"
+
typedef struct pa_bluetooth_uuid pa_bluetooth_uuid;
typedef struct pa_bluetooth_device pa_bluetooth_device;
typedef struct pa_bluetooth_discovery pa_bluetooth_discovery;
@@ -39,12 +53,20 @@ struct pa_bluetooth_uuid {
PA_LLIST_FIELDS(pa_bluetooth_uuid);
};
+/* This enum is shared among Audio, Headset, and AudioSink, although not all values are acceptable in all profiles */
+typedef enum pa_bt_audio_state {
+ PA_BT_AUDIO_STATE_INVALID = -1,
+ PA_BT_AUDIO_STATE_DISCONNECTED,
+ PA_BT_AUDIO_STATE_CONNECTING,
+ PA_BT_AUDIO_STATE_CONNECTED,
+ PA_BT_AUDIO_STATE_PLAYING,
+ PA_BT_AUDIO_STATE_LAST
+} pa_bt_audio_state_t;
+
struct pa_bluetooth_device {
- void *data; /* arbitrary information for the one owning the discovery object */
+ pa_bool_t dead;
int device_info_valid; /* 0: no results yet; 1: good results; -1: bad results ... */
- int audio_sink_info_valid; /* ... same here ... */
- int headset_info_valid; /* ... and here */
/* Device information */
char *name;
@@ -57,25 +79,31 @@ struct pa_bluetooth_device {
int class;
int trusted;
- /* AudioSink information */
- int audio_sink_connected;
+ /* Audio state */
+ pa_bt_audio_state_t audio_state;
- /* Headset information */
- int headset_connected;
-};
+ /* AudioSink state */
+ pa_bt_audio_state_t audio_sink_state;
-void pa_bluetooth_device_free(pa_bluetooth_device *d);
+ /* Headset state */
+ pa_bt_audio_state_t headset_state;
+};
-pa_bluetooth_device* pa_bluetooth_get_device(DBusConnection *c, const char* path);
-pa_bluetooth_device* pa_bluetooth_find_device(DBusConnection *c, const char* address);
+pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *core);
+pa_bluetooth_discovery* pa_bluetooth_discovery_ref(pa_bluetooth_discovery *y);
+void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *d);
-typedef void (*pa_bluetooth_device_callback_t)(struct userdata *u, pa_bluetooth_device *d, pa_bool_t good);
-pa_bluetooth_discovery* pa_bluetooth_discovery_new(DBusConnection *c, pa_bluetooth_device_callback_t cb, struct userdata *u);
-void pa_bluetooth_discovery_free(pa_bluetooth_discovery *d);
void pa_bluetooth_discovery_sync(pa_bluetooth_discovery *d);
-const char*pa_bluetooth_get_form_factor(uint32_t class);
+const pa_bluetooth_device* pa_bluetooth_discovery_get_by_path(pa_bluetooth_discovery *d, const char* path);
+const pa_bluetooth_device* pa_bluetooth_discovery_get_by_address(pa_bluetooth_discovery *d, const char* address);
+
+pa_hook* pa_bluetooth_discovery_hook(pa_bluetooth_discovery *d);
+
+const char* pa_bluetooth_get_form_factor(uint32_t class);
char *pa_bluetooth_cleanup_name(const char *name);
+pa_bool_t pa_bluetooth_uuid_has(pa_bluetooth_uuid *uuids, const char *uuid);
+
#endif
diff --git a/src/modules/bluetooth/ipc.c b/src/modules/bluetooth/ipc.c
index f14c92c..dcecad8 100644
--- a/src/modules/bluetooth/ipc.c
+++ b/src/modules/bluetooth/ipc.c
@@ -35,6 +35,7 @@ static const char *strtypes[] = {
/* This table contains the string representation for messages names */
static const char *strnames[] = {
"BT_GET_CAPABILITIES",
+ "BT_OPEN",
"BT_SET_CONFIGURATION",
"BT_NEW_STREAM",
"BT_START_STREAM",
diff --git a/src/modules/bluetooth/ipc.h b/src/modules/bluetooth/ipc.h
index f030acf..2e170f5 100644
--- a/src/modules/bluetooth/ipc.h
+++ b/src/modules/bluetooth/ipc.h
@@ -71,7 +71,7 @@ extern "C" {
#include <sys/un.h>
#include <errno.h>
-#define BT_SUGGESTED_BUFFER_SIZE 128
+#define BT_SUGGESTED_BUFFER_SIZE 512
#define BT_IPC_SOCKET_NAME "\0/org/bluez/audio"
/* Generic message header definition, except for RESPONSE messages */
@@ -94,10 +94,12 @@ typedef struct {
/* Messages names */
#define BT_GET_CAPABILITIES 0
-#define BT_SET_CONFIGURATION 1
-#define BT_NEW_STREAM 2
-#define BT_START_STREAM 3
-#define BT_STOP_STREAM 4
+#define BT_OPEN 1
+#define BT_SET_CONFIGURATION 2
+#define BT_NEW_STREAM 3
+#define BT_START_STREAM 4
+#define BT_STOP_STREAM 5
+#define BT_CLOSE 6
#define BT_CONTROL 7
#define BT_CAPABILITIES_TRANSPORT_A2DP 0
@@ -112,19 +114,31 @@ typedef struct {
struct bt_get_capabilities_req {
bt_audio_msg_header_t h;
- char device[18]; /* Address of the remote Device */
+ char source[18]; /* Address of the local Device */
+ char destination[18];/* Address of the remote Device */
+ char object[128]; /* DBus object path */
uint8_t transport; /* Requested transport */
uint8_t flags; /* Requested flags */
+ uint8_t seid; /* Requested capability configuration */
} __attribute__ ((packed));
/**
- * SBC Codec parameters as per A2DP profile 1.0 § 4.3
+ * SBC Codec parameters as per A2DP profile 1.0 § 4.3
*/
-#define BT_A2DP_CODEC_SBC 0x00
-#define BT_A2DP_CODEC_MPEG12 0x01
-#define BT_A2DP_CODEC_MPEG24 0x02
-#define BT_A2DP_CODEC_ATRAC 0x03
+/* A2DP seid are 6 bytes long so HSP/HFP are assigned to 7-8 bits */
+#define BT_A2DP_SEID_RANGE (1 << 6) - 1
+
+#define BT_A2DP_SBC_SOURCE 0x00
+#define BT_A2DP_SBC_SINK 0x01
+#define BT_A2DP_MPEG12_SOURCE 0x02
+#define BT_A2DP_MPEG12_SINK 0x03
+#define BT_A2DP_MPEG24_SOURCE 0x04
+#define BT_A2DP_MPEG24_SINK 0x05
+#define BT_A2DP_ATRAC_SOURCE 0x06
+#define BT_A2DP_ATRAC_SINK 0x07
+#define BT_A2DP_UNKNOWN_SOURCE 0x08
+#define BT_A2DP_UNKNOWN_SINK 0x09
#define BT_SBC_SAMPLING_FREQ_16000 (1 << 3)
#define BT_SBC_SAMPLING_FREQ_32000 (1 << 2)
@@ -163,10 +177,16 @@ struct bt_get_capabilities_req {
#define BT_PCM_FLAG_NREC 0x01
#define BT_PCM_FLAG_PCM_ROUTING 0x02
+#define BT_WRITE_LOCK (1 << 1)
+#define BT_READ_LOCK 1
+
typedef struct {
+ uint8_t seid;
uint8_t transport;
uint8_t type;
uint8_t length;
+ uint8_t configured;
+ uint8_t lock;
uint8_t data[0];
} __attribute__ ((packed)) codec_capabilities_t;
@@ -199,20 +219,35 @@ typedef struct {
struct bt_get_capabilities_rsp {
bt_audio_msg_header_t h;
+ char source[18]; /* Address of the local Device */
+ char destination[18];/* Address of the remote Device */
+ char object[128]; /* DBus object path */
uint8_t data[0]; /* First codec_capabilities_t */
} __attribute__ ((packed));
+struct bt_open_req {
+ bt_audio_msg_header_t h;
+ char source[18]; /* Address of the local Device */
+ char destination[18];/* Address of the remote Device */
+ char object[128]; /* DBus object path */
+ uint8_t seid; /* Requested capability configuration to lock */
+ uint8_t lock; /* Requested lock */
+} __attribute__ ((packed));
+
+struct bt_open_rsp {
+ bt_audio_msg_header_t h;
+ char source[18]; /* Address of the local Device */
+ char destination[18];/* Address of the remote Device */
+ char object[128]; /* DBus object path */
+} __attribute__ ((packed));
+
struct bt_set_configuration_req {
bt_audio_msg_header_t h;
- char device[18]; /* Address of the remote Device */
- uint8_t access_mode; /* Requested access mode */
codec_capabilities_t codec; /* Requested codec */
} __attribute__ ((packed));
struct bt_set_configuration_rsp {
bt_audio_msg_header_t h;
- uint8_t transport; /* Granted transport */
- uint8_t access_mode; /* Granted access mode */
uint16_t link_mtu; /* Max length that transport supports */
} __attribute__ ((packed));
@@ -241,6 +276,14 @@ struct bt_stop_stream_rsp {
bt_audio_msg_header_t h;
} __attribute__ ((packed));
+struct bt_close_req {
+ bt_audio_msg_header_t h;
+} __attribute__ ((packed));
+
+struct bt_close_rsp {
+ bt_audio_msg_header_t h;
+} __attribute__ ((packed));
+
struct bt_suspend_stream_ind {
bt_audio_msg_header_t h;
} __attribute__ ((packed));
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 495bc82..90f6486 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -46,8 +46,7 @@
#include <pulsecore/time-smoother.h>
#include <pulsecore/rtclock.h>
#include <pulsecore/namereg.h>
-
-#include <modules/dbus-util.h>
+#include <pulsecore/dbus-shared.h>
#include "module-bluetooth-device-symdef.h"
#include "ipc.h"
@@ -57,9 +56,6 @@
#define MAX_BITPOOL 64
#define MIN_BITPOOL 2U
-#define SOL_SCO 17
-#define SCO_TXBUFS 0x03
-#define SCO_RXBUFS 0x04
PA_MODULE_AUTHOR("Joao Paulo Rechi Vita");
PA_MODULE_DESCRIPTION("Bluetooth audio sink and source");
@@ -74,9 +70,16 @@ PA_MODULE_USAGE(
"profile=<a2dp|hsp> "
"rate=<sample rate> "
"channels=<number of channels> "
- "path=<device object path> "
+ "path=<device object path>");
+
+/*
+#ifdef NOKIA
"sco_sink=<SCO over PCM sink name> "
- "sco_source=<SCO over PCM source name>");
+ "sco_source=<SCO over PCM source name>"
+#endif
+*/
+
+/* TODO: not close fd when entering suspend mode in a2dp */
static const char* const valid_modargs[] = {
"name",
@@ -88,8 +91,10 @@ static const char* const valid_modargs[] = {
"rate",
"channels",
"path",
+#ifdef NOKIA
"sco_sink",
"sco_source",
+#endif
NULL
};
@@ -97,7 +102,7 @@ struct a2dp_info {
sbc_capabilities_t sbc_capabilities;
sbc_t sbc; /* Codec data */
pa_bool_t sbc_initialized; /* Keep track if the encoder is initialized */
- size_t codesize; /* SBC codesize */
+ size_t codesize, frame_length; /* SBC Codesize, frame_length. We simply cache those values here */
void* buffer; /* Codec transfer buffer */
size_t buffer_size; /* Size of the buffer */
@@ -107,8 +112,10 @@ struct a2dp_info {
struct hsp_info {
pcm_capabilities_t pcm_capabilities;
+#ifdef NOKIA
pa_sink *sco_sink;
pa_source *sco_source;
+#endif
pa_hook_slot *sink_state_changed_slot;
pa_hook_slot *source_state_changed_slot;
};
@@ -123,6 +130,12 @@ struct userdata {
pa_core *core;
pa_module *module;
+ char *address;
+ char *path;
+ pa_bluetooth_discovery *discovery;
+
+ pa_dbus_connection *connection;
+
pa_card *card;
pa_sink *sink;
pa_source *source;
@@ -148,18 +161,23 @@ struct userdata {
struct a2dp_info a2dp;
struct hsp_info hsp;
- pa_dbus_connection *connection;
enum profile profile;
pa_modargs *modargs;
- pa_bluetooth_device *device;
-
- int stream_write_type, stream_read_type;
+ int stream_write_type;
int service_write_type, service_read_type;
};
+#define FIXED_LATENCY_PLAYBACK_A2DP (25*PA_USEC_PER_MSEC)
+#define FIXED_LATENCY_PLAYBACK_HSP (125*PA_USEC_PER_MSEC)
+#define FIXED_LATENCY_RECORD_HSP (25*PA_USEC_PER_MSEC)
+
+#ifdef NOKIA
+#define USE_SCO_OVER_PCM(u) (u->profile == PROFILE_HSP && (u->hsp.sco_sink && u->hsp.sco_source))
+#endif
+
static int init_bt(struct userdata *u);
static int init_profile(struct userdata *u);
@@ -261,7 +279,8 @@ static ssize_t service_expect(struct userdata*u, bt_audio_msg_header_t *rsp, siz
return 0;
}
-static int parse_caps(struct userdata *u, const struct bt_get_capabilities_rsp *rsp) {
+/* Run from main thread */
+static int parse_caps(struct userdata *u, uint8_t seid, const struct bt_get_capabilities_rsp *rsp) {
uint16_t bytes_left;
const codec_capabilities_t *codec;
@@ -292,12 +311,15 @@ static int parse_caps(struct userdata *u, const struct bt_get_capabilities_rsp *
pa_assert(codec->type == BT_HFP_CODEC_PCM);
+ if (codec->configured && seid == 0)
+ return codec->seid;
+
memcpy(&u->hsp.pcm_capabilities, codec, sizeof(u->hsp.pcm_capabilities));
} else if (u->profile == PROFILE_A2DP) {
while (bytes_left > 0) {
- if (codec->type == BT_A2DP_CODEC_SBC)
+ if ((codec->type == BT_A2DP_SBC_SINK) && !codec->lock)
break;
bytes_left -= codec->length;
@@ -307,7 +329,10 @@ static int parse_caps(struct userdata *u, const struct bt_get_capabilities_rsp *
if (bytes_left <= 0 || codec->length != sizeof(u->a2dp.sbc_capabilities))
return -1;
- pa_assert(codec->type == BT_A2DP_CODEC_SBC);
+ pa_assert(codec->type == BT_A2DP_SBC_SINK);
+
+ if (codec->configured && seid == 0)
+ return codec->seid;
memcpy(&u->a2dp.sbc_capabilities, codec, sizeof(u->a2dp.sbc_capabilities));
}
@@ -315,13 +340,15 @@ static int parse_caps(struct userdata *u, const struct bt_get_capabilities_rsp *
return 0;
}
-static int get_caps(struct userdata *u) {
+/* Run from main thread */
+static int get_caps(struct userdata *u, uint8_t seid) {
union {
struct bt_get_capabilities_req getcaps_req;
struct bt_get_capabilities_rsp getcaps_rsp;
bt_audio_error_t error;
uint8_t buf[BT_SUGGESTED_BUFFER_SIZE];
} msg;
+ int ret;
pa_assert(u);
@@ -329,8 +356,9 @@ static int get_caps(struct userdata *u) {
msg.getcaps_req.h.type = BT_REQUEST;
msg.getcaps_req.h.name = BT_GET_CAPABILITIES;
msg.getcaps_req.h.length = sizeof(msg.getcaps_req);
+ msg.getcaps_req.seid = seid;
- pa_strlcpy(msg.getcaps_req.device, u->device->address, sizeof(msg.getcaps_req.device));
+ pa_strlcpy(msg.getcaps_req.object, u->path, sizeof(msg.getcaps_req.object));
if (u->profile == PROFILE_A2DP)
msg.getcaps_req.transport = BT_CAPABILITIES_TRANSPORT_A2DP;
else {
@@ -345,9 +373,14 @@ static int get_caps(struct userdata *u) {
if (service_expect(u, &msg.getcaps_rsp.h, sizeof(msg), BT_GET_CAPABILITIES, 0) < 0)
return -1;
- return parse_caps(u, &msg.getcaps_rsp);
+ ret = parse_caps(u, seid, &msg.getcaps_rsp);
+ if (ret <= 0)
+ return ret;
+
+ return get_caps(u, ret);
}
+/* Run from main thread */
static uint8_t a2dp_default_bitpool(uint8_t freq, uint8_t mode) {
switch (freq) {
@@ -393,6 +426,7 @@ static uint8_t a2dp_default_bitpool(uint8_t freq, uint8_t mode) {
}
}
+/* Run from main thread */
static int setup_a2dp(struct userdata *u) {
sbc_capabilities_t *cap;
int i;
@@ -421,8 +455,8 @@ static int setup_a2dp(struct userdata *u) {
break;
}
- if ((unsigned) i >= PA_ELEMENTSOF(freq_table)) {
- for (; i >= 0; i--) {
+ if ((unsigned) i == PA_ELEMENTSOF(freq_table)) {
+ for (--i; i >= 0; i--) {
if (cap->frequency & freq_table[i].cap) {
u->sample_spec.rate = freq_table[i].rate;
cap->frequency = freq_table[i].cap;
@@ -436,6 +470,11 @@ static int setup_a2dp(struct userdata *u) {
}
}
+ pa_assert((unsigned) i < PA_ELEMENTSOF(freq_table));
+
+ if (cap->capability.configured)
+ return 0;
+
if (u->sample_spec.channels <= 1) {
if (cap->channel_mode & BT_A2DP_CHANNEL_MODE_MONO) {
cap->channel_mode = BT_A2DP_CHANNEL_MODE_MONO;
@@ -495,6 +534,7 @@ static int setup_a2dp(struct userdata *u) {
return 0;
}
+/* Run from main thread */
static void setup_sbc(struct a2dp_info *a2dp) {
sbc_capabilities_t *active_capabilities;
@@ -582,17 +622,36 @@ static void setup_sbc(struct a2dp_info *a2dp) {
}
a2dp->sbc.bitpool = active_capabilities->max_bitpool;
- a2dp->codesize = (uint16_t) sbc_get_codesize(&a2dp->sbc);
+ a2dp->codesize = sbc_get_codesize(&a2dp->sbc);
+ a2dp->frame_length = sbc_get_frame_length(&a2dp->sbc);
}
+/* Run from main thread */
static int set_conf(struct userdata *u) {
union {
+ struct bt_open_req open_req;
+ struct bt_open_rsp open_rsp;
struct bt_set_configuration_req setconf_req;
struct bt_set_configuration_rsp setconf_rsp;
bt_audio_error_t error;
uint8_t buf[BT_SUGGESTED_BUFFER_SIZE];
} msg;
+ memset(&msg, 0, sizeof(msg));
+ msg.open_req.h.type = BT_REQUEST;
+ msg.open_req.h.name = BT_OPEN;
+ msg.open_req.h.length = sizeof(msg.open_req);
+
+ pa_strlcpy(msg.open_req.object, u->path, sizeof(msg.open_req.object));
+ msg.open_req.seid = u->profile == PROFILE_A2DP ? u->a2dp.sbc_capabilities.capability.seid : BT_A2DP_SEID_RANGE + 1;
+ msg.open_req.lock = u->profile == PROFILE_A2DP ? BT_WRITE_LOCK : BT_READ_LOCK | BT_WRITE_LOCK;
+
+ if (service_send(u, &msg.open_req.h) < 0)
+ return -1;
+
+ if (service_expect(u, &msg.open_rsp.h, sizeof(msg), BT_OPEN, sizeof(msg.open_rsp)) < 0)
+ return -1;
+
if (u->profile == PROFILE_A2DP ) {
u->sample_spec.format = PA_SAMPLE_S16LE;
@@ -611,15 +670,14 @@ static int set_conf(struct userdata *u) {
msg.setconf_req.h.name = BT_SET_CONFIGURATION;
msg.setconf_req.h.length = sizeof(msg.setconf_req);
- pa_strlcpy(msg.setconf_req.device, u->device->address, sizeof(msg.setconf_req.device));
- msg.setconf_req.access_mode = u->profile == PROFILE_A2DP ? BT_CAPABILITIES_ACCESS_MODE_WRITE : BT_CAPABILITIES_ACCESS_MODE_READWRITE;
-
- msg.setconf_req.codec.transport = u->profile == PROFILE_A2DP ? BT_CAPABILITIES_TRANSPORT_A2DP : BT_CAPABILITIES_TRANSPORT_SCO;
-
if (u->profile == PROFILE_A2DP) {
memcpy(&msg.setconf_req.codec, &u->a2dp.sbc_capabilities, sizeof(u->a2dp.sbc_capabilities));
- msg.setconf_req.h.length += msg.setconf_req.codec.length - sizeof(msg.setconf_req.codec);
+ } else {
+ msg.setconf_req.codec.transport = BT_CAPABILITIES_TRANSPORT_SCO;
+ msg.setconf_req.codec.seid = BT_A2DP_SEID_RANGE + 1;
+ msg.setconf_req.codec.length = sizeof(pcm_capabilities_t);
}
+ msg.setconf_req.h.length += msg.setconf_req.codec.length - sizeof(msg.setconf_req.codec);
if (service_send(u, &msg.setconf_req.h) < 0)
return -1;
@@ -627,24 +685,17 @@ static int set_conf(struct userdata *u) {
if (service_expect(u, &msg.setconf_rsp.h, sizeof(msg), BT_SET_CONFIGURATION, sizeof(msg.setconf_rsp)) < 0)
return -1;
- if ((u->profile == PROFILE_A2DP && msg.setconf_rsp.transport != BT_CAPABILITIES_TRANSPORT_A2DP) ||
- (u->profile == PROFILE_HSP && msg.setconf_rsp.transport != BT_CAPABILITIES_TRANSPORT_SCO)) {
- pa_log("Transport doesn't match what we requested.");
- return -1;
- }
-
- if ((u->profile == PROFILE_A2DP && msg.setconf_rsp.access_mode != BT_CAPABILITIES_ACCESS_MODE_WRITE) ||
- (u->profile == PROFILE_HSP && msg.setconf_rsp.access_mode != BT_CAPABILITIES_ACCESS_MODE_READWRITE)) {
- pa_log("Access mode doesn't match what we requested.");
- return -1;
- }
-
u->link_mtu = msg.setconf_rsp.link_mtu;
/* setup SBC encoder now we agree on parameters */
if (u->profile == PROFILE_A2DP) {
setup_sbc(&u->a2dp);
- u->block_size = u->a2dp.codesize;
+
+ u->block_size =
+ ((u->link_mtu - sizeof(struct rtp_header) - sizeof(struct rtp_payload))
+ / u->a2dp.frame_length
+ * u->a2dp.codesize);
+
pa_log_info("SBC parameters:\n\tallocation=%u\n\tsubbands=%u\n\tblocks=%u\n\tbitpool=%u\n",
u->a2dp.sbc.allocation, u->a2dp.sbc.subbands, u->a2dp.sbc.blocks, u->a2dp.sbc.bitpool);
} else
@@ -653,7 +704,7 @@ static int set_conf(struct userdata *u) {
return 0;
}
-/* from IO thread */
+/* from IO thread, except in SCO over PCM */
static int start_stream_fd(struct userdata *u) {
union {
bt_audio_msg_header_t rsp;
@@ -664,6 +715,7 @@ static int start_stream_fd(struct userdata *u) {
uint8_t buf[BT_SUGGESTED_BUFFER_SIZE];
} msg;
struct pollfd *pollfd;
+ int one;
pa_assert(u);
pa_assert(u->rtpoll);
@@ -689,17 +741,33 @@ static int start_stream_fd(struct userdata *u) {
return -1;
}
-/* setsockopt(u->stream_fd, SOL_SCO, SCO_TXBUFS, &period_count, sizeof(period_count)); */
-/* setsockopt(u->stream_fd, SOL_SCO, SCO_SNDBUF, &period_count, sizeof(period_count)); */
-
pa_make_fd_nonblock(u->stream_fd);
pa_make_socket_low_delay(u->stream_fd);
+ one = 1;
+ if (setsockopt(u->stream_fd, SOL_SOCKET, SO_TIMESTAMP, &one, sizeof(one)) < 0)
+ pa_log_warn("Failed to enable SO_TIMESTAMP: %s", pa_cstrerror(errno));
+
+ pa_log_debug("Stream properly set up, we're ready to roll!");
+
u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
pollfd->fd = u->stream_fd;
pollfd->events = pollfd->revents = 0;
+ u->read_index = u->write_index = 0;
+ u->started_at = 0;
+
+ if (u->source)
+ u->read_smoother = pa_smoother_new(
+ PA_USEC_PER_SEC,
+ PA_USEC_PER_SEC*2,
+ TRUE,
+ TRUE,
+ 10,
+ pa_rtclock_usec(),
+ TRUE);
+
return 0;
}
@@ -734,9 +802,15 @@ static int stop_stream_fd(struct userdata *u) {
pa_close(u->stream_fd);
u->stream_fd = -1;
+ if (u->read_smoother) {
+ pa_smoother_free(u->read_smoother);
+ u->read_smoother = NULL;
+ }
+
return r;
}
+/* Run from IO thread */
static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SINK(o)->userdata;
pa_bool_t failed = FALSE;
@@ -744,7 +818,6 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
pa_assert(u->sink == PA_SINK(o));
- pa_log_debug("got message: %d", code);
switch (code) {
case PA_SINK_MESSAGE_SET_STATE:
@@ -772,8 +845,6 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
if (!u->source || u->source->state == PA_SOURCE_SUSPENDED)
if (start_stream_fd(u) < 0)
failed = TRUE;
-
- u->started_at = pa_rtclock_usec();
break;
case PA_SINK_UNLINKED:
@@ -784,7 +855,24 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
break;
case PA_SINK_MESSAGE_GET_LATENCY: {
- *((pa_usec_t*) data) = 0;
+
+ if (u->read_smoother) {
+ pa_usec_t wi, ri;
+
+ ri = pa_smoother_get(u->read_smoother, pa_rtclock_usec());
+ wi = pa_bytes_to_usec(u->write_index + u->block_size, &u->sample_spec);
+
+ *((pa_usec_t*) data) = wi > ri ? wi - ri : 0;
+ } else {
+ pa_usec_t ri, wi;
+
+ ri = pa_rtclock_usec() - u->started_at;
+ wi = pa_bytes_to_usec(u->write_index, &u->sample_spec);
+
+ *((pa_usec_t*) data) = wi > ri ? wi - ri : 0;
+ }
+
+ *((pa_usec_t*) data) += u->sink->fixed_latency;
return 0;
}
}
@@ -794,6 +882,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
return (r < 0 || !failed) ? r : -1;
}
+/* Run from IO thread */
static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SOURCE(o)->userdata;
pa_bool_t failed = FALSE;
@@ -801,7 +890,6 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
pa_assert(u->source == PA_SOURCE(o));
- pa_log_debug("got message: %d", code);
switch (code) {
case PA_SOURCE_MESSAGE_SET_STATE:
@@ -815,7 +903,8 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
if (!u->sink || u->sink->state == PA_SINK_SUSPENDED)
stop_stream_fd(u);
- pa_smoother_pause(u->read_smoother, pa_rtclock_usec());
+ if (u->read_smoother)
+ pa_smoother_pause(u->read_smoother, pa_rtclock_usec());
break;
case PA_SOURCE_IDLE:
@@ -828,7 +917,8 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
if (start_stream_fd(u) < 0)
failed = TRUE;
- pa_smoother_resume(u->read_smoother, pa_rtclock_usec());
+ /* We don't resume the smoother here. Instead we
+ * wait until the first packet arrives */
break;
case PA_SOURCE_UNLINKED:
@@ -839,7 +929,12 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
break;
case PA_SOURCE_MESSAGE_GET_LATENCY: {
- *((pa_usec_t*) data) = 0;
+ pa_usec_t wi, ri;
+
+ wi = pa_smoother_get(u->read_smoother, pa_rtclock_usec());
+ ri = pa_bytes_to_usec(u->read_index, &u->sample_spec);
+
+ *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->fixed_latency;
return 0;
}
@@ -850,54 +945,71 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
return (r < 0 || !failed) ? r : -1;
}
+/* Run from IO thread */
static int hsp_process_render(struct userdata *u) {
int ret = 0;
- pa_memchunk memchunk;
pa_assert(u);
pa_assert(u->profile == PROFILE_HSP);
pa_assert(u->sink);
- pa_sink_render_full(u->sink, u->block_size, &memchunk);
+ /* First, render some data */
+ if (!u->write_memchunk.memblock)
+ pa_sink_render_full(u->sink, u->block_size, &u->write_memchunk);
+
+ pa_assert(u->write_memchunk.length == u->block_size);
for (;;) {
ssize_t l;
const void *p;
- p = (const uint8_t*) pa_memblock_acquire(memchunk.memblock) + memchunk.index;
- l = pa_write(u->stream_fd, p, memchunk.length, &u->stream_write_type);
- pa_memblock_release(memchunk.memblock);
+ /* Now write that data to the socket. The socket is of type
+ * SEQPACKET, and we generated the data of the MTU size, so this
+ * should just work. */
- pa_log_debug("Memblock written to socket: %lli bytes", (long long) l);
+ p = (const uint8_t*) pa_memblock_acquire(u->write_memchunk.memblock) + u->write_memchunk.index;
+ l = pa_write(u->stream_fd, p, u->write_memchunk.length, &u->stream_write_type);
+ pa_memblock_release(u->write_memchunk.memblock);
pa_assert(l != 0);
if (l < 0) {
+
if (errno == EINTR)
+ /* Retry right away if we got interrupted */
continue;
- else {
- pa_log_error("Failed to write data to SCO socket: %s", pa_cstrerror(errno));
- ret = -1;
+
+ else if (errno == EAGAIN)
+ /* Hmm, apparently the socket was not writable, give up for now */
break;
- }
- } else {
- pa_assert((size_t) l <= memchunk.length);
- memchunk.index += (size_t) l;
- memchunk.length -= (size_t) l;
+ pa_log_error("Failed to write data to SCO socket: %s", pa_cstrerror(errno));
+ ret = -1;
+ break;
+ }
- u->write_index += (uint64_t) l;
+ pa_assert((size_t) l <= u->write_memchunk.length);
- if (memchunk.length <= 0)
- break;
+ if ((size_t) l != u->write_memchunk.length) {
+ pa_log_error("Wrote memory block to socket only partially! %llu written, wanted to write %llu.",
+ (unsigned long long) l,
+ (unsigned long long) u->write_memchunk.length);
+ ret = -1;
+ break;
}
- }
- pa_memblock_unref(memchunk.memblock);
+ u->write_index += (uint64_t) u->write_memchunk.length;
+ pa_memblock_unref(u->write_memchunk.memblock);
+ pa_memchunk_reset(&u->write_memchunk);
+
+ ret = 1;
+ break;
+ }
return ret;
}
+/* Run from IO thread */
static int hsp_process_push(struct userdata *u) {
int ret = 0;
pa_memchunk memchunk;
@@ -905,6 +1017,7 @@ static int hsp_process_push(struct userdata *u) {
pa_assert(u);
pa_assert(u->profile == PROFILE_HSP);
pa_assert(u->source);
+ pa_assert(u->read_smoother);
memchunk.memblock = pa_memblock_new(u->core->mempool, u->block_size);
memchunk.index = memchunk.length = 0;
@@ -912,26 +1025,69 @@ static int hsp_process_push(struct userdata *u) {
for (;;) {
ssize_t l;
void *p;
+ struct msghdr m;
+ struct cmsghdr *cm;
+ uint8_t aux[1024];
+ struct iovec iov;
+ pa_bool_t found_tstamp = FALSE;
+ pa_usec_t tstamp;
+
+ memset(&m, 0, sizeof(m));
+ memset(&aux, 0, sizeof(aux));
+ memset(&iov, 0, sizeof(iov));
+
+ m.msg_iov = &iov;
+ m.msg_iovlen = 1;
+ m.msg_control = aux;
+ m.msg_controllen = sizeof(aux);
p = pa_memblock_acquire(memchunk.memblock);
- l = pa_read(u->stream_fd, p, pa_memblock_get_length(memchunk.memblock), &u->stream_read_type);
+ iov.iov_base = p;
+ iov.iov_len = pa_memblock_get_length(memchunk.memblock);
+ l = recvmsg(u->stream_fd, &m, 0);
pa_memblock_release(memchunk.memblock);
if (l <= 0) {
+
if (l < 0 && errno == EINTR)
+ /* Retry right away if we got interrupted */
continue;
- else {
- pa_log_error("Failed to read data from SCO socket: %s", l < 0 ? pa_cstrerror(errno) : "EOF");
- ret = -1;
+
+ else if (l < 0 && errno == EAGAIN)
+ /* Hmm, apparently the socket was not readable, give up for now. */
break;
- }
- } else {
- memchunk.length = (size_t) l;
- u->read_index += (uint64_t) l;
- pa_source_post(u->source, &memchunk);
+ pa_log_error("Failed to read data from SCO socket: %s", l < 0 ? pa_cstrerror(errno) : "EOF");
+ ret = -1;
break;
}
+
+ pa_assert((size_t) l <= pa_memblock_get_length(memchunk.memblock));
+
+ memchunk.length = (size_t) l;
+ u->read_index += (uint64_t) l;
+
+ for (cm = CMSG_FIRSTHDR(&m); cm; cm = CMSG_NXTHDR(&m, cm))
+ if (cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SO_TIMESTAMP) {
+ struct timeval *tv = (struct timeval*) CMSG_DATA(cm);
+ pa_rtclock_from_wallclock(tv);
+ tstamp = pa_timeval_load(tv);
+ found_tstamp = TRUE;
+ break;
+ }
+
+ if (!found_tstamp) {
+ pa_log_warn("Couldn't find SO_TIMESTAMP data in auxiliary recvmsg() data!");
+ tstamp = pa_rtclock_usec();
+ }
+
+ pa_smoother_put(u->read_smoother, tstamp, pa_bytes_to_usec(u->read_index, &u->sample_spec));
+ pa_smoother_resume(u->read_smoother, tstamp, TRUE);
+
+ pa_source_post(u->source, &memchunk);
+
+ ret = 1;
+ break;
}
pa_memblock_unref(memchunk.memblock);
@@ -939,131 +1095,156 @@ static int hsp_process_push(struct userdata *u) {
return ret;
}
+/* Run from IO thread */
+static void a2dp_prepare_buffer(struct userdata *u) {
+ pa_assert(u);
+
+ if (u->a2dp.buffer_size >= u->link_mtu)
+ return;
+
+ u->a2dp.buffer_size = 2 * u->link_mtu;
+ pa_xfree(u->a2dp.buffer);
+ u->a2dp.buffer = pa_xmalloc(u->a2dp.buffer_size);
+}
+
+/* Run from IO thread */
static int a2dp_process_render(struct userdata *u) {
- size_t frame_size;
struct a2dp_info *a2dp;
struct rtp_header *header;
struct rtp_payload *payload;
- size_t left;
+ size_t nbytes;
void *d;
const void *p;
+ size_t to_write, to_encode;
unsigned frame_count;
- int written;
- uint64_t writing_at;
+ int ret = 0;
pa_assert(u);
pa_assert(u->profile == PROFILE_A2DP);
pa_assert(u->sink);
- a2dp = &u->a2dp;
+ /* First, render some data */
+ if (!u->write_memchunk.memblock)
+ pa_sink_render_full(u->sink, u->block_size, &u->write_memchunk);
- if (a2dp->buffer_size < u->link_mtu) {
- a2dp->buffer_size = 2*u->link_mtu;
- pa_xfree(a2dp->buffer);
- a2dp->buffer = pa_xmalloc(a2dp->buffer_size);
- }
+ pa_assert(u->write_memchunk.length == u->block_size);
+
+ a2dp_prepare_buffer(u);
- header = (struct rtp_header*) a2dp->buffer;
+ a2dp = &u->a2dp;
+ header = a2dp->buffer;
payload = (struct rtp_payload*) ((uint8_t*) a2dp->buffer + sizeof(*header));
- d = (uint8_t*) a2dp->buffer + sizeof(*header) + sizeof(*payload);
- left = a2dp->buffer_size - sizeof(*header) - sizeof(*payload);
- frame_size = sbc_get_frame_length(&a2dp->sbc);
frame_count = 0;
- writing_at = u->write_index;
+ /* Try to create a packet of the full MTU */
- do {
- int encoded;
+ p = (const uint8_t*) pa_memblock_acquire(u->write_memchunk.memblock) + u->write_memchunk.index;
+ to_encode = u->write_memchunk.length;
- if (!u->write_memchunk.memblock)
- pa_sink_render_full(u->sink, u->block_size, &u->write_memchunk);
+ d = (uint8_t*) a2dp->buffer + sizeof(*header) + sizeof(*payload);
+ to_write = a2dp->buffer_size - sizeof(*header) - sizeof(*payload);
+
+ while (PA_LIKELY(to_encode > 0 && to_write > 0)) {
+ size_t written;
+ ssize_t encoded;
- p = (const uint8_t*) pa_memblock_acquire(u->write_memchunk.memblock) + u->write_memchunk.index;
encoded = sbc_encode(&a2dp->sbc,
- (void*) p, u->write_memchunk.length,
- d, left,
+ p, to_encode,
+ d, to_write,
&written);
- PA_ONCE_BEGIN {
- pa_log_debug("Using SBC encoder implementation: %s", pa_strnull(sbc_get_implementation_info(&a2dp->sbc)));
- } PA_ONCE_END;
-
- pa_memblock_release(u->write_memchunk.memblock);
-
- if (encoded <= 0) {
- pa_log_error("SBC encoding error (%d)", encoded);
+ if (PA_UNLIKELY(encoded <= 0)) {
+ pa_log_error("SBC encoding error (%li)", (long) encoded);
+ pa_memblock_release(u->write_memchunk.memblock);
return -1;
}
- pa_assert(written >= 0);
-
- pa_assert((size_t) encoded <= u->write_memchunk.length);
- pa_assert((size_t) written <= left);
+/* pa_log_debug("SBC: encoded: %lu; written: %lu", (unsigned long) encoded, (unsigned long) written); */
+/* pa_log_debug("SBC: codesize: %lu; frame_length: %lu", (unsigned long) a2dp->codesize, (unsigned long) a2dp->frame_length); */
-/* pa_log_debug("SBC: encoded: %d; written: %d", encoded, written); */
+ pa_assert_fp((size_t) encoded <= to_encode);
+ pa_assert_fp((size_t) encoded == a2dp->codesize);
- u->write_memchunk.index += encoded;
- u->write_memchunk.length -= encoded;
-
- if (u->write_memchunk.length <= 0) {
- pa_memblock_unref(u->write_memchunk.memblock);
- pa_memchunk_reset(&u->write_memchunk);
- }
+ pa_assert_fp((size_t) written <= to_write);
+ pa_assert_fp((size_t) written == a2dp->frame_length);
- u->write_index += encoded;
+ p = (const uint8_t*) p + encoded;
+ to_encode -= encoded;
d = (uint8_t*) d + written;
- left -= written;
+ to_write -= written;
frame_count++;
+ }
+
+ pa_memblock_release(u->write_memchunk.memblock);
- } while ((uint8_t*) d - (uint8_t*) a2dp->buffer + written < (ptrdiff_t) u->link_mtu);
+ pa_assert(to_encode == 0);
+
+ PA_ONCE_BEGIN {
+ pa_log_debug("Using SBC encoder implementation: %s", pa_strnull(sbc_get_implementation_info(&a2dp->sbc)));
+ } PA_ONCE_END;
/* write it to the fifo */
memset(a2dp->buffer, 0, sizeof(*header) + sizeof(*payload));
- payload->frame_count = frame_count;
header->v = 2;
header->pt = 1;
header->sequence_number = htons(a2dp->seq_num++);
- header->timestamp = htonl(writing_at / frame_size);
+ header->timestamp = htonl(u->write_index / pa_frame_size(&u->sample_spec));
header->ssrc = htonl(1);
+ payload->frame_count = frame_count;
- p = a2dp->buffer;
- left = (uint8_t*) d - (uint8_t*) a2dp->buffer;
+ nbytes = (uint8_t*) d - (uint8_t*) a2dp->buffer;
for (;;) {
ssize_t l;
- l = pa_write(u->stream_fd, p, left, &u->stream_write_type);
-/* pa_log_debug("write: requested %lu bytes; written %li bytes; mtu=%li", (unsigned long) left, (long) l, (unsigned long) u->link_mtu); */
+ l = pa_write(u->stream_fd, a2dp->buffer, nbytes, &u->stream_write_type);
pa_assert(l != 0);
if (l < 0) {
+
if (errno == EINTR)
+ /* Retry right away if we got interrupted */
continue;
- else {
- pa_log_error("Failed to write data to socket: %s", pa_cstrerror(errno));
- return -1;
- }
- } else {
- pa_assert((size_t) l <= left);
- d = (uint8_t*) d + l;
- left -= l;
-
- if (left <= 0)
+ else if (errno == EAGAIN)
+ /* Hmm, apparently the socket was not writable, give up for now */
break;
+
+ pa_log_error("Failed to write data to socket: %s", pa_cstrerror(errno));
+ ret = -1;
+ break;
}
+
+ pa_assert((size_t) l <= nbytes);
+
+ if ((size_t) l != nbytes) {
+ pa_log_warn("Wrote memory block to socket only partially! %llu written, wanted to write %llu.",
+ (unsigned long long) l,
+ (unsigned long long) nbytes);
+ ret = -1;
+ break;
+ }
+
+ u->write_index += (uint64_t) u->write_memchunk.length;
+ pa_memblock_unref(u->write_memchunk.memblock);
+ pa_memchunk_reset(&u->write_memchunk);
+
+ ret = 1;
+
+ break;
}
- return 0;
+ return ret;
}
static void thread_func(void *userdata) {
struct userdata *u = userdata;
- pa_bool_t do_write = FALSE, writable = FALSE;
+ unsigned do_write = 0;
+ pa_bool_t writable = FALSE;
pa_assert(u);
@@ -1078,8 +1259,6 @@ static void thread_func(void *userdata) {
pa_thread_mq_install(&u->thread_mq);
pa_rtpoll_install(u->rtpoll);
- pa_smoother_set_time_offset(u->read_smoother, pa_rtclock_usec());
-
for (;;) {
struct pollfd *pollfd;
int ret;
@@ -1089,13 +1268,20 @@ static void thread_func(void *userdata) {
if (u->source && PA_SOURCE_IS_LINKED(u->source->thread_info.state)) {
+ /* We should send two blocks to the device before we expect
+ * a response. */
+
+ if (u->write_index == 0 && u->read_index <= 0)
+ do_write = 2;
+
if (pollfd && (pollfd->revents & POLLIN)) {
+ int n_read;
- if (hsp_process_push(u) < 0)
+ if ((n_read = hsp_process_push(u)) < 0)
goto fail;
/* We just read something, so we are supposed to write something, too */
- do_write = TRUE;
+ do_write += n_read;
}
}
@@ -1108,7 +1294,7 @@ static void thread_func(void *userdata) {
if (pollfd->revents & POLLOUT)
writable = TRUE;
- if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && !do_write && writable) {
+ 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;
@@ -1116,34 +1302,37 @@ static void thread_func(void *userdata) {
* 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->sink->sample_spec);
+ should_have_written = pa_usec_to_bytes(time_passed, &u->sample_spec);
- do_write = u->write_index <= should_have_written ;
-/* pa_log_debug("Time has come: %s", pa_yes_no(do_write)); */
+ do_write = u->write_index <= should_have_written;
}
- if (writable && do_write) {
+ if (writable && do_write > 0) {
+ int n_written;
+
+ if (u->write_index <= 0)
+ u->started_at = pa_rtclock_usec();
if (u->profile == PROFILE_A2DP) {
- if (a2dp_process_render(u) < 0)
+ if ((n_written = a2dp_process_render(u)) < 0)
goto fail;
} else {
- if (hsp_process_render(u) < 0)
+ if ((n_written = hsp_process_render(u)) < 0)
goto fail;
}
- do_write = FALSE;
+ do_write -= n_written;
writable = FALSE;
}
- if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && !do_write) {
+ if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && do_write <= 0) {
pa_usec_t time_passed, next_write_at, sleep_for;
/* Hmm, there is no input stream we could synchronize
* to. So let's estimate when we need to wake up the latest */
time_passed = pa_rtclock_usec() - u->started_at;
- next_write_at = pa_bytes_to_usec(u->write_index, &u->sink->sample_spec);
+ next_write_at = pa_bytes_to_usec(u->write_index, &u->sample_spec);
sleep_for = time_passed < next_write_at ? next_write_at - time_passed : 0;
/* pa_log("Sleeping for %lu; time passed %lu, next write at %lu", (unsigned long) sleep_for, (unsigned long) time_passed, (unsigned long)next_write_at); */
@@ -1159,8 +1348,8 @@ static void thread_func(void *userdata) {
/* Hmm, nothing to do. Let's sleep */
if (pollfd)
- pollfd->events = (short) (((u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state) && !writable) ? POLLOUT : 0) |
- (u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state) ? POLLIN : 0));
+ pollfd->events = (short) (((u->sink && PA_SINK_IS_LINKED(u->sink->thread_info.state) && !writable) ? POLLOUT : 0) |
+ (u->source && PA_SOURCE_IS_LINKED(u->source->thread_info.state) ? POLLIN : 0));
if ((ret = pa_rtpoll_run(u->rtpoll, TRUE)) < 0)
goto fail;
@@ -1171,7 +1360,11 @@ static void thread_func(void *userdata) {
pollfd = u->rtpoll_item ? pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL) : NULL;
if (pollfd && (pollfd->revents & ~(POLLOUT|POLLIN))) {
- pa_log_error("FD error.");
+ pa_log_info("FD error: %s%s%s%s",
+ pollfd->revents & POLLERR ? "POLLERR " :"",
+ pollfd->revents & POLLHUP ? "POLLHUP " :"",
+ pollfd->revents & POLLPRI ? "POLLPRI " :"",
+ pollfd->revents & POLLNVAL ? "POLLNVAL " :"");
goto fail;
}
}
@@ -1186,146 +1379,105 @@ finish:
pa_log_debug("IO thread shutting down");
}
-/* static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *msg, void *userdata) { */
-/* DBusMessageIter arg_i; */
-/* DBusError err; */
-/* const char *value; */
-/* struct userdata *u; */
-
-/* pa_assert(bus); */
-/* pa_assert(msg); */
-/* pa_assert(userdata); */
-/* u = userdata; */
-
-/* pa_log_debug("dbus: interface=%s, path=%s, member=%s\n", */
-/* dbus_message_get_interface(msg), */
-/* dbus_message_get_path(msg), */
-/* dbus_message_get_member(msg)); */
-
-/* dbus_error_init(&err); */
-
-/* if (!dbus_message_has_path(msg, u->path)) */
-/* goto done; */
-
-/* if (dbus_message_is_signal(msg, "org.bluez.Headset", "PropertyChanged") || */
-/* dbus_message_is_signal(msg, "org.bluez.AudioSink", "PropertyChanged")) { */
-
-/* struct device *d; */
-/* const char *profile; */
-/* DBusMessageIter variant_i; */
-/* dbus_uint16_t gain; */
-
-/* if (!dbus_message_iter_init(msg, &arg_i)) { */
-/* pa_log("dbus: message has no parameters"); */
-/* goto done; */
-/* } */
+/* Run from main thread */
+static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *userdata) {
+ DBusError err;
+ struct userdata *u;
-/* if (dbus_message_iter_get_arg_type(&arg_i) != DBUS_TYPE_STRING) { */
-/* pa_log("Property name not a string."); */
-/* goto done; */
-/* } */
+ pa_assert(bus);
+ pa_assert(m);
+ pa_assert_se(u = userdata);
-/* dbus_message_iter_get_basic(&arg_i, &value); */
+ dbus_error_init(&err);
-/* if (!dbus_message_iter_next(&arg_i)) { */
-/* pa_log("Property value missing"); */
-/* goto done; */
-/* } */
+ pa_log_debug("dbus: interface=%s, path=%s, member=%s\n",
+ dbus_message_get_interface(m),
+ dbus_message_get_path(m),
+ dbus_message_get_member(m));
-/* if (dbus_message_iter_get_arg_type(&arg_i) != DBUS_TYPE_VARIANT) { */
-/* pa_log("Property value not a variant."); */
-/* goto done; */
-/* } */
+ if (!dbus_message_has_path(m, u->path))
+ goto fail;
-/* dbus_message_iter_recurse(&arg_i, &variant_i); */
+ if (dbus_message_is_signal(m, "org.bluez.Headset", "SpeakerGainChanged") ||
+ dbus_message_is_signal(m, "org.bluez.Headset", "MicrophoneGainChanged")) {
-/* if (dbus_message_iter_get_arg_type(&variant_i) != DBUS_TYPE_UINT16) { */
-/* dbus_message_iter_get_basic(&variant_i, &gain); */
+ dbus_uint16_t gain;
+ pa_cvolume v;
-/* if (pa_streq(value, "SpeakerGain")) { */
-/* pa_log("spk gain: %d", gain); */
-/* pa_cvolume_set(&u->sink->virtual_volume, 1, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); */
-/* pa_subscription_post(u->sink->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, u->sink->index); */
-/* } else { */
-/* pa_log("mic gain: %d", gain); */
-/* if (!u->source) */
-/* goto done; */
+ if (!dbus_message_get_args(m, &err, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID) || gain > 15) {
+ pa_log("Failed to parse org.bluez.Headset.{Speaker|Microphone}GainChanged: %s", err.message);
+ goto fail;
+ }
-/* pa_cvolume_set(&u->source->virtual_volume, 1, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); */
-/* pa_subscription_post(u->source->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, u->source->index); */
-/* } */
-/* } */
-/* } */
+ if (u->profile == PROFILE_HSP) {
+ if (u->sink && dbus_message_is_signal(m, "org.bluez.Headset", "SpeakerGainChanged")) {
-/* done: */
-/* dbus_error_free(&err); */
-/* return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; */
-/* } */
+ pa_cvolume_set(&v, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
+ pa_sink_volume_changed(u->sink, &v);
-/* static int sink_get_volume_cb(pa_sink *s) { */
-/* struct userdata *u = s->userdata; */
-/* pa_assert(u); */
+ } else if (u->source && dbus_message_is_signal(m, "org.bluez.Headset", "MicrophoneGainChanged")) {
-/* /\* refresh? *\/ */
+ pa_cvolume_set(&v, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
+ pa_source_volume_changed(u->source, &v);
+ }
+ }
+ }
-/* return 0; */
-/* } */
+fail:
+ dbus_error_free(&err);
-/* static int source_get_volume_cb(pa_source *s) { */
-/* struct userdata *u = s->userdata; */
-/* pa_assert(u); */
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
-/* /\* refresh? *\/ */
+/* Run from main thread */
+static void sink_set_volume_cb(pa_sink *s) {
+ struct userdata *u = s->userdata;
+ DBusMessage *m;
+ dbus_uint16_t gain;
-/* return 0; */
-/* } */
+ pa_assert(u);
-/* static int sink_set_volume_cb(pa_sink *s) { */
-/* DBusError e; */
-/* DBusMessage *m, *r; */
-/* DBusMessageIter it, itvar; */
-/* dbus_uint16_t vol; */
-/* const char *spkgain = "SpeakerGain"; */
-/* struct userdata *u = s->userdata; */
-/* pa_assert(u); */
+ if (u->profile != PROFILE_HSP)
+ return;
-/* dbus_error_init(&e); */
+ gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM;
-/* vol = ((float) pa_cvolume_max(&s->virtual_volume) / PA_VOLUME_NORM) * 15; */
-/* pa_log_debug("set headset volume: %d", vol); */
+ if (gain > 15)
+ gain = 15;
-/* pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetProperty")); */
-/* dbus_message_iter_init_append(m, &it); */
-/* dbus_message_iter_append_basic(&it, DBUS_TYPE_STRING, &spkgain); */
-/* dbus_message_iter_open_container(&it, DBUS_TYPE_VARIANT, DBUS_TYPE_UINT16_AS_STRING, &itvar); */
-/* dbus_message_iter_append_basic(&itvar, DBUS_TYPE_UINT16, &vol); */
-/* dbus_message_iter_close_container(&it, &itvar); */
+ pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
-/* r = dbus_connection_send_with_reply_and_block(pa_dbus_connection_get(u->conn), m, -1, &e); */
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetSpeakerGain"));
+ pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID));
+ pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->connection), m, NULL));
+ dbus_message_unref(m);
+}
-/* finish: */
-/* if (m) */
-/* dbus_message_unref(m); */
-/* if (r) */
-/* dbus_message_unref(r); */
+/* Run from main thread */
+static void source_set_volume_cb(pa_source *s) {
+ struct userdata *u = s->userdata;
+ DBusMessage *m;
+ dbus_uint16_t gain;
-/* dbus_error_free(&e); */
+ pa_assert(u);
-/* return 0; */
-/* } */
+ if (u->profile != PROFILE_HSP)
+ return;
-/* static int source_set_volume_cb(pa_source *s) { */
-/* dbus_uint16_t vol; */
-/* struct userdata *u = s->userdata; */
-/* pa_assert(u); */
+ gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM;
-/* vol = ((float)pa_cvolume_max(&s->virtual_volume) / PA_VOLUME_NORM) * 15; */
+ if (gain > 15)
+ gain = 15;
-/* pa_log_debug("set headset mic volume: %d (not implemented yet)", vol); */
+ pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
-/* return 0; */
-/* } */
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetMicrophoneGain"));
+ pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID));
+ pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->connection), m, NULL));
+ dbus_message_unref(m);
+}
+/* Run from main thread */
static char *get_name(const char *type, pa_modargs *ma, const char *device_id, pa_bool_t *namereg_fail) {
char *t;
const char *n;
@@ -1354,7 +1506,7 @@ static char *get_name(const char *type, pa_modargs *ma, const char *device_id, p
return pa_sprintf_malloc("bluez_%s.%s", type, n);
}
-#define USE_SCO_OVER_PCM(u) (u->profile == PROFILE_HSP && (u->hsp.sco_sink && u->hsp.sco_source))
+#ifdef NOKIA
static void sco_over_pcm_state_update(struct userdata *u) {
pa_assert(u);
@@ -1370,11 +1522,14 @@ static void sco_over_pcm_state_update(struct userdata *u) {
if ((init_bt(u) < 0) || (init_profile(u) < 0))
pa_log("Can't resume SCO over PCM");
+ start_stream_fd(u);
} else {
if (u->service_fd < 0)
return;
+ stop_stream_fd(u);
+
pa_log_debug("Closing SCO over PCM");
pa_close(u->service_fd);
u->service_fd = -1;
@@ -1407,8 +1562,12 @@ static pa_hook_result_t source_state_changed_cb(pa_core *c, pa_source *s, struct
return PA_HOOK_OK;
}
+#endif
+
+/* Run from main thread */
static int add_sink(struct userdata *u) {
+#ifdef NOKIA
if (USE_SCO_OVER_PCM(u)) {
pa_proplist *p;
@@ -1421,7 +1580,10 @@ static int add_sink(struct userdata *u) {
if (!u->hsp.sink_state_changed_slot)
u->hsp.sink_state_changed_slot = pa_hook_connect(&u->core->hooks[PA_CORE_HOOK_SINK_STATE_CHANGED], PA_HOOK_NORMAL, (pa_hook_cb_t) sink_state_changed_cb, u);
- } else {
+ } else
+#endif
+
+ {
pa_sink_new_data data;
pa_bool_t b;
@@ -1431,10 +1593,10 @@ static int add_sink(struct userdata *u) {
pa_sink_new_data_set_sample_spec(&data, &u->sample_spec);
pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP ? "a2dp" : "sco");
data.card = u->card;
- data.name = get_name("sink", u->modargs, u->device->address, &b);
+ data.name = get_name("sink", u->modargs, u->address, &b);
data.namereg_fail = b;
- u->sink = pa_sink_new(u->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
+ 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);
if (!u->sink) {
@@ -1444,28 +1606,36 @@ static int add_sink(struct userdata *u) {
u->sink->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);
}
-/* u->sink->get_volume = sink_get_volume_cb; */
-/* u->sink->set_volume = sink_set_volume_cb; */
+ if (u->profile == PROFILE_HSP) {
+ u->sink->set_volume = sink_set_volume_cb;
+ u->sink->n_volume_steps = 16;
+ }
return 0;
}
+/* Run from main thread */
static int add_source(struct userdata *u) {
- pa_proplist *p;
+#ifdef NOKIA
if (USE_SCO_OVER_PCM(u)) {
u->source = u->hsp.sco_source;
- p = pa_proplist_new();
- pa_proplist_sets(p, "bluetooth.protocol", "sco");
- pa_proplist_update(u->source->proplist, PA_UPDATE_MERGE, p);
- pa_proplist_free(p);
+ pa_proplist_sets(u->source->proplist, "bluetooth.protocol", "hsp");
if (!u->hsp.source_state_changed_slot)
u->hsp.source_state_changed_slot = pa_hook_connect(&u->core->hooks[PA_CORE_HOOK_SOURCE_STATE_CHANGED], PA_HOOK_NORMAL, (pa_hook_cb_t) source_state_changed_cb, u);
- } else {
+ } else
+#endif
+
+ {
pa_source_new_data data;
pa_bool_t b;
@@ -1473,12 +1643,12 @@ static int add_source(struct userdata *u) {
data.driver = __FILE__;
data.module = u->module;
pa_source_new_data_set_sample_spec(&data, &u->sample_spec);
- pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP ? "a2dp" : "sco");
+ pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP ? "a2dp" : "hsp");
data.card = u->card;
- data.name = get_name("source", u->modargs, u->device->address, &b);
+ data.name = get_name("source", u->modargs, u->address, &b);
data.namereg_fail = b;
- u->source = pa_source_new(u->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY);
+ 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);
if (!u->source) {
@@ -1488,39 +1658,51 @@ static int add_source(struct userdata *u) {
u->source->userdata = u;
u->source->parent.process_msg = source_process_msg;
- }
-/* u->source->get_volume = source_get_volume_cb; */
-/* u->source->set_volume = source_set_volume_cb; */
+ 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);
+ }
- p = pa_proplist_new();
- pa_proplist_sets(p, "bluetooth.nrec", pa_yes_no(u->hsp.pcm_capabilities.flags & BT_PCM_FLAG_NREC));
- pa_proplist_update(u->source->proplist, PA_UPDATE_MERGE, p);
- pa_proplist_free(p);
+ if (u->profile == PROFILE_HSP) {
+ pa_proplist_sets(u->source->proplist, "bluetooth.nrec", (u->hsp.pcm_capabilities.flags & BT_PCM_FLAG_NREC) ? "1" : "0");
+ u->source->set_volume = source_set_volume_cb;
+ u->source->n_volume_steps = 16;
+ }
return 0;
}
+/* Run from main thread */
static void shutdown_bt(struct userdata *u) {
pa_assert(u);
if (u->stream_fd >= 0) {
pa_close(u->stream_fd);
u->stream_fd = -1;
+
+ u->stream_write_type = 0;
}
if (u->service_fd >= 0) {
pa_close(u->service_fd);
u->service_fd = -1;
+ u->service_write_type = u->service_write_type = 0;
+ }
+
+ if (u->write_memchunk.memblock) {
+ pa_memblock_unref(u->write_memchunk.memblock);
+ pa_memchunk_reset(&u->write_memchunk);
}
}
+/* Run from main thread */
static int init_bt(struct userdata *u) {
pa_assert(u);
shutdown_bt(u);
- u->stream_write_type = u->stream_read_type = 0;
+ u->stream_write_type = 0;
u->service_write_type = u->service_write_type = 0;
if ((u->service_fd = bt_audio_service_open()) < 0) {
@@ -1533,10 +1715,11 @@ static int init_bt(struct userdata *u) {
return 0;
}
+/* Run from main thread */
static int setup_bt(struct userdata *u) {
pa_assert(u);
- if (get_caps(u) < 0)
+ if (get_caps(u, 0) < 0)
return -1;
pa_log_debug("Got device capabilities");
@@ -1546,16 +1729,19 @@ static int setup_bt(struct userdata *u) {
pa_log_debug("Connection to the device configured");
+#ifdef NOKIA
if (USE_SCO_OVER_PCM(u)) {
pa_log_debug("Configured to use SCO over PCM");
return 0;
}
+#endif
pa_log_debug("Got the stream socket");
return 0;
}
+/* Run from main thread */
static int init_profile(struct userdata *u) {
int r = 0;
pa_assert(u);
@@ -1576,6 +1762,7 @@ static int init_profile(struct userdata *u) {
return r;
}
+/* Run from main thread */
static void stop_thread(struct userdata *u) {
pa_assert(u);
@@ -1616,22 +1803,34 @@ static void stop_thread(struct userdata *u) {
pa_rtpoll_free(u->rtpoll);
u->rtpoll = NULL;
}
+
+ if (u->read_smoother) {
+ pa_smoother_free(u->read_smoother);
+ u->read_smoother = NULL;
+ }
}
+/* Run from main thread */
static int start_thread(struct userdata *u) {
pa_assert(u);
pa_assert(!u->thread);
pa_assert(!u->rtpoll);
pa_assert(!u->rtpoll_item);
+ u->rtpoll = pa_rtpoll_new();
+ pa_thread_mq_init(&u->thread_mq, u->core->mainloop, u->rtpoll);
+
+#ifdef NOKIA
if (USE_SCO_OVER_PCM(u)) {
+ if (start_stream_fd(u) < 0)
+ return -1;
+
pa_sink_ref(u->sink);
pa_source_ref(u->source);
+ /* FIXME: monitor stream_fd error */
return 0;
}
-
- u->rtpoll = pa_rtpoll_new();
- pa_thread_mq_init(&u->thread_mq, u->core->mainloop, u->rtpoll);
+#endif
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log_error("Failed to create IO thread");
@@ -1643,21 +1842,29 @@ static int start_thread(struct userdata *u) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
pa_sink_put(u->sink);
+
+ if (u->sink->set_volume)
+ u->sink->set_volume(u->sink);
}
if (u->source) {
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll);
pa_source_put(u->source);
+
+ if (u->source->set_volume)
+ u->source->set_volume(u->source);
}
return 0;
}
+/* Run from main thread */
static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
struct userdata *u;
enum profile *d;
pa_queue *inputs = NULL, *outputs = NULL;
+ const pa_bluetooth_device *device;
pa_assert(c);
pa_assert(new_profile);
@@ -1665,26 +1872,39 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
d = PA_CARD_PROFILE_DATA(new_profile);
+ if (!(device = pa_bluetooth_discovery_get_by_path(u->discovery, u->path))) {
+ pa_log_error("Failed to get device object.");
+ return -1;
+ }
+
+ if (device->headset_state != PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_HSP) {
+ pa_log_warn("HSP is not connected, refused to switch profile");
+ return -1;
+ }
+ else if (device->audio_sink_state != PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_A2DP) {
+ pa_log_warn("A2DP is not connected, refused to switch profile");
+ return -1;
+ }
+
if (u->sink) {
inputs = pa_sink_move_all_start(u->sink);
+#ifdef NOKIA
if (!USE_SCO_OVER_PCM(u))
+#endif
pa_sink_unlink(u->sink);
}
if (u->source) {
outputs = pa_source_move_all_start(u->source);
+#ifdef NOKIA
if (!USE_SCO_OVER_PCM(u))
+#endif
pa_source_unlink(u->source);
}
stop_thread(u);
shutdown_bt(u);
- if (u->write_memchunk.memblock) {
- pa_memblock_unref(u->write_memchunk.memblock);
- pa_memchunk_reset(&u->write_memchunk);
- }
-
u->profile = *d;
u->sample_spec = u->requested_sample_spec;
@@ -1713,7 +1933,8 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
return 0;
}
-static int add_card(struct userdata *u, const char * default_profile) {
+/* Run from main thread */
+static int add_card(struct userdata *u, const char *default_profile, const pa_bluetooth_device *device) {
pa_card_new_data data;
pa_bool_t b;
pa_card_profile *p;
@@ -1725,24 +1946,28 @@ static int add_card(struct userdata *u, const char * default_profile) {
data.driver = __FILE__;
data.module = u->module;
- n = pa_bluetooth_cleanup_name(u->device->name);
+ n = pa_bluetooth_cleanup_name(device->name);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, n);
pa_xfree(n);
- pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device->address);
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, device->address);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_API, "bluez");
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, "sound");
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_BUS, "bluetooth");
- if ((ff = pa_bluetooth_get_form_factor(u->device->class)))
+ if ((ff = pa_bluetooth_get_form_factor(device->class)))
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_FORM_FACTOR, ff);
- pa_proplist_sets(data.proplist, "bluez.path", u->device->path);
- pa_proplist_setf(data.proplist, "bluez.class", "0x%06x", (unsigned) u->device->class);
- pa_proplist_sets(data.proplist, "bluez.name", u->device->name);
- data.name = get_name("card", u->modargs, u->device->address, &b);
+ pa_proplist_sets(data.proplist, "bluez.path", device->path);
+ pa_proplist_setf(data.proplist, "bluez.class", "0x%06x", (unsigned) device->class);
+ pa_proplist_sets(data.proplist, "bluez.name", device->name);
+ data.name = get_name("card", u->modargs, device->address, &b);
data.namereg_fail = b;
data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- if (u->device->audio_sink_info_valid > 0) {
+ /* we base hsp/a2dp availability on UUIDs.
+ Ideally, it would be based on "Connected" state, but
+ we can't afford to wait for this information when
+ we are loaded with profile="hsp", for instance */
+ if (pa_bluetooth_uuid_has(device->uuids, A2DP_SINK_UUID)) {
p = pa_card_profile_new("a2dp", _("High Fidelity Playback (A2DP)"), sizeof(enum profile));
p->priority = 10;
p->n_sinks = 1;
@@ -1756,7 +1981,8 @@ static int add_card(struct userdata *u, const char * default_profile) {
pa_hashmap_put(data.profiles, p->name, p);
}
- if (u->device->headset_info_valid > 0) {
+ if (pa_bluetooth_uuid_has(device->uuids, HSP_HS_UUID) ||
+ pa_bluetooth_uuid_has(device->uuids, HFP_HS_UUID)) {
p = pa_card_profile_new("hsp", _("Telephony Duplex (HSP/HFP)"), sizeof(enum profile));
p->priority = 20;
p->n_sinks = 1;
@@ -1801,46 +2027,57 @@ static int add_card(struct userdata *u, const char * default_profile) {
return 0;
}
-static int setup_dbus(struct userdata *u) {
- DBusError error;
-
- dbus_error_init(&error);
-
- u->connection = pa_dbus_bus_get(u->core, DBUS_BUS_SYSTEM, &error);
- if (dbus_error_is_set(&error) || (!u->connection)) {
- pa_log("Failed to get D-Bus connection: %s", error.message);
- dbus_error_free(&error);
- return -1;
- }
-
- return 0;
-}
+/* Run from main thread */
+static const pa_bluetooth_device* find_device(struct userdata *u, const char *address, const char *path) {
+ const pa_bluetooth_device *d = NULL;
-static int find_device(struct userdata *u, const char *address, const char *path) {
pa_assert(u);
if (!address && !path) {
pa_log_error("Failed to get device address/path from module arguments.");
- return -1;
+ return NULL;
}
if (path) {
- if (!(u->device = pa_bluetooth_get_device(pa_dbus_connection_get(u->connection), path))) {
+ if (!(d = pa_bluetooth_discovery_get_by_path(u->discovery, path))) {
pa_log_error("%s is not a valid BlueZ audio device.", path);
- return -1;
+ return NULL;
}
- if (address && !(pa_streq(u->device->address, address))) {
+ if (address && !(pa_streq(d->address, address))) {
pa_log_error("Passed path %s and address %s don't match.", path, address);
- return -1;
+ return NULL;
}
+
} else {
- if (!(u->device = pa_bluetooth_find_device(pa_dbus_connection_get(u->connection), address))) {
+ if (!(d = pa_bluetooth_discovery_get_by_address(u->discovery, address))) {
pa_log_error("%s is not known.", address);
- return -1;
+ return NULL;
}
}
+ if (d) {
+ u->address = pa_xstrdup(d->address);
+ u->path = pa_xstrdup(d->path);
+ }
+
+ return d;
+}
+
+/* Run from main thread */
+static int setup_dbus(struct userdata *u) {
+ DBusError err;
+
+ dbus_error_init(&err);
+
+ u->connection = pa_dbus_bus_get(u->core, DBUS_BUS_SYSTEM, &err);
+
+ if (dbus_error_is_set(&err) || !u->connection) {
+ pa_log("Failed to get D-Bus connection: %s", err.message);
+ dbus_error_free(&err);
+ return -1;
+ }
+
return 0;
}
@@ -1849,9 +2086,14 @@ int pa__init(pa_module* m) {
uint32_t channels;
struct userdata *u;
const char *address, *path;
+ DBusError err;
+ char *mike, *speaker;
+ const pa_bluetooth_device *device;
pa_assert(m);
+ dbus_error_init(&err);
+
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
pa_log_error("Failed to parse module arguments");
goto fail;
@@ -1862,10 +2104,10 @@ int pa__init(pa_module* m) {
u->core = m->core;
u->service_fd = -1;
u->stream_fd = -1;
- u->read_smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC*2, TRUE, 10);
u->sample_spec = m->core->default_sample_spec;
u->modargs = ma;
+#ifdef NOKIA
if (pa_modargs_get_value(ma, "sco_sink", NULL) &&
!(u->hsp.sco_sink = pa_namereg_get(m->core, pa_modargs_get_value(ma, "sco_sink", NULL), PA_NAMEREG_SINK))) {
pa_log("SCO sink not found");
@@ -1877,6 +2119,7 @@ int pa__init(pa_module* m) {
pa_log("SCO source not found");
goto fail;
}
+#endif
if (pa_modargs_get_value_u32(ma, "rate", &u->sample_spec.rate) < 0 ||
u->sample_spec.rate <= 0 || u->sample_spec.rate > PA_RATE_MAX) {
@@ -1893,65 +2136,54 @@ int pa__init(pa_module* m) {
u->sample_spec.channels = (uint8_t) channels;
u->requested_sample_spec = u->sample_spec;
- if (setup_dbus(u) < 0)
- goto fail;
-
address = pa_modargs_get_value(ma, "address", NULL);
path = pa_modargs_get_value(ma, "path", NULL);
- if (find_device(u, address, path) < 0)
+ if (setup_dbus(u) < 0)
goto fail;
- pa_assert(u->device);
+ if (!(u->discovery = pa_bluetooth_discovery_get(m->core)))
+ goto fail;
+
+ if (!(device = find_device(u, address, path)))
+ goto fail;
/* Add the card structure. This will also initialize the default profile */
- if (add_card(u, pa_modargs_get_value(ma, "profile", NULL)) < 0)
+ if (add_card(u, pa_modargs_get_value(ma, "profile", NULL), device) < 0)
goto fail;
/* Connect to the BT service and query capabilities */
if (init_bt(u) < 0)
goto fail;
+ if (!dbus_connection_add_filter(pa_dbus_connection_get(u->connection), filter_cb, u, NULL)) {
+ pa_log_error("Failed to add filter function");
+ goto fail;
+ }
+
+ speaker = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='SpeakerGainChanged',path='%s'", u->path);
+ mike = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='MicrophoneGainChanged',path='%s'", u->path);
+
+ if (pa_dbus_add_matches(
+ pa_dbus_connection_get(u->connection), &err,
+ speaker,
+ mike,
+ NULL) < 0) {
+
+ pa_xfree(speaker);
+ pa_xfree(mike);
+
+ pa_log("Failed to add D-Bus matches: %s", err.message);
+ goto fail;
+ }
+
+ pa_xfree(speaker);
+ pa_xfree(mike);
+
if (u->profile != PROFILE_OFF)
if (init_profile(u) < 0)
goto fail;
-/* if (u->path) { */
-/* DBusError err; */
-/* dbus_error_init(&err); */
-/* char *t; */
-
-
-/* if (!dbus_connection_add_filter(pa_dbus_connection_get(u->conn), filter_cb, u, NULL)) { */
-/* pa_log_error("Failed to add filter function"); */
-/* goto fail; */
-/* } */
-
-/* if (u->transport == BT_CAPABILITIES_TRANSPORT_SCO || */
-/* u->transport == BT_CAPABILITIES_TRANSPORT_ANY) { */
-/* t = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged',path='%s'", u->path); */
-/* dbus_bus_add_match(pa_dbus_connection_get(u->conn), t, &err); */
-/* pa_xfree(t); */
-
-/* if (dbus_error_is_set(&err)) { */
-/* pa_log_error("Unable to subscribe to org.bluez.Headset signals: %s: %s", err.name, err.message); */
-/* goto fail; */
-/* } */
-/* } */
-
-/* if (u->transport == BT_CAPABILITIES_TRANSPORT_A2DP || */
-/* u->transport == BT_CAPABILITIES_TRANSPORT_ANY) { */
-/* t = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged',path='%s'", u->path); */
-/* dbus_bus_add_match(pa_dbus_connection_get(u->conn), t, &err); */
-/* pa_xfree(t); */
-
-/* if (dbus_error_is_set(&err)) { */
-/* pa_log_error("Unable to subscribe to org.bluez.AudioSink signals: %s: %s", err.name, err.message); */
-/* goto fail; */
-/* } */
-/* } */
-/* } */
-
if (u->sink || u->source)
if (start_thread(u) < 0)
goto fail;
@@ -1959,7 +2191,11 @@ int pa__init(pa_module* m) {
return 0;
fail:
+
pa__done(m);
+
+ dbus_error_free(&err);
+
return -1;
}
@@ -1981,39 +2217,39 @@ void pa__done(pa_module *m) {
if (!(u = m->userdata))
return;
- if (u->sink && !USE_SCO_OVER_PCM(u))
+ if (u->sink
+#ifdef NOKIA
+ && !USE_SCO_OVER_PCM(u)
+#endif
+ )
pa_sink_unlink(u->sink);
- if (u->source && !USE_SCO_OVER_PCM(u))
+ if (u->source
+#ifdef NOKIA
+ && !USE_SCO_OVER_PCM(u)
+#endif
+ )
pa_source_unlink(u->source);
stop_thread(u);
if (u->connection) {
-/* DBusError error; */
-/* char *t; */
-
-/* if (u->transport == BT_CAPABILITIES_TRANSPORT_SCO || */
-/* u->transport == BT_CAPABILITIES_TRANSPORT_ANY) { */
-
-/* t = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged',path='%s'", u->path); */
-/* dbus_error_init(&error); */
-/* dbus_bus_remove_match(pa_dbus_connection_get(u->conn), t, &error); */
-/* dbus_error_free(&error); */
-/* pa_xfree(t); */
-/* } */
-
-/* if (u->transport == BT_CAPABILITIES_TRANSPORT_A2DP || */
-/* u->transport == BT_CAPABILITIES_TRANSPORT_ANY) { */
-
-/* t = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged',path='%s'", u->path); */
-/* dbus_error_init(&error); */
-/* dbus_bus_remove_match(pa_dbus_connection_get(u->conn), t, &error); */
-/* dbus_error_free(&error); */
-/* pa_xfree(t); */
-/* } */
-
-/* dbus_connection_remove_filter(pa_dbus_connection_get(u->conn), filter_cb, u); */
+
+ if (u->path) {
+ char *speaker, *mike;
+ speaker = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='SpeakerGainChanged',path='%s'", u->path);
+ mike = pa_sprintf_malloc("type='signal',sender='org.bluez',interface='org.bluez.Headset',member='MicrophoneGainChanged',path='%s'", u->path);
+
+ pa_dbus_remove_matches(pa_dbus_connection_get(u->connection),
+ speaker,
+ mike,
+ NULL);
+
+ pa_xfree(speaker);
+ pa_xfree(mike);
+ }
+
+ dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
pa_dbus_connection_unref(u->connection);
}
@@ -2025,12 +2261,6 @@ void pa__done(pa_module *m) {
shutdown_bt(u);
- if (u->device)
- pa_bluetooth_device_free(u->device);
-
- if (u->write_memchunk.memblock)
- pa_memblock_unref(u->write_memchunk.memblock);
-
if (u->a2dp.buffer)
pa_xfree(u->a2dp.buffer);
@@ -2039,5 +2269,11 @@ void pa__done(pa_module *m) {
if (u->modargs)
pa_modargs_free(u->modargs);
+ pa_xfree(u->address);
+ pa_xfree(u->path);
+
+ if (u->discovery)
+ pa_bluetooth_discovery_unref(u->discovery);
+
pa_xfree(u);
}
diff --git a/src/modules/bluetooth/module-bluetooth-discover.c b/src/modules/bluetooth/module-bluetooth-discover.c
index 521a912..788fee0 100644
--- a/src/modules/bluetooth/module-bluetooth-discover.c
+++ b/src/modules/bluetooth/module-bluetooth-discover.c
@@ -34,7 +34,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/llist.h>
#include <pulsecore/core-util.h>
-#include <modules/dbus-util.h>
+#include <pulsecore/dbus-shared.h>
#include "module-bluetooth-discover-symdef.h"
#include "bluetooth-util.h"
@@ -42,13 +42,21 @@
PA_MODULE_AUTHOR("Joao Paulo Rechi Vita");
PA_MODULE_DESCRIPTION("Detect available bluetooth audio devices and load bluetooth audio drivers");
PA_MODULE_VERSION(PACKAGE_VERSION);
-PA_MODULE_USAGE("sco_sink=<name of sink> "
- "sco_source=<name of source>"
- "async=<Asynchronous initialization?>");
+PA_MODULE_USAGE("async=<Asynchronous initialization?>");
+PA_MODULE_LOAD_ONCE(TRUE);
+
+/*
+#ifdef NOKIA
+ "sco_sink=<name of sink> "
+ "sco_source=<name of source>"
+#endif
+*/
static const char* const valid_modargs[] = {
+#ifdef NOKIA
"sco_sink",
"sco_source",
+#endif
"async",
NULL
};
@@ -57,26 +65,45 @@ struct userdata {
pa_module *module;
pa_modargs *modargs;
pa_core *core;
- pa_dbus_connection *connection;
pa_bluetooth_discovery *discovery;
+ pa_hook_slot *slot;
+ pa_hashmap *hashmap;
};
-static void load_module_for_device(struct userdata *u, pa_bluetooth_device *d, pa_bool_t good) {
+struct module_info {
+ char *path;
+ uint32_t module;
+};
+
+static pa_hook_result_t load_module_for_device(pa_bluetooth_discovery *y, const pa_bluetooth_device *d, struct userdata *u) {
+ struct module_info *mi;
+
pa_assert(u);
pa_assert(d);
- if (good &&
- d->device_connected > 0 &&
- (d->audio_sink_connected > 0 || d->headset_connected > 0)) {
+ mi = pa_hashmap_get(u->hashmap, d->path);
+
+ if (!d->dead &&
+ d->device_connected > 0 && d->audio_state >= PA_BT_AUDIO_STATE_CONNECTED) {
- if (((uint32_t) PA_PTR_TO_UINT(d->data))-1 == PA_INVALID_INDEX) {
+ if (!mi) {
pa_module *m = NULL;
char *args;
/* Oh, awesome, a new device has shown up and been connected! */
args = pa_sprintf_malloc("address=\"%s\" path=\"%s\"", d->address, d->path);
+#if 0
+ /* This is in case we have to use hsp immediately, without waiting for .Audio.State = Connected */
+ if (d->headset_state >= PA_BT_AUDIO_STATE_CONNECTED && somecondition) {
+ char *tmp;
+ tmp = pa_sprintf_malloc("%s profile=\"hsp\"", args);
+ pa_xfree(args);
+ args = tmp;
+ }
+#endif
+#ifdef NOKIA
if (pa_modargs_get_value(u->modargs, "sco_sink", NULL) &&
pa_modargs_get_value(u->modargs, "sco_source", NULL)) {
char *tmp;
@@ -87,44 +114,38 @@ static void load_module_for_device(struct userdata *u, pa_bluetooth_device *d, p
pa_xfree(args);
args = tmp;
}
+#endif
pa_log_debug("Loading module-bluetooth-device %s", args);
m = pa_module_load(u->module->core, "module-bluetooth-device", args);
pa_xfree(args);
- if (m)
- d->data = PA_UINT_TO_PTR((uint32_t) (m->index+1));
- else
+ if (m) {
+ mi = pa_xnew(struct module_info, 1);
+ mi->module = m->index;
+ mi->path = pa_xstrdup(d->path);
+
+ pa_hashmap_put(u->hashmap, mi->path, mi);
+ } else
pa_log_debug("Failed to load module for device %s", d->path);
}
} else {
- if (((uint32_t) PA_PTR_TO_UINT(d->data))-1 != PA_INVALID_INDEX) {
+ if (mi) {
/* Hmm, disconnection? Then let's unload our module */
pa_log_debug("Unloading module for %s", d->path);
- pa_module_unload_request_by_index(u->core, (uint32_t) (PA_PTR_TO_UINT(d->data))-1, TRUE);
- d->data = NULL;
- }
- }
-}
-
-static int setup_dbus(struct userdata *u) {
- DBusError err;
+ pa_module_unload_request_by_index(u->core, mi->module, TRUE);
- dbus_error_init(&err);
-
- u->connection = pa_dbus_bus_get(u->core, DBUS_BUS_SYSTEM, &err);
-
- if (dbus_error_is_set(&err) || !u->connection) {
- pa_log("Failed to get D-Bus connection: %s", err.message);
- dbus_error_free(&err);
- return -1;
+ pa_hashmap_remove(u->hashmap, mi->path);
+ pa_xfree(mi->path);
+ pa_xfree(mi);
+ }
}
- return 0;
+ return PA_HOOK_OK;
}
int pa__init(pa_module* m) {
@@ -149,12 +170,12 @@ int pa__init(pa_module* m) {
u->core = m->core;
u->modargs = ma;
ma = NULL;
+ u->hashmap = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- if (setup_dbus(u) < 0)
+ if (!(u->discovery = pa_bluetooth_discovery_get(u->core)))
goto fail;
- if (!(u->discovery = pa_bluetooth_discovery_new(pa_dbus_connection_get(u->connection), load_module_for_device, u)))
- goto fail;
+ u->slot = pa_hook_connect(pa_bluetooth_discovery_hook(u->discovery), PA_HOOK_NORMAL, (pa_hook_cb_t) load_module_for_device, u);
if (!async)
pa_bluetooth_discovery_sync(u->discovery);
@@ -178,11 +199,22 @@ void pa__done(pa_module* m) {
if (!(u = m->userdata))
return;
+ if (u->slot)
+ pa_hook_slot_free(u->slot);
+
if (u->discovery)
- pa_bluetooth_discovery_free(u->discovery);
+ pa_bluetooth_discovery_unref(u->discovery);
+
+ if (u->hashmap) {
+ struct module_info *mi;
- if (u->connection)
- pa_dbus_connection_unref(u->connection);
+ while ((mi = pa_hashmap_steal_first(u->hashmap))) {
+ pa_xfree(mi->path);
+ pa_xfree(mi);
+ }
+
+ pa_hashmap_free(u->hashmap, NULL, NULL);
+ }
if (u->modargs)
pa_modargs_free(u->modargs);
diff --git a/src/modules/bluetooth/module-bluetooth-proximity.c b/src/modules/bluetooth/module-bluetooth-proximity.c
index a3b525e..9993c8d 100644
--- a/src/modules/bluetooth/module-bluetooth-proximity.c
+++ b/src/modules/bluetooth/module-bluetooth-proximity.c
@@ -42,8 +42,8 @@
#include <pulsecore/core-util.h>
#include <pulsecore/core-error.h>
#include <pulsecore/start-child.h>
+#include <pulsecore/dbus-shared.h>
-#include "../dbus-util.h"
#include "module-bluetooth-proximity-symdef.h"
PA_MODULE_AUTHOR("Lennart Poettering");
@@ -302,7 +302,7 @@ static DBusHandlerResult filter_func(DBusConnection *connection, DBusMessage *m,
bonding_new(u, a);
- return DBUS_HANDLER_RESULT_HANDLED;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
} else if (dbus_message_is_signal(m, "org.bluez.Adapter", "BondingRemoved")) {
@@ -315,7 +315,7 @@ static DBusHandlerResult filter_func(DBusConnection *connection, DBusMessage *m,
bonding_remove(u, a);
- return DBUS_HANDLER_RESULT_HANDLED;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
finish:
diff --git a/src/modules/bluetooth/sbc.c b/src/modules/bluetooth/sbc.c
index a33ed57..779be4b 100644
--- a/src/modules/bluetooth/sbc.c
+++ b/src/modules/bluetooth/sbc.c
@@ -973,13 +973,13 @@ int sbc_init(sbc_t *sbc, unsigned long flags)
return 0;
}
-int sbc_parse(sbc_t *sbc, void *input, int input_len)
+ssize_t sbc_parse(sbc_t *sbc, const void *input, size_t input_len)
{
return sbc_decode(sbc, input, input_len, NULL, 0, NULL);
}
-int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
- int output_len, int *written)
+ssize_t sbc_decode(sbc_t *sbc, const void *input, size_t input_len,
+ void *output, size_t output_len, size_t *written)
{
struct sbc_priv *priv;
char *ptr;
@@ -1004,7 +1004,7 @@ int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
sbc->bitpool = priv->frame.bitpool;
priv->frame.codesize = sbc_get_codesize(sbc);
- priv->frame.length = sbc_get_frame_length(sbc);
+ priv->frame.length = framelen;
}
if (!output)
@@ -1020,7 +1020,7 @@ int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
ptr = output;
- if (output_len < samples * priv->frame.channels * 2)
+ if (output_len < (size_t) (samples * priv->frame.channels * 2))
samples = output_len / (priv->frame.channels * 2);
for (i = 0; i < samples; i++) {
@@ -1044,8 +1044,8 @@ int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
return framelen;
}
-int sbc_encode(sbc_t *sbc, void *input, int input_len, void *output,
- int output_len, int *written)
+ssize_t sbc_encode(sbc_t *sbc, const void *input, size_t input_len,
+ void *output, size_t output_len, size_t *written)
{
struct sbc_priv *priv;
int framelen, samples;
@@ -1133,38 +1133,33 @@ void sbc_finish(sbc_t *sbc)
memset(sbc, 0, sizeof(sbc_t));
}
-int sbc_get_frame_length(sbc_t *sbc)
+size_t sbc_get_frame_length(sbc_t *sbc)
{
- int ret;
- uint8_t subbands, channels, blocks, joint;
+ size_t ret;
+ uint8_t subbands, channels, blocks, joint, bitpool;
struct sbc_priv *priv;
priv = sbc->priv;
- if (!priv->init) {
- subbands = sbc->subbands ? 8 : 4;
- blocks = 4 + (sbc->blocks * 4);
- channels = sbc->mode == SBC_MODE_MONO ? 1 : 2;
- joint = sbc->mode == SBC_MODE_JOINT_STEREO ? 1 : 0;
- } else {
- subbands = priv->frame.subbands;
- blocks = priv->frame.blocks;
- channels = priv->frame.channels;
- joint = priv->frame.joint;
- }
+ if (priv->init)
+ return priv->frame.length;
- ret = 4 + (4 * subbands * channels) / 8;
+ subbands = sbc->subbands ? 8 : 4;
+ blocks = 4 + (sbc->blocks * 4);
+ channels = sbc->mode == SBC_MODE_MONO ? 1 : 2;
+ joint = sbc->mode == SBC_MODE_JOINT_STEREO ? 1 : 0;
+ bitpool = sbc->bitpool;
+ ret = 4 + (4 * subbands * channels) / 8;
/* This term is not always evenly divide so we round it up */
if (channels == 1)
- ret += ((blocks * channels * sbc->bitpool) + 7) / 8;
+ ret += ((blocks * channels * bitpool) + 7) / 8;
else
- ret += (((joint ? subbands : 0) + blocks * sbc->bitpool) + 7)
- / 8;
+ ret += (((joint ? subbands : 0) + blocks * bitpool) + 7) / 8;
return ret;
}
-int sbc_get_frame_duration(sbc_t *sbc)
+unsigned sbc_get_frame_duration(sbc_t *sbc)
{
uint8_t subbands, blocks;
uint16_t frequency;
@@ -1202,7 +1197,7 @@ int sbc_get_frame_duration(sbc_t *sbc)
return (1000000 * blocks * subbands) / frequency;
}
-uint16_t sbc_get_codesize(sbc_t *sbc)
+size_t sbc_get_codesize(sbc_t *sbc)
{
uint16_t subbands, channels, blocks;
struct sbc_priv *priv;
diff --git a/src/modules/bluetooth/sbc.h b/src/modules/bluetooth/sbc.h
index f9d506b..6543588 100644
--- a/src/modules/bluetooth/sbc.h
+++ b/src/modules/bluetooth/sbc.h
@@ -31,6 +31,7 @@ extern "C" {
#endif
#include <stdint.h>
+#include <sys/types.h>
/* sampling frequency */
#define SBC_FREQ_16000 0x00
@@ -81,14 +82,25 @@ typedef struct sbc_struct sbc_t;
int sbc_init(sbc_t *sbc, unsigned long flags);
int sbc_reinit(sbc_t *sbc, unsigned long flags);
-int sbc_parse(sbc_t *sbc, void *input, int input_len);
-int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
- int output_len, int *len);
-int sbc_encode(sbc_t *sbc, void *input, int input_len, void *output,
- int output_len, int *written);
-int sbc_get_frame_length(sbc_t *sbc);
-int sbc_get_frame_duration(sbc_t *sbc);
-uint16_t sbc_get_codesize(sbc_t *sbc);
+
+ssize_t sbc_parse(sbc_t *sbc, const void *input, size_t input_len);
+
+ssize_t sbc_decode(sbc_t *sbc, const void *input, size_t input_len,
+ void *output, size_t output_len, size_t *written);
+
+/* Encodes ONE input block into ONE output block */
+ssize_t sbc_encode(sbc_t *sbc, const void *input, size_t input_len,
+ void *output, size_t output_len, size_t *written);
+
+/* Returns the output block size in bytes */
+size_t sbc_get_frame_length(sbc_t *sbc);
+
+/* Returns the time one input/output block takes to play in msec*/
+unsigned sbc_get_frame_duration(sbc_t *sbc);
+
+/* Returns the input block size in bytes */
+size_t sbc_get_codesize(sbc_t *sbc);
+
const char *sbc_get_implementation_info(sbc_t *sbc);
void sbc_finish(sbc_t *sbc);
diff --git a/src/modules/hal-util.c b/src/modules/hal-util.c
index 422ae4e..e2a2d8d 100644
--- a/src/modules/hal-util.c
+++ b/src/modules/hal-util.c
@@ -24,10 +24,10 @@
#endif
#include <pulsecore/log.h>
+#include <pulsecore/dbus-shared.h>
#include <hal/libhal.h>
-#include "dbus-util.h"
#include "hal-util.h"
int pa_hal_get_info(pa_core *core, pa_proplist *p, int card) {
diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c
index 0afb935..17f1f8c 100644
--- a/src/modules/module-card-restore.c
+++ b/src/modules/module-card-restore.c
@@ -161,6 +161,9 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (!(card = pa_idxset_get_by_index(c->cards, idx)))
return;
+ if (!card->save_profile)
+ return;
+
pa_strlcpy(entry.profile, card->active_profile ? card->active_profile->name : "", sizeof(entry.profile));
if ((old = read_entry(u, card->name))) {
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 4b2d6f9..a1ef8da 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -69,7 +69,7 @@ PA_MODULE_USAGE(
#define DEFAULT_ADJUST_TIME 10
-#define REQUEST_LATENCY_USEC (PA_USEC_PER_MSEC * 200)
+#define BLOCK_USEC (PA_USEC_PER_MSEC * 200)
static const char* const valid_modargs[] = {
"sink_name",
@@ -649,7 +649,7 @@ static void update_max_request(struct userdata *u) {
if (max_request <= 0)
max_request = pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec);
- pa_sink_set_max_request(u->sink, max_request);
+ pa_sink_set_max_request_within_thread(u->sink, max_request);
}
/* Called from thread context of the io thread */
@@ -664,7 +664,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
if (PA_PTR_TO_UINT(data) == PA_SINK_SUSPENDED)
pa_smoother_pause(u->thread_info.smoother, pa_rtclock_usec());
else
- pa_smoother_resume(u->thread_info.smoother, pa_rtclock_usec());
+ pa_smoother_resume(u->thread_info.smoother, pa_rtclock_usec(), TRUE);
break;
@@ -817,7 +817,7 @@ static int output_create_sink_input(struct output *o) {
o->sink_input->kill = sink_input_kill_cb;
o->sink_input->userdata = o;
- pa_sink_input_set_requested_latency(o->sink_input, REQUEST_LATENCY_USEC);
+ pa_sink_input_set_requested_latency(o->sink_input, BLOCK_USEC);
return 0;
}
@@ -1043,7 +1043,14 @@ int pa__init(pa_module*m) {
pa_atomic_store(&u->thread_info.running, FALSE);
u->thread_info.in_null_mode = FALSE;
u->thread_info.counter = 0;
- u->thread_info.smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC*2, TRUE, 10);
+ u->thread_info.smoother = pa_smoother_new(
+ PA_USEC_PER_SEC,
+ PA_USEC_PER_SEC*2,
+ TRUE,
+ TRUE,
+ 10,
+ 0,
+ FALSE);
if (pa_modargs_get_value_u32(ma, "adjust_time", &u->adjust_time) < 0) {
pa_log("Failed to parse adjust_time value");
@@ -1088,11 +1095,8 @@ int pa__init(pa_module*m) {
pa_sink_set_rtpoll(u->sink, u->rtpoll);
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
- pa_sink_set_latency_range(u->sink, REQUEST_LATENCY_USEC, REQUEST_LATENCY_USEC);
- u->block_usec = u->sink->thread_info.max_latency;
-
- u->sink->thread_info.max_request =
- pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec);
+ u->block_usec = BLOCK_USEC;
+ pa_sink_set_max_request(u->sink, pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec));
if (!u->automatic) {
const char*split_state;
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index 3fba7ef..a666073 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -44,8 +44,8 @@
#include <pulsecore/namereg.h>
#include <pulsecore/core-scache.h>
#include <pulsecore/modargs.h>
+#include <pulsecore/dbus-shared.h>
-#include "dbus-util.h"
#include "module-console-kit-symdef.h"
PA_MODULE_AUTHOR("Lennart Poettering");
diff --git a/src/modules/module-cork-music-on-phone.c b/src/modules/module-cork-music-on-phone.c
index c0f5eea..d3a2b00 100644
--- a/src/modules/module-cork-music-on-phone.c
+++ b/src/modules/module-cork-music-on-phone.c
@@ -143,7 +143,6 @@ static pa_hook_result_t sink_input_put_cb(pa_core *core, pa_sink_input *i, struc
}
static pa_hook_result_t sink_input_unlink_cb(pa_core *core, pa_sink_input *i, struct userdata *u) {
- pa_core_assert_ref(core);
pa_sink_input_assert_ref(i);
return process(u, i, FALSE);
diff --git a/src/modules/module-default-device-restore.c b/src/modules/module-default-device-restore.c
index a25aafc..0092d1c 100644
--- a/src/modules/module-default-device-restore.c
+++ b/src/modules/module-default-device-restore.c
@@ -63,7 +63,7 @@ static void load(struct userdata *u) {
char ln[256] = "";
pa_sink *s;
- fgets(ln, sizeof(ln)-1, f);
+ (void) fgets(ln, sizeof(ln)-1, f);
pa_strip_nl(ln);
fclose(f);
@@ -84,7 +84,7 @@ static void load(struct userdata *u) {
char ln[256] = "";
pa_source *s;
- fgets(ln, sizeof(ln)-1, f);
+ (void) fgets(ln, sizeof(ln)-1, f);
pa_strip_nl(ln);
fclose(f);
diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c
index 0ca3dd8..7d87ca0 100644
--- a/src/modules/module-device-restore.c
+++ b/src/modules/module-device-restore.c
@@ -191,7 +191,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
name = pa_sprintf_malloc("sink:%s", sink->name);
entry.channel_map = sink->channel_map;
- entry.volume = *pa_sink_get_volume(sink, FALSE);
+ entry.volume = *pa_sink_get_volume(sink, FALSE, TRUE);
entry.muted = pa_sink_get_mute(sink, FALSE);
} else {
diff --git a/src/modules/module-esound-sink.c b/src/modules/module-esound-sink.c
index 2b45e30..a1a783a 100644
--- a/src/modules/module-esound-sink.c
+++ b/src/modules/module-esound-sink.c
@@ -150,7 +150,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_RUNNING:
if (u->sink->thread_info.state == PA_SINK_SUSPENDED)
- pa_smoother_resume(u->smoother, pa_rtclock_usec());
+ pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
break;
@@ -354,6 +354,9 @@ static int do_write(struct userdata *u) {
}
if (!u->write_data && u->state == STATE_PREPARE) {
+ int so_sndbuf = 0;
+ socklen_t sl = sizeof(int);
+
/* OK, we're done with sending all control data we need to, so
* let's hand the socket over to the IO thread now */
@@ -366,6 +369,13 @@ static int do_write(struct userdata *u) {
pa_make_tcp_socket_low_delay(u->fd);
+ if (getsockopt(u->fd, SOL_SOCKET, SO_SNDBUF, &so_sndbuf, &sl) < 0)
+ pa_log_warn("getsockopt(SO_SNDBUF) failed: %s", pa_cstrerror(errno));
+ else {
+ pa_log_debug("SO_SNDBUF is %zu.", (size_t) so_sndbuf);
+ pa_sink_set_max_request(u->sink, PA_MAX((size_t) so_sndbuf, u->block_size));
+ }
+
pa_log_debug("Connection authenticated, handing fd to IO thread...");
pa_asyncmsgq_post(u->thread_mq.inq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_PASS_SOCKET, NULL, 0, NULL, NULL);
@@ -535,7 +545,14 @@ int pa__init(pa_module*m) {
u->module = m;
m->userdata = u;
u->fd = -1;
- u->smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC*2, TRUE, 10);
+ u->smoother = pa_smoother_new(
+ PA_USEC_PER_SEC,
+ PA_USEC_PER_SEC*2,
+ TRUE,
+ TRUE,
+ 10,
+ 0,
+ FALSE);
pa_memchunk_reset(&u->memchunk);
u->offset = 0;
@@ -566,7 +583,8 @@ int pa__init(pa_module*m) {
pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
pa_sink_new_data_set_sample_spec(&data, &ss);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, espeaker);
- pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Esound sink '%s'", espeaker);
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_API, "esd");
+ pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "EsounD Output on %s", espeaker);
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-hal-detect.c b/src/modules/module-hal-detect.c
index fe60110..b6139e4 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -45,10 +45,10 @@
#include <pulsecore/namereg.h>
#include <pulsecore/core-scache.h>
#include <pulsecore/modargs.h>
+#include <pulsecore/dbus-shared.h>
#include <hal/libhal.h>
-#include "dbus-util.h"
#include "module-hal-detect-symdef.h"
PA_MODULE_AUTHOR("Shahms King");
@@ -121,6 +121,7 @@ static const char *strip_udi(const char *udi) {
enum alsa_type {
ALSA_TYPE_PLAYBACK,
ALSA_TYPE_CAPTURE,
+ ALSA_TYPE_CONTROL,
ALSA_TYPE_OTHER
};
@@ -141,6 +142,8 @@ static enum alsa_type hal_alsa_device_get_type(LibHalContext *context, const cha
t = ALSA_TYPE_PLAYBACK;
else if (pa_streq(type, "capture"))
t = ALSA_TYPE_CAPTURE;
+ else if (pa_streq(type, "control"))
+ t = ALSA_TYPE_CONTROL;
libhal_free_string(type);
@@ -171,7 +174,8 @@ static pa_bool_t hal_alsa_device_is_modem(LibHalContext *context, const char *ud
finish:
if (dbus_error_is_set(&error)) {
- pa_log_error("D-Bus error while parsing HAL ALSA data: %s: %s", error.name, error.message);
+ if (!dbus_error_has_name(&error, "org.freedesktop.Hal.NoSuchProperty"))
+ pa_log_error("D-Bus error while parsing HAL ALSA data: %s: %s", error.name, error.message);
dbus_error_free(&error);
}
@@ -193,10 +197,23 @@ static int hal_device_load_alsa(struct userdata *u, const char *udi, struct devi
/* We only care for PCM devices */
type = hal_alsa_device_get_type(u->context, udi);
- if (type == ALSA_TYPE_OTHER)
+
+ /* For each ALSA card that appears the control device will be the
+ * last one to be created, this is considered part of the ALSA
+ * usperspace API. We rely on this and load our modules only when
+ * the control device is available assuming that *all* device
+ * nodes have been properly created and assigned the right ACLs at
+ * that time. Also see:
+ *
+ * http://mailman.alsa-project.org/pipermail/alsa-devel/2009-April/015958.html
+ *
+ * and the associated thread.*/
+
+ if (type != ALSA_TYPE_CONTROL)
goto fail;
- /* We don't care for modems */
+ /* We don't care for modems -- this is most likely not set for
+ * control devices, so kind of pointless here. */
if (hal_alsa_device_is_modem(u->context, udi))
goto fail;
@@ -411,9 +428,10 @@ static int hal_device_add_all(struct userdata *u) {
for (i = 0; i < n; i++) {
struct device *d;
- if ((d = hal_device_add(u, udis[i])))
+ if ((d = hal_device_add(u, udis[i]))) {
count++;
- else
+ pa_log_debug("Loaded device %s", udis[i]);
+ } else
pa_log_debug("Not loaded device %s", udis[i]);
}
}
@@ -449,10 +467,13 @@ static void device_added_cb(LibHalContext *context, const char *udi) {
if (!hal_device_add(u, udi))
pa_log_debug("Not loaded device %s", udi);
+ else
+ pa_log_debug("Loaded device %s", udi);
finish:
if (dbus_error_is_set(&error)) {
- pa_log_error("D-Bus error while parsing HAL data: %s: %s", error.name, error.message);
+ if (!dbus_error_has_name(&error, "org.freedesktop.Hal.NoSuchProperty"))
+ pa_log_error("D-Bus error while parsing HAL data: %s: %s", error.name, error.message);
dbus_error_free(&error);
}
}
diff --git a/src/modules/module-jack-sink.c b/src/modules/module-jack-sink.c
index 63fdd2d..31b8a96 100644
--- a/src/modules/module-jack-sink.c
+++ b/src/modules/module-jack-sink.c
@@ -112,6 +112,7 @@ static const char* const valid_modargs[] = {
enum {
SINK_MESSAGE_RENDER = PA_SINK_MESSAGE_MAX,
+ SINK_MESSAGE_BUFFER_SIZE,
SINK_MESSAGE_ON_SHUTDOWN
};
@@ -158,6 +159,10 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
return 0;
+ case SINK_MESSAGE_BUFFER_SIZE:
+ pa_sink_set_max_request_within_thread(u->sink, (size_t) offset * pa_frame_size(&u->sink->sample_spec));
+ return 0;
+
case SINK_MESSAGE_ON_SHUTDOWN:
pa_asyncmsgq_post(u->thread_mq.outq, PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL, NULL);
return 0;
@@ -184,6 +189,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
return 0;
}
+
}
return pa_sink_process_msg(o, code, data, offset, memchunk);
@@ -263,10 +269,18 @@ static void jack_init(void *arg) {
static void jack_shutdown(void* arg) {
struct userdata *u = arg;
- pa_log_info("JACK thread shutting down..");
+ pa_log_info("JACK thread shutting down.");
pa_asyncmsgq_post(u->jack_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_ON_SHUTDOWN, NULL, 0, NULL, NULL);
}
+static int jack_buffer_size(jack_nframes_t nframes, void *arg) {
+ struct userdata *u = arg;
+
+ pa_log_info("JACK buffer size changed.");
+ pa_asyncmsgq_post(u->jack_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_BUFFER_SIZE, NULL, nframes, NULL, NULL);
+ return 0;
+}
+
int pa__init(pa_module*m) {
struct userdata *u = NULL;
pa_sample_spec ss;
@@ -297,10 +311,9 @@ int pa__init(pa_module*m) {
server_name = pa_modargs_get_value(ma, "server_name", NULL);
client_name = pa_modargs_get_value(ma, "client_name", "PulseAudio JACK Sink");
- u = pa_xnew0(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
- m->userdata = u;
u->saved_frame_time_valid = FALSE;
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
@@ -386,10 +399,12 @@ 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, jack_get_buffer_size(u->client) * pa_frame_size(&u->sink->sample_spec));
jack_set_process_callback(u->client, jack_process, u);
jack_on_shutdown(u->client, jack_shutdown, u);
jack_set_thread_init_callback(u->client, jack_init, u);
+ jack_set_buffer_size_callback(u->client, jack_buffer_size, u);
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
diff --git a/src/modules/module-jack-source.c b/src/modules/module-jack-source.c
index c77c958..9a215c5 100644
--- a/src/modules/module-jack-source.c
+++ b/src/modules/module-jack-source.c
@@ -270,12 +270,10 @@ int pa__init(pa_module*m) {
server_name = pa_modargs_get_value(ma, "server_name", NULL);
client_name = pa_modargs_get_value(ma, "client_name", "PulseAudio JACK Source");
- u = pa_xnew0(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
- m->userdata = u;
u->saved_frame_time_valid = FALSE;
-
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
@@ -372,14 +370,14 @@ int pa__init(pa_module*m) {
for (i = 0, p = ports; i < ss.channels; i++, p++) {
if (!*p) {
- pa_log("not enough physical output ports, leaving unconnected.");
+ pa_log("Not enough physical output ports, leaving unconnected.");
break;
}
- pa_log_info("connecting %s to %s", jack_port_name(u->port[i]), *p);
+ pa_log_info("Connecting %s to %s", jack_port_name(u->port[i]), *p);
if (jack_connect(u->client, *p, jack_port_name(u->port[i]))) {
- pa_log("failed to connect %s to %s, leaving unconnected.", jack_port_name(u->port[i]), *p);
+ pa_log("Failed to connect %s to %s, leaving unconnected.", jack_port_name(u->port[i]), *p);
break;
}
}
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 33562b1..44052c9 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -235,7 +235,7 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
if (amount > 0) {
unsigned c;
- pa_memblockq_seek(u->memblockq, - (int64_t) amount, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(u->memblockq, - (int64_t) amount, PA_SEEK_RELATIVE, TRUE);
pa_log_debug("Resetting plugin");
@@ -264,7 +264,7 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
return;
pa_memblockq_set_maxrewind(u->memblockq, nbytes);
- pa_sink_set_max_rewind(u->sink, nbytes);
+ pa_sink_set_max_rewind_within_thread(u->sink, nbytes);
}
/* Called from I/O thread context */
@@ -277,7 +277,7 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
return;
- pa_sink_set_max_request(u->sink, nbytes);
+ pa_sink_set_max_request_within_thread(u->sink, nbytes);
}
/* Called from I/O thread context */
@@ -290,7 +290,7 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) {
if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
return;
- pa_sink_update_latency_range(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
+ pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
}
/* Called from I/O thread context */
@@ -322,7 +322,7 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_sink_set_rtpoll(u->sink, i->sink->rtpoll);
pa_sink_attach_within_thread(u->sink);
- pa_sink_update_latency_range(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
+ pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
}
/* Called from main context */
@@ -705,7 +705,7 @@ 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);
- u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY);
+ u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
pa_sink_new_data_done(&sink_data);
if (!u->sink) {
diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c
index bdb8bb7..a1a8726 100644
--- a/src/modules/module-lirc.c
+++ b/src/modules/module-lirc.c
@@ -63,8 +63,6 @@ struct userdata {
float mute_toggle_save;
};
-static int lirc_in_use = 0;
-
static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) {
struct userdata *u = userdata;
char *name = NULL, *code = NULL;
@@ -122,39 +120,39 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
pa_log("Failed to get sink '%s'", u->sink_name);
else {
int i;
- pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
+ pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE);
#define DELTA (PA_VOLUME_NORM/20)
switch (volchange) {
case UP:
for (i = 0; i < cv.channels; i++) {
- cv.values[i] += DELTA;
-
- if (cv.values[i] > PA_VOLUME_NORM)
- cv.values[i] = PA_VOLUME_NORM;
+ if (cv.values[i] < PA_VOLUME_MAX - DELTA)
+ cv.values[i] += DELTA;
+ else
+ cv.values[i] = PA_VOLUME_MAX;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
break;
case DOWN:
for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] >= DELTA)
+ if (cv.values[i] > DELTA)
cv.values[i] -= DELTA;
else
cv.values[i] = PA_VOLUME_MUTED;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
break;
case MUTE:
- pa_sink_set_mute(s, 0);
+ pa_sink_set_mute(s, TRUE);
break;
case RESET:
- pa_sink_set_mute(s, 1);
+ pa_sink_set_mute(s, FALSE);
break;
case MUTE_TOGGLE:
@@ -163,7 +161,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
break;
case INVALID:
- ;
+ pa_assert_not_reached();
}
}
}
@@ -189,11 +187,6 @@ int pa__init(pa_module*m) {
pa_assert(m);
- if (lirc_in_use) {
- pa_log("module-lirc may no be loaded twice.");
- return -1;
- }
-
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
pa_log("Failed to parse module arguments");
goto fail;
@@ -219,8 +212,6 @@ int pa__init(pa_module*m) {
u->io = m->core->mainloop->io_new(m->core->mainloop, u->lirc_fd, PA_IO_EVENT_INPUT|PA_IO_EVENT_HANGUP, io_callback, u);
- lirc_in_use = 1;
-
pa_modargs_free(ma);
return 0;
@@ -252,6 +243,4 @@ void pa__done(pa_module*m) {
pa_xfree(u->sink_name);
pa_xfree(u);
-
- lirc_in_use = 0;
}
diff --git a/src/modules/module-match.c b/src/modules/module-match.c
index d7365ca..625f2a8 100644
--- a/src/modules/module-match.c
+++ b/src/modules/module-match.c
@@ -216,7 +216,7 @@ static void callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, v
pa_cvolume cv;
pa_log_debug("changing volume of sink input '%s' to 0x%03x", n, r->volume);
pa_cvolume_set(&cv, si->sample_spec.channels, r->volume);
- pa_sink_input_set_volume(si, &cv, TRUE);
+ pa_sink_input_set_volume(si, &cv, TRUE, TRUE);
}
}
}
diff --git a/src/modules/module-mmkbd-evdev.c b/src/modules/module-mmkbd-evdev.c
index 2f87dd2..d8b9c79 100644
--- a/src/modules/module-mmkbd-evdev.c
+++ b/src/modules/module-mmkbd-evdev.c
@@ -52,17 +52,6 @@ PA_MODULE_USAGE("device=<evdev device> sink=<sink name>");
#define DEFAULT_DEVICE "/dev/input/event0"
-/*
- * This isn't defined in older kernel headers and there is no way of
- * detecting it.
- */
-struct _input_id {
- __u16 bustype;
- __u16 vendor;
- __u16 product;
- __u16 version;
-};
-
static const char* const valid_modargs[] = {
"device",
"sink",
@@ -113,31 +102,31 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
pa_log("Failed to get sink '%s'", u->sink_name);
else {
int i;
- pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
+ pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE);
#define DELTA (PA_VOLUME_NORM/20)
switch (volchange) {
case UP:
for (i = 0; i < cv.channels; i++) {
- cv.values[i] += DELTA;
-
- if (cv.values[i] > PA_VOLUME_NORM)
- cv.values[i] = PA_VOLUME_NORM;
+ if (cv.values[i] < PA_VOLUME_MAX - DELTA)
+ cv.values[i] += DELTA;
+ else
+ cv.values[i] = PA_VOLUME_MAX;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
break;
case DOWN:
for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] >= DELTA)
+ if (cv.values[i] > DELTA)
cv.values[i] -= DELTA;
else
cv.values[i] = PA_VOLUME_MUTED;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE);
break;
case MUTE_TOGGLE:
@@ -146,7 +135,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
break;
case INVALID:
- ;
+ pa_assert_not_reached();
}
}
}
@@ -169,7 +158,7 @@ int pa__init(pa_module*m) {
pa_modargs *ma = NULL;
struct userdata *u;
int version;
- struct _input_id input_id;
+ struct input_id input_id;
char name[256];
uint8_t evtype_bitmask[EV_MAX/8 + 1];
@@ -180,15 +169,15 @@ int pa__init(pa_module*m) {
goto fail;
}
- m->userdata = u = pa_xnew(struct userdata,1);
+ m->userdata = u = pa_xnew(struct userdata, 1);
u->module = m;
u->io = NULL;
u->sink_name = pa_xstrdup(pa_modargs_get_value(ma, "sink", NULL));
u->fd = -1;
u->fd_type = 0;
- if ((u->fd = open(pa_modargs_get_value(ma, "device", DEFAULT_DEVICE), O_RDONLY)) < 0) {
- pa_log("failed to open evdev device: %s", pa_cstrerror(errno));
+ if ((u->fd = open(pa_modargs_get_value(ma, "device", DEFAULT_DEVICE), O_RDONLY|O_NOCTTY)) < 0) {
+ pa_log("Failed to open evdev device: %s", pa_cstrerror(errno));
goto fail;
}
@@ -208,7 +197,7 @@ int pa__init(pa_module*m) {
input_id.vendor, input_id.product, input_id.version, input_id.bustype);
memset(name, 0, sizeof(name));
- if(ioctl(u->fd, EVIOCGNAME(sizeof(name)), name) < 0) {
+ if (ioctl(u->fd, EVIOCGNAME(sizeof(name)), name) < 0) {
pa_log("EVIOCGNAME failed: %s", pa_cstrerror(errno));
goto fail;
}
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index 183d4b2..d9bab6b 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -62,7 +62,7 @@ PA_MODULE_USAGE(
"description=<description for the sink>");
#define DEFAULT_SINK_NAME "null"
-#define MAX_LATENCY_USEC (PA_USEC_PER_SEC * 2)
+#define BLOCK_USEC (PA_USEC_PER_SEC * 2)
struct userdata {
pa_core *core;
@@ -119,6 +119,7 @@ static int sink_process_msg(
static void sink_update_requested_latency_cb(pa_sink *s) {
struct userdata *u;
+ size_t nbytes;
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
@@ -127,6 +128,10 @@ static void sink_update_requested_latency_cb(pa_sink *s) {
if (u->block_usec == (pa_usec_t) -1)
u->block_usec = s->thread_info.max_latency;
+
+ nbytes = pa_usec_to_bytes(u->block_usec, &s->sample_spec);
+ pa_sink_set_max_rewind_within_thread(s, nbytes);
+ pa_sink_set_max_request_within_thread(s, nbytes);
}
static void process_rewind(struct userdata *u, pa_usec_t now) {
@@ -253,6 +258,7 @@ int pa__init(pa_module*m) {
pa_channel_map map;
pa_modargs *ma = NULL;
pa_sink_new_data data;
+ size_t nbytes;
pa_assert(m);
@@ -283,7 +289,7 @@ 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");
- u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
+ u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
pa_sink_new_data_done(&data);
if (!u->sink) {
@@ -298,12 +304,10 @@ 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_latency_range(u->sink, (pa_usec_t) -1, MAX_LATENCY_USEC);
- u->block_usec = u->sink->thread_info.max_latency;
-
- u->sink->thread_info.max_rewind =
- u->sink->thread_info.max_request =
- pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec);
+ u->block_usec = BLOCK_USEC;
+ nbytes = pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec);
+ pa_sink_set_max_rewind(u->sink, nbytes);
+ pa_sink_set_max_request(u->sink, nbytes);
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index def4f75..9d3e55d 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -292,6 +292,8 @@ int pa__init(pa_module*m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
+ pa_sink_set_max_request(u->sink, PIPE_BUF);
+ u->sink->fixed_latency = 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 3d40fdf..df72d79 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -277,6 +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);
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-raop-discover.c b/src/modules/module-raop-discover.c
index 5c2e062..eaeb77f 100644
--- a/src/modules/module-raop-discover.c
+++ b/src/modules/module-raop-discover.c
@@ -258,7 +258,7 @@ static void browser_cb(
pa_log("avahi_service_resolver_new() failed: %s", avahi_strerror(avahi_client_errno(u->client)));
/* We ignore the returned resolver object here, since the we don't
- * need to attach any special data to it, and we can still destory
+ * need to attach any special data to it, and we can still destroy
* it from the callback */
} else if (event == AVAHI_BROWSER_REMOVE) {
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c
index 00f0c63..4d68b1b 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/module-raop-sink.c
@@ -135,13 +135,22 @@ enum {
/* Forward declaration */
static void sink_set_volume_cb(pa_sink *);
-static void on_connection(PA_GCC_UNUSED int fd, void*userdata) {
+static void on_connection(int fd, void*userdata) {
+ int so_sndbuf = 0;
+ socklen_t sl = sizeof(int);
struct userdata *u = userdata;
pa_assert(u);
pa_assert(u->fd < 0);
u->fd = fd;
+ if (getsockopt(u->fd, SOL_SOCKET, SO_SNDBUF, &so_sndbuf, &sl) < 0)
+ pa_log_warn("getsockopt(SO_SNDBUF) failed: %s", pa_cstrerror(errno));
+ else {
+ pa_log_debug("SO_SNDBUF is %zu.", (size_t) so_sndbuf);
+ pa_sink_set_max_request(u->sink, PA_MAX((size_t) so_sndbuf, u->block_size));
+ }
+
/* Set the initial volume */
sink_set_volume_cb(u->sink);
@@ -183,7 +192,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_RUNNING:
if (u->sink->thread_info.state == PA_SINK_SUSPENDED) {
- pa_smoother_resume(u->smoother, pa_rtclock_usec());
+ pa_smoother_resume(u->smoother, pa_rtclock_usec(), TRUE);
/* The connection can be closed when idle, so check to
see if we need to reestablish it */
@@ -531,7 +540,14 @@ int pa__init(pa_module*m) {
u->module = m;
m->userdata = u;
u->fd = -1;
- u->smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC*2, TRUE, 10);
+ u->smoother = pa_smoother_new(
+ PA_USEC_PER_SEC,
+ PA_USEC_PER_SEC*2,
+ TRUE,
+ TRUE,
+ 10,
+ 0,
+ FALSE);
pa_memchunk_reset(&u->raw_memchunk);
pa_memchunk_reset(&u->encoded_memchunk);
u->offset = 0;
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 31824bc..f9777be 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -179,7 +179,7 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
return;
- pa_sink_set_max_rewind(u->sink, nbytes);
+ pa_sink_set_max_rewind_within_thread(u->sink, nbytes);
}
/* Called from I/O thread context */
@@ -192,7 +192,7 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
return;
- pa_sink_set_max_request(u->sink, nbytes);
+ pa_sink_set_max_request_within_thread(u->sink, nbytes);
}
/* Called from I/O thread context */
@@ -205,7 +205,7 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) {
if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
return;
- pa_sink_update_latency_range(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
+ pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
}
/* Called from I/O thread context */
@@ -237,7 +237,7 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_sink_set_rtpoll(u->sink, i->sink->rtpoll);
pa_sink_attach_within_thread(u->sink);
- pa_sink_update_latency_range(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
+ pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
}
/* Called from main context */
@@ -354,7 +354,7 @@ 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");
- u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY);
+ u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
pa_sink_new_data_done(&sink_data);
if (!u->sink) {
diff --git a/src/modules/module-sine-source.c b/src/modules/module-sine-source.c
index 206c45f..a5f1ce7 100644
--- a/src/modules/module-sine-source.c
+++ b/src/modules/module-sine-source.c
@@ -60,7 +60,7 @@ PA_MODULE_USAGE(
"frequency=<frequency in Hz>");
#define DEFAULT_SOURCE_NAME "sine_input"
-#define MAX_LATENCY_USEC (PA_USEC_PER_SEC * 2)
+#define BLOCK_USEC (PA_USEC_PER_SEC * 2)
struct userdata {
pa_core *core;
@@ -260,11 +260,12 @@ int pa__init(pa_module*m) {
u->source->update_requested_latency = source_update_requested_latency_cb;
u->source->userdata = u;
+ u->block_usec = BLOCK_USEC;
+
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_latency_range(u->source, (pa_usec_t) -1, MAX_LATENCY_USEC);
- u->block_usec = u->source->thread_info.max_latency;
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 995b3c6..ecd3ba3 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -75,7 +75,7 @@ PA_MODULE_USAGE(
"format=<sample format> "
"channels=<number of channels> "
"rate=<sample rate> "
- "buffer_size=<record buffer size> "
+ "buffer_length=<milliseconds> "
"channel_map=<channel map>");
PA_MODULE_LOAD_ONCE(FALSE);
@@ -94,8 +94,7 @@ struct userdata {
uint32_t frame_size;
int32_t buffer_size;
- volatile uint64_t written_bytes, read_bytes;
- pa_mutex *written_bytes_lock;
+ uint64_t written_bytes, read_bytes;
char *device_name;
int mode;
@@ -107,9 +106,8 @@ struct userdata {
uint32_t play_samples_msw, record_samples_msw;
uint32_t prev_playback_samples, prev_record_samples;
- pa_mutex *sample_counter_lock;
- size_t min_request;
+ int32_t minimum_request;
};
static const char* const valid_modargs[] = {
@@ -118,7 +116,7 @@ static const char* const valid_modargs[] = {
"device",
"record",
"playback",
- "buffer_size",
+ "buffer_length",
"format",
"rate",
"channels",
@@ -127,13 +125,9 @@ static const char* const valid_modargs[] = {
};
#define DEFAULT_DEVICE "/dev/audio"
-#define MIN_BUFFER_SIZE (640)
-#define MAX_RENDER_HZ (300)
-/* This render rate limit implies a minimum latency, but without it we waste too much CPU time in the
- * IO thread. The maximum render rate and minimum latency (or minimum buffer size) are unachievable on
- * common hardware anyway. Note that MIN_BUFFER_SIZE * MAX_RENDER_HZ >= 4 * 48000 Bps.
- */
+#define MAX_RENDER_HZ (300)
+/* This render rate limit imposes a minimum latency, but without it we waste too much CPU time. */
static uint64_t get_playback_buffered_bytes(struct userdata *u) {
audio_info_t info;
@@ -142,8 +136,6 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) {
pa_assert(u->sink);
- pa_mutex_lock(u->sample_counter_lock);
-
err = ioctl(u->fd, AUDIO_GETINFO, &info);
pa_assert(err >= 0);
@@ -159,8 +151,6 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) {
u->prev_playback_samples = info.play.samples;
played_bytes = (((uint64_t)u->play_samples_msw << 32) + info.play.samples) * u->frame_size;
- pa_mutex_unlock(u->sample_counter_lock);
-
return u->written_bytes - played_bytes;
}
@@ -171,11 +161,9 @@ static pa_usec_t sink_get_latency(struct userdata *u, pa_sample_spec *ss) {
pa_assert(ss);
if (u->fd >= 0) {
- pa_mutex_lock(u->written_bytes_lock);
r = pa_bytes_to_usec(get_playback_buffered_bytes(u), ss);
if (u->memchunk.memblock)
r += pa_bytes_to_usec(u->memchunk.length, ss);
- pa_mutex_unlock(u->written_bytes_lock);
}
return r;
}
@@ -487,7 +475,7 @@ static void sink_set_volume(pa_sink *s) {
if (u->fd >= 0) {
AUDIO_INITINFO(&info);
- info.play.gain = pa_cvolume_avg(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
@@ -523,7 +511,7 @@ static void source_set_volume(pa_source *s) {
if (u->fd >= 0) {
AUDIO_INITINFO(&info);
- info.play.gain = pa_cvolume_avg(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
@@ -580,6 +568,25 @@ static void sink_get_mute(pa_sink *s) {
}
}
+static void process_rewind(struct userdata *u) {
+ size_t rewind_nbytes;
+
+ pa_assert(u);
+
+ /* Figure out how much we shall rewind and reset the counter */
+ rewind_nbytes = u->sink->thread_info.rewind_nbytes;
+ u->sink->thread_info.rewind_nbytes = 0;
+
+ if (rewind_nbytes > 0) {
+ pa_log_debug("Requested to rewind %lu bytes.", (unsigned long) rewind_nbytes);
+ rewind_nbytes = PA_MIN(u->memchunk.length, rewind_nbytes);
+ u->memchunk.length -= rewind_nbytes;
+ pa_log_debug("Rewound %lu bytes.", (unsigned long) rewind_nbytes);
+ }
+
+ pa_sink_process_rewind(u->sink, rewind_nbytes);
+}
+
static void thread_func(void *userdata) {
struct userdata *u = userdata;
unsigned short revents = 0;
@@ -604,10 +611,13 @@ static void thread_func(void *userdata) {
uint64_t buffered_bytes;
if (u->sink->thread_info.rewind_requested)
- pa_sink_process_rewind(u->sink, 0);
+ process_rewind(u);
err = ioctl(u->fd, AUDIO_GETINFO, &info);
- pa_assert(err >= 0);
+ if (err < 0) {
+ pa_log("AUDIO_GETINFO ioctl failed: %s", pa_cstrerror(errno));
+ goto fail;
+ }
if (info.play.error) {
pa_log_debug("buffer under-run!");
@@ -635,7 +645,7 @@ static void thread_func(void *userdata) {
len = u->buffer_size - buffered_bytes;
len -= len % u->frame_size;
- if (len < u->min_request)
+ if (len < (size_t) u->minimum_request)
break;
if (u->memchunk.length < len)
@@ -648,12 +658,16 @@ static void thread_func(void *userdata) {
if (w <= 0) {
switch (errno) {
case EINTR:
- break;
+ continue;
case EAGAIN:
+ /* If the buffer_size is too big, we get EAGAIN. Avoiding that limit by trial and error
+ * is not ideal, but I don't know how to get the system to tell me what the limit is.
+ */
u->buffer_size = u->buffer_size * 18 / 25;
u->buffer_size -= u->buffer_size % u->frame_size;
- u->buffer_size = PA_MAX(u->buffer_size, (int32_t)MIN_BUFFER_SIZE);
- pa_sink_set_max_request(u->sink, u->buffer_size);
+ u->buffer_size = PA_MAX(u->buffer_size, 2 * u->minimum_request);
+ pa_sink_set_max_request_within_thread(u->sink, u->buffer_size);
+ pa_sink_set_max_rewind_within_thread(u->sink, u->buffer_size);
pa_log("EAGAIN. Buffer size is now %u bytes (%llu buffered)", u->buffer_size, buffered_bytes);
break;
default:
@@ -663,10 +677,8 @@ static void thread_func(void *userdata) {
} else {
pa_assert(w % u->frame_size == 0);
- pa_mutex_lock(u->written_bytes_lock);
u->written_bytes += w;
u->memchunk.length -= w;
- pa_mutex_unlock(u->written_bytes_lock);
u->memchunk.index += w;
if (u->memchunk.length <= 0) {
@@ -677,9 +689,8 @@ static void thread_func(void *userdata) {
}
pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec));
- } else {
+ } else
pa_rtpoll_set_timer_disabled(u->rtpoll);
- }
/* Try to read some data and pass it on to the source driver */
@@ -797,6 +808,7 @@ int pa__init(pa_module *m) {
pa_sample_spec ss;
pa_channel_map map;
pa_modargs *ma = NULL;
+ uint32_t buffer_length_msec;
int fd;
pa_sink_new_data sink_new_data;
pa_source_new_data source_new_data;
@@ -822,8 +834,6 @@ int pa__init(pa_module *m) {
}
u = pa_xnew0(struct userdata, 1);
- u->sample_counter_lock = pa_mutex_new(FALSE, FALSE);
- u->written_bytes_lock = pa_mutex_new(FALSE, FALSE);
/*
* For a process (or several processes) to use the same audio device for both
@@ -839,13 +849,15 @@ int pa__init(pa_module *m) {
}
u->frame_size = pa_frame_size(&ss);
- u->buffer_size = 16384;
- if (pa_modargs_get_value_s32(ma, "buffer_size", &u->buffer_size) < 0) {
- pa_log("failed to parse buffer size argument");
+ u->minimum_request = pa_usec_to_bytes(PA_USEC_PER_SEC / MAX_RENDER_HZ, &ss);
+
+ buffer_length_msec = 100;
+ if (pa_modargs_get_value_u32(ma, "buffer_length", &buffer_length_msec) < 0) {
+ pa_log("failed to parse buffer_length argument");
goto fail;
}
- u->buffer_size -= u->buffer_size % u->frame_size;
- if (u->buffer_size < (int32_t)MIN_BUFFER_SIZE) {
+ u->buffer_size = pa_usec_to_bytes(1000 * buffer_length_msec, &ss);
+ if (u->buffer_size < 2 * u->minimum_request) {
pa_log("supplied buffer size argument is too small");
goto fail;
}
@@ -946,16 +958,18 @@ int pa__init(pa_module *m) {
u->sink->set_mute = sink_set_mute;
u->sink->refresh_volume = u->sink->refresh_muted = TRUE;
- u->sink->thread_info.max_request = u->buffer_size;
- u->min_request = pa_usec_to_bytes(PA_USEC_PER_SEC / MAX_RENDER_HZ, &ss);
+ pa_sink_set_max_request(u->sink, u->buffer_size);
+ pa_sink_set_max_rewind(u->sink, u->buffer_size);
} else
u->sink = NULL;
pa_assert(u->source || u->sink);
u->sig = pa_signal_new(SIGPOLL, sig_callback, u);
- pa_assert(u->sig);
- ioctl(u->fd, I_SETSIG, S_MSG);
+ if (u->sig)
+ ioctl(u->fd, I_SETSIG, S_MSG);
+ else
+ pa_log_warn("Could not register SIGPOLL handler");
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
@@ -1010,8 +1024,10 @@ void pa__done(pa_module *m) {
if (!(u = m->userdata))
return;
- ioctl(u->fd, I_SETSIG, 0);
- pa_signal_free(u->sig);
+ if (u->sig) {
+ ioctl(u->fd, I_SETSIG, 0);
+ pa_signal_free(u->sig);
+ }
if (u->sink)
pa_sink_unlink(u->sink);
@@ -1044,9 +1060,6 @@ void pa__done(pa_module *m) {
if (u->fd >= 0)
close(u->fd);
- pa_mutex_free(u->written_bytes_lock);
- pa_mutex_free(u->sample_counter_lock);
-
pa_xfree(u->device_name);
pa_xfree(u);
diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c
index 723b5d7..70cd89a 100644
--- a/src/modules/module-stream-restore.c
+++ b/src/modules/module-stream-restore.c
@@ -91,15 +91,14 @@ struct userdata {
pa_idxset *subscribed;
};
-#define ENTRY_VERSION 1
+#define ENTRY_VERSION 2
struct entry {
uint8_t version;
- pa_bool_t muted_valid:1, relative_volume_valid:1, absolute_volume_valid:1, device_valid:1;
+ pa_bool_t muted_valid:1, volume_valid:1, device_valid:1;
pa_bool_t muted:1;
pa_channel_map channel_map;
- pa_cvolume relative_volume;
- pa_cvolume absolute_volume;
+ pa_cvolume volume;
char device[PA_NAME_MAX];
} PA_GCC_PACKED;
@@ -192,13 +191,12 @@ static struct entry* read_entry(struct userdata *u, const char *name) {
goto fail;
}
- if ((e->relative_volume_valid || e->absolute_volume_valid) && !(pa_channel_map_valid(&e->channel_map))) {
+ if (e->volume_valid && !pa_channel_map_valid(&e->channel_map)) {
pa_log_warn("Invalid channel map stored in database for stream %s", name);
goto fail;
}
- if ((e->relative_volume_valid && (!pa_cvolume_valid(&e->relative_volume) || e->relative_volume.channels != e->channel_map.channels)) ||
- (e->absolute_volume_valid && (!pa_cvolume_valid(&e->absolute_volume) || e->absolute_volume.channels != e->channel_map.channels))) {
+ if (e->volume_valid && (!pa_cvolume_valid(&e->volume) || !pa_cvolume_compatible_with_channel_map(&e->volume, &e->channel_map))) {
pa_log_warn("Invalid volume stored in database for stream %s", name);
goto fail;
}
@@ -251,14 +249,9 @@ static pa_bool_t entries_equal(const struct entry *a, const struct entry *b) {
(a->muted_valid && (a->muted != b->muted)))
return FALSE;
- t = b->relative_volume;
- if (a->relative_volume_valid != b->relative_volume_valid ||
- (a->relative_volume_valid && !pa_cvolume_equal(pa_cvolume_remap(&t, &b->channel_map, &a->channel_map), &a->relative_volume)))
- return FALSE;
-
- t = b->absolute_volume;
- if (a->absolute_volume_valid != b->absolute_volume_valid ||
- (a->absolute_volume_valid && !pa_cvolume_equal(pa_cvolume_remap(&t, &b->channel_map, &a->channel_map), &a->absolute_volume)))
+ t = b->volume;
+ if (a->volume_valid != b->volume_valid ||
+ (a->volume_valid && !pa_cvolume_equal(pa_cvolume_remap(&t, &b->channel_map, &a->channel_map), &a->volume)))
return FALSE;
return TRUE;
@@ -291,24 +284,24 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (!(name = get_name(sink_input->proplist, "sink-input")))
return;
- entry.channel_map = sink_input->channel_map;
-
- if (sink_input->sink->flags & PA_SINK_FLAT_VOLUME) {
- entry.absolute_volume = *pa_sink_input_get_volume(sink_input);
- entry.absolute_volume_valid = sink_input->save_volume;
+ if ((old = read_entry(u, name)))
+ entry = *old;
- pa_sw_cvolume_divide(&entry.relative_volume, &entry.absolute_volume, pa_sink_get_volume(sink_input->sink, FALSE));
- entry.relative_volume_valid = sink_input->save_volume;
- } else {
- entry.relative_volume = *pa_sink_input_get_volume(sink_input);
- entry.relative_volume_valid = sink_input->save_volume;
+ if (sink_input->save_volume) {
+ entry.channel_map = sink_input->channel_map;
+ pa_sink_input_get_volume(sink_input, &entry.volume, FALSE);
+ entry.volume_valid = TRUE;
}
- entry.muted = pa_sink_input_get_mute(sink_input);
- entry.muted_valid = sink_input->save_muted;
+ if (sink_input->save_muted) {
+ entry.muted = pa_sink_input_get_mute(sink_input);
+ entry.muted_valid = TRUE;
+ }
- pa_strlcpy(entry.device, sink_input->sink->name, sizeof(entry.device));
- entry.device_valid = sink_input->save_sink;
+ if (sink_input->save_sink) {
+ pa_strlcpy(entry.device, sink_input->sink->name, sizeof(entry.device));
+ entry.device_valid = TRUE;
+ }
} else {
pa_source_output *source_output;
@@ -321,13 +314,16 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (!(name = get_name(source_output->proplist, "source-output")))
return;
- entry.channel_map = source_output->channel_map;
+ if ((old = read_entry(u, name)))
+ entry = *old;
- pa_strlcpy(entry.device, source_output->source->name, sizeof(entry.device));
- entry.device_valid = source_output->save_source;
+ if (source_output->save_source) {
+ pa_strlcpy(entry.device, source_output->source->name, sizeof(entry.device));
+ entry.device_valid = source_output->save_source;
+ }
}
- if ((old = read_entry(u, name))) {
+ if (old) {
if (entries_equal(old, &entry)) {
pa_xfree(old);
@@ -402,42 +398,24 @@ static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *c, pa_sink_inpu
if ((e = read_entry(u, name))) {
- if (u->restore_volume) {
+ if (u->restore_volume && e->volume_valid) {
if (!new_data->volume_is_set) {
pa_cvolume v;
- pa_cvolume_init(&v);
-
- if (new_data->sink->flags & PA_SINK_FLAT_VOLUME) {
-
- /* We don't check for e->device_valid here because
- that bit marks whether it is a good choice for
- restoring, not just if the data is filled in. */
- if (e->absolute_volume_valid &&
- (e->device[0] == 0 || pa_streq(new_data->sink->name, e->device))) {
-
- v = e->absolute_volume;
- new_data->volume_is_absolute = TRUE;
- } else if (e->relative_volume_valid) {
- v = e->relative_volume;
- new_data->volume_is_absolute = FALSE;
- }
-
- } else if (e->relative_volume_valid) {
- v = e->relative_volume;
- new_data->volume_is_absolute = FALSE;
- }
- if (v.channels > 0) {
- pa_log_info("Restoring volume for sink input %s.", name);
- pa_sink_input_new_data_set_volume(new_data, pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map));
- new_data->save_volume = TRUE;
- }
+ pa_log_info("Restoring volume for sink input %s.", name);
+ v = e->volume;
+ pa_cvolume_remap(&v, &e->channel_map, &new_data->channel_map);
+ pa_sink_input_new_data_set_volume(new_data, &v);
+
+ new_data->volume_is_absolute = FALSE;
+ new_data->save_volume = FALSE;
} else
pa_log_debug("Not restoring volume for sink input %s, because already set.", name);
}
if (u->restore_muted && e->muted_valid) {
+
if (!new_data->muted_is_set) {
pa_log_info("Restoring mute state for sink input %s.", name);
pa_sink_input_new_data_set_muted(new_data, e->muted);
@@ -528,36 +506,21 @@ static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
if (!(n = get_name(si->proplist, "sink-input")))
continue;
- if (strcmp(name, n)) {
+ if (!pa_streq(name, n)) {
pa_xfree(n);
continue;
}
- pa_xfree(n);
+ pa_xfree(n);
- if (u->restore_volume) {
+ if (u->restore_volume && e->volume_valid) {
pa_cvolume v;
- pa_cvolume_init(&v);
-
- if (si->sink->flags & PA_SINK_FLAT_VOLUME) {
-
- if (e->absolute_volume_valid &&
- (e->device[0] == 0 || pa_streq(e->device, si->sink->name)))
- v = e->absolute_volume;
- else if (e->relative_volume_valid) {
- pa_cvolume t = *pa_sink_get_volume(si->sink, FALSE);
- pa_sw_cvolume_multiply(&v, &e->relative_volume, pa_cvolume_remap(&t, &si->sink->channel_map, &e->channel_map));
- }
- } else if (e->relative_volume_valid)
- v = e->relative_volume;
- if (v.channels > 0) {
- pa_log_info("Restoring volume for sink input %s.", name);
- pa_sink_input_set_volume(si, pa_cvolume_remap(&v, &e->channel_map, &si->channel_map), TRUE);
- }
+ v = e->volume;
+ pa_log_info("Restoring volume for sink input %s.", name);
+ pa_sink_input_set_volume(si, pa_cvolume_remap(&v, &e->channel_map, &si->channel_map), FALSE, FALSE);
}
- if (u->restore_muted &&
- e->muted_valid) {
+ if (u->restore_muted && e->muted_valid) {
pa_log_info("Restoring mute state for sink input %s.", name);
pa_sink_input_set_mute(si, e->muted, TRUE);
}
@@ -578,11 +541,11 @@ static void apply_entry(struct userdata *u, const char *name, struct entry *e) {
if (!(n = get_name(so->proplist, "source-output")))
continue;
- if (strcmp(name, n)) {
+ if (!pa_streq(name, n)) {
pa_xfree(n);
continue;
}
- pa_xfree(n);
+ pa_xfree(n);
if (u->restore_device &&
e->device_valid &&
@@ -612,10 +575,10 @@ static void dump_database(struct userdata *u) {
if ((e = read_entry(u, name))) {
char t[256];
pa_log("name=%s", name);
- pa_log("device=%s", e->device);
+ pa_log("device=%s %s", e->device, pa_yes_no(e->device_valid));
pa_log("channel_map=%s", pa_channel_map_snprint(t, sizeof(t), &e->channel_map));
- pa_log("volume=%s", pa_cvolume_snprint(t, sizeof(t), &e->volume));
- pa_log("mute=%s", pa_yes_no(e->muted));
+ pa_log("volume=%s %s", pa_cvolume_snprint(t, sizeof(t), &e->volume), pa_yes_no(e->volume_valid));
+ pa_log("mute=%s %s", pa_yes_no(e->muted), pa_yes_no(e->volume_valid));
pa_xfree(e);
}
@@ -676,8 +639,8 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
pa_channel_map cm;
pa_tagstruct_puts(reply, name);
- pa_tagstruct_put_channel_map(reply, (e->relative_volume_valid || e->absolute_volume_valid) ? &e->channel_map : pa_channel_map_init(&cm));
- pa_tagstruct_put_cvolume(reply, e->absolute_volume_valid ? &e->absolute_volume : (e->relative_volume_valid ? &e->relative_volume : pa_cvolume_init(&r)));
+ pa_tagstruct_put_channel_map(reply, e->volume_valid ? &e->channel_map : pa_channel_map_init(&cm));
+ pa_tagstruct_put_cvolume(reply, e->volume_valid ? &e->volume : pa_cvolume_init(&r));
pa_tagstruct_puts(reply, e->device_valid ? e->device : NULL);
pa_tagstruct_put_boolean(reply, e->muted_valid ? e->muted : FALSE);
@@ -720,7 +683,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
if (pa_tagstruct_gets(t, &name) < 0 ||
pa_tagstruct_get_channel_map(t, &entry.channel_map) ||
- pa_tagstruct_get_cvolume(t, &entry.absolute_volume) < 0 ||
+ pa_tagstruct_get_cvolume(t, &entry.volume) < 0 ||
pa_tagstruct_gets(t, &device) < 0 ||
pa_tagstruct_get_boolean(t, &muted) < 0)
goto fail;
@@ -728,11 +691,10 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
if (!name || !*name)
goto fail;
- entry.relative_volume = entry.absolute_volume;
- entry.absolute_volume_valid = entry.relative_volume_valid = entry.relative_volume.channels > 0;
+ entry.volume_valid = entry.volume.channels > 0;
- if (entry.relative_volume_valid)
- if (!pa_cvolume_compatible_with_channel_map(&entry.relative_volume, &entry.channel_map))
+ if (entry.volume_valid)
+ if (!pa_cvolume_compatible_with_channel_map(&entry.volume, &entry.channel_map))
goto fail;
entry.muted = muted;
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index c148884..5ea58aa 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -145,6 +145,8 @@ static void command_stream_killed(pa_pdispatch *pd, uint32_t command, uint32_t t
static void command_overflow_or_underflow(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
static void command_suspended(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
static void command_moved(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
+static void command_stream_or_client_event(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
+static void command_stream_buffer_attr_changed(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = {
#ifdef TUNNEL_SINK
@@ -159,7 +161,12 @@ static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = {
[PA_COMMAND_PLAYBACK_STREAM_SUSPENDED] = command_suspended,
[PA_COMMAND_RECORD_STREAM_SUSPENDED] = command_suspended,
[PA_COMMAND_PLAYBACK_STREAM_MOVED] = command_moved,
- [PA_COMMAND_RECORD_STREAM_MOVED] = command_moved
+ [PA_COMMAND_RECORD_STREAM_MOVED] = command_moved,
+ [PA_COMMAND_PLAYBACK_STREAM_EVENT] = command_stream_or_client_event,
+ [PA_COMMAND_RECORD_STREAM_EVENT] = command_stream_or_client_event,
+ [PA_COMMAND_CLIENT_EVENT] = command_stream_or_client_event,
+ [PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED] = command_stream_buffer_attr_changed,
+ [PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED] = command_stream_buffer_attr_changed
};
struct userdata {
@@ -196,8 +203,8 @@ struct userdata {
pa_bool_t remote_corked:1;
pa_bool_t remote_suspended:1;
- pa_usec_t transport_usec;
- pa_bool_t transport_usec_valid;
+ pa_usec_t transport_usec; /* maintained in the main thread */
+ pa_usec_t thread_transport_usec; /* maintained in the IO thread */
uint32_t ignore_latency_before;
@@ -222,6 +229,11 @@ struct userdata {
static void request_latency(struct userdata *u);
/* Called from main context */
+static void command_stream_or_client_event(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
+ pa_log_debug("Got stream or client event.");
+}
+
+/* Called from main context */
static void command_stream_killed(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
struct userdata *u = userdata;
@@ -261,11 +273,14 @@ static void command_suspended(pa_pdispatch *pd, uint32_t command, uint32_t tag
if (pa_tagstruct_getu32(t, &channel) < 0 ||
pa_tagstruct_get_boolean(t, &suspended) < 0 ||
!pa_tagstruct_eof(t)) {
- pa_log("Invalid packet");
+
+ pa_log("Invalid packet.");
pa_module_unload_request(u->module, TRUE);
return;
}
+ pa_log_debug("Server reports device suspend.");
+
#ifdef TUNNEL_SINK
pa_asyncmsgq_send(u->sink->asyncmsgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_REMOTE_SUSPEND, PA_UINT32_TO_PTR(!!suspended), 0, NULL);
#else
@@ -278,13 +293,78 @@ static void command_suspended(pa_pdispatch *pd, uint32_t command, uint32_t tag
/* Called from main context */
static void command_moved(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
struct userdata *u = userdata;
+ uint32_t channel, di;
+ const char *dn;
+ pa_bool_t suspended;
pa_assert(pd);
pa_assert(t);
pa_assert(u);
pa_assert(u->pdispatch == pd);
+ if (pa_tagstruct_getu32(t, &channel) < 0 ||
+ pa_tagstruct_getu32(t, &di) < 0 ||
+ pa_tagstruct_gets(t, &dn) < 0 ||
+ pa_tagstruct_get_boolean(t, &suspended) < 0) {
+
+ pa_log_error("Invalid packet.");
+ pa_module_unload_request(u->module, TRUE);
+ return;
+ }
+
pa_log_debug("Server reports a stream move.");
+
+#ifdef TUNNEL_SINK
+ pa_asyncmsgq_send(u->sink->asyncmsgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_REMOTE_SUSPEND, PA_UINT32_TO_PTR(!!suspended), 0, NULL);
+#else
+ pa_asyncmsgq_send(u->source->asyncmsgq, PA_MSGOBJECT(u->source), SOURCE_MESSAGE_REMOTE_SUSPEND, PA_UINT32_TO_PTR(!!suspended), 0, NULL);
+#endif
+
+ request_latency(u);
+}
+
+static void command_stream_buffer_attr_changed(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
+ struct userdata *u = userdata;
+ uint32_t channel, maxlength, tlength, fragsize, prebuf, minreq;
+ pa_usec_t usec;
+
+ pa_assert(pd);
+ pa_assert(t);
+ pa_assert(u);
+ pa_assert(u->pdispatch == pd);
+
+ if (pa_tagstruct_getu32(t, &channel) < 0 ||
+ pa_tagstruct_getu32(t, &maxlength) < 0) {
+
+ pa_log_error("Invalid packet.");
+ pa_module_unload_request(u->module, TRUE);
+ return;
+ }
+
+ if (command == PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED) {
+ if (pa_tagstruct_getu32(t, &fragsize) < 0 ||
+ pa_tagstruct_get_usec(t, &usec) < 0) {
+
+ pa_log_error("Invalid packet.");
+ pa_module_unload_request(u->module, TRUE);
+ return;
+ }
+ } else {
+ if (pa_tagstruct_getu32(t, &tlength) < 0 ||
+ pa_tagstruct_getu32(t, &prebuf) < 0 ||
+ pa_tagstruct_getu32(t, &minreq) < 0 ||
+ pa_tagstruct_get_usec(t, &usec) < 0) {
+
+ pa_log_error("Invalid packet.");
+ pa_module_unload_request(u->module, TRUE);
+ return;
+ }
+ }
+
+#ifdef TUNNEL_SINK
+ pa_log_debug("Server reports buffer attrs changed. tlength now at %lu, before %lu.", (unsigned long) tlength, (unsigned long) u->tlength);
+#endif
+
request_latency(u);
}
@@ -306,26 +386,37 @@ static void command_started(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
#endif
/* Called from IO thread context */
-static void stream_cork_within_thread(struct userdata *u, pa_bool_t cork) {
+static void check_smoother_status(struct userdata *u, pa_bool_t past) {
pa_usec_t x;
- pa_assert(u);
- if (u->remote_corked == cork)
- return;
+ pa_assert(u);
- u->remote_corked = cork;
x = pa_rtclock_usec();
- /* Correct by the time this needs to travel to the other side.
- * This is a valid thread-safe access, because the main thread is
- * waiting for us */
- if (u->transport_usec_valid)
- x += u->transport_usec;
+ /* Correct by the time the requested issued needs to travel to the
+ * other side. This is a valid thread-safe access, because the
+ * main thread is waiting for us */
+
+ if (past)
+ x -= u->thread_transport_usec;
+ else
+ x += u->thread_transport_usec;
if (u->remote_suspended || u->remote_corked)
pa_smoother_pause(u->smoother, x);
else
- pa_smoother_resume(u->smoother, x);
+ pa_smoother_resume(u->smoother, x, TRUE);
+}
+
+/* Called from IO thread context */
+static void stream_cork_within_thread(struct userdata *u, pa_bool_t cork) {
+ pa_assert(u);
+
+ if (u->remote_corked == cork)
+ return;
+
+ u->remote_corked = cork;
+ check_smoother_status(u, FALSE);
}
/* Called from main context */
@@ -352,26 +443,13 @@ static void stream_cork(struct userdata *u, pa_bool_t cork) {
/* Called from IO thread context */
static void stream_suspend_within_thread(struct userdata *u, pa_bool_t suspend) {
- pa_usec_t x;
pa_assert(u);
if (u->remote_suspended == suspend)
return;
u->remote_suspended = suspend;
-
- x = pa_rtclock_usec();
-
- /* Correct by the time this needed to travel from the other side.
- * This is a valid thread-safe access, because the main thread is
- * waiting for us */
- if (u->transport_usec_valid)
- x -= u->transport_usec;
-
- if (u->remote_suspended || u->remote_corked)
- pa_smoother_pause(u->smoother, x);
- else
- pa_smoother_resume(u->smoother, x);
+ check_smoother_status(u, TRUE);
}
#ifdef TUNNEL_SINK
@@ -446,13 +524,16 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
y = pa_bytes_to_usec((uint64_t) u->counter, &u->sink->sample_spec);
- if (y > (pa_usec_t) offset || offset < 0)
+ if (y > (pa_usec_t) offset)
y -= (pa_usec_t) offset;
else
y = 0;
pa_smoother_put(u->smoother, pa_rtclock_usec(), y);
+ /* We can access this freely here, since the main thread is waiting for us */
+ u->thread_transport_usec = u->transport_usec;
+
return 0;
}
@@ -546,14 +627,13 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
pa_usec_t y;
y = pa_bytes_to_usec((uint64_t) u->counter, &u->source->sample_spec);
-
- if (offset >= 0 || y > (pa_usec_t) -offset)
- y += (pa_usec_t) offset;
- else
- y = 0;
+ y += (pa_usec_t) offset;
pa_smoother_put(u->smoother, pa_rtclock_usec(), y);
+ /* We can access this freely here, since the main thread is waiting for us */
+ u->thread_transport_usec = u->transport_usec;
+
return 0;
}
}
@@ -606,7 +686,7 @@ static void thread_func(void *userdata) {
#ifdef TUNNEL_SINK
if (PA_SINK_IS_OPENED(u->sink->thread_info.state))
- if (u->sink->thread_info.rewind_requested)
+ if (PA_UNLIKELY(u->sink->thread_info.rewind_requested))
pa_sink_process_rewind(u->sink, 0);
#endif
@@ -662,7 +742,7 @@ fail:
/* Called from main context */
static void stream_get_latency_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
struct userdata *u = userdata;
- pa_usec_t sink_usec, source_usec, transport_usec = 0;
+ pa_usec_t sink_usec, source_usec;
pa_bool_t playing;
int64_t write_index, read_index;
struct timeval local, remote, now;
@@ -709,7 +789,6 @@ static void stream_get_latency_callback(pa_pdispatch *pd, uint32_t command, uint
}
if (tag < u->ignore_latency_before) {
- request_latency(u);
return;
}
@@ -725,7 +804,6 @@ static void stream_get_latency_callback(pa_pdispatch *pd, uint32_t command, uint
#endif
} else
u->transport_usec = pa_timeval_diff(&now, &local)/2;
- u->transport_usec_valid = TRUE;
/* First, take the device's delay */
#ifdef TUNNEL_SINK
@@ -745,9 +823,9 @@ static void stream_get_latency_callback(pa_pdispatch *pd, uint32_t command, uint
/* Our measurements are already out of date, hence correct by the *
* transport latency */
#ifdef TUNNEL_SINK
- delay -= (int64_t) transport_usec;
+ delay -= (int64_t) u->transport_usec;
#else
- delay += (int64_t) transport_usec;
+ delay += (int64_t) u->transport_usec;
#endif
/* Now correct by what we have have read/written since we requested the update */
@@ -786,8 +864,7 @@ static void request_latency(struct userdata *u) {
pa_tagstruct_putu32(t, tag = u->ctag++);
pa_tagstruct_putu32(t, u->channel);
- pa_gettimeofday(&now);
- pa_tagstruct_put_timeval(t, &now);
+ pa_tagstruct_put_timeval(t, pa_gettimeofday(&now));
pa_pstream_send_tagstruct(u->pstream, t);
pa_pdispatch_register_reply(u->pdispatch, tag, DEFAULT_TIMEOUT, stream_get_latency_callback, u, NULL);
@@ -861,6 +938,7 @@ static void update_description(struct userdata *u) {
static void server_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
struct userdata *u = userdata;
pa_sample_spec ss;
+ pa_channel_map cm;
const char *server_name, *server_version, *user_name, *host_name, *default_sink_name, *default_source_name;
uint32_t cookie;
@@ -882,7 +960,9 @@ static void server_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
pa_tagstruct_get_sample_spec(t, &ss) < 0 ||
pa_tagstruct_gets(t, &default_sink_name) < 0 ||
pa_tagstruct_gets(t, &default_source_name) < 0 ||
- pa_tagstruct_getu32(t, &cookie) < 0) {
+ pa_tagstruct_getu32(t, &cookie) < 0 ||
+ (u->version >= 15 &&
+ pa_tagstruct_get_channel_map(t, &cm) < 0)) {
pa_log("Parse failure");
goto fail;
@@ -963,6 +1043,20 @@ static void sink_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_t
}
}
+ if (u->version >= 15) {
+ pa_volume_t base_volume;
+ uint32_t state, n_volume_steps, card;
+
+ if (pa_tagstruct_get_volume(t, &base_volume) < 0 ||
+ pa_tagstruct_getu32(t, &state) < 0 ||
+ pa_tagstruct_getu32(t, &n_volume_steps) < 0 ||
+ pa_tagstruct_getu32(t, &card) < 0) {
+
+ pa_log("Parse failure");
+ goto fail;
+ }
+ }
+
if (!pa_tagstruct_eof(t)) {
pa_log("Packet too long");
goto fail;
@@ -1059,12 +1153,11 @@ static void sink_input_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag
pa_cvolume_equal(&volume, &u->sink->virtual_volume))
return;
- memcpy(&u->sink->virtual_volume, &volume, sizeof(pa_cvolume));
+ pa_sink_volume_changed(u->sink, &volume);
if (u->version >= 11)
- u->sink->muted = !!mute;
+ pa_sink_mute_changed(u->sink, mute);
- pa_subscription_post(u->sink->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, u->sink->index);
return;
fail:
@@ -1126,6 +1219,20 @@ static void source_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa
}
}
+ if (u->version >= 15) {
+ pa_volume_t base_volume;
+ uint32_t state, n_volume_steps, card;
+
+ if (pa_tagstruct_get_volume(t, &base_volume) < 0 ||
+ pa_tagstruct_getu32(t, &state) < 0 ||
+ pa_tagstruct_getu32(t, &n_volume_steps) < 0 ||
+ pa_tagstruct_getu32(t, &card) < 0) {
+
+ pa_log("Parse failure");
+ goto fail;
+ }
+ }
+
if (!pa_tagstruct_eof(t)) {
pa_log("Packet too long");
goto fail;
@@ -1314,11 +1421,11 @@ static void create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t
if (pa_tagstruct_get_usec(t, &usec) < 0)
goto parse_error;
-#ifdef TUNNEL_SINK
- pa_sink_set_latency_range(u->sink, usec + MIN_NETWORK_LATENCY_USEC, 0);
-#else
- pa_source_set_latency_range(u->source, usec + MIN_NETWORK_LATENCY_USEC, 0);
-#endif
+/* #ifdef TUNNEL_SINK */
+/* pa_sink_set_latency_range(u->sink, usec + MIN_NETWORK_LATENCY_USEC, 0); */
+/* #else */
+/* pa_source_set_latency_range(u->source, usec + MIN_NETWORK_LATENCY_USEC, 0); */
+/* #endif */
}
if (!pa_tagstruct_eof(t))
@@ -1391,11 +1498,17 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t
pa_log_debug("Protocol version: remote %u, local %u", u->version, PA_PROTOCOL_VERSION);
#ifdef TUNNEL_SINK
+ pa_proplist_setf(u->sink->proplist, "tunnel.remote_version", "%u", u->version);
+ pa_sink_update_proplist(u->sink, 0, NULL);
+
pa_snprintf(name, sizeof(name), "%s for %s@%s",
u->sink_name,
pa_get_user_name(un, sizeof(un)),
pa_get_host_name(hn, sizeof(hn)));
#else
+ pa_proplist_setf(u->source->proplist, "tunnel.remote_version", "%u", u->version);
+ pa_source_update_proplist(u->source, 0, NULL);
+
pa_snprintf(name, sizeof(name), "%s for %s@%s",
u->source_name,
pa_get_user_name(un, sizeof(un)),
@@ -1409,9 +1522,9 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t
if (u->version >= 13) {
pa_proplist *pl;
pl = pa_proplist_new();
- pa_init_proplist(pl);
pa_proplist_sets(pl, PA_PROP_APPLICATION_ID, "org.PulseAudio.PulseAudio");
pa_proplist_sets(pl, PA_PROP_APPLICATION_VERSION, PACKAGE_VERSION);
+ pa_init_proplist(pl);
pa_tagstruct_put_proplist(reply, pl);
pa_proplist_free(pl);
} else
@@ -1503,6 +1616,14 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t
pa_tagstruct_put_boolean(reply, TRUE); /* early rquests */
}
+ if (u->version >= 15) {
+#ifdef TUNNEL_SINK
+ pa_tagstruct_put_boolean(reply, FALSE); /* muted_set */
+#endif
+ pa_tagstruct_put_boolean(reply, FALSE); /* don't inhibit auto suspend */
+ pa_tagstruct_put_boolean(reply, FALSE); /* fail on suspend */
+ }
+
pa_pstream_send_tagstruct(u->pstream, reply);
pa_pdispatch_register_reply(u->pdispatch, tag, DEFAULT_TIMEOUT, create_stream_callback, u, NULL);
@@ -1559,7 +1680,6 @@ static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t o
u->counter_delta += (int64_t) chunk->length;
}
-
#endif
/* Called from main context */
@@ -1695,13 +1815,19 @@ int pa__init(pa_module*m) {
u->source_name = pa_xstrdup(pa_modargs_get_value(ma, "source", NULL));;
u->source = NULL;
#endif
- u->smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC*2, TRUE, 10);
+ u->smoother = pa_smoother_new(
+ PA_USEC_PER_SEC,
+ PA_USEC_PER_SEC*2,
+ TRUE,
+ TRUE,
+ 10,
+ pa_rtclock_usec(),
+ FALSE);
u->ctag = 1;
u->device_index = u->channel = PA_INVALID_INDEX;
u->time_event = NULL;
u->ignore_latency_before = 0;
- u->transport_usec = 0;
- u->transport_usec_valid = FALSE;
+ u->transport_usec = u->thread_transport_usec = 0;
u->remote_suspended = u->remote_corked = FALSE;
u->counter = u->counter_delta = 0;
@@ -1747,7 +1873,7 @@ int pa__init(pa_module*m) {
if (u->sink_name)
pa_proplist_sets(data.proplist, "tunnel.remote.sink", u->sink_name);
- u->sink = pa_sink_new(m->core, &data, PA_SINK_NETWORK|PA_SINK_LATENCY|PA_SINK_HW_VOLUME_CTRL);
+ 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);
if (!u->sink) {
@@ -1763,7 +1889,7 @@ int pa__init(pa_module*m) {
u->sink->refresh_volume = u->sink->refresh_muted = FALSE;
- pa_sink_set_latency_range(u->sink, MIN_NETWORK_LATENCY_USEC, 0);
+/* pa_sink_set_latency_range(u->sink, MIN_NETWORK_LATENCY_USEC, 0); */
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
@@ -1797,7 +1923,7 @@ int pa__init(pa_module*m) {
u->source->set_state = source_set_state;
u->source->userdata = u;
- pa_source_set_latency_range(u->source, MIN_NETWORK_LATENCY_USEC, 0);
+/* pa_source_set_latency_range(u->source, MIN_NETWORK_LATENCY_USEC, 0); */
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll);
@@ -1807,15 +1933,13 @@ int pa__init(pa_module*m) {
u->time_event = NULL;
- u->maxlength = 0;
+ u->maxlength = (uint32_t) -1;
#ifdef TUNNEL_SINK
- u->tlength = u->minreq = u->prebuf = 0;
+ u->tlength = u->minreq = u->prebuf = (uint32_t) -1;
#else
- u->fragsize = 0;
+ u->fragsize = (uint32_t) -1;
#endif
- pa_smoother_set_time_offset(u->smoother, pa_rtclock_usec());
-
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log("Failed to create thread.");
goto fail;
diff --git a/src/modules/module-x11-publish.c b/src/modules/module-x11-publish.c
index 7d71067..2c7fdc1 100644
--- a/src/modules/module-x11-publish.c
+++ b/src/modules/module-x11-publish.c
@@ -136,7 +136,7 @@ static void x11_kill_cb(pa_x11_wrapper *w, void *userdata) {
int pa__init(pa_module*m) {
struct userdata *u;
pa_modargs *ma = NULL;
- char hn[256], un[128];
+ char *mid, *sid;
char hx[PA_NATIVE_COOKIE_LENGTH*2+1];
const char *t;
@@ -164,12 +164,17 @@ int pa__init(pa_module*m) {
if (!(u->x11_wrapper = pa_x11_wrapper_get(m->core, pa_modargs_get_value(ma, "display", NULL))))
goto fail;
- if (!pa_get_fqdn(hn, sizeof(hn)) || !pa_get_user_name(un, sizeof(un)))
- goto fail;
+ mid = pa_machine_id();
+ u->id = pa_sprintf_malloc("%lu@%s/%lu", (unsigned long) getuid(), mid, (unsigned long) getpid());
+ pa_xfree(mid);
- u->id = pa_sprintf_malloc("%s@%s/%u", un, hn, (unsigned) getpid());
pa_x11_set_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_ID", u->id);
+ if ((sid = pa_session_id())) {
+ pa_x11_set_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_SESSION_ID", sid);
+ pa_xfree(sid);
+ }
+
publish_servers(u, pa_native_protocol_servers(u->protocol));
if ((t = pa_modargs_get_value(ma, "source", NULL)))
@@ -219,6 +224,7 @@ void pa__done(pa_module*m) {
pa_x11_del_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_SINK");
pa_x11_del_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_SOURCE");
pa_x11_del_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_COOKIE");
+ pa_x11_del_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_SESSION_ID");
XSync(pa_x11_wrapper_get_display(u->x11_wrapper), False);
}
diff --git a/src/modules/module-zeroconf-discover.c b/src/modules/module-zeroconf-discover.c
index 3da946e..1fdc1f4 100644
--- a/src/modules/module-zeroconf-discover.c
+++ b/src/modules/module-zeroconf-discover.c
@@ -279,7 +279,7 @@ static void browser_cb(
pa_log("avahi_service_resolver_new() failed: %s", avahi_strerror(avahi_client_errno(u->client)));
/* We ignore the returned resolver object here, since the we don't
- * need to attach any special data to it, and we can still destory
+ * need to attach any special data to it, and we can still destroy
* it from the callback */
} else if (event == AVAHI_BROWSER_REMOVE) {
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index 7bce8d0..9f7863f 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -617,7 +617,7 @@ static int unsuspend(struct userdata *u) {
build_pollfd(u);
if (u->sink)
- pa_sink_get_volume(u->sink, TRUE);
+ pa_sink_get_volume(u->sink, TRUE, FALSE);
if (u->source)
pa_source_get_volume(u->source, TRUE);
@@ -1326,6 +1326,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->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 +1388,9 @@ int pa__init(pa_module*m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
u->sink->refresh_volume = TRUE;
+ u->sink->fixed_latency = pa_bytes_to_usec(u->out_hwbuf_size, &u->sink->sample_spec);
- u->sink->thread_info.max_request = u->out_hwbuf_size;
+ pa_sink_set_max_request(u->sink, u->out_hwbuf_size);
if (use_mmap)
u->out_mmap_memblocks = pa_xnew0(pa_memblock*, u->out_nfrags);
diff --git a/src/modules/reserve-wrap.c b/src/modules/reserve-wrap.c
index 7d33927..02ff29b 100644
--- a/src/modules/reserve-wrap.c
+++ b/src/modules/reserve-wrap.c
@@ -23,14 +23,15 @@
#include <config.h>
#endif
+#include <errno.h>
+
#include <pulse/xmalloc.h>
#include <pulse/i18n.h>
#include <pulsecore/core-error.h>
#include <pulsecore/core-util.h>
#include <pulsecore/shared.h>
-
-#include <modules/dbus-util.h>
+#include <pulsecore/dbus-shared.h>
#include "reserve.h"
#include "reserve-wrap.h"
@@ -112,8 +113,11 @@ pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name)
pa_assert_se(pa_shared_set(c, r->shared_name, r) >= 0);
if (!(r->connection = pa_dbus_bus_get(c, DBUS_BUS_SESSION, &error)) || dbus_error_is_set(&error)) {
- pa_log_error("Unable to contact D-Bus session bus: %s: %s", error.name, error.message);
- goto fail;
+ 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 r;
}
if ((k = rd_acquire(
@@ -125,8 +129,13 @@ pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name)
request_cb,
NULL)) < 0) {
- pa_log_error("Failed to acquire reservation lock on device '%s': %s", device_name, pa_cstrerror(-k));
- goto fail;
+ if (k == -EBUSY) {
+ pa_log_error("Device '%s' already locked.", device_name);
+ goto fail;
+ } else {
+ pa_log_warn("Failed to acquire reservation lock on device '%s': %s", device_name, pa_cstrerror(-k));
+ return r;
+ }
}
pa_log_debug("Successfully acquired reservation lock on device '%s'", device_name);
diff --git a/src/modules/rtp/module-rtp-recv.c b/src/modules/rtp/module-rtp-recv.c
index 33e23af..c61d2d8 100644
--- a/src/modules/rtp/module-rtp-recv.c
+++ b/src/modules/rtp/module-rtp-recv.c
@@ -52,6 +52,8 @@
#include <pulsecore/rtclock.h>
#include <pulsecore/atomic.h>
#include <pulsecore/time-smoother.h>
+#include <pulsecore/socket-util.h>
+#include <pulsecore/once.h>
#include "module-rtp-recv-symdef.h"
@@ -165,7 +167,7 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_memblockq_rewind(s->memblockq, nbytes);
}
-/* Called from thread context */
+/* Called from I/O thread context */
static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
struct session *s;
@@ -184,11 +186,24 @@ static void sink_input_kill(pa_sink_input* i) {
session_free(s);
}
+/* Called from IO context */
+static void sink_input_suspend_within_thread(pa_sink_input* i, pa_bool_t b) {
+ struct session *s;
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(s = i->userdata);
+
+ if (b) {
+ pa_smoother_pause(s->smoother, pa_rtclock_usec());
+ pa_memblockq_flush_read(s->memblockq);
+ } else
+ s->first_packet = FALSE;
+}
+
/* Called from I/O thread context */
static int rtpoll_work_cb(pa_rtpoll_item *i) {
pa_memchunk chunk;
int64_t k, j, delta;
- struct timeval now;
+ struct timeval now = { 0, 0 };
struct session *s;
struct pollfd *p;
@@ -206,10 +221,11 @@ static int rtpoll_work_cb(pa_rtpoll_item *i) {
p->revents = 0;
- if (pa_rtp_recv(&s->rtp_context, &chunk, s->userdata->module->core->mempool) < 0)
+ if (pa_rtp_recv(&s->rtp_context, &chunk, s->userdata->module->core->mempool, &now) < 0)
return 0;
- if (s->sdp_info.payload != s->rtp_context.payload) {
+ if (s->sdp_info.payload != s->rtp_context.payload ||
+ !PA_SINK_IS_OPENED(s->sink_input->sink->thread_info.state)) {
pa_memblock_unref(chunk.memblock);
return 0;
}
@@ -229,7 +245,7 @@ static int rtpoll_work_cb(pa_rtpoll_item *i) {
}
}
- /* Check wheter there was a timestamp overflow */
+ /* Check whether there was a timestamp overflow */
k = (int64_t) s->rtp_context.timestamp - (int64_t) s->offset;
j = (int64_t) 0x100000000LL - (int64_t) s->offset + (int64_t) s->rtp_context.timestamp;
@@ -238,15 +254,24 @@ static int rtpoll_work_cb(pa_rtpoll_item *i) {
else
delta = j;
- pa_memblockq_seek(s->memblockq, delta * (int64_t) s->rtp_context.frame_size, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(s->memblockq, delta * (int64_t) s->rtp_context.frame_size, PA_SEEK_RELATIVE, TRUE);
- pa_rtclock_get(&now);
+ if (now.tv_sec == 0) {
+ PA_ONCE_BEGIN {
+ pa_log_warn("Using artificial time instead of timestamp");
+ } PA_ONCE_END;
+ pa_rtclock_get(&now);
+ } else
+ pa_rtclock_from_wallclock(&now);
pa_smoother_put(s->smoother, pa_timeval_load(&now), pa_bytes_to_usec((uint64_t) pa_memblockq_get_write_index(s->memblockq), &s->sink_input->sample_spec));
+ /* Tell the smoother that we are rolling now, in case it is still paused */
+ pa_smoother_resume(s->smoother, pa_timeval_load(&now), TRUE);
+
if (pa_memblockq_push(s->memblockq, &chunk) < 0) {
pa_log_warn("Queue overrun");
- pa_memblockq_seek(s->memblockq, (int64_t) chunk.length, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(s->memblockq, (int64_t) chunk.length, PA_SEEK_RELATIVE, TRUE);
}
/* pa_log("blocks in q: %u", pa_memblockq_get_nblocks(s->memblockq)); */
@@ -262,14 +287,14 @@ static int rtpoll_work_cb(pa_rtpoll_item *i) {
pa_usec_t wi, ri, render_delay, sink_delay = 0, latency, fix;
unsigned fix_samples;
- pa_log("Updating sample rate");
+ pa_log_debug("Updating sample rate");
wi = pa_smoother_get(s->smoother, pa_timeval_load(&now));
ri = pa_bytes_to_usec((uint64_t) pa_memblockq_get_read_index(s->memblockq), &s->sink_input->sample_spec);
- if (PA_MSGOBJECT(s->sink_input->sink)->process_msg(PA_MSGOBJECT(s->sink_input->sink), PA_SINK_MESSAGE_GET_LATENCY, &sink_delay, 0, NULL) < 0)
- sink_delay = 0;
+ pa_log_debug("wi=%lu ri=%lu", (unsigned long) wi, (unsigned long) ri);
+ sink_delay = pa_sink_get_latency_within_thread(s->sink_input->sink);
render_delay = pa_bytes_to_usec(pa_memblockq_get_length(s->sink_input->thread_info.render_memblockq), &s->sink_input->sink->sample_spec);
if (ri > render_delay+sink_delay)
@@ -294,14 +319,20 @@ static int rtpoll_work_cb(pa_rtpoll_item *i) {
fix_samples = (unsigned) (fix * (pa_usec_t) s->sink_input->thread_info.sample_spec.rate / (pa_usec_t) RATE_UPDATE_INTERVAL);
/* Check if deviation is in bounds */
- if (fix_samples > s->sink_input->sample_spec.rate*.20)
+ if (fix_samples > s->sink_input->sample_spec.rate*.50)
pa_log_debug("Hmmm, rate fix is too large (%lu Hz), not applying.", (unsigned long) fix_samples);
+ else {
+ /* Fix up rate */
+ if (latency < s->intended_latency)
+ s->sink_input->sample_spec.rate -= fix_samples;
+ else
+ s->sink_input->sample_spec.rate += fix_samples;
+
+ if (s->sink_input->sample_spec.rate > PA_RATE_MAX)
+ s->sink_input->sample_spec.rate = PA_RATE_MAX;
+ }
- /* Fix up rate */
- if (latency < s->intended_latency)
- s->sink_input->sample_spec.rate -= fix_samples;
- else
- s->sink_input->sample_spec.rate += fix_samples;
+ pa_assert(pa_sample_spec_valid(&s->sink_input->sample_spec));
pa_resampler_set_input_rate(s->sink_input->thread_info.resampler, s->sink_input->sample_spec.rate);
@@ -362,6 +393,14 @@ static int mcast_socket(const struct sockaddr* sa, socklen_t salen) {
goto fail;
}
+ pa_make_udp_socket_low_delay(fd);
+
+ one = 1;
+ if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMP, &one, sizeof(one)) < 0) {
+ pa_log("SO_TIMESTAMP failed: %s", pa_cstrerror(errno));
+ goto fail;
+ }
+
one = 1;
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) < 0) {
pa_log("SO_REUSEADDR failed: %s", pa_cstrerror(errno));
@@ -430,8 +469,14 @@ static struct session *session_new(struct userdata *u, const pa_sdp_info *sdp_in
s->sdp_info = *sdp_info;
s->rtpoll_item = NULL;
s->intended_latency = LATENCY_USEC;
- s->smoother = pa_smoother_new(PA_USEC_PER_SEC*5, PA_USEC_PER_SEC*2, TRUE, 10);
- pa_smoother_set_time_offset(s->smoother, pa_timeval_load(&now));
+ s->smoother = pa_smoother_new(
+ PA_USEC_PER_SEC*5,
+ PA_USEC_PER_SEC*2,
+ TRUE,
+ TRUE,
+ 10,
+ pa_timeval_load(&now),
+ TRUE);
s->last_rate_update = pa_timeval_load(&now);
pa_atomic_store(&s->timestamp, (int) now.tv_sec);
@@ -472,6 +517,7 @@ static struct session *session_new(struct userdata *u, const pa_sdp_info *sdp_in
s->sink_input->kill = sink_input_kill;
s->sink_input->attach = sink_input_attach;
s->sink_input->detach = sink_input_detach;
+ s->sink_input->suspend_within_thread = sink_input_suspend_within_thread;
pa_sink_input_get_silence(s->sink_input, &silence);
@@ -648,8 +694,7 @@ int pa__init(pa_module*m) {
if ((fd = mcast_socket(sa, salen)) < 0)
goto fail;
- u = pa_xnew(struct userdata, 1);
- m->userdata = u;
+ m->userdata = u = pa_xnew(struct userdata, 1);
u->module = m;
u->sink_name = pa_xstrdup(pa_modargs_get_value(ma, "sink", NULL));
diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c
index 722d12b..cdd2c57 100644
--- a/src/modules/rtp/module-rtp-send.c
+++ b/src/modules/rtp/module-rtp-send.c
@@ -347,10 +347,10 @@ int pa__init(pa_module*m) {
o->push = source_output_push;
o->kill = source_output_kill;
- u = pa_xnew(struct userdata, 1);
- m->userdata = u;
- o->userdata = u;
+ 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);
+ m->userdata = o->userdata = u = pa_xnew(struct userdata, 1);
u->module = m;
u->source_output = o;
diff --git a/src/modules/rtp/rtp.c b/src/modules/rtp/rtp.c
index 7537c1f..6706a10 100644
--- a/src/modules/rtp/rtp.c
+++ b/src/modules/rtp/rtp.c
@@ -162,13 +162,16 @@ pa_rtp_context* pa_rtp_context_init_recv(pa_rtp_context *c, int fd, size_t frame
return c;
}
-int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool) {
+int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, struct timeval *tstamp) {
int size;
struct msghdr m;
+ struct cmsghdr *cm;
struct iovec iov;
uint32_t header;
unsigned cc;
ssize_t r;
+ uint8_t aux[1024];
+ pa_bool_t found_tstamp = FALSE;
pa_assert(c);
pa_assert(chunk);
@@ -208,8 +211,8 @@ int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool) {
m.msg_namelen = 0;
m.msg_iov = &iov;
m.msg_iovlen = 1;
- m.msg_control = NULL;
- m.msg_controllen = 0;
+ m.msg_control = aux;
+ m.msg_controllen = sizeof(aux);
m.msg_flags = 0;
r = recvmsg(c->fd, &m, 0);
@@ -275,6 +278,18 @@ int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool) {
pa_memchunk_reset(&c->memchunk);
}
+ for (cm = CMSG_FIRSTHDR(&m); cm; cm = CMSG_NXTHDR(&m, cm)) {
+ if (cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SO_TIMESTAMP)
+ memcpy(tstamp, CMSG_DATA(cm), sizeof(struct timeval));
+ found_tstamp = TRUE;
+ break;
+ }
+
+ if (!found_tstamp) {
+ pa_log_warn("Couldn't find SO_TIMESTAMP data in auxiliary recvmsg() data!");
+ memset(tstamp, 0, sizeof(tstamp));
+ }
+
return 0;
fail:
diff --git a/src/modules/rtp/rtp.h b/src/modules/rtp/rtp.h
index eff5e75..b197e82 100644
--- a/src/modules/rtp/rtp.h
+++ b/src/modules/rtp/rtp.h
@@ -43,7 +43,7 @@ pa_rtp_context* pa_rtp_context_init_send(pa_rtp_context *c, int fd, uint32_t ssr
int pa_rtp_send(pa_rtp_context *c, size_t size, pa_memblockq *q);
pa_rtp_context* pa_rtp_context_init_recv(pa_rtp_context *c, int fd, size_t frame_size);
-int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool);
+int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, struct timeval *tstamp);
void pa_rtp_context_destroy(pa_rtp_context *c);
diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c
index 98db05d..629328a 100644
--- a/src/modules/rtp/rtsp_client.c
+++ b/src/modules/rtp/rtsp_client.c
@@ -211,7 +211,7 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
}
if (!strlen(s2)) {
/* End of headers */
- /* We will have a header left from our looping itteration, so add it in :) */
+ /* We will have a header left from our looping iteration, so add it in :) */
if (c->last_header) {
/* This is not a continuation header so let's dump it into our proplist */
pa_headerlist_puts(c->response_headers, c->last_header, pa_strbuf_tostring_free(c->header_buffer));
@@ -488,7 +488,7 @@ int pa_rtsp_record(pa_rtsp_client* c, uint16_t* seq, uint32_t* rtptime) {
pa_assert(c);
if (!c->session) {
- /* No seesion in progres */
+ /* No session in progress */
return -1;
}
diff --git a/src/modules/udev-util.c b/src/modules/udev-util.c
index 8ffb76a..144ad79 100644
--- a/src/modules/udev-util.c
+++ b/src/modules/udev-util.c
@@ -61,7 +61,7 @@ static int read_id(struct udev_device *d, const char *n) {
int pa_udev_get_info(pa_core *core, pa_proplist *p, int card_idx) {
int r = -1;
struct udev *udev;
- struct udev_device *card;
+ struct udev_device *card = NULL;
char *t;
const char *v;
int id;
@@ -89,7 +89,7 @@ int pa_udev_get_info(pa_core *core, pa_proplist *p, int card_idx) {
pa_proplist_sets(p, PA_PROP_DEVICE_BUS, v);
if (!pa_proplist_contains(p, PA_PROP_DEVICE_VENDOR_ID))
- if ((id = read_id(card, "ID_VENDOR_ID")) > 0 && *v)
+ if ((id = read_id(card, "ID_VENDOR_ID")) > 0)
pa_proplist_setf(p, PA_PROP_DEVICE_VENDOR_ID, "%04x", id);
if (!pa_proplist_contains(p, PA_PROP_DEVICE_VENDOR_NAME)) {
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index eef0ac1..d4db45b 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -50,7 +50,7 @@
* \li pa_channel_map_init_stereo() - Create a standard stereo mapping.
* \li pa_channel_map_init_auto() - Create a standard channel map for a specific number of channels
* \li pa_channel_map_init_extend() - Similar to
- * pa_channel_map_init_auto() but synthesize a channel map if noone
+ * pa_channel_map_init_auto() but synthesize a channel map if no
* predefined one is known for the specified number of channels.
*
* \section conv_sec Convenience Functions
@@ -251,7 +251,7 @@ typedef struct pa_channel_map {
* pa_channel_map_valid() will fail for it. */
pa_channel_map* pa_channel_map_init(pa_channel_map *m);
-/** Initialize the specified channel map for monoaural audio and return a pointer to it */
+/** Initialize the specified channel map for monaural audio and return a pointer to it */
pa_channel_map* pa_channel_map_init_mono(pa_channel_map *m);
/** Initialize the specified channel map for stereophonic audio and return a pointer to it */
@@ -282,7 +282,7 @@ const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos);
* it might become part of an ABI. */
#define PA_CHANNEL_MAP_SNPRINT_MAX 336
-/** Make a humand readable string from the specified channel map */
+/** Make a human readable string from the specified channel map */
char* pa_channel_map_snprint(char *s, size_t l, const pa_channel_map *map);
/** Parse a channel position list or well-known mapping name into a
diff --git a/src/pulse/client-conf-x11.c b/src/pulse/client-conf-x11.c
index 3bec742..4970363 100644
--- a/src/pulse/client-conf-x11.c
+++ b/src/pulse/client-conf-x11.c
@@ -57,8 +57,23 @@ int pa_client_conf_from_x11(pa_client_conf *c, const char *dname) {
}
if (pa_x11_get_prop(d, "PULSE_SERVER", t, sizeof(t))) {
+ pa_bool_t disable_autospawn = TRUE;
+
pa_xfree(c->default_server);
c->default_server = pa_xstrdup(t);
+
+ if (pa_x11_get_prop(d, "PULSE_SESSION_ID", t, sizeof(t))) {
+ char *id;
+
+ if ((id = pa_session_id())) {
+ if (pa_streq(t, id))
+ disable_autospawn = FALSE;
+ pa_xfree(id);
+ }
+ }
+
+ if (disable_autospawn)
+ c->autospawn = FALSE;
}
if (pa_x11_get_prop(d, "PULSE_SINK", t, sizeof(t))) {
diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c
index 58bc3f9..940d0b6 100644
--- a/src/pulse/client-conf.c
+++ b/src/pulse/client-conf.c
@@ -92,28 +92,18 @@ int pa_client_conf_load(pa_client_conf *c, const char *filename) {
/* Prepare the configuration parse table */
pa_config_item table[] = {
- { "daemon-binary", pa_config_parse_string, NULL, NULL },
- { "extra-arguments", pa_config_parse_string, NULL, NULL },
- { "default-sink", pa_config_parse_string, NULL, NULL },
- { "default-source", pa_config_parse_string, NULL, NULL },
- { "default-server", pa_config_parse_string, NULL, NULL },
- { "autospawn", pa_config_parse_bool, NULL, NULL },
- { "cookie-file", pa_config_parse_string, NULL, NULL },
- { "disable-shm", pa_config_parse_bool, NULL, NULL },
- { "shm-size-bytes", pa_config_parse_size, NULL, NULL },
+ { "daemon-binary", pa_config_parse_string, &c->daemon_binary, NULL },
+ { "extra-arguments", pa_config_parse_string, &c->extra_arguments, NULL },
+ { "default-sink", pa_config_parse_string, &c->default_sink, NULL },
+ { "default-source", pa_config_parse_string, &c->default_source, NULL },
+ { "default-server", pa_config_parse_string, &c->default_server, NULL },
+ { "autospawn", pa_config_parse_bool, &c->autospawn, NULL },
+ { "cookie-file", pa_config_parse_string, &c->cookie_file, NULL },
+ { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
+ { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL },
{ NULL, NULL, NULL, NULL },
};
- table[0].data = &c->daemon_binary;
- table[1].data = &c->extra_arguments;
- table[2].data = &c->default_sink;
- table[3].data = &c->default_source;
- table[4].data = &c->default_server;
- table[5].data = &c->autospawn;
- table[6].data = &c->cookie_file;
- table[7].data = &c->disable_shm;
- table[8].data = &c->shm_size;
-
if (filename) {
if (!(f = fopen(filename, "r"))) {
@@ -160,6 +150,9 @@ int pa_client_conf_env(pa_client_conf *c) {
if ((e = getenv(ENV_DEFAULT_SERVER))) {
pa_xfree(c->default_server);
c->default_server = pa_xstrdup(e);
+
+ /* We disable autospawning automatically if a specific server was set */
+ c->autospawn = FALSE;
}
if ((e = getenv(ENV_DAEMON_BINARY))) {
diff --git a/src/pulse/client-conf.h b/src/pulse/client-conf.h
index 78844a1..ab97dc6 100644
--- a/src/pulse/client-conf.h
+++ b/src/pulse/client-conf.h
@@ -38,7 +38,7 @@ typedef struct pa_client_conf {
pa_client_conf *pa_client_conf_new(void);
void pa_client_conf_free(pa_client_conf *c);
-/* Load the configuration data from the speicified file, overwriting
+/* Load the configuration data from the specified file, overwriting
* the current settings in *c. When the filename is NULL, the
* default client configuration file name is used. */
int pa_client_conf_load(pa_client_conf *c, const char *filename);
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 00dffc2..4aad737 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -99,10 +99,16 @@ static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = {
[PA_COMMAND_EXTENSION] = pa_command_extension,
[PA_COMMAND_PLAYBACK_STREAM_EVENT] = pa_command_stream_event,
[PA_COMMAND_RECORD_STREAM_EVENT] = pa_command_stream_event,
- [PA_COMMAND_CLIENT_EVENT] = pa_command_client_event
+ [PA_COMMAND_CLIENT_EVENT] = pa_command_client_event,
+ [PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED] = pa_command_stream_buffer_attr,
+ [PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED] = pa_command_stream_buffer_attr
};
static void context_free(pa_context *c);
+#ifdef HAVE_DBUS
+static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, void *userdata);
+#endif
+
pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name) {
return pa_context_new_with_proplist(mainloop, name, NULL);
}
@@ -141,6 +147,9 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
if (name)
pa_proplist_sets(c->proplist, PA_PROP_APPLICATION_NAME, name);
+#ifdef HAVE_DBUS
+ c->system_bus = c->session_bus = NULL;
+#endif
c->mainloop = mainloop;
c->client = NULL;
c->pstream = NULL;
@@ -165,6 +174,8 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
c->do_shm = FALSE;
+ c->server_specified = FALSE;
+ c->no_fail = FALSE;
c->do_autospawn = FALSE;
memset(&c->spawn_api, 0, sizeof(c->spawn_api));
@@ -175,10 +186,10 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
#endif
c->conf = pa_client_conf_new();
+ pa_client_conf_load(c->conf, NULL);
#ifdef HAVE_X11
pa_client_conf_from_x11(c->conf, NULL);
#endif
- pa_client_conf_load(c->conf, NULL);
pa_client_conf_env(c->conf);
if (!(c->mempool = pa_mempool_new(!c->conf->disable_shm, c->conf->shm_size))) {
@@ -235,6 +246,18 @@ static void context_free(pa_context *c) {
context_unlink(c);
+#ifdef HAVE_DBUS
+ if (c->system_bus) {
+ dbus_connection_remove_filter(pa_dbus_wrap_connection_get(c->system_bus), filter_cb, c);
+ pa_dbus_wrap_connection_free(c->system_bus);
+ }
+
+ if (c->session_bus) {
+ dbus_connection_remove_filter(pa_dbus_wrap_connection_get(c->session_bus), filter_cb, c);
+ pa_dbus_wrap_connection_free(c->session_bus);
+ }
+#endif
+
if (c->record_streams)
pa_dynarray_free(c->record_streams, NULL, NULL);
if (c->playback_streams)
@@ -348,10 +371,10 @@ static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t o
if ((s = pa_dynarray_get(c->record_streams, channel))) {
if (chunk->memblock) {
- pa_memblockq_seek(s->record_memblockq, offset, seek);
+ pa_memblockq_seek(s->record_memblockq, offset, seek, TRUE);
pa_memblockq_push_align(s->record_memblockq, chunk);
} else
- pa_memblockq_seek(s->record_memblockq, offset+chunk->length, seek);
+ pa_memblockq_seek(s->record_memblockq, offset+chunk->length, seek, TRUE);
if (s->read_callback) {
size_t l;
@@ -726,6 +749,34 @@ fail:
static void on_connection(pa_socket_client *client, pa_iochannel*io, void *userdata);
+#ifdef HAVE_DBUS
+static void track_pulseaudio_on_dbus(pa_context *c, DBusBusType type, pa_dbus_wrap_connection **conn) {
+ DBusError error;
+
+ pa_assert(c);
+ pa_assert(conn);
+
+ dbus_error_init(&error);
+ if (!(*conn = pa_dbus_wrap_connection_new(c->mainloop, type, &error)) || dbus_error_is_set(&error)) {
+ pa_log_warn("Unable to contact DBUS: %s: %s", error.name, error.message);
+ goto finish;
+ }
+
+ if (!dbus_connection_add_filter(pa_dbus_wrap_connection_get(*conn), filter_cb, c, NULL)) {
+ pa_log_warn("Failed to add filter function");
+ goto finish;
+ }
+
+ if (pa_dbus_add_matches(
+ pa_dbus_wrap_connection_get(*conn), &error,
+ "type='signal',sender='" DBUS_SERVICE_DBUS "',interface='" DBUS_INTERFACE_DBUS "',member='NameOwnerChanged',arg0='org.pulseaudio.Server',arg1=''", NULL) < 0)
+ pa_log_warn("Unable to track org.pulseaudio.Server: %s: %s", error.name, error.message);
+
+ finish:
+ dbus_error_free(&error);
+}
+#endif
+
static int try_next_connection(pa_context *c) {
char *u = NULL;
int r = -1;
@@ -758,7 +809,16 @@ static int try_next_connection(pa_context *c) {
}
#endif
- pa_context_fail(c, PA_ERR_CONNECTIONREFUSED);
+#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);
+ } else
+#endif
+ pa_context_fail(c, PA_ERR_CONNECTIONREFUSED);
+
goto finish;
}
@@ -815,6 +875,40 @@ finish:
pa_context_unref(c);
}
+#ifdef HAVE_DBUS
+static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, void *userdata) {
+ pa_context *c = userdata;
+ pa_bool_t is_session;
+
+ pa_assert(bus);
+ pa_assert(message);
+ pa_assert(c);
+
+ if (c->state != PA_CONTEXT_CONNECTING)
+ goto finish;
+
+ if (!c->no_fail)
+ goto finish;
+
+ /* 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);
+ pa_log_debug("Rock!! PulseAudio is back on %s bus", is_session ? "session" : "system");
+
+ if (is_session)
+ /* The user instance via PF_LOCAL */
+ c->server_list = prepend_per_user(c->server_list);
+ else
+ /* The system wide instance via PF_LOCAL */
+ c->server_list = pa_strlist_prepend(c->server_list, PA_SYSTEM_RUNTIME_PATH PA_PATH_SEP PA_NATIVE_DEFAULT_UNIX_SOCKET);
+
+ try_next_connection(c);
+
+finish:
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+#endif
+
int pa_context_connect(
pa_context *c,
const char *server,
@@ -828,14 +922,18 @@ int pa_context_connect(
PA_CHECK_VALIDITY(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(c, c->state == PA_CONTEXT_UNCONNECTED, PA_ERR_BADSTATE);
- PA_CHECK_VALIDITY(c, !(flags & ~PA_CONTEXT_NOAUTOSPAWN), PA_ERR_INVALID);
+ PA_CHECK_VALIDITY(c, !(flags & ~(PA_CONTEXT_NOAUTOSPAWN|PA_CONTEXT_NOFAIL)), PA_ERR_INVALID);
PA_CHECK_VALIDITY(c, !server || *server, PA_ERR_INVALID);
- if (!server)
+ if (server)
+ c->conf->autospawn = FALSE;
+ else
server = c->conf->default_server;
pa_context_ref(c);
+ c->no_fail = flags & PA_CONTEXT_NOFAIL;
+ c->server_specified = !!server;
pa_assert(!c->server_list);
if (server) {
@@ -871,18 +969,18 @@ int pa_context_connect(
/* The user instance via PF_LOCAL */
c->server_list = prepend_per_user(c->server_list);
+ }
- /* Set up autospawning */
- if (!(flags & PA_CONTEXT_NOAUTOSPAWN) && c->conf->autospawn) {
+ /* Set up autospawning */
+ if (!(flags & PA_CONTEXT_NOAUTOSPAWN) && c->conf->autospawn) {
- if (getuid() == 0)
- pa_log_debug("Not doing autospawn since we are root.");
- else {
- c->do_autospawn = TRUE;
+ if (getuid() == 0)
+ pa_log_debug("Not doing autospawn since we are root.");
+ else {
+ c->do_autospawn = TRUE;
- if (api)
- c->spawn_api = *api;
- }
+ if (api)
+ c->spawn_api = *api;
}
}
diff --git a/src/pulse/context.h b/src/pulse/context.h
index c32cf44..139d0e0 100644
--- a/src/pulse/context.h
+++ b/src/pulse/context.h
@@ -207,9 +207,10 @@ pa_context_state_t pa_context_get_state(pa_context *c);
connect to the default server. This routine may but will not always
return synchronously on error. Use pa_context_set_state_callback() to
be notified when the connection is established. If flags doesn't have
-PA_NOAUTOSPAWN set and no specific server is specified or accessible a
-new daemon is spawned. If api is non-NULL, the functions specified in
-the structure are used when forking a new child process. */
+PA_CONTEXT_NOAUTOSPAWN set and no specific server is specified or
+accessible a new daemon is spawned. If api is non-NULL, the functions
+specified in the structure are used when forking a new child
+process. */
int pa_context_connect(pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api);
/** Terminate the context connection immediately */
diff --git a/src/pulse/def.h b/src/pulse/def.h
index 3629aab..d5bbefe 100644
--- a/src/pulse/def.h
+++ b/src/pulse/def.h
@@ -71,7 +71,7 @@ typedef enum pa_stream_state {
PA_STREAM_UNCONNECTED, /**< The stream is not yet connected to any sink or source */
PA_STREAM_CREATING, /**< The stream is being created */
PA_STREAM_READY, /**< The stream is established, you may pass audio data to it now */
- PA_STREAM_FAILED, /**< An error occured that made the stream invalid */
+ PA_STREAM_FAILED, /**< An error occurred that made the stream invalid */
PA_STREAM_TERMINATED /**< The stream has been terminated cleanly */
} pa_stream_state_t;
@@ -109,13 +109,16 @@ typedef enum pa_operation_state {
/** Some special flags for contexts. */
typedef enum pa_context_flags {
- PA_CONTEXT_NOAUTOSPAWN = 1
+ PA_CONTEXT_NOAUTOSPAWN = 0x0001U,
/**< Disabled autospawning of the PulseAudio daemon if required */
+ PA_CONTEXT_NOFAIL = 0x0002U
+ /**< Don't fail if the daemon is not available when pa_context_connect() is called, instead enter PA_CONTEXT_CONNECTING state and wait for the daemon to appear. \since 0.9.15 */
} pa_context_flags_t;
/** \cond fulldocs */
/* Allow clients to check with #ifdef for those flags */
#define PA_CONTEXT_NOAUTOSPAWN PA_CONTEXT_NOAUTOSPAWN
+#define PA_CONTEXT_NOFAIL PA_CONTEXT_NOFAIL
/** \endcond */
/** The direction of a pa_stream object */
@@ -213,7 +216,7 @@ typedef enum pa_stream_flags {
* sink/device. Useful if you use any of the PA_STREAM_FIX_ flags
* and want to make sure that resampling never takes place --
* which might happen if the stream is moved to another
- * sink/source whith a different sample spec/channel map. Only
+ * sink/source with a different sample spec/channel map. Only
* supported when the server is at least PA 0.9.8. It is ignored
* on older servers. \since 0.9.8 */
@@ -247,7 +250,7 @@ typedef enum pa_stream_flags {
* asking for less new data than this value will be made to the
* client it will also guarantee that requests are generated as
* early as this limit is reached. This flag should only be set in
- * very few situations where compatiblity with a fragment-based
+ * very few situations where compatibility with a fragment-based
* playback model needs to be kept and the client applications
* cannot deal with data requests that are delayed to the latest
* moment possible. (Usually these are programs that use usleep()
@@ -323,12 +326,12 @@ typedef struct pa_buffer_attr {
* plus the playback buffer size is configured to this value. Set
* PA_STREAM_ADJUST_LATENCY if you are interested in adjusting the
* overall latency. Don't set it if you are interested in
- * configuring the server-sider per-stream playback buffer
+ * configuring the server-side per-stream playback buffer
* size. */
uint32_t prebuf;
/**< Playback only: pre-buffering. The server does not start with
- * playback before at least prebug bytes are available in the
+ * playback before at least prebuf bytes are available in the
* buffer. It is recommended to set this to (uint32_t) -1, which
* will initialize this to the same value as tlength, whatever
* that may be. Initialize to 0 to enable manual start/stop
@@ -349,7 +352,7 @@ typedef struct pa_buffer_attr {
uint32_t fragsize;
/**< Recording only: fragment size. The server sends data in
- * blocks of fragsize bytes size. Large values deminish
+ * blocks of fragsize bytes size. Large values diminish
* interactivity with other operations on the connection context
* but decrease control overhead. It is recommended to set this to
* (uint32_t) -1, which will initialize this to a value that is
@@ -389,7 +392,7 @@ enum {
PA_ERR_NOEXTENSION, /**< Extension does not exist. \since 0.9.12 */
PA_ERR_OBSOLETE, /**< Obsolete functionality. \since 0.9.15 */
PA_ERR_NOTIMPLEMENTED, /**< Missing implementation. \since 0.9.15 */
- PA_ERR_FORKED, /**< The caler forked without calling execve() and tried to reuse the context. \since 0.9.15 */
+ PA_ERR_FORKED, /**< The caller forked without calling execve() and tried to reuse the context. \since 0.9.15 */
PA_ERR_MAX /**< Not really an error but the first invalid error code */
};
@@ -487,7 +490,7 @@ typedef enum pa_subscription_event_type {
/**< Event type: Sample cache item */
PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
- /**< Event type: Global server change, only occuring with PA_SUBSCRIPTION_EVENT_CHANGE. */
+ /**< Event type: Global server change, only occurring with PA_SUBSCRIPTION_EVENT_CHANGE. */
/** \cond fulldocs */
PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
@@ -573,7 +576,7 @@ typedef struct pa_timing_info {
/**< Non-zero if the local and the remote machine have
* synchronized clocks. If synchronized clocks are detected
* transport_usec becomes much more reliable. However, the code
- * that detects synchronized clocks is very limited und unreliable
+ * that detects synchronized clocks is very limited and unreliable
* itself. */
pa_usec_t sink_usec;
@@ -624,7 +627,7 @@ typedef struct pa_timing_info {
/**< The configured latency for the sink. \since 0.9.11 */
pa_usec_t configured_source_usec;
- /**< The configured latency for * the source. \since 0.9.11 */
+ /**< The configured latency for the source. \since 0.9.11 */
int64_t since_underrun;
/**< Bytes that were handed to the sink since the last underrun
@@ -702,9 +705,13 @@ typedef enum pa_sink_flags {
/**< Volume can be translated to dB with pa_sw_volume_to_dB()
* \since 0.9.11 */
- PA_SINK_FLAT_VOLUME = 0x0040U
+ PA_SINK_FLAT_VOLUME = 0x0040U,
/**< This sink is in flat volume mode, i.e. always the maximum of
* the volume of all connected inputs. \since 0.9.15 */
+
+ PA_SINK_DYNAMIC_LATENCY = 0x0080U
+ /**< The latency can be adjusted dynamically depending on the
+ * needs of the connected streams. \since 0.9.15 */
} pa_sink_flags_t;
/** \cond fulldocs */
@@ -715,6 +722,7 @@ typedef enum pa_sink_flags {
#define PA_SINK_HW_MUTE_CTRL PA_SINK_HW_MUTE_CTRL
#define PA_SINK_DECIBEL_VOLUME PA_SINK_DECIBEL_VOLUME
#define PA_SINK_FLAT_VOLUME PA_SINK_FLAT_VOLUME
+#define PA_SINK_DYNAMIC_LATENCY PA_SINK_DYNAMIC_LATENCY
/** \endcond */
/** Sink state. \since 0.9.15 */
@@ -780,9 +788,13 @@ typedef enum pa_source_flags {
PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
/**< Supports hardware mute control \since 0.9.11 */
- PA_SOURCE_DECIBEL_VOLUME = 0x0020U
+ PA_SOURCE_DECIBEL_VOLUME = 0x0020U,
/**< Volume can be translated to dB with pa_sw_volume_to_dB()
* \since 0.9.11 */
+
+ PA_SOURCE_DYNAMIC_LATENCY = 0x0040U
+ /**< The latency can be adjusted dynamically depending on the
+ * needs of the connected streams. \since 0.9.15 */
} pa_source_flags_t;
/** \cond fulldocs */
@@ -792,6 +804,7 @@ typedef enum pa_source_flags {
#define PA_SOURCE_NETWORK PA_SOURCE_NETWORK
#define PA_SOURCE_HW_MUTE_CTRL PA_SOURCE_HW_MUTE_CTRL
#define PA_SOURCE_DECIBEL_VOLUME PA_SOURCE_DECIBEL_VOLUME
+#define PA_SOURCE_DYNAMIC_LATENCY PA_SOURCE_DYNAMIC_LATENCY
/** \endcond */
/** Source state. \since 0.9.15 */
diff --git a/src/pulse/fork-detect.c b/src/pulse/fork-detect.c
index f10fc02..a4e0dd1 100644
--- a/src/pulse/fork-detect.c
+++ b/src/pulse/fork-detect.c
@@ -39,7 +39,7 @@ int pa_detect_fork(void) {
* however have to deal with this cleanly, so we try to detect the
* forks making sure all our calls fail cleanly after the fork. */
- pa_assert(sizeof(pa_atomic_t) >= sizeof(pid_t));
+ pa_assert_cc(sizeof(pa_atomic_t) >= sizeof(pid_t));
for (;;) {
pid_t stored_pid = (pid_t) pa_atomic_load(&pid);
diff --git a/src/pulse/internal.h b/src/pulse/internal.h
index 9646d8a..28a989b 100644
--- a/src/pulse/internal.h
+++ b/src/pulse/internal.h
@@ -42,6 +42,9 @@
#include <pulsecore/hashmap.h>
#include <pulsecore/refcnt.h>
#include <pulsecore/time-smoother.h>
+#ifdef HAVE_DBUS
+#include <pulsecore/dbus-util.h>
+#endif
#include "client-conf.h"
@@ -50,6 +53,11 @@
struct pa_context {
PA_REFCNT_DECLARE;
+#ifdef HAVE_DBUS
+ pa_dbus_wrap_connection *system_bus;
+ pa_dbus_wrap_connection *session_bus;
+#endif
+
pa_proplist *proplist;
pa_mainloop_api* mainloop;
@@ -78,7 +86,8 @@ struct pa_context {
pa_bool_t is_local:1;
pa_bool_t do_shm:1;
-
+ pa_bool_t server_specified:1;
+ pa_bool_t no_fail:1;
pa_bool_t do_autospawn:1;
pa_spawn_api spawn_api;
@@ -135,7 +144,7 @@ struct pa_stream {
uint32_t syncid;
uint32_t stream_index;
- uint32_t requested_bytes;
+ int64_t requested_bytes;
pa_buffer_attr buffer_attr;
uint32_t device_index;
@@ -155,12 +164,13 @@ struct pa_stream {
uint32_t write_index_not_before;
uint32_t read_index_not_before;
- /* Data about individual timing update correctoins */
+ /* Data about individual timing update corrections */
pa_index_correction write_index_corrections[PA_MAX_WRITE_INDEX_CORRECTIONS];
int current_write_index_correction;
/* Latency interpolation stuff */
pa_time_event *auto_timing_update_event;
+ pa_usec_t auto_timing_interval_usec;
pa_smoother *smoother;
@@ -185,6 +195,8 @@ struct pa_stream {
void *started_userdata;
pa_stream_event_cb_t event_callback;
void *event_userdata;
+ pa_stream_notify_cb_t buffer_attr_callback;
+ void *buffer_attr_userdata;
};
typedef void (*pa_operation_cb_t)(void);
@@ -213,6 +225,7 @@ void pa_command_stream_moved(pa_pdispatch *pd, uint32_t command, uint32_t tag, p
void pa_command_stream_started(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
void pa_command_stream_event(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
void pa_command_client_event(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
+void pa_command_stream_buffer_attr(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
pa_operation *pa_operation_new(pa_context *c, pa_stream *s, pa_operation_cb_t callback, void *userdata);
void pa_operation_done(pa_operation *o);
diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
index ec8a2c0..117880c 100644
--- a/src/pulse/introspect.h
+++ b/src/pulse/introspect.h
@@ -344,7 +344,7 @@ typedef struct pa_module_info {
pa_proplist *proplist; /**< Property list \since 0.9.15 */
} pa_module_info;
-/** Callback prototype for pa_context_get_module_info() and firends*/
+/** Callback prototype for pa_context_get_module_info() and friends*/
typedef void (*pa_module_info_cb_t) (pa_context *c, const pa_module_info*i, int eol, void *userdata);
/** Get some information about a module by its index */
@@ -377,7 +377,7 @@ typedef struct pa_client_info {
pa_proplist *proplist; /**< Property list \since 0.9.11 */
} pa_client_info;
-/** Callback prototype for pa_context_get_client_info() and firends*/
+/** Callback prototype for pa_context_get_client_info() and friends*/
typedef void (*pa_client_info_cb_t) (pa_context *c, const pa_client_info*i, int eol, void *userdata);
/** Get information about a client by its index */
@@ -418,7 +418,7 @@ typedef struct pa_card_info {
pa_proplist *proplist; /**< Property list */
} pa_card_info;
-/** Callback prototype for pa_context_get_card_info() and firends \since 0.9.15 */
+/** Callback prototype for pa_context_get_card_info() and friends \since 0.9.15 */
typedef void (*pa_card_info_cb_t) (pa_context *c, const pa_card_info*i, int eol, void *userdata);
/** Get information about a card by its index \since 0.9.15 */
@@ -454,13 +454,13 @@ typedef struct pa_sink_input_info {
pa_cvolume volume; /**< The volume of this sink input */
pa_usec_t buffer_usec; /**< Latency due to buffering in sink input, see pa_latency_info for details */
pa_usec_t sink_usec; /**< Latency of the sink device, see pa_latency_info for details */
- const char *resample_method; /**< Thre resampling method used by this sink input. */
+ const char *resample_method; /**< The resampling method used by this sink input. */
const char *driver; /**< Driver name */
int mute; /**< Stream muted \since 0.9.7 */
pa_proplist *proplist; /**< Property list \since 0.9.11 */
} pa_sink_input_info;
-/** Callback prototype for pa_context_get_sink_input_info() and firends*/
+/** Callback prototype for pa_context_get_sink_input_info() and friends*/
typedef void (*pa_sink_input_info_cb_t) (pa_context *c, const pa_sink_input_info *i, int eol, void *userdata);
/** Get some information about a sink input by its index */
@@ -501,12 +501,12 @@ typedef struct pa_source_output_info {
pa_channel_map channel_map; /**< Channel map */
pa_usec_t buffer_usec; /**< Latency due to buffering in the source output, see pa_latency_info for details. */
pa_usec_t source_usec; /**< Latency of the source device, see pa_latency_info for details. */
- const char *resample_method; /**< Thre resampling method used by this source output. */
+ const char *resample_method; /**< The resampling method used by this source output. */
const char *driver; /**< Driver name */
pa_proplist *proplist; /**< Property list \since 0.9.11 */
} pa_source_output_info;
-/** Callback prototype for pa_context_get_source_output_info() and firends*/
+/** Callback prototype for pa_context_get_source_output_info() and friends*/
typedef void (*pa_source_output_info_cb_t) (pa_context *c, const pa_source_output_info *i, int eol, void *userdata);
/** Get information about a source output by its index */
@@ -539,7 +539,7 @@ pa_operation* pa_context_kill_source_output(pa_context *c, uint32_t idx, pa_cont
* any new release. */
typedef struct pa_stat_info {
uint32_t memblock_total; /**< Currently allocated memory blocks */
- uint32_t memblock_total_size; /**< Currentl total size of allocated memory blocks */
+ uint32_t memblock_total_size; /**< Current total size of allocated memory blocks */
uint32_t memblock_allocated; /**< Allocated memory blocks during the whole lifetime of the daemon */
uint32_t memblock_allocated_size; /**< Total size of all memory blocks allocated during the whole lifetime of the daemon */
uint32_t scache_size; /**< Total size of all sample cache entries. */
@@ -571,7 +571,7 @@ typedef struct pa_sample_info {
pa_proplist *proplist; /**< Property list for this sample. \since 0.9.11 */
} pa_sample_info;
-/** Callback prototype for pa_context_get_sample_info_by_name() and firends */
+/** Callback prototype for pa_context_get_sample_info_by_name() and friends */
typedef void (*pa_sample_info_cb_t)(pa_context *c, const pa_sample_info *i, int eol, void *userdata);
/** Get information about a sample by its name */
@@ -606,7 +606,7 @@ typedef struct pa_autoload_info {
const char *argument; /**< Argument string for module */
} pa_autoload_info;
-/** \deprecated Callback prototype for pa_context_get_autoload_info_by_name() and firends */
+/** \deprecated Callback prototype for pa_context_get_autoload_info_by_name() and friends */
typedef void (*pa_autoload_info_cb_t)(pa_context *c, const pa_autoload_info *i, int eol, void *userdata);
/** \deprecated Get info about a specific autoload entry. */
diff --git a/src/pulse/mainloop-signal.c b/src/pulse/mainloop-signal.c
index 52f11c8..3dc7439 100644
--- a/src/pulse/mainloop-signal.c
+++ b/src/pulse/mainloop-signal.c
@@ -170,7 +170,7 @@ pa_signal_event* pa_signal_new(int sig, pa_signal_cb_t _callback, void *userdata
for (e = signals; e; e = e->next)
if (e->sig == sig)
- goto fail;
+ return NULL;
e = pa_xnew(pa_signal_event, 1);
e->sig = sig;
@@ -196,8 +196,7 @@ pa_signal_event* pa_signal_new(int sig, pa_signal_cb_t _callback, void *userdata
return e;
fail:
- if (e)
- pa_xfree(e);
+ pa_xfree(e);
return NULL;
}
diff --git a/src/pulse/mainloop.h b/src/pulse/mainloop.h
index 3a03ac9..4a83ebe 100644
--- a/src/pulse/mainloop.h
+++ b/src/pulse/mainloop.h
@@ -50,7 +50,7 @@ struct pollfd;
*
* -# Prepare - Build a list of file descriptors
* that need to be monitored and calculate the next timeout.
- * -# Poll - Execute the actuall poll() system call.
+ * -# Poll - Execute the actual poll() system call.
* -# Dispatch - Dispatch any events that have fired.
*
* When using the main loop, the application can either execute each
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index d5f5bc0..2e7e5ad 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -259,7 +259,7 @@ int pa_proplist_get(pa_proplist *p, const char *key, const void **data, size_t *
/** Update mode enum for pa_proplist_update(). \since 0.9.11 */
typedef enum pa_update_mode {
PA_UPDATE_SET
- /**< Replace the entirey property list with the new one. Don't keep
+ /**< Replace the entire property list with the new one. Don't keep
* any of the old data around */,
PA_UPDATE_MERGE
diff --git a/src/pulse/pulseaudio.h b/src/pulse/pulseaudio.h
index 5086783..aa369e6 100644
--- a/src/pulse/pulseaudio.h
+++ b/src/pulse/pulseaudio.h
@@ -59,7 +59,7 @@
* \section intro_sec Introduction
*
* This document describes the client API for the PulseAudio sound
- * server. The API comes in two flavours to accomodate different styles
+ * server. The API comes in two flavours to accommodate different styles
* of applications and different needs in complexity:
*
* \li The complete but somewhat complicated to use asynchronous API
diff --git a/src/pulse/sample.h b/src/pulse/sample.h
index aef34b6..138f13c 100644
--- a/src/pulse/sample.h
+++ b/src/pulse/sample.h
@@ -71,7 +71,7 @@
*
* \section chan_sec Channels
*
- * PulseAudio supports up to 32 individiual channels. The order of the
+ * PulseAudio supports up to 32 individual channels. The order of the
* channels is up to the application, but they must be continous. To map
* channels to speakers, see \ref channelmap.
*
@@ -221,7 +221,7 @@ typedef enum pa_sample_format {
#define PA_SAMPLE_FLOAT32 PA_SAMPLE_FLOAT32NE
/** \cond fulldocs */
-/* Allow clients to check with #ifdef for thse sample formats */
+/* Allow clients to check with #ifdef for these sample formats */
#define PA_SAMPLE_U8 PA_SAMPLE_U8
#define PA_SAMPLE_ALAW PA_SAMPLE_ALAW
#define PA_SAMPLE_ULAW PA_SAMPLE_ULAW
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index 9a0ea0f..339a89e 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -41,7 +41,8 @@
#include "fork-detect.h"
#include "internal.h"
-#define LATENCY_IPOL_INTERVAL_USEC (333*PA_USEC_PER_MSEC)
+#define AUTO_TIMING_INTERVAL_START_USEC (10*PA_USEC_PER_MSEC)
+#define AUTO_TIMING_INTERVAL_END_USEC (1500*PA_USEC_PER_MSEC)
#define SMOOTHER_ADJUST_TIME (1000*PA_USEC_PER_MSEC)
#define SMOOTHER_HISTORY_TIME (5000*PA_USEC_PER_MSEC)
@@ -72,6 +73,8 @@ static void reset_callbacks(pa_stream *s) {
s->started_userdata = NULL;
s->event_callback = NULL;
s->event_userdata = NULL;
+ s->buffer_attr_callback = NULL;
+ s->buffer_attr_userdata = NULL;
}
pa_stream *pa_stream_new_with_proplist(
@@ -138,13 +141,13 @@ pa_stream *pa_stream_new_with_proplist(
s->device_index = PA_INVALID_INDEX;
s->device_name = NULL;
s->suspended = FALSE;
+ s->corked = FALSE;
pa_memchunk_reset(&s->peek_memchunk);
s->peek_data = NULL;
s->record_memblockq = NULL;
- s->corked = FALSE;
memset(&s->timing_info, 0, sizeof(s->timing_info));
s->timing_info_valid = FALSE;
@@ -159,6 +162,7 @@ pa_stream *pa_stream_new_with_proplist(
s->auto_timing_update_event = NULL;
s->auto_timing_update_requested = FALSE;
+ s->auto_timing_interval_usec = AUTO_TIMING_INTERVAL_START_USEC;
reset_callbacks(s);
@@ -306,7 +310,7 @@ static void request_auto_timing_update(pa_stream *s, pa_bool_t force) {
(force || !s->auto_timing_update_requested)) {
pa_operation *o;
-/* pa_log("automatically requesting new timing data"); */
+/* pa_log("Automatically requesting new timing data"); */
if ((o = pa_stream_update_timing_info(s, NULL, NULL))) {
pa_operation_unref(o);
@@ -316,9 +320,15 @@ static void request_auto_timing_update(pa_stream *s, pa_bool_t force) {
if (s->auto_timing_update_event) {
struct timeval next;
+
+ if (force)
+ s->auto_timing_interval_usec = AUTO_TIMING_INTERVAL_START_USEC;
+
pa_gettimeofday(&next);
- pa_timeval_add(&next, LATENCY_IPOL_INTERVAL_USEC);
+ pa_timeval_add(&next, s->auto_timing_interval_usec);
s->mainloop->time_restart(s->auto_timing_update_event, &next);
+
+ s->auto_timing_interval_usec = PA_MIN(AUTO_TIMING_INTERVAL_END_USEC, s->auto_timing_interval_usec*2);
}
}
@@ -370,20 +380,13 @@ static void check_smoother_status(pa_stream *s, pa_bool_t aposteriori, pa_bool_t
x -= s->timing_info.transport_usec;
else
x += s->timing_info.transport_usec;
-
- if (s->direction == PA_STREAM_PLAYBACK)
- /* it takes a while until the pause/resume is actually
- * audible */
- x += s->timing_info.sink_usec;
- else
- /* Data froma while back will be dropped */
- x -= s->timing_info.source_usec;
}
if (s->suspended || s->corked || force_stop)
pa_smoother_pause(s->smoother, x);
else if (force_start || s->buffer_attr.prebuf == 0)
- pa_smoother_resume(s->smoother, x);
+ pa_smoother_resume(s->smoother, x, TRUE);
+
/* Please note that we have no idea if playback actually started
* if prebuf is non-zero! */
@@ -396,7 +399,7 @@ void pa_command_stream_moved(pa_pdispatch *pd, uint32_t command, uint32_t tag, p
const char *dn;
pa_bool_t suspended;
uint32_t di;
- pa_usec_t usec;
+ pa_usec_t usec = 0;
uint32_t maxlength = 0, fragsize = 0, minreq = 0, tlength = 0, prebuf = 0;
pa_assert(pd);
@@ -486,6 +489,80 @@ finish:
pa_context_unref(c);
}
+void pa_command_stream_buffer_attr(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
+ pa_context *c = userdata;
+ pa_stream *s;
+ uint32_t channel;
+ pa_usec_t usec = 0;
+ uint32_t maxlength = 0, fragsize = 0, minreq = 0, tlength = 0, prebuf = 0;
+
+ pa_assert(pd);
+ pa_assert(command == PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED || command == PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED);
+ pa_assert(t);
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) >= 1);
+
+ pa_context_ref(c);
+
+ if (c->version < 15) {
+ pa_context_fail(c, PA_ERR_PROTOCOL);
+ goto finish;
+ }
+
+ if (pa_tagstruct_getu32(t, &channel) < 0) {
+ pa_context_fail(c, PA_ERR_PROTOCOL);
+ goto finish;
+ }
+
+ if (command == PA_COMMAND_RECORD_STREAM_MOVED) {
+ if (pa_tagstruct_getu32(t, &maxlength) < 0 ||
+ pa_tagstruct_getu32(t, &fragsize) < 0 ||
+ pa_tagstruct_get_usec(t, &usec) < 0) {
+ pa_context_fail(c, PA_ERR_PROTOCOL);
+ goto finish;
+ }
+ } else {
+ if (pa_tagstruct_getu32(t, &maxlength) < 0 ||
+ pa_tagstruct_getu32(t, &tlength) < 0 ||
+ pa_tagstruct_getu32(t, &prebuf) < 0 ||
+ pa_tagstruct_getu32(t, &minreq) < 0 ||
+ pa_tagstruct_get_usec(t, &usec) < 0) {
+ pa_context_fail(c, PA_ERR_PROTOCOL);
+ goto finish;
+ }
+ }
+
+ if (!pa_tagstruct_eof(t)) {
+ pa_context_fail(c, PA_ERR_PROTOCOL);
+ goto finish;
+ }
+
+ if (!(s = pa_dynarray_get(command == PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED ? c->playback_streams : c->record_streams, channel)))
+ goto finish;
+
+ if (s->state != PA_STREAM_READY)
+ goto finish;
+
+ if (s->direction == PA_STREAM_RECORD)
+ s->timing_info.configured_source_usec = usec;
+ else
+ s->timing_info.configured_sink_usec = usec;
+
+ s->buffer_attr.maxlength = maxlength;
+ s->buffer_attr.fragsize = fragsize;
+ s->buffer_attr.tlength = tlength;
+ s->buffer_attr.prebuf = prebuf;
+ s->buffer_attr.minreq = minreq;
+
+ request_auto_timing_update(s, TRUE);
+
+ if (s->buffer_attr_callback)
+ s->buffer_attr_callback(s, s->buffer_attr_userdata);
+
+finish:
+ pa_context_unref(c);
+}
+
void pa_command_stream_suspended(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_context *c = userdata;
pa_stream *s;
@@ -645,7 +722,7 @@ void pa_command_request(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tag
s->requested_bytes += bytes;
if (s->requested_bytes > 0 && s->write_callback)
- s->write_callback(s, s->requested_bytes, s->write_userdata);
+ s->write_callback(s, (size_t) s->requested_bytes, s->write_userdata);
finish:
pa_context_unref(c);
@@ -742,12 +819,13 @@ static void create_stream_complete(pa_stream *s) {
pa_stream_set_state(s, PA_STREAM_READY);
if (s->requested_bytes > 0 && s->write_callback)
- s->write_callback(s, s->requested_bytes, s->write_userdata);
+ s->write_callback(s, (size_t) s->requested_bytes, s->write_userdata);
if (s->flags & PA_STREAM_AUTO_TIMING_UPDATE) {
struct timeval tv;
pa_gettimeofday(&tv);
- tv.tv_usec += (suseconds_t) LATENCY_IPOL_INTERVAL_USEC; /* every 100 ms */
+ s->auto_timing_interval_usec = AUTO_TIMING_INTERVAL_START_USEC;
+ pa_timeval_add(&tv, s->auto_timing_interval_usec);
pa_assert(!s->auto_timing_update_event);
s->auto_timing_update_event = s->mainloop->time_new(s->mainloop, &tv, &auto_timing_update_callback, s);
@@ -789,6 +867,7 @@ static void automatic_buffer_attr(pa_stream *s, pa_buffer_attr *attr, const pa_s
void pa_create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_stream *s = userdata;
+ uint32_t requested_bytes;
pa_assert(pd);
pa_assert(s);
@@ -808,11 +887,13 @@ void pa_create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag,
if (pa_tagstruct_getu32(t, &s->channel) < 0 ||
s->channel == PA_INVALID_INDEX ||
((s->direction != PA_STREAM_UPLOAD) && (pa_tagstruct_getu32(t, &s->stream_index) < 0 || s->stream_index == PA_INVALID_INDEX)) ||
- ((s->direction != PA_STREAM_RECORD) && pa_tagstruct_getu32(t, &s->requested_bytes) < 0)) {
+ ((s->direction != PA_STREAM_RECORD) && pa_tagstruct_getu32(t, &requested_bytes) < 0)) {
pa_context_fail(s->context, PA_ERR_PROTOCOL);
goto finish;
}
+ s->requested_bytes = (int64_t) requested_bytes;
+
if (s->context->version >= 9) {
if (s->direction == PA_STREAM_PLAYBACK) {
if (pa_tagstruct_getu32(t, &s->buffer_attr.maxlength) < 0 ||
@@ -948,6 +1029,7 @@ static int create_stream(
PA_CHECK_VALIDITY(s->context, s->context->version >= 12 || !(flags & PA_STREAM_VARIABLE_RATE), PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY(s->context, s->context->version >= 13 || !(flags & PA_STREAM_PEAK_DETECT), PA_ERR_NOTSUPPORTED);
+ PA_CHECK_VALIDITY(s->context, s->context->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
/* Althought some of the other flags are not supported on older
* version, we don't check for them here, because it doesn't hurt
* when they are passed but actually not supported. This makes
@@ -975,14 +1057,17 @@ static int create_stream(
if (flags & PA_STREAM_INTERPOLATE_TIMING) {
pa_usec_t x;
- if (s->smoother)
- pa_smoother_free(s->smoother);
-
- s->smoother = pa_smoother_new(SMOOTHER_ADJUST_TIME, SMOOTHER_HISTORY_TIME, !(flags & PA_STREAM_NOT_MONOTONIC), SMOOTHER_MIN_HISTORY);
-
x = pa_rtclock_usec();
- pa_smoother_set_time_offset(s->smoother, x);
- pa_smoother_pause(s->smoother, x);
+
+ pa_assert(!s->smoother);
+ s->smoother = pa_smoother_new(
+ SMOOTHER_ADJUST_TIME,
+ SMOOTHER_HISTORY_TIME,
+ !(flags & PA_STREAM_NOT_MONOTONIC),
+ TRUE,
+ SMOOTHER_MIN_HISTORY,
+ x,
+ TRUE);
}
if (!dev)
@@ -1172,12 +1257,9 @@ int pa_stream_write(
if (free_cb && pa_pstream_get_shm(s->context->pstream))
free_cb((void*) data);
- if (length < s->requested_bytes)
- s->requested_bytes -= (uint32_t) length;
- else
- s->requested_bytes = 0;
-
- /* FIXME!!! ^^^ will break when offset is != 0 and mode is not RELATIVE*/
+ /* This is obviously wrong since we ignore the seeking index . But
+ * that's OK, the server side applies the same error */
+ s->requested_bytes -= (seek == PA_SEEK_RELATIVE ? offset : 0) + (int64_t) length;
if (s->direction == PA_STREAM_PLAYBACK) {
@@ -1273,7 +1355,7 @@ size_t pa_stream_writable_size(pa_stream *s) {
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE, (size_t) -1);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->direction != PA_STREAM_RECORD, PA_ERR_BADSTATE, (size_t) -1);
- return s->requested_bytes;
+ return s->requested_bytes > 0 ? (size_t) s->requested_bytes : 0;
}
size_t pa_stream_readable_size(pa_stream *s) {
@@ -1537,7 +1619,7 @@ static void stream_get_timing_info_callback(pa_pdispatch *pd, uint32_t command,
pa_smoother_put(o->stream->smoother, u, calc_time(o->stream, TRUE));
if (i->playing)
- pa_smoother_resume(o->stream->smoother, x);
+ pa_smoother_resume(o->stream->smoother, x, TRUE);
}
}
@@ -1797,6 +1879,20 @@ void pa_stream_set_event_callback(pa_stream *s, pa_stream_event_cb_t cb, void *u
s->event_userdata = userdata;
}
+void pa_stream_set_buffer_attr_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata) {
+ pa_assert(s);
+ pa_assert(PA_REFCNT_VALUE(s) >= 1);
+
+ if (pa_detect_fork())
+ return;
+
+ if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
+ return;
+
+ s->buffer_attr_callback = cb;
+ s->buffer_attr_userdata = userdata;
+}
+
void pa_stream_simple_ack_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_operation *o = userdata;
int success = 1;
diff --git a/src/pulse/stream.h b/src/pulse/stream.h
index e80bc65..49c132a 100644
--- a/src/pulse/stream.h
+++ b/src/pulse/stream.h
@@ -424,7 +424,9 @@ int pa_stream_disconnect(pa_stream *s);
* is not copied. If NULL, the data is copied into an internal
* buffer. The client my freely seek around in the output buffer. For
* most applications passing 0 and PA_SEEK_RELATIVE as arguments for
- * offset and seek should be useful.*/
+ * offset and seek should be useful. Afte ther write call succeeded
+ * the write index will be a the position after where this chunk of
+ * data has been written to. */
int pa_stream_write(
pa_stream *p /**< The stream to use */,
const void *data /**< The data to write */,
@@ -512,7 +514,23 @@ void pa_stream_set_suspended_callback(pa_stream *p, pa_stream_notify_cb_t cb, vo
* control event is received.\since 0.9.15 */
void pa_stream_set_event_callback(pa_stream *p, pa_stream_event_cb_t cb, void *userdata);
-/** Pause (or resume) playback of this stream temporarily. Available on both playback and recording streams. */
+/** Set the callback function that is called whenver the buffer
+ * attributes on the server side change. Please note that the buffer
+ * attributes can change when moving a stream to a different
+ * sink/source too, hence if you use this callback you should use
+ * pa_stream_set_moved_callback() as well. \since 0.9.15 */
+void pa_stream_set_buffer_attr_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
+
+/** Pause (or resume) playback of this stream temporarily. Available
+ * on both playback and recording streams. If b is 1 the stream is
+ * paused. If b is 0 the stream is resumed. The pause/resume operation
+ * is executed as quickly as possible. If a cork is very quickly
+ * followed by an uncork or the other way round this might not
+ * actually have any effect on the stream that is output. You can use
+ * pa_stream_is_corked() to find out whether the stream is currently
+ * paused or not. Normally a stream will be created in uncorked
+ * state. If you pass PA_STREAM_START_CORKED as flag during connection
+ * of the stream it will be created in corked state. */
pa_operation* pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, void *userdata);
/** Flush the playback buffer of this stream. Most of the time you're
@@ -530,42 +548,68 @@ pa_operation* pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *us
* temporarily. Available for playback streams only. */
pa_operation* pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
-/** Rename the stream.*/
+/** Rename the stream. */
pa_operation* pa_stream_set_name(pa_stream *s, const char *name, pa_stream_success_cb_t cb, void *userdata);
/** Return the current playback/recording time. This is based on the
* data in the timing info structure returned by
- * pa_stream_get_timing_info(). This function will usually only return
- * new data if a timing info update has been recieved. Only if timing
- * interpolation has been requested (PA_STREAM_INTERPOLATE_TIMING)
- * the data from the last timing update is used for an estimation of
- * the current playback/recording time based on the local time that
- * passed since the timing info structure has been acquired. The time
- * value returned by this function is guaranteed to increase
- * monotonically. (that means: the returned value is always greater or
- * equal to the value returned on the last call) This behaviour can
- * be disabled by using PA_STREAM_NOT_MONOTONIC. This may be
+ * pa_stream_get_timing_info().
+ *
+ * This function will usually only return new data if a timing info
+ * update has been recieved. Only if timing interpolation has been
+ * requested (PA_STREAM_INTERPOLATE_TIMING) the data from the last
+ * timing update is used for an estimation of the current
+ * playback/recording time based on the local time that passed since
+ * the timing info structure has been acquired.
+ *
+ * The time value returned by this function is guaranteed to increase
+ * monotonically. (that means: the returned value is always greater
+ * or equal to the value returned on the last call). This behaviour
+ * can be disabled by using PA_STREAM_NOT_MONOTONIC. This may be
* desirable to deal better with bad estimations of transport
* latencies, but may have strange effects if the application is not
- * able to deal with time going 'backwards'. */
+ * able to deal with time going 'backwards'.
+ *
+ * The time interpolator activated by PA_STREAM_INTERPOLATE_TIMING
+ * favours 'smooth' time graphs over accurate ones to improve the
+ * smoothness of UI operations that are tied to the audio clock. If
+ * accuracy is more important to you you might need to estimate your
+ * timing based on the data from pa_stream_get_timing_info() yourself
+ * or not work with interpolated timing at all and instead always
+ * query on the server side for the most up to date timing with
+ * pa_stream_update_timing_info().
+ *
+ * If no timing information has been
+ * recieved yet this call will return PA_ERR_NODATA. For more details
+ * see pa_stream_get_timing_info(). */
int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec);
/** Return the total stream latency. This function is based on
- * pa_stream_get_time(). In case the stream is a monitoring stream the
- * result can be negative, i.e. the captured samples are not yet
- * played. In this case *negative is set to 1. */
+ * pa_stream_get_time().
+ *
+ * In case the stream is a monitoring stream the result can be
+ * negative, i.e. the captured samples are not yet played. In this
+ * case *negative is set to 1.
+ *
+ * If no timing information has been recieved yet this call will
+ * return PA_ERR_NODATA. For more details see
+ * pa_stream_get_timing_info() and pa_stream_get_time(). */
int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative);
/** Return the latest raw timing data structure. The returned pointer
* points to an internal read-only instance of the timing
* structure. The user should make a copy of this structure if he
* wants to modify it. An in-place update to this data structure may
- * be requested using pa_stream_update_timing_info(). If no
- * pa_stream_update_timing_info() call was issued before, this
- * function will fail with PA_ERR_NODATA. Please note that the
- * write_index member field (and only this field) is updated on each
- * pa_stream_write() call, not just when a timing update has been
- * recieved. */
+ * be requested using pa_stream_update_timing_info().
+ *
+ * If no timing information has been received before (i.e. by
+ * requesting pa_stream_update_timing_info() or by using
+ * PA_STREAM_AUTO_TIMING_UPDATE), this function will fail with
+ * PA_ERR_NODATA.
+ *
+ * Please note that the write_index member field (and only this field)
+ * is updated on each pa_stream_write() call, not just when a timing
+ * update has been recieved. */
const pa_timing_info* pa_stream_get_timing_info(pa_stream *s);
/** Return a pointer to the stream's sample specification. */
diff --git a/src/pulse/subscribe.h b/src/pulse/subscribe.h
index a93510a..44ed24a 100644
--- a/src/pulse/subscribe.h
+++ b/src/pulse/subscribe.h
@@ -35,7 +35,7 @@
* \section overv_sec Overview
*
* The application can be notified, asynchronously, whenever the internal
- * layout of the server changes. Possible notifications are desribed in the
+ * layout of the server changes. Possible notifications are described in the
* \ref pa_subscription_event_type and \ref pa_subscription_mask
* enumerations.
*
diff --git a/src/pulse/timeval.h b/src/pulse/timeval.h
index 2b3faf1..651da95 100644
--- a/src/pulse/timeval.h
+++ b/src/pulse/timeval.h
@@ -60,7 +60,7 @@ struct timeval *pa_gettimeofday(struct timeval *tv);
* structs. */
pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) PA_GCC_PURE;
-/** Compare the two timeval structs and return 0 when equal, negative when a < b, positive otherwse */
+/** Compare the two timeval structs and return 0 when equal, negative when a < b, positive otherwise */
int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) PA_GCC_PURE;
/** Return the time difference between now and the specified timestamp */
diff --git a/src/pulse/version.h b/src/pulse/version.h
index e544e65..37cb52c 100644
--- a/src/pulse/version.h
+++ b/src/pulse/version.h
@@ -35,7 +35,7 @@ PA_C_DECL_BEGIN
/** Return the version of the header files. Keep in mind that this is
a macro and not a function, so it is impossible to get the pointer of
it. */
-#define pa_get_headers_version() ("0.9.15-test5")
+#define pa_get_headers_version() ("0.9.15")
/** Return the version of the library the current application is
* linked to. */
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index c865058..6848771 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -120,13 +120,13 @@ 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 60
+#define USER_DECIBEL_RANGE 90
pa_volume_t pa_sw_volume_from_dB(double dB) {
if (isinf(dB) < 0 || dB <= -USER_DECIBEL_RANGE)
return PA_VOLUME_MUTED;
- return (pa_volume_t) lrint((dB/USER_DECIBEL_RANGE+1)*PA_VOLUME_NORM);
+ return (pa_volume_t) lrint(ceil((dB/USER_DECIBEL_RANGE+1.0)*PA_VOLUME_NORM));
}
double pa_sw_volume_to_dB(pa_volume_t v) {
@@ -138,19 +138,19 @@ double pa_sw_volume_to_dB(pa_volume_t v) {
pa_volume_t pa_sw_volume_from_linear(double v) {
- if (v <= 0)
+ if (v <= 0.0)
return PA_VOLUME_MUTED;
if (v > .999 && v < 1.001)
return PA_VOLUME_NORM;
- return pa_sw_volume_from_dB(20*log10(v));
+ return pa_sw_volume_from_dB(20.0*log10(v));
}
double pa_sw_volume_to_linear(pa_volume_t v) {
if (v == PA_VOLUME_MUTED)
- return 0;
+ return 0.0;
return pow(10.0, pa_sw_volume_to_dB(v)/20.0);
}
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index c3c396c..5b7e121 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -24,6 +24,7 @@
***/
#include <inttypes.h>
+#include <limits.h>
#include <pulse/cdecl.h>
#include <pulse/gccmacro.h>
@@ -102,12 +103,15 @@ PA_C_DECL_BEGIN
* > PA_VOLUME_NORM: increased volume */
typedef uint32_t pa_volume_t;
-/** Normal volume (100%) */
+/** Normal volume (100%, 0 dB) */
#define PA_VOLUME_NORM ((pa_volume_t) 0x10000U)
-/** Muted volume (0%) */
+/** Muted volume (0%, -inf dB) */
#define PA_VOLUME_MUTED ((pa_volume_t) 0U)
+/** Maximum volume we can store. \since 0.9.15 */
+#define PA_VOLUME_MAX ((pa_volume_t) UINT32_MAX)
+
/** A structure encapsulating a per-channel volume */
typedef struct pa_cvolume {
uint8_t channels; /**< Number of channels */
diff --git a/src/pulsecore/authkey.c b/src/pulsecore/authkey.c
index b122fee..1e31d07 100644
--- a/src/pulsecore/authkey.c
+++ b/src/pulsecore/authkey.c
@@ -190,7 +190,7 @@ int pa_authkey_load_auto(const char *fn, void *data, size_t length) {
return pa_authkey_load(p, data, length);
}
-/* Store the specified cookie in the speicified cookie file */
+/* Store the specified cookie in the specified cookie file */
int pa_authkey_save(const char *fn, const void *data, size_t length) {
int fd = -1;
int unlock = 0, ret = -1;
diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
index 6419c23..8101a92 100644
--- a/src/pulsecore/card.c
+++ b/src/pulsecore/card.c
@@ -141,9 +141,11 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
data->profiles = NULL;
c->active_profile = NULL;
+ c->save_profile = FALSE;
if (data->active_profile && c->profiles)
- c->active_profile = pa_hashmap_get(c->profiles, data->active_profile);
+ if ((c->active_profile = pa_hashmap_get(c->profiles, data->active_profile)))
+ c->save_profile = data->save_profile;
if (!c->active_profile && c->profiles) {
void *state = NULL;
@@ -209,7 +211,7 @@ void pa_card_free(pa_card *c) {
pa_xfree(c);
}
-int pa_card_set_profile(pa_card *c, const char *name) {
+int pa_card_set_profile(pa_card *c, const char *name, pa_bool_t save) {
pa_card_profile *profile;
pa_assert(c);
@@ -224,8 +226,10 @@ int pa_card_set_profile(pa_card *c, const char *name) {
if (!(profile = pa_hashmap_get(c->profiles, name)))
return -1;
- if (c->active_profile == profile)
+ if (c->active_profile == profile) {
+ c->save_profile = c->save_profile || save;
return 0;
+ }
if (c->set_profile(c, profile) < 0)
return -1;
@@ -235,6 +239,7 @@ int pa_card_set_profile(pa_card *c, const char *name) {
pa_log_info("Changed profile of card %u \"%s\" to %s", c->index, c->name, profile->name);
c->active_profile = profile;
+ c->save_profile = save;
return 0;
}
diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
index c80d4e2..3b7608f 100644
--- a/src/pulsecore/card.h
+++ b/src/pulsecore/card.h
@@ -63,6 +63,8 @@ struct pa_card {
pa_hashmap *profiles;
pa_card_profile *active_profile;
+ pa_bool_t save_profile;
+
void *userdata;
int (*set_profile)(pa_card *c, pa_card_profile *profile);
@@ -80,6 +82,8 @@ typedef struct pa_card_new_data {
char *active_profile;
pa_bool_t namereg_fail:1;
+
+ pa_bool_t save_profile:1;
} pa_card_new_data;
pa_card_profile *pa_card_profile_new(const char *name, const char *description, size_t extra);
@@ -93,7 +97,7 @@ void pa_card_new_data_done(pa_card_new_data *data);
pa_card *pa_card_new(pa_core *c, pa_card_new_data *data);
void pa_card_free(pa_card *c);
-int pa_card_set_profile(pa_card *c, const char *name);
+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);
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index b5f7e7f..15fe525 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -175,7 +175,7 @@ static const struct command commands[] = {
{ "suspend-sink", pa_cli_command_suspend_sink, "Suspend sink (args: index|name, bool)", 3},
{ "suspend-source", pa_cli_command_suspend_source, "Suspend source (args: index|name, bool)", 3},
{ "suspend", pa_cli_command_suspend, "Suspend all sinks and all sources (args: bool)", 2},
- { "set-card-profile", pa_cli_command_card_profile, "Change the profile of a card (aargs: index, name)", 3},
+ { "set-card-profile", pa_cli_command_card_profile, "Change the profile of a card (args: index, name)", 3},
{ "set-log-level", pa_cli_command_log_level, "Change the log level (args: numeric level)", 2},
{ "set-log-meta", pa_cli_command_log_meta, "Show source code location in log messages (args: bool)", 2},
{ "set-log-time", pa_cli_command_log_time, "Show timestamps in log messages (args: bool)", 2},
@@ -524,7 +524,7 @@ static int pa_cli_command_sink_volume(pa_core *c, pa_tokenizer *t, pa_strbuf *bu
}
pa_cvolume_set(&cvolume, sink->sample_spec.channels, volume);
- pa_sink_set_volume(sink, &cvolume, TRUE, TRUE);
+ pa_sink_set_volume(sink, &cvolume, TRUE, TRUE, TRUE);
return 0;
}
@@ -566,7 +566,7 @@ static int pa_cli_command_sink_input_volume(pa_core *c, pa_tokenizer *t, pa_strb
}
pa_cvolume_set(&cvolume, si->sample_spec.channels, volume);
- pa_sink_input_set_volume(si, &cvolume, TRUE);
+ pa_sink_input_set_volume(si, &cvolume, TRUE, TRUE);
return 0;
}
@@ -699,7 +699,10 @@ static int pa_cli_command_update_sink_proplist(pa_core *c, pa_tokenizer *t, pa_s
return -1;
}
- p = pa_proplist_from_string(s);
+ if (!(p = pa_proplist_from_string(s))) {
+ pa_strbuf_puts(buf, "Failed to parse proplist.\n");
+ return -1;
+ }
pa_sink_update_proplist(sink, PA_UPDATE_REPLACE, p);
@@ -733,7 +736,10 @@ static int pa_cli_command_update_source_proplist(pa_core *c, pa_tokenizer *t, pa
return -1;
}
- p = pa_proplist_from_string(s);
+ if (!(p = pa_proplist_from_string(s))) {
+ pa_strbuf_puts(buf, "Failed to parse proplist.\n");
+ return -1;
+ }
pa_source_update_proplist(source, PA_UPDATE_REPLACE, p);
@@ -773,7 +779,10 @@ static int pa_cli_command_update_sink_input_proplist(pa_core *c, pa_tokenizer *t
return -1;
}
- p = pa_proplist_from_string(s);
+ if (!(p = pa_proplist_from_string(s))) {
+ pa_strbuf_puts(buf, "Failed to parse proplist.\n");
+ return -1;
+ }
pa_sink_input_update_proplist(si, PA_UPDATE_REPLACE, p);
@@ -813,7 +822,10 @@ static int pa_cli_command_update_source_output_proplist(pa_core *c, pa_tokenizer
return -1;
}
- p = pa_proplist_from_string(s);
+ if (!(p = pa_proplist_from_string(s))) {
+ pa_strbuf_puts(buf, "Failed to parse proplist.\n");
+ return -1;
+ }
pa_source_output_update_proplist(so, PA_UPDATE_REPLACE, p);
@@ -1454,7 +1466,7 @@ static int pa_cli_command_card_profile(pa_core *c, pa_tokenizer *t, pa_strbuf *b
return -1;
}
- if (pa_card_set_profile(card, p) < 0) {
+ if (pa_card_set_profile(card, p, TRUE) < 0) {
pa_strbuf_printf(buf, "Failed to set card profile to '%s'.\n", p);
return -1;
}
@@ -1504,7 +1516,7 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
nl = 1;
}
- pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_avg(pa_sink_get_volume(sink, FALSE)));
+ pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_avg(pa_sink_get_volume(sink, FALSE, TRUE)));
pa_strbuf_printf(buf, "set-sink-mute %s %s\n", sink->name, pa_yes_no(pa_sink_get_mute(sink, FALSE)));
pa_strbuf_printf(buf, "suspend-sink %s %s\n", sink->name, pa_yes_no(pa_sink_get_state(sink) == PA_SINK_SUSPENDED));
}
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index 76adc4d..604678b 100644
--- a/src/pulsecore/cli-text.c
+++ b/src/pulsecore/cli-text.c
@@ -220,19 +220,17 @@ char *pa_sink_list_to_string(pa_core *c) {
v[PA_VOLUME_SNPRINT_MAX],
vdb[PA_SW_VOLUME_SNPRINT_DB_MAX],
cm[PA_CHANNEL_MAP_SNPRINT_MAX], *t;
- pa_usec_t min_latency, max_latency;
const char *cmn;
cmn = pa_channel_map_to_pretty_name(&sink->channel_map);
- pa_sink_get_latency_range(sink, &min_latency, &max_latency);
pa_strbuf_printf(
s,
" %c index: %u\n"
"\tname: <%s>\n"
"\tdriver: <%s>\n"
- "\tflags: %s%s%s%s%s%s%s\n"
+ "\tflags: %s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
@@ -240,7 +238,6 @@ char *pa_sink_list_to_string(pa_core *c) {
"\tvolume steps: %u\n"
"\tmuted: %s\n"
"\tcurrent latency: %0.2f ms\n"
- "\tconfigured latency: %0.2f ms; range is %0.2f .. %0.2f ms\n"
"\tmax request: %lu KiB\n"
"\tmax rewind: %lu KiB\n"
"\tmonitor source: %u\n"
@@ -258,21 +255,19 @@ char *pa_sink_list_to_string(pa_core *c) {
sink->flags & PA_SINK_HW_VOLUME_CTRL ? "HW_VOLUME_CTRL " : "",
sink->flags & PA_SINK_DECIBEL_VOLUME ? "DECIBEL_VOLUME " : "",
sink->flags & PA_SINK_LATENCY ? "LATENCY " : "",
- sink->flags & PA_SINK_FLAT_VOLUME ? "FLAT_VOLUME" : "",
+ 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)),
- pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE)),
+ 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)) : "",
- pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE), &sink->channel_map),
+ sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE, FALSE)) : "",
+ pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE, FALSE), &sink->channel_map),
pa_volume_snprint(v, sizeof(v), sink->base_volume),
sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "",
sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_volume_snprint_dB(vdb, sizeof(vdb), sink->base_volume) : "",
sink->n_volume_steps,
pa_yes_no(pa_sink_get_mute(sink, FALSE)),
(double) pa_sink_get_latency(sink) / (double) PA_USEC_PER_MSEC,
- (double) pa_sink_get_requested_latency(sink) / (double) PA_USEC_PER_MSEC,
- (double) min_latency / PA_USEC_PER_MSEC,
- (double) max_latency / PA_USEC_PER_MSEC,
(unsigned long) pa_sink_get_max_request(sink) / 1024,
(unsigned long) pa_sink_get_max_rewind(sink) / 1024,
sink->monitor_source ? sink->monitor_source->index : PA_INVALID_INDEX,
@@ -283,6 +278,22 @@ char *pa_sink_list_to_string(pa_core *c) {
pa_sink_used_by(sink),
pa_sink_linked_by(sink));
+ if (sink->flags & PA_SINK_DYNAMIC_LATENCY) {
+ pa_usec_t min_latency, max_latency;
+ pa_sink_get_latency_range(sink, &min_latency, &max_latency);
+
+ pa_strbuf_printf(
+ s,
+ "\tconfigured latency: %0.2f ms; range is %0.2f .. %0.2f ms\n",
+ (double) pa_sink_get_requested_latency(sink) / (double) PA_USEC_PER_MSEC,
+ (double) min_latency / PA_USEC_PER_MSEC,
+ (double) max_latency / PA_USEC_PER_MSEC);
+ } else
+ pa_strbuf_printf(
+ s,
+ "\tfixed latency: %0.2f ms\n",
+ (double) pa_sink_get_requested_latency(sink) / PA_USEC_PER_MSEC);
+
if (sink->card)
pa_strbuf_printf(s, "\tcard: %u <%s>\n", sink->card->index, sink->card->name);
if (sink->module)
@@ -313,19 +324,16 @@ char *pa_source_list_to_string(pa_core *c) {
v[PA_VOLUME_SNPRINT_MAX],
vdb[PA_SW_VOLUME_SNPRINT_DB_MAX],
cm[PA_CHANNEL_MAP_SNPRINT_MAX], *t;
- pa_usec_t min_latency, max_latency;
const char *cmn;
cmn = pa_channel_map_to_pretty_name(&source->channel_map);
- pa_source_get_latency_range(source, &min_latency, &max_latency);
-
pa_strbuf_printf(
s,
" %c index: %u\n"
"\tname: <%s>\n"
"\tdriver: <%s>\n"
- "\tflags: %s%s%s%s%s%s\n"
+ "\tflags: %s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tvolume: %s%s%s\n"
"\t balance %0.2f\n"
@@ -333,7 +341,6 @@ char *pa_source_list_to_string(pa_core *c) {
"\tvolume steps: %u\n"
"\tmuted: %s\n"
"\tcurrent latency: %0.2f ms\n"
- "\tconfigured latency: %0.2f ms; range is %0.2f .. %0.2f ms\n"
"\tmax rewind: %lu KiB\n"
"\tsample spec: %s\n"
"\tchannel map: %s%s%s\n"
@@ -349,6 +356,7 @@ char *pa_source_list_to_string(pa_core *c) {
source->flags & PA_SOURCE_HW_VOLUME_CTRL ? "HW_VOLUME_CTRL " : "",
source->flags & PA_SOURCE_DECIBEL_VOLUME ? "DECIBEL_VOLUME " : "",
source->flags & PA_SOURCE_LATENCY ? "LATENCY " : "",
+ source->flags & PA_SOURCE_DYNAMIC_LATENCY ? "DYNAMIC_LATENCY" : "",
source_state_to_string(pa_source_get_state(source)),
pa_cvolume_snprint(cv, sizeof(cv), pa_source_get_volume(source, FALSE)),
source->flags & PA_SOURCE_DECIBEL_VOLUME ? "\n\t " : "",
@@ -360,9 +368,6 @@ char *pa_source_list_to_string(pa_core *c) {
source->n_volume_steps,
pa_yes_no(pa_source_get_mute(source, FALSE)),
(double) pa_source_get_latency(source) / PA_USEC_PER_MSEC,
- (double) pa_source_get_requested_latency(source) / PA_USEC_PER_MSEC,
- (double) min_latency / PA_USEC_PER_MSEC,
- (double) max_latency / PA_USEC_PER_MSEC,
(unsigned long) pa_source_get_max_rewind(source) / 1024,
pa_sample_spec_snprint(ss, sizeof(ss), &source->sample_spec),
pa_channel_map_snprint(cm, sizeof(cm), &source->channel_map),
@@ -371,6 +376,22 @@ char *pa_source_list_to_string(pa_core *c) {
pa_source_used_by(source),
pa_source_linked_by(source));
+ if (source->flags & PA_SOURCE_DYNAMIC_LATENCY) {
+ pa_usec_t min_latency, max_latency;
+ pa_source_get_latency_range(source, &min_latency, &max_latency);
+
+ pa_strbuf_printf(
+ s,
+ "\tconfigured latency: %0.2f ms; range is %0.2f .. %0.2f ms\n",
+ (double) pa_source_get_requested_latency(source) / PA_USEC_PER_MSEC,
+ (double) min_latency / PA_USEC_PER_MSEC,
+ (double) max_latency / PA_USEC_PER_MSEC);
+ } else
+ pa_strbuf_printf(
+ s,
+ "\tfixed latency: %0.2f ms\n",
+ (double) pa_source_get_requested_latency(source) / PA_USEC_PER_MSEC);
+
if (source->monitor_of)
pa_strbuf_printf(s, "\tmonitor_of: %u\n", source->monitor_of->index);
if (source->card)
@@ -486,6 +507,9 @@ char *pa_sink_input_list_to_string(pa_core *c) {
char ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cvdb[PA_SW_CVOLUME_SNPRINT_DB_MAX], cv[PA_CVOLUME_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX], *t, clt[28];
pa_usec_t cl;
const char *cmn;
+ pa_cvolume v;
+
+ pa_sink_input_get_volume(i, &v, TRUE);
cmn = pa_channel_map_to_pretty_name(&i->channel_map);
@@ -526,9 +550,9 @@ char *pa_sink_input_list_to_string(pa_core *c) {
i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "",
state_table[pa_sink_input_get_state(i)],
i->sink->index, i->sink->name,
- pa_cvolume_snprint(cv, sizeof(cv), pa_sink_input_get_volume(i)),
- pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_input_get_volume(i)),
- pa_cvolume_get_balance(pa_sink_input_get_volume(i), &i->channel_map),
+ pa_cvolume_snprint(cv, sizeof(cv), &v),
+ pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), &v),
+ pa_cvolume_get_balance(&v, &i->channel_map),
pa_yes_no(pa_sink_input_get_mute(i)),
(double) pa_sink_input_get_latency(i, NULL) / PA_USEC_PER_MSEC,
clt,
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 0d243ee..24d929d 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -326,7 +326,7 @@ ssize_t pa_write(int fd, const void *buf, size_t count, int *type) {
}
/** Calls read() in a loop. Makes sure that as much as 'size' bytes,
- * unless EOF is reached or an error occured */
+ * unless EOF is reached or an error occurred */
ssize_t pa_loop_read(int fd, void*data, size_t size, int *type) {
ssize_t ret = 0;
int _type;
@@ -1242,7 +1242,7 @@ int pa_lock_lockfile(const char *fn) {
goto fail;
}
- /* Check wheter the file has been removed meanwhile. When yes,
+ /* Check whether the file has been removed meanwhile. When yes,
* restart this loop, otherwise, we're done */
if (st.st_nlink >= 1)
break;
@@ -2462,7 +2462,7 @@ char *pa_machine_id(void) {
pa_strip_nl(ln);
if (r && ln[0])
- return pa_xstrdup(ln);
+ return pa_utf8_filter(ln);
}
/* The we fall back to the host name. It supposed to be somewhat
@@ -2480,13 +2480,16 @@ char *pa_machine_id(void) {
break;
} else if (strlen(c) < l-1) {
+ char *u;
if (*c == 0) {
pa_xfree(c);
break;
}
- return c;
+ u = pa_utf8_filter(c);
+ pa_xfree(c);
+ return u;
}
/* Hmm, the hostname is as long the space we offered the
@@ -2498,10 +2501,19 @@ char *pa_machine_id(void) {
}
/* If no hostname was set we use the POSIX hostid. It's usually
- * the IPv4 address. Mit not be that stable. */
+ * the IPv4 address. Might not be that stable. */
return pa_sprintf_malloc("%08lx", (unsigned long) gethostid);
}
+char *pa_session_id(void) {
+ const char *e;
+
+ if (!(e = getenv("XDG_SESSION_COOKIE")))
+ return NULL;
+
+ return pa_utf8_filter(e);
+}
+
char *pa_uname_string(void) {
struct utsname u;
@@ -2608,7 +2620,7 @@ char *pa_unescape(char *p) {
}
char *pa_realpath(const char *path) {
- char *r, *t;
+ char *t;
pa_assert(path);
/* We want only abolsute paths */
@@ -2617,17 +2629,31 @@ char *pa_realpath(const char *path) {
return NULL;
}
-#ifndef __GLIBC__
-#error "It's not clear whether this system supports realpath(..., NULL) like GNU libc does. If it doesn't we need a private version of realpath() here."
-#endif
+#if defined(__GLIBC__) || defined(__APPLE__)
+ {
+ char *r;
- if (!(r = realpath(path, NULL)))
- return NULL;
+ if (!(r = realpath(path, NULL)))
+ return NULL;
+
+ /* We copy this here in case our pa_xmalloc() is not
+ * implemented on top of libc malloc() */
+ t = pa_xstrdup(r);
+ pa_xfree(r);
+ }
+#elif defined(PATH_MAX)
+ {
+ char *path_buf;
+ path_buf = pa_xmalloc(PATH_MAX);
- /* We copy this here in case our pa_xmalloc() is not implemented
- * on top of libc malloc() */
- t = pa_xstrdup(r);
- pa_xfree(r);
+ if (!(t = realpath(path, path_buf))) {
+ pa_xfree(path_buf);
+ return NULL;
+ }
+ }
+#else
+#error "It's not clear whether this system supports realpath(..., NULL) like GNU libc does. If it doesn't we need a private version of realpath() here."
+#endif
return t;
}
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index 0ba33f3..f96fa44 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -202,6 +202,7 @@ pa_bool_t pa_in_system_mode(void);
#define pa_streq(a,b) (!strcmp((a),(b)))
char *pa_machine_id(void);
+char *pa_session_id(void);
char *pa_uname_string(void);
#ifdef HAVE_VALGRIND_MEMCHECK_H
diff --git a/src/pulsecore/dbus-shared.c b/src/pulsecore/dbus-shared.c
new file mode 100644
index 0000000..9d9445b
--- /dev/null
+++ b/src/pulsecore/dbus-shared.c
@@ -0,0 +1,107 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006, 2009 Lennart Poettering
+ Copyright 2006 Shams E. King
+
+ 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 <stdarg.h>
+
+#include <pulse/xmalloc.h>
+#include <pulse/timeval.h>
+#include <pulsecore/log.h>
+#include <pulsecore/shared.h>
+
+#include "dbus-shared.h"
+
+struct pa_dbus_connection {
+ PA_REFCNT_DECLARE;
+
+ pa_dbus_wrap_connection *connection;
+ pa_core *core;
+ const char *property_name;
+};
+
+static pa_dbus_connection* dbus_connection_new(pa_core *c, pa_dbus_wrap_connection *conn, const char *name) {
+ pa_dbus_connection *pconn;
+
+ pconn = pa_xnew(pa_dbus_connection, 1);
+ PA_REFCNT_INIT(pconn);
+ pconn->core = c;
+ pconn->property_name = name;
+ pconn->connection = conn;
+
+ pa_shared_set(c, name, pconn);
+
+ return pconn;
+}
+
+pa_dbus_connection* pa_dbus_bus_get(pa_core *c, DBusBusType type, DBusError *error) {
+
+ static const char *const prop_name[] = {
+ [DBUS_BUS_SESSION] = "dbus-connection-session",
+ [DBUS_BUS_SYSTEM] = "dbus-connection-system",
+ [DBUS_BUS_STARTER] = "dbus-connection-starter"
+ };
+ pa_dbus_wrap_connection *conn;
+ pa_dbus_connection *pconn;
+
+ pa_assert(type == DBUS_BUS_SYSTEM || type == DBUS_BUS_SESSION || type == DBUS_BUS_STARTER);
+
+ if ((pconn = pa_shared_get(c, prop_name[type])))
+ return pa_dbus_connection_ref(pconn);
+
+ if (!(conn = pa_dbus_wrap_connection_new(c->mainloop, type, error)))
+ return NULL;
+
+ return dbus_connection_new(c, conn, prop_name[type]);
+}
+
+DBusConnection* pa_dbus_connection_get(pa_dbus_connection *c){
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) > 0);
+ pa_assert(c->connection);
+
+ return pa_dbus_wrap_connection_get(c->connection);
+}
+
+void pa_dbus_connection_unref(pa_dbus_connection *c) {
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) > 0);
+
+ if (PA_REFCNT_DEC(c) > 0)
+ return;
+
+ pa_dbus_wrap_connection_free(c->connection);
+
+ pa_shared_remove(c->core, c->property_name);
+ pa_xfree(c);
+}
+
+pa_dbus_connection* pa_dbus_connection_ref(pa_dbus_connection *c) {
+ pa_assert(c);
+ pa_assert(PA_REFCNT_VALUE(c) > 0);
+
+ PA_REFCNT_INC(c);
+
+ return c;
+}
diff --git a/src/pulsecore/dbus-shared.h b/src/pulsecore/dbus-shared.h
new file mode 100644
index 0000000..4c15455
--- /dev/null
+++ b/src/pulsecore/dbus-shared.h
@@ -0,0 +1,42 @@
+#ifndef foodbussharedhfoo
+#define foodbussharedhfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2004-2006, 2009 Lennart Poettering
+ Copyright 2006 Shams E. King
+
+ 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 <dbus/dbus.h>
+
+#include <pulsecore/core.h>
+#include <pulsecore/dbus-util.h>
+
+typedef struct pa_dbus_connection pa_dbus_connection;
+
+/* return a pa_dbus_connection of the specified type for the given core,
+ * like dbus_bus_get(), but integrates the connection with the pa_core */
+pa_dbus_connection* pa_dbus_bus_get(pa_core *c, DBusBusType type, DBusError *error);
+
+DBusConnection* pa_dbus_connection_get(pa_dbus_connection *conn);
+
+pa_dbus_connection* pa_dbus_connection_ref(pa_dbus_connection *conn);
+void pa_dbus_connection_unref(pa_dbus_connection *conn);
+
+#endif
diff --git a/src/modules/dbus-util.c b/src/pulsecore/dbus-util.c
index d51befb..ece36de 100644
--- a/src/modules/dbus-util.c
+++ b/src/pulsecore/dbus-util.c
@@ -28,17 +28,15 @@
#include <pulse/xmalloc.h>
#include <pulse/timeval.h>
+
+#include <pulsecore/core-util.h>
#include <pulsecore/log.h>
-#include <pulsecore/shared.h>
#include "dbus-util.h"
-struct pa_dbus_connection {
- PA_REFCNT_DECLARE;
-
- pa_core *core;
+struct pa_dbus_wrap_connection {
+ pa_mainloop_api *mainloop;
DBusConnection *connection;
- const char *property_name;
pa_defer_event* dispatch_event;
};
@@ -53,20 +51,20 @@ static void dispatch_cb(pa_mainloop_api *ea, pa_defer_event *ev, void *userdata)
/* DBusDispatchStatusFunction callback for the pa mainloop */
static void dispatch_status(DBusConnection *conn, DBusDispatchStatus status, void *userdata) {
- pa_dbus_connection *c = userdata;
+ pa_dbus_wrap_connection *c = userdata;
pa_assert(c);
switch(status) {
case DBUS_DISPATCH_COMPLETE:
- c->core->mainloop->defer_enable(c->dispatch_event, 0);
+ c->mainloop->defer_enable(c->dispatch_event, 0);
break;
case DBUS_DISPATCH_DATA_REMAINS:
case DBUS_DISPATCH_NEED_MEMORY:
default:
- c->core->mainloop->defer_enable(c->dispatch_event, 1);
+ c->mainloop->defer_enable(c->dispatch_event, 1);
break;
}
}
@@ -135,7 +133,7 @@ static void handle_time_event(pa_mainloop_api *ea, pa_time_event* e, const struc
/* DBusAddWatchFunction callback for pa mainloop */
static dbus_bool_t add_watch(DBusWatch *watch, void *data) {
- pa_core *c = PA_CORE(data);
+ pa_dbus_wrap_connection *c = data;
pa_io_event *ev;
pa_assert(watch);
@@ -157,7 +155,7 @@ static dbus_bool_t add_watch(DBusWatch *watch, void *data) {
/* DBusRemoveWatchFunction callback for pa mainloop */
static void remove_watch(DBusWatch *watch, void *data) {
- pa_core *c = PA_CORE(data);
+ pa_dbus_wrap_connection *c = data;
pa_io_event *ev;
pa_assert(watch);
@@ -169,11 +167,11 @@ static void remove_watch(DBusWatch *watch, void *data) {
/* DBusWatchToggledFunction callback for pa mainloop */
static void toggle_watch(DBusWatch *watch, void *data) {
- pa_core *c = PA_CORE(data);
+ pa_dbus_wrap_connection *c = data;
pa_io_event *ev;
pa_assert(watch);
- pa_core_assert_ref(c);
+ pa_assert(c);
pa_assert_se(ev = dbus_watch_get_data(watch));
@@ -183,7 +181,7 @@ static void toggle_watch(DBusWatch *watch, void *data) {
/* DBusAddTimeoutFunction callback for pa mainloop */
static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) {
- pa_core *c = PA_CORE(data);
+ pa_dbus_wrap_connection *c = data;
pa_time_event *ev;
struct timeval tv;
@@ -205,7 +203,7 @@ static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) {
/* DBusRemoveTimeoutFunction callback for pa mainloop */
static void remove_timeout(DBusTimeout *timeout, void *data) {
- pa_core *c = PA_CORE(data);
+ pa_dbus_wrap_connection *c = data;
pa_time_event *ev;
pa_assert(timeout);
@@ -217,7 +215,7 @@ static void remove_timeout(DBusTimeout *timeout, void *data) {
/* DBusTimeoutToggledFunction callback for pa mainloop */
static void toggle_timeout(DBusTimeout *timeout, void *data) {
- pa_core *c = PA_CORE(data);
+ pa_dbus_wrap_connection *c = data;
pa_time_event *ev;
pa_assert(timeout);
@@ -237,95 +235,68 @@ static void toggle_timeout(DBusTimeout *timeout, void *data) {
}
static void wakeup_main(void *userdata) {
- pa_dbus_connection *c = userdata;
+ pa_dbus_wrap_connection *c = userdata;
pa_assert(c);
/* this will wakeup the mainloop and dispatch events, although
* it may not be the cleanest way of accomplishing it */
- c->core->mainloop->defer_enable(c->dispatch_event, 1);
+ c->mainloop->defer_enable(c->dispatch_event, 1);
}
-static pa_dbus_connection* pa_dbus_connection_new(pa_core* c, DBusConnection *conn, const char* name) {
- pa_dbus_connection *pconn;
+pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *m, DBusBusType type, DBusError *error) {
+ DBusConnection *conn;
+ pa_dbus_wrap_connection *pconn;
+ char *id;
+
+ pa_assert(type == DBUS_BUS_SYSTEM || type == DBUS_BUS_SESSION || type == DBUS_BUS_STARTER);
- pconn = pa_xnew(pa_dbus_connection, 1);
- PA_REFCNT_INIT(pconn);
- pconn->core = c;
- pconn->property_name = name;
+ if (!(conn = dbus_bus_get_private(type, error)))
+ return NULL;
+
+ pconn = pa_xnew(pa_dbus_wrap_connection, 1);
+ pconn->mainloop = m;
pconn->connection = conn;
- pconn->dispatch_event = c->mainloop->defer_new(c->mainloop, dispatch_cb, conn);
- pa_shared_set(c, name, pconn);
+ dbus_connection_set_exit_on_disconnect(conn, FALSE);
+ dbus_connection_set_dispatch_status_function(conn, dispatch_status, pconn, NULL);
+ dbus_connection_set_watch_functions(conn, add_watch, remove_watch, toggle_watch, pconn, NULL);
+ dbus_connection_set_timeout_functions(conn, add_timeout, remove_timeout, toggle_timeout, pconn, NULL);
+ dbus_connection_set_wakeup_main_function(conn, wakeup_main, pconn, NULL);
+
+ pconn->dispatch_event = pconn->mainloop->defer_new(pconn->mainloop, dispatch_cb, conn);
- return pconn;
-}
+ pa_log_debug("Successfully connected to D-Bus %s bus %s as %s",
+ type == DBUS_BUS_SYSTEM ? "system" : (type == DBUS_BUS_SESSION ? "session" : "starter"),
+ pa_strnull((id = dbus_connection_get_server_id(conn))),
+ pa_strnull(dbus_bus_get_unique_name(conn)));
-DBusConnection* pa_dbus_connection_get(pa_dbus_connection *c){
- pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) > 0);
- pa_assert(c->connection);
+ dbus_free(id);
- return c->connection;
+ return pconn;
}
-void pa_dbus_connection_unref(pa_dbus_connection *c) {
+void pa_dbus_wrap_connection_free(pa_dbus_wrap_connection* c) {
pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) > 0);
-
- if (PA_REFCNT_DEC(c) > 0)
- return;
if (dbus_connection_get_is_connected(c->connection)) {
dbus_connection_close(c->connection);
- /* must process remaining messages, bit of a kludge to handle
+ /* must process remaining messages, bit of a kludge to handle
* both unload and shutdown */
- while (dbus_connection_read_write_dispatch(c->connection, -1));
+ while (dbus_connection_read_write_dispatch(c->connection, -1))
+ ;
}
- /* already disconnected, just free */
- pa_shared_remove(c->core, c->property_name);
- c->core->mainloop->defer_free(c->dispatch_event);
+ c->mainloop->defer_free(c->dispatch_event);
dbus_connection_unref(c->connection);
pa_xfree(c);
}
-pa_dbus_connection* pa_dbus_connection_ref(pa_dbus_connection *c) {
- pa_assert(c);
- pa_assert(PA_REFCNT_VALUE(c) > 0);
+DBusConnection* pa_dbus_wrap_connection_get(pa_dbus_wrap_connection *c) {
+ pa_assert(c);
+ pa_assert(c->connection);
- PA_REFCNT_INC(c);
-
- return c;
-}
-
-pa_dbus_connection* pa_dbus_bus_get(pa_core *c, DBusBusType type, DBusError *error) {
-
- static const char *const prop_name[] = {
- [DBUS_BUS_SESSION] = "dbus-connection-session",
- [DBUS_BUS_SYSTEM] = "dbus-connection-system",
- [DBUS_BUS_STARTER] = "dbus-connection-starter"
- };
- DBusConnection *conn;
- pa_dbus_connection *pconn;
-
- pa_assert(type == DBUS_BUS_SYSTEM || type == DBUS_BUS_SESSION || type == DBUS_BUS_STARTER);
-
- if ((pconn = pa_shared_get(c, prop_name[type])))
- return pa_dbus_connection_ref(pconn);
-
- if (!(conn = dbus_bus_get_private(type, error)))
- return NULL;
-
- pconn = pa_dbus_connection_new(c, conn, prop_name[type]);
-
- dbus_connection_set_exit_on_disconnect(conn, FALSE);
- dbus_connection_set_dispatch_status_function(conn, dispatch_status, pconn, NULL);
- dbus_connection_set_watch_functions(conn, add_watch, remove_watch, toggle_watch, c, NULL);
- dbus_connection_set_timeout_functions(conn, add_timeout, remove_timeout, toggle_timeout, c, NULL);
- dbus_connection_set_wakeup_main_function(conn, wakeup_main, pconn, NULL);
-
- return pconn;
+ return c->connection;
}
int pa_dbus_add_matches(DBusConnection *c, DBusError *error, ...) {
@@ -383,12 +354,19 @@ void pa_dbus_remove_matches(DBusConnection *c, ...) {
va_end(ap);
}
-pa_dbus_pending *pa_dbus_pending_new(DBusMessage *m, DBusPendingCall *pending, void *context_data, void *call_data) {
+pa_dbus_pending *pa_dbus_pending_new(
+ DBusConnection *c,
+ DBusMessage *m,
+ DBusPendingCall *pending,
+ void *context_data,
+ void *call_data) {
+
pa_dbus_pending *p;
pa_assert(pending);
p = pa_xnew(pa_dbus_pending, 1);
+ p->connection = c;
p->message = m;
p->pending = pending;
p->context_data = context_data;
@@ -403,7 +381,8 @@ void pa_dbus_pending_free(pa_dbus_pending *p) {
pa_assert(p);
if (p->pending) {
- dbus_pending_call_cancel(p->pending); /* p->pending is freed by cancel() */
+ dbus_pending_call_cancel(p->pending);
+ dbus_pending_call_unref(p->pending);
}
if (p->message)
@@ -415,8 +394,8 @@ void pa_dbus_pending_free(pa_dbus_pending *p) {
void pa_dbus_sync_pending_list(pa_dbus_pending **p) {
pa_assert(p);
- while (*p)
- dbus_pending_call_block((*p)->pending);
+ while (*p && dbus_connection_read_write_dispatch((*p)->connection, -1))
+ ;
}
void pa_dbus_free_pending_list(pa_dbus_pending **p) {
diff --git a/src/modules/dbus-util.h b/src/pulsecore/dbus-util.h
index 90abbc7..55cda7a 100644
--- a/src/modules/dbus-util.h
+++ b/src/pulsecore/dbus-util.h
@@ -24,28 +24,24 @@
#include <dbus/dbus.h>
-#include <pulsecore/core.h>
#include <pulsecore/llist.h>
+#include <pulse/mainloop-api.h>
-typedef struct pa_dbus_connection pa_dbus_connection;
+/* A wrap connection is not shared or refcounted, it is available in client side */
+typedef struct pa_dbus_wrap_connection pa_dbus_wrap_connection;
-/* return the DBusConnection of the specified type for the given core,
- * like dbus_bus_get(), but integrates the connection with the pa_core */
-pa_dbus_connection* pa_dbus_bus_get(pa_core *c, DBusBusType type, DBusError *error);
+pa_dbus_wrap_connection* pa_dbus_wrap_connection_new(pa_mainloop_api *mainloop, DBusBusType type, DBusError *error);
+void pa_dbus_wrap_connection_free(pa_dbus_wrap_connection* conn);
-DBusConnection* pa_dbus_connection_get(pa_dbus_connection *conn);
-
-pa_dbus_connection* pa_dbus_connection_ref(pa_dbus_connection *conn);
-void pa_dbus_connection_unref(pa_dbus_connection *conn);
+DBusConnection* pa_dbus_wrap_connection_get(pa_dbus_wrap_connection *conn);
int pa_dbus_add_matches(DBusConnection *c, DBusError *error, ...) PA_GCC_SENTINEL;
void pa_dbus_remove_matches(DBusConnection *c, ...) PA_GCC_SENTINEL;
typedef struct pa_dbus_pending pa_dbus_pending;
-struct userdata; /* We leave the actual definition to the caller */
-
struct pa_dbus_pending {
+ DBusConnection *connection;
DBusMessage *message;
DBusPendingCall *pending;
@@ -55,7 +51,7 @@ struct pa_dbus_pending {
PA_LLIST_FIELDS(pa_dbus_pending);
};
-pa_dbus_pending *pa_dbus_pending_new(DBusMessage *m, DBusPendingCall *pending, void *context_data, void *call_data);
+pa_dbus_pending *pa_dbus_pending_new(DBusConnection *c, DBusMessage *m, DBusPendingCall *pending, void *context_data, void *call_data);
void pa_dbus_pending_free(pa_dbus_pending *p);
/* Sync up a list of pa_dbus_pending_call objects */
diff --git a/src/pulsecore/hook-list.c b/src/pulsecore/hook-list.c
index 5f7a866..a00116d 100644
--- a/src/pulsecore/hook-list.c
+++ b/src/pulsecore/hook-list.c
@@ -121,3 +121,9 @@ pa_hook_result_t pa_hook_fire(pa_hook *hook, void *data) {
return result;
}
+
+pa_bool_t pa_hook_is_firing(pa_hook *hook) {
+ pa_assert(hook);
+
+ return hook->n_firing > 0;
+}
diff --git a/src/pulsecore/hook-list.h b/src/pulsecore/hook-list.h
index 8514cce..86ce9d2 100644
--- a/src/pulsecore/hook-list.h
+++ b/src/pulsecore/hook-list.h
@@ -71,4 +71,6 @@ void pa_hook_slot_free(pa_hook_slot *slot);
pa_hook_result_t pa_hook_fire(pa_hook *hook, void *data);
+pa_bool_t pa_hook_is_firing(pa_hook *hook);
+
#endif
diff --git a/src/pulsecore/log.c b/src/pulsecore/log.c
index d4d3b76..60ea9c5 100644
--- a/src/pulsecore/log.c
+++ b/src/pulsecore/log.c
@@ -59,12 +59,13 @@
#define ENV_LOG_PRINT_META "PULSE_LOG_META"
#define ENV_LOG_PRINT_LEVEL "PULSE_LOG_LEVEL"
#define ENV_LOG_BACKTRACE "PULSE_LOG_BACKTRACE"
+#define ENV_LOG_BACKTRACE_SKIP "PULSE_LOG_BACKTRACE_SKIP"
static char *ident = NULL; /* in local charset format */
static pa_log_target_t target = PA_LOG_STDERR, target_override;
static pa_bool_t target_override_set = FALSE;
static pa_log_level_t maximum_level = PA_LOG_ERROR, maximum_level_override = PA_LOG_ERROR;
-static unsigned show_backtrace = 0, show_backtrace_override = 0;
+static unsigned show_backtrace = 0, show_backtrace_override = 0, skip_backtrace = 0;
static pa_log_flags_t flags = 0, flags_override = 0;
#ifdef HAVE_SYSLOG_H
@@ -128,13 +129,17 @@ void pa_log_set_show_backtrace(unsigned nlevels) {
show_backtrace = nlevels;
}
+void pa_log_set_skip_backtrace(unsigned nlevels) {
+ skip_backtrace = nlevels;
+}
+
#ifdef HAVE_EXECINFO_H
static char* get_backtrace(unsigned show_nframes) {
void* trace[32];
int n_frames;
char **symbols, *e, *r;
- unsigned j, n;
+ unsigned j, n, s;
size_t a;
pa_assert(show_nframes > 0);
@@ -149,14 +154,15 @@ static char* get_backtrace(unsigned show_nframes) {
if (!symbols)
return NULL;
- n = PA_MIN((unsigned) n_frames, show_nframes);
+ s = skip_backtrace;
+ n = PA_MIN((unsigned) n_frames, s + show_nframes);
a = 4;
- for (j = 0; j < n; j++) {
- if (j > 0)
+ for (j = s; j < n; j++) {
+ if (j > s)
a += 2;
- a += strlen(symbols[j]);
+ a += strlen(pa_path_get_filename(symbols[j]));
}
r = pa_xnew(char, a);
@@ -164,14 +170,18 @@ static char* get_backtrace(unsigned show_nframes) {
strcpy(r, " (");
e = r + 2;
- for (j = 0; j < n; j++) {
- if (j > 0) {
+ for (j = s; j < n; j++) {
+ const char *sym;
+
+ if (j > s) {
strcpy(e, "<<");
e += 2;
}
- strcpy(e, symbols[j]);
- e += strlen(symbols[j]);
+ sym = pa_path_get_filename(symbols[j]);
+
+ strcpy(e, sym);
+ e += strlen(sym);
}
strcpy(e, ")");
@@ -225,6 +235,13 @@ static void init_defaults(void) {
if (show_backtrace_override <= 0)
show_backtrace_override = 0;
}
+
+ if ((e = getenv(ENV_LOG_BACKTRACE_SKIP))) {
+ skip_backtrace = (unsigned) atoi(e);
+
+ if (skip_backtrace <= 0)
+ skip_backtrace = 0;
+ }
}
void pa_log_levelv_meta(
@@ -245,7 +262,7 @@ void pa_log_levelv_meta(
/* We don't use dynamic memory allocation here to minimize the hit
* in RT threads */
- char text[4096], location[128], timestamp[32];
+ char text[16*1024], location[128], timestamp[32];
pa_assert(level < PA_LOG_LEVEL_MAX);
pa_assert(format);
diff --git a/src/pulsecore/log.h b/src/pulsecore/log.h
index 153e11e..2f379f6 100644
--- a/src/pulsecore/log.h
+++ b/src/pulsecore/log.h
@@ -77,6 +77,9 @@ void pa_log_set_flags(pa_log_flags_t flags, pa_log_merge_t merge);
/* Enable backtrace */
void pa_log_set_show_backtrace(unsigned nlevels);
+/* Skip the first backtrace frames */
+void pa_log_set_skip_backtrace(unsigned nlevels);
+
void pa_log_level_meta(
pa_log_level_t level,
const char*file,
@@ -110,6 +113,7 @@ void pa_log_levelv(
#define pa_log_notice(...) pa_log_level_meta(PA_LOG_NOTICE, __FILE__, __LINE__, __func__, __VA_ARGS__)
#define pa_log_warn(...) pa_log_level_meta(PA_LOG_WARN, __FILE__, __LINE__, __func__, __VA_ARGS__)
#define pa_log_error(...) pa_log_level_meta(PA_LOG_ERROR, __FILE__, __LINE__, __func__, __VA_ARGS__)
+#define pa_logl(level, ...) pa_log_level_meta(level, __FILE__, __LINE__, __func__, __VA_ARGS__)
#else
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index 20015bf..a5ca696 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -164,8 +164,8 @@ typedef int pa_bool_t;
#define pa_return_null_if_fail(expr) pa_return_val_if_fail(expr, NULL)
-/* An assert which guarantees side effects of x, i.e. is never
- * optimized away */
+/* pa_assert_se() is an assert which guarantees side effects of x,
+ * i.e. is never optimized away, regardless of NDEBUG or FASTPATH. */
#define pa_assert_se(expr) \
do { \
if (PA_UNLIKELY(!(expr))) { \
@@ -174,18 +174,44 @@ typedef int pa_bool_t;
} \
} while (FALSE)
-/* An assert that may be optimized away by defining NDEBUG */
+/* Does exactly nothing */
+#define pa_nop() do {} while (FALSE)
+
+/* pa_assert() is an assert that may be optimized away by defining
+ * NDEBUG. pa_assert_fp() is an assert that may be optimized away by
+ * defining FASTPATH. It is supposed to be used in inner loops. It's
+ * there for extra paranoia checking and should probably be removed in
+ * production builds. */
#ifdef NDEBUG
-#define pa_assert(expr) do {} while (FALSE)
+#define pa_assert(expr) pa_nop()
+#define pa_assert_fp(expr) pa_nop()
+#elif defined (FASTPATH)
+#define pa_assert(expr) pa_assert_se(expr)
+#define pa_assert_fp(expr) pa_nop()
#else
#define pa_assert(expr) pa_assert_se(expr)
+#define pa_assert_fp(expr) pa_assert_se(expr)
#endif
+#ifdef NDEBUG
+#define pa_assert_not_reached() pa_nop()
+#else
#define pa_assert_not_reached() \
do { \
pa_log_error("Code should not be reached at %s:%u, function %s(). Aborting.", __FILE__, __LINE__, PA_PRETTY_FUNCTION); \
abort(); \
} while (FALSE)
+#endif
+
+/* A compile time assertion */
+#define pa_assert_cc(expr) \
+ do { \
+ switch (0) { \
+ case 0: \
+ case !!(expr): \
+ ; \
+ } \
+ } while (FALSE)
#define PA_PTR_TO_UINT(p) ((unsigned int) ((uintptr_t) (p)))
#define PA_UINT_TO_PTR(u) ((void*) ((uintptr_t) (u)))
diff --git a/src/pulsecore/memblock.c b/src/pulsecore/memblock.c
index fbf0a47..6cc0ff3 100644
--- a/src/pulsecore/memblock.c
+++ b/src/pulsecore/memblock.c
@@ -745,8 +745,47 @@ void pa_mempool_free(pa_mempool *p) {
pa_flist_free(p->free_slots, NULL);
if (pa_atomic_load(&p->stat.n_allocated) > 0) {
-/* raise(SIGTRAP); */
- pa_log_warn("Memory pool destroyed but not all memory blocks freed! %u remain.", pa_atomic_load(&p->stat.n_allocated));
+
+ /* Ouch, somebody is retaining a memory block reference! */
+
+#ifdef DEBUG_REF
+ unsigned i;
+ pa_flist *list;
+
+ /* Let's try to find at least one of those leaked memory blocks */
+
+ list = pa_flist_new(p->n_blocks);
+
+ for (i = 0; i < (unsigned) pa_atomic_load(&p->n_init); i++) {
+ struct mempool_slot *slot;
+ pa_memblock *b, *k;
+
+ slot = (struct mempool_slot*) ((uint8_t*) p->memory.ptr + (p->block_size * (size_t) i));
+ b = mempool_slot_data(slot);
+
+ while ((k = pa_flist_pop(p->free_slots))) {
+ while (pa_flist_push(list, k) < 0)
+ ;
+
+ if (b == k)
+ break;
+ }
+
+ if (!k)
+ pa_log("REF: Leaked memory block %p", b);
+
+ while ((k = pa_flist_pop(list)))
+ while (pa_flist_push(p->free_slots, k) < 0)
+ ;
+ }
+
+ pa_flist_free(list, NULL);
+
+#endif
+
+ pa_log_error("Memory pool destroyed but not all memory blocks freed! %u remain.", pa_atomic_load(&p->stat.n_allocated));
+
+/* PA_DEBUG_TRAP; */
}
pa_shm_free(&p->memory);
diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c
index e2be42b..77f9efc 100644
--- a/src/pulsecore/memblockq.c
+++ b/src/pulsecore/memblockq.c
@@ -90,8 +90,8 @@ pa_memblockq* pa_memblockq_new(
pa_memblockq_set_maxlength(bq, maxlength);
pa_memblockq_set_tlength(bq, tlength);
- pa_memblockq_set_prebuf(bq, prebuf);
pa_memblockq_set_minreq(bq, minreq);
+ pa_memblockq_set_prebuf(bq, prebuf);
pa_memblockq_set_maxrewind(bq, maxrewind);
pa_log_debug("memblockq sanitized: maxlength=%lu, tlength=%lu, base=%lu, prebuf=%lu, minreq=%lu maxrewind=%lu",
@@ -601,7 +601,7 @@ size_t pa_memblockq_missing(pa_memblockq *bq) {
return l >= bq->minreq ? l : 0;
}
-void pa_memblockq_seek(pa_memblockq *bq, int64_t offset, pa_seek_mode_t seek) {
+void pa_memblockq_seek(pa_memblockq *bq, int64_t offset, pa_seek_mode_t seek, pa_bool_t account) {
int64_t old, delta;
pa_assert(bq);
@@ -628,12 +628,14 @@ void pa_memblockq_seek(pa_memblockq *bq, int64_t offset, pa_seek_mode_t seek) {
delta = bq->write_index - old;
- if (delta >= (int64_t) bq->requested) {
- delta -= (int64_t) bq->requested;
- bq->requested = 0;
- } else if (delta >= 0) {
- bq->requested -= (size_t) delta;
- delta = 0;
+ if (account) {
+ if (delta >= (int64_t) bq->requested) {
+ delta -= (int64_t) bq->requested;
+ bq->requested = 0;
+ } else if (delta >= 0) {
+ bq->requested -= (size_t) delta;
+ delta = 0;
+ }
}
bq->missing -= delta;
@@ -782,16 +784,13 @@ void pa_memblockq_set_maxlength(pa_memblockq *bq, size_t maxlength) {
if (bq->tlength > bq->maxlength)
pa_memblockq_set_tlength(bq, bq->maxlength);
-
- if (bq->prebuf > bq->maxlength)
- pa_memblockq_set_prebuf(bq, bq->maxlength);
}
void pa_memblockq_set_tlength(pa_memblockq *bq, size_t tlength) {
size_t old_tlength;
pa_assert(bq);
- if (tlength <= 0)
+ if (tlength <= 0 || tlength == (size_t) -1)
tlength = bq->maxlength;
old_tlength = bq->tlength;
@@ -800,55 +799,72 @@ void pa_memblockq_set_tlength(pa_memblockq *bq, size_t tlength) {
if (bq->tlength > bq->maxlength)
bq->tlength = bq->maxlength;
- if (bq->prebuf > bq->tlength)
- pa_memblockq_set_prebuf(bq, bq->tlength);
-
if (bq->minreq > bq->tlength)
pa_memblockq_set_minreq(bq, bq->tlength);
+ if (bq->prebuf > bq->tlength+bq->base-bq->minreq)
+ pa_memblockq_set_prebuf(bq, bq->tlength+bq->base-bq->minreq);
+
bq->missing += (int64_t) bq->tlength - (int64_t) old_tlength;
}
+void pa_memblockq_set_minreq(pa_memblockq *bq, size_t minreq) {
+ pa_assert(bq);
+
+ bq->minreq = (minreq/bq->base)*bq->base;
+
+ if (bq->minreq > bq->tlength)
+ bq->minreq = bq->tlength;
+
+ if (bq->minreq < bq->base)
+ bq->minreq = bq->base;
+
+ if (bq->prebuf > bq->tlength+bq->base-bq->minreq)
+ pa_memblockq_set_prebuf(bq, bq->tlength+bq->base-bq->minreq);
+}
+
void pa_memblockq_set_prebuf(pa_memblockq *bq, size_t prebuf) {
pa_assert(bq);
if (prebuf == (size_t) -1)
- prebuf = bq->tlength;
+ prebuf = bq->tlength+bq->base-bq->minreq;
bq->prebuf = ((prebuf+bq->base-1)/bq->base)*bq->base;
if (prebuf > 0 && bq->prebuf < bq->base)
bq->prebuf = bq->base;
- if (bq->prebuf > bq->tlength)
- bq->prebuf = bq->tlength;
+ if (bq->prebuf > bq->tlength+bq->base-bq->minreq)
+ bq->prebuf = bq->tlength+bq->base-bq->minreq;
if (bq->prebuf <= 0 || pa_memblockq_get_length(bq) >= bq->prebuf)
bq->in_prebuf = FALSE;
-
- if (bq->minreq > bq->prebuf)
- pa_memblockq_set_minreq(bq, bq->prebuf);
}
-void pa_memblockq_set_minreq(pa_memblockq *bq, size_t minreq) {
+void pa_memblockq_set_maxrewind(pa_memblockq *bq, size_t maxrewind) {
pa_assert(bq);
- bq->minreq = (minreq/bq->base)*bq->base;
-
- if (bq->minreq > bq->tlength)
- bq->minreq = bq->tlength;
+ bq->maxrewind = (maxrewind/bq->base)*bq->base;
+}
- if (bq->minreq > bq->prebuf)
- bq->minreq = bq->prebuf;
+void pa_memblockq_apply_attr(pa_memblockq *bq, const pa_buffer_attr *a) {
+ pa_assert(bq);
+ pa_assert(a);
- if (bq->minreq < bq->base)
- bq->minreq = bq->base;
+ pa_memblockq_set_maxlength(bq, a->maxlength);
+ pa_memblockq_set_tlength(bq, a->tlength);
+ pa_memblockq_set_prebuf(bq, a->prebuf);
+ pa_memblockq_set_minreq(bq, a->minreq);
}
-void pa_memblockq_set_maxrewind(pa_memblockq *bq, size_t maxrewind) {
+void pa_memblockq_get_attr(pa_memblockq *bq, pa_buffer_attr *a) {
pa_assert(bq);
+ pa_assert(a);
- bq->maxrewind = (maxrewind/bq->base)*bq->base;
+ a->maxlength = (uint32_t) pa_memblockq_get_maxlength(bq);
+ a->tlength = (uint32_t) pa_memblockq_get_tlength(bq);
+ a->prebuf = (uint32_t) pa_memblockq_get_prebuf(bq);
+ a->minreq = (uint32_t) pa_memblockq_get_minreq(bq);
}
int pa_memblockq_splice(pa_memblockq *bq, pa_memblockq *source) {
@@ -875,7 +891,7 @@ int pa_memblockq_splice(pa_memblockq *bq, pa_memblockq *source) {
pa_memblock_unref(chunk.memblock);
} else
- pa_memblockq_seek(bq, (int64_t) chunk.length, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(bq, (int64_t) chunk.length, PA_SEEK_RELATIVE, TRUE);
pa_memblockq_drop(bq, chunk.length);
}
diff --git a/src/pulsecore/memblockq.h b/src/pulsecore/memblockq.h
index 0a74aa3..146d261 100644
--- a/src/pulsecore/memblockq.h
+++ b/src/pulsecore/memblockq.h
@@ -85,7 +85,7 @@ int pa_memblockq_push(pa_memblockq* bq, const pa_memchunk *chunk);
int pa_memblockq_push_align(pa_memblockq* bq, const pa_memchunk *chunk);
/* Manipulate the write pointer */
-void pa_memblockq_seek(pa_memblockq *bq, int64_t offset, pa_seek_mode_t seek);
+void pa_memblockq_seek(pa_memblockq *bq, int64_t offset, pa_seek_mode_t seek, pa_bool_t account);
/* Return a copy of the next memory chunk in the queue. It is not
* removed from the queue. There are two reasons this function might
@@ -158,6 +158,10 @@ void pa_memblockq_set_minreq(pa_memblockq *memblockq, size_t minreq);
void pa_memblockq_set_maxrewind(pa_memblockq *memblockq, size_t maxrewind); /* Set the maximum history size */
void pa_memblockq_set_silence(pa_memblockq *memblockq, pa_memchunk *silence);
+/* Apply the data from pa_buffer_attr */
+void pa_memblockq_apply_attr(pa_memblockq *memblockq, const pa_buffer_attr *a);
+void pa_memblockq_get_attr(pa_memblockq *bq, pa_buffer_attr *a);
+
/* Call pa_memchunk_willneed() for every chunk in the queue from the current read pointer to the end */
void pa_memblockq_willneed(pa_memblockq *bq);
@@ -175,5 +179,4 @@ pa_bool_t pa_memblockq_prebuf_active(pa_memblockq *bq);
/* Return how many items are currently stored in the queue */
unsigned pa_memblockq_get_nblocks(pa_memblockq *bq);
-
#endif
diff --git a/src/pulsecore/native-common.h b/src/pulsecore/native-common.h
index 6951e10..d4d7f3e 100644
--- a/src/pulsecore/native-common.h
+++ b/src/pulsecore/native-common.h
@@ -152,7 +152,7 @@ enum {
/* Supported since protocol v14 (0.9.12) */
PA_COMMAND_EXTENSION,
- /* Supported since protocol v15 (0.9.15*/
+ /* Supported since protocol v15 (0.9.15) */
PA_COMMAND_GET_CARD_INFO,
PA_COMMAND_GET_CARD_INFO_LIST,
PA_COMMAND_SET_CARD_PROFILE,
@@ -161,6 +161,10 @@ enum {
PA_COMMAND_PLAYBACK_STREAM_EVENT,
PA_COMMAND_RECORD_STREAM_EVENT,
+ /* SERVER->CLIENT */
+ PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED,
+ PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED,
+
PA_COMMAND_MAX
};
diff --git a/src/pulsecore/parseaddr.c b/src/pulsecore/parseaddr.c
index c5cd7fe..5b53122 100644
--- a/src/pulsecore/parseaddr.c
+++ b/src/pulsecore/parseaddr.c
@@ -87,13 +87,15 @@ int pa_parse_address(const char *name, pa_parsed_address *ret_p) {
ret_p->type = PA_PARSED_ADDRESS_TCP_AUTO;
if (*name == '{') {
- char hn[256], *pfx;
- /* The URL starts with a host specification for detecting local connections */
+ char *id, *pfx;
- if (!pa_get_host_name(hn, sizeof(hn)))
+ /* The URL starts with a host id for detecting local connections */
+ if (!(id = pa_machine_id()))
return -1;
- pfx = pa_sprintf_malloc("{%s}", hn);
+ pfx = pa_sprintf_malloc("{%s}", id);
+ pa_xfree(id);
+
if (!pa_startswith(name, pfx)) {
pa_xfree(pfx);
/* Not local */
diff --git a/src/pulsecore/pdispatch.c b/src/pulsecore/pdispatch.c
index 305941a..d00106b 100644
--- a/src/pulsecore/pdispatch.c
+++ b/src/pulsecore/pdispatch.c
@@ -165,7 +165,20 @@ static const char *command_names[PA_COMMAND_MAX] = {
[PA_COMMAND_STARTED] = "STARTED",
/* Supported since protocol v14 (0.9.12) */
- [PA_COMMAND_EXTENSION] = "EXTENSION"
+ [PA_COMMAND_EXTENSION] = "EXTENSION",
+
+
+ [PA_COMMAND_GET_CARD_INFO] = "GET_CARD_INFO",
+ [PA_COMMAND_GET_CARD_INFO_LIST] = "GET_CARD_INFO_LIST",
+ [PA_COMMAND_SET_CARD_PROFILE] = "SET_CARD_PROFILE",
+
+ [PA_COMMAND_CLIENT_EVENT] = "GET_CLIENT_EVENT",
+ [PA_COMMAND_PLAYBACK_STREAM_EVENT] = "PLAYBACK_STREAM_EVENT",
+ [PA_COMMAND_RECORD_STREAM_EVENT] = "RECORD_STREAM_EVENT",
+
+ /* SERVER->CLIENT */
+ [PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED] = "PLAYBACK_BUFFER_ATTR_CHANGED",
+ [PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED] = "RECORD_BUFFER_ATTR_CHANGED"
};
#endif
diff --git a/src/pulsecore/proplist-util.c b/src/pulsecore/proplist-util.c
index af5f0aa..eac8927 100644
--- a/src/pulsecore/proplist-util.c
+++ b/src/pulsecore/proplist-util.c
@@ -231,12 +231,11 @@ void pa_init_proplist(pa_proplist *p) {
}
if (!pa_proplist_contains(p, PA_PROP_APPLICATION_PROCESS_SESSION_ID)) {
- const char *t;
+ char *s;
- if ((t = getenv("XDG_SESSION_COOKIE"))) {
- char *c = pa_utf8_filter(t);
- pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_SESSION_ID, c);
- pa_xfree(c);
+ if ((s = pa_session_id())) {
+ pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_SESSION_ID, s);
+ pa_xfree(s);
}
}
}
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 2b80c65..7e7126e 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -562,7 +562,7 @@ static int esd_proto_get_latency(connection *c, esd_proto_t request, const void
pa_sink *sink;
int32_t latency;
- connection_ref(c);
+ connection_assert_ref(c);
pa_assert(!data);
pa_assert(length == 0);
@@ -575,6 +575,7 @@ static int esd_proto_get_latency(connection *c, esd_proto_t request, const void
latency = PA_MAYBE_INT32_SWAP(c->swap_byte_order, latency);
connection_write(c, &latency, sizeof(int32_t));
+
return 0;
}
@@ -583,7 +584,7 @@ static int esd_proto_server_info(connection *c, esd_proto_t request, const void
int32_t response;
pa_sink *sink;
- connection_ref(c);
+ connection_assert_ref(c);
pa_assert(data);
pa_assert(length == sizeof(int32_t));
@@ -611,7 +612,7 @@ static int esd_proto_all_info(connection *c, esd_proto_t request, const void *da
unsigned nsamples;
char terminator[sizeof(int32_t)*6+ESD_NAME_MAX];
- connection_ref(c);
+ connection_assert_ref(c);
pa_assert(data);
pa_assert(length == sizeof(int32_t));
@@ -637,7 +638,8 @@ static int esd_proto_all_info(connection *c, esd_proto_t request, const void *da
pa_assert(t >= k*2+s);
if (conn->sink_input) {
- pa_cvolume volume = *pa_sink_input_get_volume(conn->sink_input);
+ pa_cvolume volume;
+ pa_sink_input_get_volume(conn->sink_input, &volume, TRUE);
rate = (int32_t) conn->sink_input->sample_spec.rate;
lvolume = (int32_t) ((volume.values[0]*ESD_VOLUME_BASE)/PA_VOLUME_NORM);
rvolume = (int32_t) ((volume.values[volume.channels == 2 ? 1 : 0]*ESD_VOLUME_BASE)/PA_VOLUME_NORM);
@@ -777,7 +779,7 @@ static int esd_proto_stream_pan(connection *c, esd_proto_t request, const void *
volume.values[1] = (rvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE;
volume.channels = conn->sink_input->sample_spec.channels;
- pa_sink_input_set_volume(conn->sink_input, &volume, TRUE);
+ pa_sink_input_set_volume(conn->sink_input, &volume, TRUE, TRUE);
ok = 1;
} else
ok = 0;
@@ -1105,8 +1107,7 @@ static int do_read(connection *c) {
pa_scache_add_item(c->protocol->core, c->scache.name, &c->scache.sample_spec, NULL, &c->scache.memchunk, c->client->proplist, &idx);
pa_memblock_unref(c->scache.memchunk.memblock);
- c->scache.memchunk.memblock = NULL;
- c->scache.memchunk.index = c->scache.memchunk.length = 0;
+ pa_memchunk_reset(&c->scache.memchunk);
pa_xfree(c->scache.name);
c->scache.name = NULL;
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index 50a9191..aecaf71 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -81,8 +81,20 @@ typedef struct record_stream {
pa_source_output *source_output;
pa_memblockq *memblockq;
- size_t fragment_size;
- pa_usec_t source_latency;
+
+ pa_bool_t adjust_latency:1;
+ pa_bool_t early_requests:1;
+
+ pa_buffer_attr buffer_attr;
+
+ pa_atomic_t on_the_fly;
+ pa_usec_t configured_source_latency;
+ size_t drop_initial;
+
+ /* Only updated after SOURCE_OUTPUT_MESSAGE_UPDATE_LATENCY */
+ size_t on_the_fly_snapshot;
+ pa_usec_t current_monitor_latency;
+ pa_usec_t current_source_latency;
} record_stream;
PA_DECLARE_CLASS(record_stream);
@@ -105,18 +117,24 @@ typedef struct playback_stream {
pa_sink_input *sink_input;
pa_memblockq *memblockq;
+
+ pa_bool_t adjust_latency:1;
+ pa_bool_t early_requests:1;
+
pa_bool_t is_underrun:1;
pa_bool_t drain_request:1;
uint32_t drain_tag;
uint32_t syncid;
pa_atomic_t missing;
- size_t minreq;
- pa_usec_t sink_latency;
+ pa_usec_t configured_sink_latency;
+ pa_buffer_attr buffer_attr;
/* Only updated after SINK_INPUT_MESSAGE_UPDATE_LATENCY */
int64_t read_index, write_index;
size_t render_memblockq_length;
+ pa_usec_t current_sink_latency;
+ uint64_t playing_for, underrun_for;
} playback_stream;
PA_DECLARE_CLASS(playback_stream);
@@ -174,13 +192,18 @@ struct pa_native_protocol {
};
enum {
+ SOURCE_OUTPUT_MESSAGE_UPDATE_LATENCY = PA_SOURCE_OUTPUT_MESSAGE_MAX
+};
+
+enum {
SINK_INPUT_MESSAGE_POST_DATA = PA_SINK_INPUT_MESSAGE_MAX, /* data from main loop to sink input */
SINK_INPUT_MESSAGE_DRAIN, /* disabled prebuf, get playback started. */
SINK_INPUT_MESSAGE_FLUSH,
SINK_INPUT_MESSAGE_TRIGGER,
SINK_INPUT_MESSAGE_SEEK,
SINK_INPUT_MESSAGE_PREBUF_FORCE,
- SINK_INPUT_MESSAGE_UPDATE_LATENCY
+ SINK_INPUT_MESSAGE_UPDATE_LATENCY,
+ SINK_INPUT_MESSAGE_UPDATE_BUFFER_ATTR
};
enum {
@@ -188,7 +211,8 @@ enum {
PLAYBACK_STREAM_MESSAGE_UNDERFLOW,
PLAYBACK_STREAM_MESSAGE_OVERFLOW,
PLAYBACK_STREAM_MESSAGE_DRAIN_ACK,
- PLAYBACK_STREAM_MESSAGE_STARTED
+ PLAYBACK_STREAM_MESSAGE_STARTED,
+ PLAYBACK_STREAM_MESSAGE_UPDATE_TLENGTH
};
enum {
@@ -203,7 +227,7 @@ enum {
static int sink_input_pop_cb(pa_sink_input *i, size_t length, pa_memchunk *chunk);
static void sink_input_kill_cb(pa_sink_input *i);
static void sink_input_suspend_cb(pa_sink_input *i, pa_bool_t suspend);
-static void sink_input_moved_cb(pa_sink_input *i);
+static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest);
static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes);
static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes);
static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes);
@@ -215,11 +239,12 @@ static void playback_stream_request_bytes(struct playback_stream*s);
static void source_output_kill_cb(pa_source_output *o);
static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk);
static void source_output_suspend_cb(pa_source_output *o, pa_bool_t suspend);
-static void source_output_moved_cb(pa_source_output *o);
+static void source_output_moving_cb(pa_source_output *o, pa_source *dest);
static pa_usec_t source_output_get_latency_cb(pa_source_output *o);
static void source_output_send_event_cb(pa_source_output *o, const char *event, pa_proplist *pl);
static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk);
+static int source_output_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk);
static void command_exit(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata);
@@ -360,6 +385,7 @@ static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = {
/* structure management */
+/* Called from main context */
static void upload_stream_unlink(upload_stream *s) {
pa_assert(s);
@@ -371,6 +397,7 @@ static void upload_stream_unlink(upload_stream *s) {
upload_stream_unref(s);
}
+/* Called from main context */
static void upload_stream_free(pa_object *o) {
upload_stream *s = UPLOAD_STREAM(o);
pa_assert(s);
@@ -388,6 +415,7 @@ static void upload_stream_free(pa_object *o) {
pa_xfree(s);
}
+/* Called from main context */
static upload_stream* upload_stream_new(
pa_native_connection *c,
const pa_sample_spec *ss,
@@ -420,6 +448,7 @@ static upload_stream* upload_stream_new(
return s;
}
+/* Called from main context */
static void record_stream_unlink(record_stream *s) {
pa_assert(s);
@@ -437,6 +466,7 @@ static void record_stream_unlink(record_stream *s) {
record_stream_unref(s);
}
+/* Called from main context */
static void record_stream_free(pa_object *o) {
record_stream *s = RECORD_STREAM(o);
pa_assert(s);
@@ -447,6 +477,7 @@ static void record_stream_free(pa_object *o) {
pa_xfree(s);
}
+/* Called from main context */
static int record_stream_process_msg(pa_msgobject *o, int code, void*userdata, int64_t offset, pa_memchunk *chunk) {
record_stream *s = RECORD_STREAM(o);
record_stream_assert_ref(s);
@@ -458,6 +489,10 @@ static int record_stream_process_msg(pa_msgobject *o, int code, void*userdata, i
case RECORD_STREAM_MESSAGE_POST_DATA:
+ /* We try to keep up to date with how many bytes are
+ * currently on the fly */
+ pa_atomic_sub(&s->on_the_fly, chunk->length);
+
if (pa_memblockq_push_align(s->memblockq, chunk) < 0) {
/* pa_log_warn("Failed to push data into output queue."); */
return -1;
@@ -472,35 +507,34 @@ static int record_stream_process_msg(pa_msgobject *o, int code, void*userdata, i
return 0;
}
-static void fix_record_buffer_attr_pre(
- record_stream *s,
- pa_bool_t adjust_latency,
- pa_bool_t early_requests,
- uint32_t *maxlength,
- uint32_t *fragsize) {
+/* Called from main context */
+static void fix_record_buffer_attr_pre(record_stream *s) {
size_t frame_size;
pa_usec_t orig_fragsize_usec, fragsize_usec, source_usec;
pa_assert(s);
- pa_assert(maxlength);
- pa_assert(fragsize);
+
+ /* This function will be called from the main thread, before as
+ * well as after the source output has been activated using
+ * pa_source_output_put()! That means it may not touch any
+ * ->thread_info data! */
frame_size = pa_frame_size(&s->source_output->sample_spec);
- if (*maxlength == (uint32_t) -1 || *maxlength > MAX_MEMBLOCKQ_LENGTH)
- *maxlength = MAX_MEMBLOCKQ_LENGTH;
- if (*maxlength <= 0)
- *maxlength = (uint32_t) frame_size;
+ if (s->buffer_attr.maxlength == (uint32_t) -1 || s->buffer_attr.maxlength > MAX_MEMBLOCKQ_LENGTH)
+ s->buffer_attr.maxlength = MAX_MEMBLOCKQ_LENGTH;
+ if (s->buffer_attr.maxlength <= 0)
+ s->buffer_attr.maxlength = (uint32_t) frame_size;
- if (*fragsize == (uint32_t) -1)
- *fragsize = (uint32_t) pa_usec_to_bytes(DEFAULT_FRAGSIZE_MSEC*PA_USEC_PER_MSEC, &s->source_output->sample_spec);
- if (*fragsize <= 0)
- *fragsize = (uint32_t) frame_size;
+ if (s->buffer_attr.fragsize == (uint32_t) -1)
+ s->buffer_attr.fragsize = (uint32_t) pa_usec_to_bytes(DEFAULT_FRAGSIZE_MSEC*PA_USEC_PER_MSEC, &s->source_output->sample_spec);
+ if (s->buffer_attr.fragsize <= 0)
+ s->buffer_attr.fragsize = (uint32_t) frame_size;
- orig_fragsize_usec = fragsize_usec = pa_bytes_to_usec(*fragsize, &s->source_output->sample_spec);
+ orig_fragsize_usec = fragsize_usec = pa_bytes_to_usec(s->buffer_attr.fragsize, &s->source_output->sample_spec);
- if (early_requests) {
+ if (s->early_requests) {
/* In early request mode we need to emulate the classic
* fragment-based playback model. We do this setting the source
@@ -508,7 +542,7 @@ static void fix_record_buffer_attr_pre(
source_usec = fragsize_usec;
- } else if (adjust_latency) {
+ } else if (s->adjust_latency) {
/* So, the user asked us to adjust the latency according to
* what the source can provide. Half the latency will be
@@ -522,73 +556,69 @@ static void fix_record_buffer_attr_pre(
/* Ok, the user didn't ask us to adjust the latency, hence we
* don't */
- source_usec = 0;
+ source_usec = (pa_usec_t) -1;
}
- if (source_usec > 0)
- s->source_latency = pa_source_output_set_requested_latency(s->source_output, source_usec);
+ if (source_usec != (pa_usec_t) -1)
+ s->configured_source_latency = pa_source_output_set_requested_latency(s->source_output, source_usec);
else
- s->source_latency = 0;
+ s->configured_source_latency = 0;
- if (early_requests) {
+ if (s->early_requests) {
/* Ok, we didn't necessarily get what we were asking for, so
* let's tell the user */
- fragsize_usec = s->source_latency;
+ fragsize_usec = s->configured_source_latency;
- } else if (adjust_latency) {
+ } else if (s->adjust_latency) {
/* Now subtract what we actually got */
- if (fragsize_usec >= s->source_latency*2)
- fragsize_usec -= s->source_latency;
+ if (fragsize_usec >= s->configured_source_latency*2)
+ fragsize_usec -= s->configured_source_latency;
else
- fragsize_usec = s->source_latency;
+ fragsize_usec = s->configured_source_latency;
}
if (pa_usec_to_bytes(orig_fragsize_usec, &s->source_output->sample_spec) !=
pa_usec_to_bytes(fragsize_usec, &s->source_output->sample_spec))
- *fragsize = (uint32_t) pa_usec_to_bytes(fragsize_usec, &s->source_output->sample_spec);
+ s->buffer_attr.fragsize = (uint32_t) pa_usec_to_bytes(fragsize_usec, &s->source_output->sample_spec);
- if (*fragsize <= 0)
- *fragsize = (uint32_t) frame_size;
+ if (s->buffer_attr.fragsize <= 0)
+ s->buffer_attr.fragsize = (uint32_t) frame_size;
}
-static void fix_record_buffer_attr_post(
- record_stream *s,
- uint32_t *maxlength,
- uint32_t *fragsize) {
-
+/* Called from main context */
+static void fix_record_buffer_attr_post(record_stream *s) {
size_t base;
pa_assert(s);
- pa_assert(maxlength);
- pa_assert(fragsize);
- *maxlength = (uint32_t) pa_memblockq_get_maxlength(s->memblockq);
+ /* This function will be called from the main thread, before as
+ * well as after the source output has been activated using
+ * pa_source_output_put()! That means it may not touch and
+ * ->thread_info data! */
base = pa_frame_size(&s->source_output->sample_spec);
- s->fragment_size = (*fragsize/base)*base;
- if (s->fragment_size <= 0)
- s->fragment_size = base;
+ s->buffer_attr.fragsize = (s->buffer_attr.fragsize/base)*base;
+ if (s->buffer_attr.fragsize <= 0)
+ s->buffer_attr.fragsize = base;
- if (s->fragment_size > *maxlength)
- s->fragment_size = *maxlength;
-
- *fragsize = (uint32_t) s->fragment_size;
+ if (s->buffer_attr.fragsize > s->buffer_attr.maxlength)
+ s->buffer_attr.fragsize = s->buffer_attr.maxlength;
}
+/* Called from main context */
static record_stream* record_stream_new(
pa_native_connection *c,
pa_source *source,
pa_sample_spec *ss,
pa_channel_map *map,
pa_bool_t peak_detect,
- uint32_t *maxlength,
- uint32_t *fragsize,
+ pa_buffer_attr *attr,
pa_source_output_flags_t flags,
pa_proplist *p,
pa_bool_t adjust_latency,
@@ -603,7 +633,6 @@ static record_stream* record_stream_new(
pa_assert(c);
pa_assert(ss);
- pa_assert(maxlength);
pa_assert(p);
pa_assert(ret);
@@ -632,20 +661,25 @@ static record_stream* record_stream_new(
s->parent.process_msg = record_stream_process_msg;
s->connection = c;
s->source_output = source_output;
+ s->buffer_attr = *attr;
+ s->adjust_latency = adjust_latency;
+ s->early_requests = early_requests;
+ pa_atomic_store(&s->on_the_fly, 0);
+ s->source_output->parent.process_msg = source_output_process_msg;
s->source_output->push = source_output_push_cb;
s->source_output->kill = source_output_kill_cb;
s->source_output->get_latency = source_output_get_latency_cb;
- s->source_output->moved = source_output_moved_cb;
+ s->source_output->moving = source_output_moving_cb;
s->source_output->suspend = source_output_suspend_cb;
s->source_output->send_event = source_output_send_event_cb;
s->source_output->userdata = s;
- fix_record_buffer_attr_pre(s, adjust_latency, early_requests, maxlength, fragsize);
+ fix_record_buffer_attr_pre(s);
s->memblockq = pa_memblockq_new(
0,
- *maxlength,
+ s->buffer_attr.maxlength,
0,
base = pa_frame_size(&source_output->sample_spec),
1,
@@ -653,7 +687,8 @@ static record_stream* record_stream_new(
0,
NULL);
- fix_record_buffer_attr_post(s, maxlength, fragsize);
+ pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
+ fix_record_buffer_attr_post(s);
*ss = s->source_output->sample_spec;
*map = s->source_output->channel_map;
@@ -661,14 +696,15 @@ static record_stream* record_stream_new(
pa_idxset_put(c->record_streams, s, &s->index);
pa_log_info("Final latency %0.2f ms = %0.2f ms + %0.2f ms",
- ((double) pa_bytes_to_usec(s->fragment_size, &source_output->sample_spec) + (double) s->source_latency) / PA_USEC_PER_MSEC,
- (double) pa_bytes_to_usec(s->fragment_size, &source_output->sample_spec) / PA_USEC_PER_MSEC,
- (double) s->source_latency / PA_USEC_PER_MSEC);
+ ((double) pa_bytes_to_usec(s->buffer_attr.fragsize, &source_output->sample_spec) + (double) s->configured_source_latency) / PA_USEC_PER_MSEC,
+ (double) pa_bytes_to_usec(s->buffer_attr.fragsize, &source_output->sample_spec) / PA_USEC_PER_MSEC,
+ (double) s->configured_source_latency / PA_USEC_PER_MSEC);
pa_source_output_put(s->source_output);
return s;
}
+/* Called from main context */
static void record_stream_send_killed(record_stream *r) {
pa_tagstruct *t;
record_stream_assert_ref(r);
@@ -680,6 +716,7 @@ static void record_stream_send_killed(record_stream *r) {
pa_pstream_send_tagstruct(r->connection->pstream, t);
}
+/* Called from main context */
static void playback_stream_unlink(playback_stream *s) {
pa_assert(s);
@@ -700,6 +737,7 @@ static void playback_stream_unlink(playback_stream *s) {
playback_stream_unref(s);
}
+/* Called from main context */
static void playback_stream_free(pa_object* o) {
playback_stream *s = PLAYBACK_STREAM(o);
pa_assert(s);
@@ -710,6 +748,7 @@ static void playback_stream_free(pa_object* o) {
pa_xfree(s);
}
+/* Called from main context */
static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, int64_t offset, pa_memchunk *chunk) {
playback_stream *s = PLAYBACK_STREAM(o);
playback_stream_assert_ref(s);
@@ -720,24 +759,21 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata,
switch (code) {
case PLAYBACK_STREAM_MESSAGE_REQUEST_DATA: {
pa_tagstruct *t;
- uint32_t l = 0;
+ int l = 0;
for (;;) {
- if ((l = (uint32_t) pa_atomic_load(&s->missing)) <= 0)
- break;
+ if ((l = pa_atomic_load(&s->missing)) <= 0)
+ return 0;
- if (pa_atomic_cmpxchg(&s->missing, (int) l, 0))
+ if (pa_atomic_cmpxchg(&s->missing, l, 0))
break;
}
- if (l <= 0)
- break;
-
t = pa_tagstruct_new(NULL, 0);
pa_tagstruct_putu32(t, PA_COMMAND_REQUEST);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
- pa_tagstruct_putu32(t, l);
+ pa_tagstruct_putu32(t, (uint32_t) l);
pa_pstream_send_tagstruct(s->connection->pstream, t);
/* pa_log("Requesting %lu bytes", (unsigned long) l); */
@@ -775,7 +811,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata,
if (s->connection->version >= 13) {
pa_tagstruct *t;
- /* Notify the user we're overflowed*/
+ /* Notify the user we started playback */
t = pa_tagstruct_new(NULL, 0);
pa_tagstruct_putu32(t, PA_COMMAND_STARTED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
@@ -788,67 +824,79 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata,
case PLAYBACK_STREAM_MESSAGE_DRAIN_ACK:
pa_pstream_send_simple_ack(s->connection->pstream, PA_PTR_TO_UINT(userdata));
break;
+
+ case PLAYBACK_STREAM_MESSAGE_UPDATE_TLENGTH: {
+ pa_tagstruct *t;
+
+ s->buffer_attr.tlength = (uint32_t) offset;
+
+ t = pa_tagstruct_new(NULL, 0);
+ pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED);
+ pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
+ pa_tagstruct_putu32(t, s->index);
+ pa_tagstruct_putu32(t, s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(t, s->buffer_attr.tlength);
+ pa_tagstruct_putu32(t, s->buffer_attr.prebuf);
+ pa_tagstruct_putu32(t, s->buffer_attr.minreq);
+ pa_tagstruct_put_usec(t, s->configured_sink_latency);
+ pa_pstream_send_tagstruct(s->connection->pstream, t);
+
+ break;
+ }
}
return 0;
}
-static void fix_playback_buffer_attr_pre(
- playback_stream *s,
- pa_bool_t adjust_latency,
- pa_bool_t early_requests,
- uint32_t *maxlength,
- uint32_t *tlength,
- uint32_t* prebuf,
- uint32_t* minreq) {
-
- size_t frame_size;
+/* Called from main context */
+static void fix_playback_buffer_attr(playback_stream *s) {
+ size_t frame_size, max_prebuf;
pa_usec_t orig_tlength_usec, tlength_usec, orig_minreq_usec, minreq_usec, sink_usec;
pa_assert(s);
- pa_assert(maxlength);
- pa_assert(tlength);
- pa_assert(prebuf);
- pa_assert(minreq);
+
+ /* This function will be called from the main thread, before as
+ * well as after the sink input has been activated using
+ * pa_sink_input_put()! That means it may not touch any
+ * ->thread_info data, such as the memblockq! */
frame_size = pa_frame_size(&s->sink_input->sample_spec);
- if (*maxlength == (uint32_t) -1 || *maxlength > MAX_MEMBLOCKQ_LENGTH)
- *maxlength = MAX_MEMBLOCKQ_LENGTH;
- if (*maxlength <= 0)
- *maxlength = (uint32_t) frame_size;
+ if (s->buffer_attr.maxlength == (uint32_t) -1 || s->buffer_attr.maxlength > MAX_MEMBLOCKQ_LENGTH)
+ s->buffer_attr.maxlength = MAX_MEMBLOCKQ_LENGTH;
+ if (s->buffer_attr.maxlength <= 0)
+ s->buffer_attr.maxlength = (uint32_t) frame_size;
- if (*tlength == (uint32_t) -1)
- *tlength = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_TLENGTH_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec);
- if (*tlength <= 0)
- *tlength = (uint32_t) frame_size;
+ if (s->buffer_attr.tlength == (uint32_t) -1)
+ s->buffer_attr.tlength = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_TLENGTH_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec);
+ if (s->buffer_attr.tlength <= 0)
+ s->buffer_attr.tlength = (uint32_t) frame_size;
- if (*minreq == (uint32_t) -1)
- *minreq = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_PROCESS_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec);
- if (*minreq <= 0)
- *minreq = (uint32_t) frame_size;
+ if (s->buffer_attr.minreq == (uint32_t) -1)
+ s->buffer_attr.minreq = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_PROCESS_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec);
+ if (s->buffer_attr.minreq <= 0)
+ s->buffer_attr.minreq = (uint32_t) frame_size;
- if (*tlength < *minreq+frame_size)
- *tlength = *minreq+(uint32_t) frame_size;
+ if (s->buffer_attr.tlength < s->buffer_attr.minreq+frame_size)
+ s->buffer_attr.tlength = s->buffer_attr.minreq+(uint32_t) frame_size;
- orig_tlength_usec = tlength_usec = pa_bytes_to_usec(*tlength, &s->sink_input->sample_spec);
- orig_minreq_usec = minreq_usec = pa_bytes_to_usec(*minreq, &s->sink_input->sample_spec);
+ orig_tlength_usec = tlength_usec = pa_bytes_to_usec(s->buffer_attr.tlength, &s->sink_input->sample_spec);
+ orig_minreq_usec = minreq_usec = pa_bytes_to_usec(s->buffer_attr.minreq, &s->sink_input->sample_spec);
pa_log_info("Requested tlength=%0.2f ms, minreq=%0.2f ms",
(double) tlength_usec / PA_USEC_PER_MSEC,
(double) minreq_usec / PA_USEC_PER_MSEC);
- if (early_requests) {
+ if (s->early_requests) {
/* In early request mode we need to emulate the classic
* fragment-based playback model. We do this setting the sink
* latency to the fragment size. */
sink_usec = minreq_usec;
-
pa_log_debug("Early requests mode enabled, configuring sink latency to minreq.");
- } else if (adjust_latency) {
+ } else if (s->adjust_latency) {
/* So, the user asked us to adjust the latency of the stream
* buffer according to the what the sink can provide. The
@@ -888,80 +936,60 @@ static void fix_playback_buffer_attr_pre(
pa_log_debug("Traditional mode enabled, modifying sink usec only for compat with minreq.");
}
- s->sink_latency = pa_sink_input_set_requested_latency(s->sink_input, sink_usec);
+ s->configured_sink_latency = pa_sink_input_set_requested_latency(s->sink_input, sink_usec);
- if (early_requests) {
+ if (s->early_requests) {
/* Ok, we didn't necessarily get what we were asking for, so
* let's tell the user */
- minreq_usec = s->sink_latency;
+ minreq_usec = s->configured_sink_latency;
- } else if (adjust_latency) {
+ } else if (s->adjust_latency) {
/* Ok, we didn't necessarily get what we were asking for, so
* let's subtract from what we asked for for the remaining
* buffer space */
- if (tlength_usec >= s->sink_latency)
- tlength_usec -= s->sink_latency;
+ if (tlength_usec >= s->configured_sink_latency)
+ tlength_usec -= s->configured_sink_latency;
}
/* FIXME: This is actually larger than necessary, since not all of
* the sink latency is actually rewritable. */
- if (tlength_usec < s->sink_latency + 2*minreq_usec)
- tlength_usec = s->sink_latency + 2*minreq_usec;
+ if (tlength_usec < s->configured_sink_latency + 2*minreq_usec)
+ tlength_usec = s->configured_sink_latency + 2*minreq_usec;
if (pa_usec_to_bytes_round_up(orig_tlength_usec, &s->sink_input->sample_spec) !=
pa_usec_to_bytes_round_up(tlength_usec, &s->sink_input->sample_spec))
- *tlength = (uint32_t) pa_usec_to_bytes_round_up(tlength_usec, &s->sink_input->sample_spec);
+ s->buffer_attr.tlength = (uint32_t) pa_usec_to_bytes_round_up(tlength_usec, &s->sink_input->sample_spec);
if (pa_usec_to_bytes(orig_minreq_usec, &s->sink_input->sample_spec) !=
pa_usec_to_bytes(minreq_usec, &s->sink_input->sample_spec))
- *minreq = (uint32_t) pa_usec_to_bytes(minreq_usec, &s->sink_input->sample_spec);
+ s->buffer_attr.minreq = (uint32_t) pa_usec_to_bytes(minreq_usec, &s->sink_input->sample_spec);
- if (*minreq <= 0) {
- *minreq = (uint32_t) frame_size;
- *tlength += (uint32_t) frame_size*2;
+ if (s->buffer_attr.minreq <= 0) {
+ s->buffer_attr.minreq = (uint32_t) frame_size;
+ s->buffer_attr.tlength += (uint32_t) frame_size*2;
}
- if (*tlength <= *minreq)
- *tlength = *minreq*2 + (uint32_t) frame_size;
-
- if (*prebuf == (uint32_t) -1 || *prebuf > *tlength)
- *prebuf = *tlength;
-}
-
-static void fix_playback_buffer_attr_post(
- playback_stream *s,
- uint32_t *maxlength,
- uint32_t *tlength,
- uint32_t* prebuf,
- uint32_t* minreq) {
-
- pa_assert(s);
- pa_assert(maxlength);
- pa_assert(tlength);
- pa_assert(prebuf);
- pa_assert(minreq);
+ if (s->buffer_attr.tlength <= s->buffer_attr.minreq)
+ s->buffer_attr.tlength = s->buffer_attr.minreq*2 + (uint32_t) frame_size;
- *maxlength = (uint32_t) pa_memblockq_get_maxlength(s->memblockq);
- *tlength = (uint32_t) pa_memblockq_get_tlength(s->memblockq);
- *prebuf = (uint32_t) pa_memblockq_get_prebuf(s->memblockq);
- *minreq = (uint32_t) pa_memblockq_get_minreq(s->memblockq);
+ max_prebuf = s->buffer_attr.tlength + (uint32_t)frame_size - s->buffer_attr.minreq;
- s->minreq = *minreq;
+ if (s->buffer_attr.prebuf == (uint32_t) -1 ||
+ s->buffer_attr.prebuf > max_prebuf)
+ s->buffer_attr.prebuf = max_prebuf;
}
+/* Called from main context */
static playback_stream* playback_stream_new(
pa_native_connection *c,
pa_sink *sink,
pa_sample_spec *ss,
pa_channel_map *map,
- uint32_t *maxlength,
- uint32_t *tlength,
- uint32_t *prebuf,
- uint32_t *minreq,
+ pa_buffer_attr *a,
pa_cvolume *volume,
pa_bool_t muted,
pa_bool_t muted_set,
@@ -982,10 +1010,6 @@ static playback_stream* playback_stream_new(
pa_assert(c);
pa_assert(ss);
- pa_assert(maxlength);
- pa_assert(tlength);
- pa_assert(prebuf);
- pa_assert(minreq);
pa_assert(missing);
pa_assert(p);
pa_assert(ret);
@@ -1042,6 +1066,9 @@ static playback_stream* playback_stream_new(
s->is_underrun = TRUE;
s->drain_request = FALSE;
pa_atomic_store(&s->missing, 0);
+ s->buffer_attr = *a;
+ s->adjust_latency = adjust_latency;
+ s->early_requests = early_requests;
s->sink_input->parent.process_msg = sink_input_process_msg;
s->sink_input->pop = sink_input_pop_cb;
@@ -1049,28 +1076,28 @@ static playback_stream* playback_stream_new(
s->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
s->sink_input->update_max_request = sink_input_update_max_request_cb;
s->sink_input->kill = sink_input_kill_cb;
- s->sink_input->moved = sink_input_moved_cb;
+ s->sink_input->moving = sink_input_moving_cb;
s->sink_input->suspend = sink_input_suspend_cb;
s->sink_input->send_event = sink_input_send_event_cb;
s->sink_input->userdata = s;
start_index = ssync ? pa_memblockq_get_read_index(ssync->memblockq) : 0;
- fix_playback_buffer_attr_pre(s, adjust_latency, early_requests, maxlength, tlength, prebuf, minreq);
- pa_sink_input_get_silence(sink_input, &silence);
+ fix_playback_buffer_attr(s);
+ pa_sink_input_get_silence(sink_input, &silence);
s->memblockq = pa_memblockq_new(
start_index,
- *maxlength,
- *tlength,
+ s->buffer_attr.maxlength,
+ s->buffer_attr.tlength,
pa_frame_size(&sink_input->sample_spec),
- *prebuf,
- *minreq,
+ s->buffer_attr.prebuf,
+ s->buffer_attr.minreq,
0,
&silence);
-
pa_memblock_unref(silence.memblock);
- fix_playback_buffer_attr_post(s, maxlength, tlength, prebuf, minreq);
+
+ pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
*missing = (uint32_t) pa_memblockq_pop_missing(s->memblockq);
@@ -1080,18 +1107,19 @@ static playback_stream* playback_stream_new(
pa_idxset_put(c->output_streams, s, &s->index);
pa_log_info("Final latency %0.2f ms = %0.2f ms + 2*%0.2f ms + %0.2f ms",
- ((double) pa_bytes_to_usec(*tlength, &sink_input->sample_spec) + (double) s->sink_latency) / PA_USEC_PER_MSEC,
- (double) pa_bytes_to_usec(*tlength-*minreq*2, &sink_input->sample_spec) / PA_USEC_PER_MSEC,
- (double) pa_bytes_to_usec(*minreq, &sink_input->sample_spec) / PA_USEC_PER_MSEC,
- (double) s->sink_latency / PA_USEC_PER_MSEC);
+ ((double) pa_bytes_to_usec(s->buffer_attr.tlength, &sink_input->sample_spec) + (double) s->configured_sink_latency) / PA_USEC_PER_MSEC,
+ (double) pa_bytes_to_usec(s->buffer_attr.tlength-s->buffer_attr.minreq*2, &sink_input->sample_spec) / PA_USEC_PER_MSEC,
+ (double) pa_bytes_to_usec(s->buffer_attr.minreq, &sink_input->sample_spec) / PA_USEC_PER_MSEC,
+ (double) s->configured_sink_latency / PA_USEC_PER_MSEC);
pa_sink_input_put(s->sink_input);
return s;
}
-/* Called from thread context */
+/* Called from IO context */
static void playback_stream_request_bytes(playback_stream *s) {
- size_t m, previous_missing;
+ size_t m, minreq;
+ int previous_missing;
playback_stream_assert_ref(s);
@@ -1102,14 +1130,16 @@ static void playback_stream_request_bytes(playback_stream *s) {
/* pa_log("request_bytes(%lu)", (unsigned long) m); */
- previous_missing = (size_t) pa_atomic_add(&s->missing, (int) m);
+ previous_missing = pa_atomic_add(&s->missing, (int) m);
+ minreq = pa_memblockq_get_minreq(s->memblockq);
if (pa_memblockq_prebuf_active(s->memblockq) ||
- (previous_missing < s->minreq && previous_missing+m >= s->minreq))
+ (previous_missing < (int) minreq && previous_missing + (int) m >= (int) minreq))
pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_REQUEST_DATA, NULL, 0, NULL, NULL);
}
+/* Called from main context */
static void playback_stream_send_killed(playback_stream *p) {
pa_tagstruct *t;
playback_stream_assert_ref(p);
@@ -1121,6 +1151,7 @@ static void playback_stream_send_killed(playback_stream *p) {
pa_pstream_send_tagstruct(p->connection->pstream, t);
}
+/* Called from main context */
static int native_connection_process_msg(pa_msgobject *o, int code, void*userdata, int64_t offset, pa_memchunk *chunk) {
pa_native_connection *c = PA_NATIVE_CONNECTION(o);
pa_native_connection_assert_ref(c);
@@ -1142,6 +1173,7 @@ static int native_connection_process_msg(pa_msgobject *o, int code, void*userdat
return 0;
}
+/* Called from main context */
static void native_connection_unlink(pa_native_connection *c) {
record_stream *r;
output_stream *o;
@@ -1181,6 +1213,7 @@ static void native_connection_unlink(pa_native_connection *c) {
pa_native_connection_unref(c);
}
+/* Called from main context */
static void native_connection_free(pa_object *o) {
pa_native_connection *c = PA_NATIVE_CONNECTION(o);
@@ -1198,6 +1231,7 @@ static void native_connection_free(pa_object *o) {
pa_xfree(c);
}
+/* Called from main context */
static void native_connection_send_memblock(pa_native_connection *c) {
uint32_t start;
record_stream *r;
@@ -1217,8 +1251,8 @@ static void native_connection_send_memblock(pa_native_connection *c) {
if (pa_memblockq_peek(r->memblockq, &chunk) >= 0) {
pa_memchunk schunk = chunk;
- if (schunk.length > r->fragment_size)
- schunk.length = r->fragment_size;
+ if (schunk.length > r->buffer_attr.fragsize)
+ schunk.length = r->buffer_attr.fragsize;
pa_pstream_send_memblock(c->pstream, r->index, 0, PA_SEEK_RELATIVE, &schunk);
@@ -1232,6 +1266,7 @@ static void native_connection_send_memblock(pa_native_connection *c) {
/*** sink input callbacks ***/
+/* Called from thread context */
static void handle_seek(playback_stream *s, int64_t indexw) {
playback_stream_assert_ref(s);
@@ -1284,7 +1319,12 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int
int64_t windex;
windex = pa_memblockq_get_write_index(s->memblockq);
- pa_memblockq_seek(s->memblockq, offset, PA_PTR_TO_UINT(userdata));
+
+ /* The client side is incapable of accounting correctly
+ * for seeks of a type != PA_SEEK_RELATIVE. We need to be
+ * able to deal with that. */
+
+ pa_memblockq_seek(s->memblockq, offset, PA_PTR_TO_UINT(userdata), PA_PTR_TO_UINT(userdata) == PA_SEEK_RELATIVE);
handle_seek(s, windex);
return 0;
@@ -1302,7 +1342,7 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int
if (pa_memblockq_push_align(s->memblockq, chunk) < 0) {
pa_log_warn("Failed to push data into queue");
pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_OVERFLOW, NULL, 0, NULL, NULL);
- pa_memblockq_seek(s->memblockq, (int64_t) chunk->length, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(s->memblockq, (int64_t) chunk->length, PA_SEEK_RELATIVE, TRUE);
}
handle_seek(s, windex);
@@ -1371,10 +1411,14 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int
}
case SINK_INPUT_MESSAGE_UPDATE_LATENCY:
-
+ /* Atomically get a snapshot of all timing parameters... */
s->read_index = pa_memblockq_get_read_index(s->memblockq);
s->write_index = pa_memblockq_get_write_index(s->memblockq);
s->render_memblockq_length = pa_memblockq_get_length(s->sink_input->thread_info.render_memblockq);
+ s->current_sink_latency = pa_sink_get_latency_within_thread(s->sink_input->sink);
+ s->underrun_for = s->sink_input->thread_info.underrun_for;
+ s->playing_for = s->sink_input->thread_info.playing_for;
+
return 0;
case PA_SINK_INPUT_MESSAGE_SET_STATE: {
@@ -1399,6 +1443,12 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int
* latency added by the resampler */
break;
}
+
+ case SINK_INPUT_MESSAGE_UPDATE_BUFFER_ATTR: {
+ pa_memblockq_apply_attr(s->memblockq, &s->buffer_attr);
+ pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
+ return 0;
+ }
}
return pa_sink_input_process_msg(o, code, userdata, offset, chunk);
@@ -1418,7 +1468,8 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
if (pa_memblockq_is_readable(s->memblockq))
s->is_underrun = FALSE;
else {
-/* pa_log("%s, UNDERRUN: %lu", pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME), (unsigned long) pa_memblockq_get_length(s->memblockq)); */
+ if (!s->is_underrun)
+ pa_log_debug("Underrun on '%s', %lu bytes in queue.", pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME)), (unsigned long) pa_memblockq_get_length(s->memblockq));
if (s->drain_request && pa_sink_input_safe_to_remove(i)) {
s->drain_request = FALSE;
@@ -1447,6 +1498,7 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
return 0;
}
+/* Called from thread context */
static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
playback_stream *s;
@@ -1461,6 +1513,7 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_memblockq_rewind(s->memblockq, nbytes);
}
+/* Called from thread context */
static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
playback_stream *s;
@@ -1471,18 +1524,30 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_memblockq_set_maxrewind(s->memblockq, nbytes);
}
+/* Called from thread context */
static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
playback_stream *s;
- size_t tlength;
+ size_t new_tlength, old_tlength;
pa_sink_input_assert_ref(i);
s = PLAYBACK_STREAM(i->userdata);
playback_stream_assert_ref(s);
- tlength = nbytes+2*pa_memblockq_get_minreq(s->memblockq);
+ old_tlength = pa_memblockq_get_tlength(s->memblockq);
+ new_tlength = nbytes+2*pa_memblockq_get_minreq(s->memblockq);
+
+ if (old_tlength < new_tlength) {
+ pa_log_debug("max_request changed, trying to update from %zu to %zu.", old_tlength, new_tlength);
+ pa_memblockq_set_tlength(s->memblockq, new_tlength);
+ new_tlength = pa_memblockq_get_tlength(s->memblockq);
- if (pa_memblockq_get_tlength(s->memblockq) < tlength)
- pa_memblockq_set_tlength(s->memblockq, tlength);
+ if (new_tlength == old_tlength)
+ pa_log_debug("Failed to increase tlength");
+ else {
+ pa_log_debug("Notifying client about increased tlength");
+ pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_UPDATE_TLENGTH, NULL, pa_memblockq_get_tlength(s->memblockq), NULL, NULL);
+ }
+ }
}
/* Called from main context */
@@ -1539,26 +1604,17 @@ static void sink_input_suspend_cb(pa_sink_input *i, pa_bool_t suspend) {
}
/* Called from main context */
-static void sink_input_moved_cb(pa_sink_input *i) {
+static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
playback_stream *s;
pa_tagstruct *t;
- uint32_t maxlength, tlength, prebuf, minreq;
pa_sink_input_assert_ref(i);
s = PLAYBACK_STREAM(i->userdata);
playback_stream_assert_ref(s);
- maxlength = (uint32_t) pa_memblockq_get_maxlength(s->memblockq);
- tlength = (uint32_t) pa_memblockq_get_tlength(s->memblockq);
- prebuf = (uint32_t) pa_memblockq_get_prebuf(s->memblockq);
- minreq = (uint32_t) pa_memblockq_get_minreq(s->memblockq);
-
- fix_playback_buffer_attr_pre(s, TRUE, FALSE, &maxlength, &tlength, &prebuf, &minreq);
- pa_memblockq_set_maxlength(s->memblockq, maxlength);
- pa_memblockq_set_tlength(s->memblockq, tlength);
- pa_memblockq_set_prebuf(s->memblockq, prebuf);
- pa_memblockq_set_minreq(s->memblockq, minreq);
- fix_playback_buffer_attr_post(s, &maxlength, &tlength, &prebuf, &minreq);
+ fix_playback_buffer_attr(s);
+ pa_memblockq_apply_attr(s->memblockq, &s->buffer_attr);
+ pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
if (s->connection->version < 12)
return;
@@ -1567,16 +1623,16 @@ static void sink_input_moved_cb(pa_sink_input *i) {
pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_MOVED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
- pa_tagstruct_putu32(t, i->sink->index);
- pa_tagstruct_puts(t, i->sink->name);
- pa_tagstruct_put_boolean(t, pa_sink_get_state(i->sink) == PA_SINK_SUSPENDED);
+ pa_tagstruct_putu32(t, dest->index);
+ pa_tagstruct_puts(t, dest->name);
+ pa_tagstruct_put_boolean(t, pa_sink_get_state(dest) == PA_SINK_SUSPENDED);
if (s->connection->version >= 13) {
- pa_tagstruct_putu32(t, maxlength);
- pa_tagstruct_putu32(t, tlength);
- pa_tagstruct_putu32(t, prebuf);
- pa_tagstruct_putu32(t, minreq);
- pa_tagstruct_put_usec(t, s->sink_latency);
+ pa_tagstruct_putu32(t, s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(t, s->buffer_attr.tlength);
+ pa_tagstruct_putu32(t, s->buffer_attr.prebuf);
+ pa_tagstruct_putu32(t, s->buffer_attr.minreq);
+ pa_tagstruct_put_usec(t, s->configured_sink_latency);
}
pa_pstream_send_tagstruct(s->connection->pstream, t);
@@ -1585,6 +1641,27 @@ static void sink_input_moved_cb(pa_sink_input *i) {
/*** source_output callbacks ***/
/* Called from thread context */
+static int source_output_process_msg(pa_msgobject *_o, int code, void *userdata, int64_t offset, pa_memchunk *chunk) {
+ pa_source_output *o = PA_SOURCE_OUTPUT(_o);
+ record_stream *s;
+
+ pa_source_output_assert_ref(o);
+ s = RECORD_STREAM(o->userdata);
+ record_stream_assert_ref(s);
+
+ switch (code) {
+ case SOURCE_OUTPUT_MESSAGE_UPDATE_LATENCY:
+ /* Atomically get a snapshot of all timing parameters... */
+ s->current_monitor_latency = o->source->monitor_of ? pa_sink_get_latency_within_thread(o->source->monitor_of) : 0;
+ s->current_source_latency = pa_source_get_latency_within_thread(o->source);
+ s->on_the_fly_snapshot = pa_atomic_load(&s->on_the_fly);
+ return 0;
+ }
+
+ return pa_source_output_process_msg(_o, code, userdata, offset, chunk);
+}
+
+/* Called from thread context */
static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk) {
record_stream *s;
@@ -1593,6 +1670,7 @@ static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk)
record_stream_assert_ref(s);
pa_assert(chunk);
+ pa_atomic_add(&s->on_the_fly, chunk->length);
pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), RECORD_STREAM_MESSAGE_POST_DATA, NULL, 0, chunk, NULL);
}
@@ -1661,21 +1739,18 @@ static void source_output_suspend_cb(pa_source_output *o, pa_bool_t suspend) {
}
/* Called from main context */
-static void source_output_moved_cb(pa_source_output *o) {
+static void source_output_moving_cb(pa_source_output *o, pa_source *dest) {
record_stream *s;
pa_tagstruct *t;
- uint32_t maxlength, fragsize;
pa_source_output_assert_ref(o);
s = RECORD_STREAM(o->userdata);
record_stream_assert_ref(s);
- fragsize = (uint32_t) s->fragment_size;
- maxlength = (uint32_t) pa_memblockq_get_length(s->memblockq);
-
- fix_record_buffer_attr_pre(s, TRUE, FALSE, &maxlength, &fragsize);
- pa_memblockq_set_maxlength(s->memblockq, maxlength);
- fix_record_buffer_attr_post(s, &maxlength, &fragsize);
+ fix_record_buffer_attr_pre(s);
+ pa_memblockq_set_maxlength(s->memblockq, s->buffer_attr.maxlength);
+ pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
+ fix_record_buffer_attr_post(s);
if (s->connection->version < 12)
return;
@@ -1684,14 +1759,14 @@ static void source_output_moved_cb(pa_source_output *o) {
pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_MOVED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
- pa_tagstruct_putu32(t, o->source->index);
- pa_tagstruct_puts(t, o->source->name);
- pa_tagstruct_put_boolean(t, pa_source_get_state(o->source) == PA_SOURCE_SUSPENDED);
+ pa_tagstruct_putu32(t, dest->index);
+ pa_tagstruct_puts(t, dest->name);
+ pa_tagstruct_put_boolean(t, pa_source_get_state(dest) == PA_SOURCE_SUSPENDED);
if (s->connection->version >= 13) {
- pa_tagstruct_putu32(t, maxlength);
- pa_tagstruct_putu32(t, fragsize);
- pa_tagstruct_put_usec(t, s->source_latency);
+ pa_tagstruct_putu32(t, s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(t, s->buffer_attr.fragsize);
+ pa_tagstruct_put_usec(t, s->configured_source_latency);
}
pa_pstream_send_tagstruct(s->connection->pstream, t);
@@ -1723,7 +1798,8 @@ static pa_tagstruct *reply_new(uint32_t tag) {
static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_native_connection *c = PA_NATIVE_CONNECTION(userdata);
playback_stream *s;
- uint32_t maxlength, tlength, prebuf, minreq, sink_index, syncid, missing;
+ uint32_t sink_index, syncid, missing;
+ pa_buffer_attr attr;
const char *name = NULL, *sink_name;
pa_sample_spec ss;
pa_channel_map map;
@@ -1752,6 +1828,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
pa_native_connection_assert_ref(c);
pa_assert(t);
+ memset(&attr, 0, sizeof(attr));
if ((c->version < 13 && (pa_tagstruct_gets(t, &name) < 0 || !name)) ||
pa_tagstruct_get(
@@ -1760,11 +1837,11 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
PA_TAG_CHANNEL_MAP, &map,
PA_TAG_U32, &sink_index,
PA_TAG_STRING, &sink_name,
- PA_TAG_U32, &maxlength,
+ PA_TAG_U32, &attr.maxlength,
PA_TAG_BOOLEAN, &corked,
- PA_TAG_U32, &tlength,
- PA_TAG_U32, &prebuf,
- PA_TAG_U32, &minreq,
+ PA_TAG_U32, &attr.tlength,
+ PA_TAG_U32, &attr.prebuf,
+ PA_TAG_U32, &attr.minreq,
PA_TAG_U32, &syncid,
PA_TAG_CVOLUME, &volume,
PA_TAG_INVALID) < 0) {
@@ -1875,7 +1952,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
* flag. For older versions we synthesize it here */
muted_set = muted_set || muted;
- s = playback_stream_new(c, sink, &ss, &map, &maxlength, &tlength, &prebuf, &minreq, volume_set ? &volume : NULL, muted, muted_set, syncid, &missing, flags, p, adjust_latency, early_requests, &ret);
+ s = playback_stream_new(c, sink, &ss, &map, &attr, volume_set ? &volume : NULL, muted, muted_set, syncid, &missing, flags, p, adjust_latency, early_requests, &ret);
pa_proplist_free(p);
CHECK_VALIDITY(c->pstream, s, tag, ret);
@@ -1891,10 +1968,10 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
if (c->version >= 9) {
/* Since 0.9.0 we support sending the buffer metrics back to the client */
- pa_tagstruct_putu32(reply, (uint32_t) maxlength);
- pa_tagstruct_putu32(reply, (uint32_t) tlength);
- pa_tagstruct_putu32(reply, (uint32_t) prebuf);
- pa_tagstruct_putu32(reply, (uint32_t) minreq);
+ pa_tagstruct_putu32(reply, (uint32_t) s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(reply, (uint32_t) s->buffer_attr.tlength);
+ pa_tagstruct_putu32(reply, (uint32_t) s->buffer_attr.prebuf);
+ pa_tagstruct_putu32(reply, (uint32_t) s->buffer_attr.minreq);
}
if (c->version >= 12) {
@@ -1912,7 +1989,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
}
if (c->version >= 13)
- pa_tagstruct_put_usec(reply, s->sink_latency);
+ pa_tagstruct_put_usec(reply, s->configured_sink_latency);
pa_pstream_send_tagstruct(c->pstream, reply);
}
@@ -1978,7 +2055,7 @@ static void command_delete_stream(pa_pdispatch *pd, uint32_t command, uint32_t t
static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_native_connection *c = PA_NATIVE_CONNECTION(userdata);
record_stream *s;
- uint32_t maxlength, fragment_size;
+ pa_buffer_attr attr;
uint32_t source_index;
const char *name = NULL, *source_name;
pa_sample_spec ss;
@@ -2008,14 +2085,16 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
pa_native_connection_assert_ref(c);
pa_assert(t);
+ memset(&attr, 0, sizeof(attr));
+
if ((c->version < 13 && (pa_tagstruct_gets(t, &name) < 0 || !name)) ||
pa_tagstruct_get_sample_spec(t, &ss) < 0 ||
pa_tagstruct_get_channel_map(t, &map) < 0 ||
pa_tagstruct_getu32(t, &source_index) < 0 ||
pa_tagstruct_gets(t, &source_name) < 0 ||
- pa_tagstruct_getu32(t, &maxlength) < 0 ||
+ pa_tagstruct_getu32(t, &attr.maxlength) < 0 ||
pa_tagstruct_get_boolean(t, &corked) < 0 ||
- pa_tagstruct_getu32(t, &fragment_size) < 0) {
+ pa_tagstruct_getu32(t, &attr.fragsize) < 0) {
protocol_error(c);
return;
}
@@ -2125,7 +2204,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
(dont_inhibit_auto_suspend ? PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) |
(fail_on_suspend ? PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND : 0);
- s = record_stream_new(c, source, &ss, &map, peak_detect, &maxlength, &fragment_size, flags, p, adjust_latency, direct_on_input, early_requests, &ret);
+ s = record_stream_new(c, source, &ss, &map, peak_detect, &attr, flags, p, adjust_latency, direct_on_input, early_requests, &ret);
pa_proplist_free(p);
CHECK_VALIDITY(c->pstream, s, tag, ret);
@@ -2138,8 +2217,8 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
if (c->version >= 9) {
/* Since 0.9 we support sending the buffer metrics back to the client */
- pa_tagstruct_putu32(reply, (uint32_t) maxlength);
- pa_tagstruct_putu32(reply, (uint32_t) fragment_size);
+ pa_tagstruct_putu32(reply, (uint32_t) s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(reply, (uint32_t) s->buffer_attr.fragsize);
}
if (c->version >= 12) {
@@ -2157,7 +2236,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
}
if (c->version >= 13)
- pa_tagstruct_put_usec(reply, s->source_latency);
+ pa_tagstruct_put_usec(reply, s->configured_source_latency);
pa_pstream_send_tagstruct(c->pstream, reply);
}
@@ -2444,7 +2523,6 @@ static void command_get_playback_latency(pa_pdispatch *pd, uint32_t command, uin
playback_stream *s;
struct timeval tv, now;
uint32_t idx;
- pa_usec_t latency;
pa_native_connection_assert_ref(c);
pa_assert(t);
@@ -2460,25 +2538,27 @@ static void command_get_playback_latency(pa_pdispatch *pd, uint32_t command, uin
s = pa_idxset_get_by_index(c->output_streams, idx);
CHECK_VALIDITY(c->pstream, s, tag, PA_ERR_NOENTITY);
CHECK_VALIDITY(c->pstream, playback_stream_isinstance(s), tag, PA_ERR_NOENTITY);
- CHECK_VALIDITY(c->pstream, pa_asyncmsgq_send(s->sink_input->sink->asyncmsgq, PA_MSGOBJECT(s->sink_input), SINK_INPUT_MESSAGE_UPDATE_LATENCY, s, 0, NULL) == 0, tag, PA_ERR_NOENTITY)
-
- reply = reply_new(tag);
-
- latency = pa_sink_get_latency(s->sink_input->sink);
- latency += pa_bytes_to_usec(s->render_memblockq_length, &s->sink_input->sample_spec);
- pa_tagstruct_put_usec(reply, latency);
+ /* Get an atomic snapshot of all timing parameters */
+ pa_assert_se(pa_asyncmsgq_send(s->sink_input->sink->asyncmsgq, PA_MSGOBJECT(s->sink_input), SINK_INPUT_MESSAGE_UPDATE_LATENCY, s, 0, NULL) == 0);
+ reply = reply_new(tag);
+ pa_tagstruct_put_usec(reply,
+ s->current_sink_latency +
+ pa_bytes_to_usec(s->render_memblockq_length, &s->sink_input->sample_spec));
pa_tagstruct_put_usec(reply, 0);
- pa_tagstruct_put_boolean(reply, s->sink_input->thread_info.playing_for > 0);
+ pa_tagstruct_put_boolean(reply,
+ s->playing_for > 0 &&
+ pa_sink_get_state(s->sink_input->sink) == PA_SINK_RUNNING &&
+ pa_sink_input_get_state(s->sink_input) == PA_SINK_INPUT_RUNNING);
pa_tagstruct_put_timeval(reply, &tv);
pa_tagstruct_put_timeval(reply, pa_gettimeofday(&now));
pa_tagstruct_puts64(reply, s->write_index);
pa_tagstruct_puts64(reply, s->read_index);
if (c->version >= 13) {
- pa_tagstruct_putu64(reply, s->sink_input->thread_info.underrun_for);
- pa_tagstruct_putu64(reply, s->sink_input->thread_info.playing_for);
+ pa_tagstruct_putu64(reply, s->underrun_for);
+ pa_tagstruct_putu64(reply, s->playing_for);
}
pa_pstream_send_tagstruct(c->pstream, reply);
@@ -2505,10 +2585,17 @@ static void command_get_record_latency(pa_pdispatch *pd, uint32_t command, uint3
s = pa_idxset_get_by_index(c->record_streams, idx);
CHECK_VALIDITY(c->pstream, s, tag, PA_ERR_NOENTITY);
+ /* Get an atomic snapshot of all timing parameters */
+ pa_assert_se(pa_asyncmsgq_send(s->source_output->source->asyncmsgq, PA_MSGOBJECT(s->source_output), SOURCE_OUTPUT_MESSAGE_UPDATE_LATENCY, s, 0, NULL) == 0);
+
reply = reply_new(tag);
- pa_tagstruct_put_usec(reply, s->source_output->source->monitor_of ? pa_sink_get_latency(s->source_output->source->monitor_of) : 0);
- pa_tagstruct_put_usec(reply, pa_source_get_latency(s->source_output->source));
- pa_tagstruct_put_boolean(reply, pa_source_get_state(s->source_output->source) == PA_SOURCE_RUNNING);
+ pa_tagstruct_put_usec(reply, s->current_monitor_latency);
+ pa_tagstruct_put_usec(reply,
+ s->current_source_latency +
+ pa_bytes_to_usec(s->on_the_fly_snapshot, &s->source_output->sample_spec));
+ pa_tagstruct_put_boolean(reply,
+ pa_source_get_state(s->source_output->source) == PA_SOURCE_RUNNING &&
+ pa_source_output_get_state(s->source_output) == PA_SOURCE_OUTPUT_RUNNING);
pa_tagstruct_put_timeval(reply, &tv);
pa_tagstruct_put_timeval(reply, pa_gettimeofday(&now));
pa_tagstruct_puts64(reply, pa_memblockq_get_write_index(s->memblockq));
@@ -2732,7 +2819,7 @@ static void sink_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sin
PA_TAG_SAMPLE_SPEC, &fixed_ss,
PA_TAG_CHANNEL_MAP, &sink->channel_map,
PA_TAG_U32, sink->module ? sink->module->index : PA_INVALID_INDEX,
- PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE),
+ PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE, FALSE),
PA_TAG_BOOLEAN, pa_sink_get_mute(sink, FALSE),
PA_TAG_U32, sink->monitor_source ? sink->monitor_source->index : PA_INVALID_INDEX,
PA_TAG_STRING, sink->monitor_source ? sink->monitor_source->name : NULL,
@@ -2856,6 +2943,7 @@ static void module_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_m
static void sink_input_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sink_input *s) {
pa_sample_spec fixed_ss;
pa_usec_t sink_latency;
+ pa_cvolume v;
pa_assert(t);
pa_sink_input_assert_ref(s);
@@ -2869,7 +2957,7 @@ static void sink_input_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t,
pa_tagstruct_putu32(t, s->sink->index);
pa_tagstruct_put_sample_spec(t, &fixed_ss);
pa_tagstruct_put_channel_map(t, &s->channel_map);
- pa_tagstruct_put_cvolume(t, pa_sink_input_get_volume(s));
+ pa_tagstruct_put_cvolume(t, pa_sink_input_get_volume(s, &v, TRUE));
pa_tagstruct_put_usec(t, pa_sink_input_get_latency(s, &sink_latency));
pa_tagstruct_put_usec(t, sink_latency);
pa_tagstruct_puts(t, pa_resample_method_to_string(pa_sink_input_get_resample_method(s)));
@@ -3234,11 +3322,11 @@ static void command_set_volume(
CHECK_VALIDITY(c->pstream, si || sink || source, tag, PA_ERR_NOENTITY);
if (sink)
- pa_sink_set_volume(sink, &volume, TRUE, TRUE);
+ pa_sink_set_volume(sink, &volume, TRUE, TRUE, TRUE);
else if (source)
pa_source_set_volume(source, &volume);
else if (si)
- pa_sink_input_set_volume(si, &volume, TRUE);
+ pa_sink_input_set_volume(si, &volume, TRUE, TRUE);
pa_pstream_send_simple_ack(c->pstream, tag);
}
@@ -3435,12 +3523,14 @@ static void command_flush_record_stream(pa_pdispatch *pd, uint32_t command, uint
static void command_set_stream_buffer_attr(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_native_connection *c = PA_NATIVE_CONNECTION(userdata);
uint32_t idx;
- uint32_t maxlength, tlength, prebuf, minreq, fragsize;
+ pa_buffer_attr a;
pa_tagstruct *reply;
pa_native_connection_assert_ref(c);
pa_assert(t);
+ memset(&a, 0, sizeof(a));
+
if (pa_tagstruct_getu32(t, &idx) < 0) {
protocol_error(c);
return;
@@ -3458,10 +3548,10 @@ static void command_set_stream_buffer_attr(pa_pdispatch *pd, uint32_t command, u
if (pa_tagstruct_get(
t,
- PA_TAG_U32, &maxlength,
- PA_TAG_U32, &tlength,
- PA_TAG_U32, &prebuf,
- PA_TAG_U32, &minreq,
+ PA_TAG_U32, &a.maxlength,
+ PA_TAG_U32, &a.tlength,
+ PA_TAG_U32, &a.prebuf,
+ PA_TAG_U32, &a.minreq,
PA_TAG_INVALID) < 0 ||
(c->version >= 13 && pa_tagstruct_get_boolean(t, &adjust_latency) < 0) ||
(c->version >= 14 && pa_tagstruct_get_boolean(t, &early_requests) < 0) ||
@@ -3470,21 +3560,21 @@ static void command_set_stream_buffer_attr(pa_pdispatch *pd, uint32_t command, u
return;
}
- fix_playback_buffer_attr_pre(s, adjust_latency, early_requests, &maxlength, &tlength, &prebuf, &minreq);
- pa_memblockq_set_maxlength(s->memblockq, maxlength);
- pa_memblockq_set_tlength(s->memblockq, tlength);
- pa_memblockq_set_prebuf(s->memblockq, prebuf);
- pa_memblockq_set_minreq(s->memblockq, minreq);
- fix_playback_buffer_attr_post(s, &maxlength, &tlength, &prebuf, &minreq);
+ s->adjust_latency = adjust_latency;
+ s->early_requests = early_requests;
+ s->buffer_attr = a;
+
+ fix_playback_buffer_attr(s);
+ pa_assert_se(pa_asyncmsgq_send(s->sink_input->sink->asyncmsgq, PA_MSGOBJECT(s->sink_input), SINK_INPUT_MESSAGE_UPDATE_BUFFER_ATTR, NULL, 0, NULL) == 0);
reply = reply_new(tag);
- pa_tagstruct_putu32(reply, maxlength);
- pa_tagstruct_putu32(reply, tlength);
- pa_tagstruct_putu32(reply, prebuf);
- pa_tagstruct_putu32(reply, minreq);
+ pa_tagstruct_putu32(reply, s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(reply, s->buffer_attr.tlength);
+ pa_tagstruct_putu32(reply, s->buffer_attr.prebuf);
+ pa_tagstruct_putu32(reply, s->buffer_attr.minreq);
if (c->version >= 13)
- pa_tagstruct_put_usec(reply, s->sink_latency);
+ pa_tagstruct_put_usec(reply, s->configured_sink_latency);
} else {
record_stream *s;
@@ -3496,8 +3586,8 @@ static void command_set_stream_buffer_attr(pa_pdispatch *pd, uint32_t command, u
if (pa_tagstruct_get(
t,
- PA_TAG_U32, &maxlength,
- PA_TAG_U32, &fragsize,
+ PA_TAG_U32, &a.maxlength,
+ PA_TAG_U32, &a.fragsize,
PA_TAG_INVALID) < 0 ||
(c->version >= 13 && pa_tagstruct_get_boolean(t, &adjust_latency) < 0) ||
(c->version >= 14 && pa_tagstruct_get_boolean(t, &early_requests) < 0) ||
@@ -3506,16 +3596,21 @@ static void command_set_stream_buffer_attr(pa_pdispatch *pd, uint32_t command, u
return;
}
- fix_record_buffer_attr_pre(s, adjust_latency, early_requests, &maxlength, &fragsize);
- pa_memblockq_set_maxlength(s->memblockq, maxlength);
- fix_record_buffer_attr_post(s, &maxlength, &fragsize);
+ s->adjust_latency = adjust_latency;
+ s->early_requests = early_requests;
+ s->buffer_attr = a;
+
+ fix_record_buffer_attr_pre(s);
+ pa_memblockq_set_maxlength(s->memblockq, s->buffer_attr.maxlength);
+ pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
+ fix_record_buffer_attr_post(s);
reply = reply_new(tag);
- pa_tagstruct_putu32(reply, maxlength);
- pa_tagstruct_putu32(reply, fragsize);
+ pa_tagstruct_putu32(reply, s->buffer_attr.maxlength);
+ pa_tagstruct_putu32(reply, s->buffer_attr.fragsize);
if (c->version >= 13)
- pa_tagstruct_put_usec(reply, s->source_latency);
+ pa_tagstruct_put_usec(reply, s->configured_source_latency);
}
pa_pstream_send_tagstruct(c->pstream, reply);
@@ -4119,7 +4214,7 @@ static void command_set_card_profile(pa_pdispatch *pd, uint32_t command, uint32_
CHECK_VALIDITY(c->pstream, card, tag, PA_ERR_NOENTITY);
- if (pa_card_set_profile(card, profile) < 0) {
+ if (pa_card_set_profile(card, profile, TRUE) < 0) {
pa_pstream_send_error(c->pstream, tag, PA_ERR_INVALID);
return;
}
@@ -4151,7 +4246,7 @@ static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t o
pa_native_connection_assert_ref(c);
if (!(stream = OUTPUT_STREAM(pa_idxset_get_by_index(c->output_streams, channel)))) {
- pa_log("client sent block for invalid stream.");
+ pa_log_debug("Client sent block for invalid stream.");
/* Ignoring */
return;
}
diff --git a/src/pulsecore/refcnt.h b/src/pulsecore/refcnt.h
index 1e98832..782436b 100644
--- a/src/pulsecore/refcnt.h
+++ b/src/pulsecore/refcnt.h
@@ -23,23 +23,59 @@
***/
#include <pulsecore/atomic.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/log.h>
+
+/* #define DEBUG_REF */
#define PA_REFCNT_DECLARE \
pa_atomic_t _ref
-#define PA_REFCNT_INIT(p) \
- pa_atomic_store(&(p)->_ref, 1)
+#define PA_REFCNT_VALUE(p) \
+ pa_atomic_load(&(p)->_ref)
#define PA_REFCNT_INIT_ZERO(p) \
pa_atomic_store(&(p)->_ref, 0)
+#ifndef DEBUG_REF
+
+#define PA_REFCNT_INIT(p) \
+ pa_atomic_store(&(p)->_ref, 1)
+
#define PA_REFCNT_INC(p) \
pa_atomic_inc(&(p)->_ref)
#define PA_REFCNT_DEC(p) \
(pa_atomic_dec(&(p)->_ref)-1)
-#define PA_REFCNT_VALUE(p) \
- pa_atomic_load(&(p)->_ref)
+#else
+
+/* If you need to debug ref counting problems define DEBUG_REF and
+ * set $PULSE_LOG_BACKTRACE=5 or suchlike in the shell when running
+ * PA */
+
+#define PA_REFCNT_INIT(p) \
+ do { \
+ pa_atomic_store(&(p)->_ref, 1); \
+ pa_log("REF: Init %p", p); \
+ } while (FALSE)
+
+#define PA_REFCNT_INC(p) \
+ do { \
+ pa_atomic_inc(&(p)->_ref); \
+ pa_log("REF: Inc %p", p); \
+ } while (FALSE) \
+
+#define PA_REFCNT_DEC(p) \
+ ({ \
+ int _j = (pa_atomic_dec(&(p)->_ref)-1); \
+ if (_j <= 0) \
+ pa_log("REF: Done %p", p); \
+ else \
+ pa_log("REF: Dec %p", p); \
+ _j; \
+ })
+
+#endif
#endif
diff --git a/src/pulsecore/rtclock.c b/src/pulsecore/rtclock.c
index 56ab2ef..65c826a 100644
--- a/src/pulsecore/rtclock.c
+++ b/src/pulsecore/rtclock.c
@@ -95,6 +95,8 @@ pa_bool_t pa_rtclock_hrtimer(void) {
#endif
}
+#define TIMER_SLACK_NS (int) ((500 * PA_NSEC_PER_USEC))
+
void pa_rtclock_hrtimer_enable(void) {
#ifdef PR_SET_TIMERSLACK
int slack_ns;
@@ -104,15 +106,17 @@ void pa_rtclock_hrtimer_enable(void) {
return;
}
- pa_log_debug("Timer slack set to %i us.", slack_ns/1000);
+ pa_log_debug("Timer slack is set to %i us.", (int) (slack_ns/PA_NSEC_PER_USEC));
- slack_ns = 500000000;
+ if (slack_ns > TIMER_SLACK_NS) {
+ slack_ns = TIMER_SLACK_NS;
- pa_log_debug("Setting timer slack to %i us.", slack_ns/1000);
+ pa_log_debug("Setting timer slack to %i us.", (int) (slack_ns/PA_NSEC_PER_USEC));
- if (prctl(PR_SET_TIMERSLACK, slack_ns, 0, 0, 0) < 0) {
- pa_log_warn("PR_SET_TIMERSLACK failed: %s", pa_cstrerror(errno));
- return;
+ if (prctl(PR_SET_TIMERSLACK, slack_ns, 0, 0, 0) < 0) {
+ pa_log_warn("PR_SET_TIMERSLACK failed: %s", pa_cstrerror(errno));
+ return;
+ }
}
#endif
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 53e727b..0229918 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -117,7 +117,8 @@ static void reset_callbacks(pa_sink_input *i) {
i->attach = NULL;
i->detach = NULL;
i->suspend = NULL;
- i->moved = NULL;
+ i->suspend_within_thread = NULL;
+ i->moving = NULL;
i->kill = NULL;
i->get_latency = NULL;
i->state_change = NULL;
@@ -175,16 +176,8 @@ int pa_sink_input_new(
pa_return_val_if_fail(pa_channel_map_compatible(&data->channel_map, &data->sample_spec), -PA_ERR_INVALID);
if (!data->volume_is_set) {
-
- if (data->sink->flags & PA_SINK_FLAT_VOLUME) {
- data->volume = *pa_sink_get_volume(data->sink, FALSE);
- pa_cvolume_remap(&data->volume, &data->sink->channel_map, &data->channel_map);
- data->volume_is_absolute = TRUE;
- } else {
- pa_cvolume_reset(&data->volume, data->sample_spec.channels);
- data->volume_is_absolute = FALSE;
- }
-
+ pa_cvolume_reset(&data->volume, data->sample_spec.channels);
+ data->volume_is_absolute = FALSE;
data->save_volume = FALSE;
}
@@ -278,15 +271,15 @@ int pa_sink_input_new(
/* When the 'absolute' bool is not set then we'll treat the volume
* as relative to the sink volume even in flat volume mode */
- pa_cvolume t = *pa_sink_get_volume(data->sink, FALSE);
- pa_cvolume_remap(&t, &data->sink->channel_map, &data->channel_map);
-
- pa_sw_cvolume_multiply(&i->virtual_volume, &data->volume, &t);
+ pa_cvolume v = data->sink->reference_volume;
+ pa_cvolume_remap(&v, &data->sink->channel_map, &data->channel_map);
+ pa_sw_cvolume_multiply(&i->virtual_volume, &data->volume, &v);
} else
i->virtual_volume = data->volume;
i->volume_factor = data->volume_factor;
pa_cvolume_init(&i->soft_volume);
+ memset(i->relative_volume, 0, sizeof(i->relative_volume));
i->save_volume = data->save_volume;
i->save_sink = data->save_sink;
i->save_muted = data->save_muted;
@@ -333,8 +326,8 @@ int pa_sink_input_new(
0,
&i->sink->silence);
- pa_assert_se(pa_idxset_put(core->sink_inputs, pa_sink_input_ref(i), &i->index) == 0);
- pa_assert_se(pa_idxset_put(i->sink->inputs, i, NULL) == 0);
+ pa_assert_se(pa_idxset_put(core->sink_inputs, i, &i->index) == 0);
+ pa_assert_se(pa_idxset_put(i->sink->inputs, pa_sink_input_ref(i), NULL) == 0);
if (i->client)
pa_assert_se(pa_idxset_put(i->client->sink_inputs, i, NULL) >= 0);
@@ -449,7 +442,7 @@ void pa_sink_input_unlink(pa_sink_input *i) {
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
pa_cvolume new_volume;
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
}
if (i->sink->asyncmsgq)
@@ -527,9 +520,9 @@ void pa_sink_input_put(pa_sink_input *i) {
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
pa_cvolume new_volume;
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
} else
- pa_sw_cvolume_multiply(&i->soft_volume, &i->virtual_volume, &i->volume_factor);
+ pa_sink_input_set_relative_volume(i, &i->virtual_volume);
i->thread_info.soft_volume = i->soft_volume;
i->thread_info.muted = i->muted;
@@ -631,7 +624,7 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
* data, so let's just hand out silence */
pa_atomic_store(&i->thread_info.drained, 1);
- pa_memblockq_seek(i->thread_info.render_memblockq, (int64_t) slength, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(i->thread_info.render_memblockq, (int64_t) slength, PA_SEEK_RELATIVE, TRUE);
i->thread_info.playing_for = 0;
if (i->thread_info.underrun_for != (uint64_t) -1)
i->thread_info.underrun_for += ilength;
@@ -776,7 +769,7 @@ void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sam
if (amount > 0)
/* Ok, now update the write pointer */
- pa_memblockq_seek(i->thread_info.render_memblockq, - ((int64_t) amount), PA_SEEK_RELATIVE);
+ pa_memblockq_seek(i->thread_info.render_memblockq, - ((int64_t) amount), PA_SEEK_RELATIVE, TRUE);
if (i->thread_info.rewrite_flush)
pa_memblockq_silence(i->thread_info.render_memblockq);
@@ -819,26 +812,15 @@ void pa_sink_input_update_max_request(pa_sink_input *i, size_t nbytes /* in the
}
/* Called from thread context */
-static pa_usec_t fixup_latency(pa_sink *s, pa_usec_t usec) {
- pa_sink_assert_ref(s);
-
- if (usec == (pa_usec_t) -1)
- return usec;
-
- if (s->thread_info.max_latency > 0 && usec > s->thread_info.max_latency)
- usec = s->thread_info.max_latency;
-
- if (s->thread_info.min_latency > 0 && usec < s->thread_info.min_latency)
- usec = s->thread_info.min_latency;
-
- return usec;
-}
-
-/* Called from thread context */
pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa_usec_t usec) {
pa_sink_input_assert_ref(i);
- usec = fixup_latency(i->sink, usec);
+ if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY))
+ 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);
+
i->thread_info.requested_sink_latency = usec;
pa_sink_invalidate_requested_latency(i->sink);
@@ -849,41 +831,62 @@ pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa
pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec) {
pa_sink_input_assert_ref(i);
- if (PA_SINK_INPUT_IS_LINKED(i->state))
+ if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) {
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
- else
- /* If this sink input is not realized yet, we have to touch
- * the thread info data directly */
+ return usec;
+ }
- i->thread_info.requested_sink_latency = usec;
+ /* If this sink input is not realized yet or we are being moved,
+ * we have to touch the thread info data directly */
+
+ if (i->sink) {
+ if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY))
+ usec = i->sink->fixed_latency;
+
+ if (usec != (pa_usec_t) -1) {
+ pa_usec_t min_latency, max_latency;
+ pa_sink_get_latency_range(i->sink, &min_latency, &max_latency);
+ usec = PA_CLAMP(usec, min_latency, max_latency);
+ }
+ }
+
+ i->thread_info.requested_sink_latency = usec;
return usec;
}
/* Called from main context */
pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) {
- pa_usec_t usec = 0;
-
pa_sink_input_assert_ref(i);
- if (PA_SINK_INPUT_IS_LINKED(i->state))
+ if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) {
+ pa_usec_t usec = 0;
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_GET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
- else
- /* If this sink input is not realized yet, we have to touch
- * the thread info data directly */
- usec = i->thread_info.requested_sink_latency;
+ return usec;
+ }
- return usec;
+ /* If this sink input is not realized yet or we are being moved,
+ * we have to touch the thread info data directly */
+
+ return i->thread_info.requested_sink_latency;
}
/* Called from main context */
-void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save) {
+void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute) {
+ pa_cvolume v;
+
pa_sink_input_assert_ref(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(volume);
pa_assert(pa_cvolume_valid(volume));
pa_assert(pa_cvolume_compatible(volume, &i->sample_spec));
+ if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) {
+ v = i->sink->reference_volume;
+ pa_cvolume_remap(&v, &i->sink->channel_map, &i->channel_map);
+ volume = pa_sw_cvolume_multiply(&v, &v, volume);
+ }
+
if (pa_cvolume_equal(volume, &i->virtual_volume))
return;
@@ -897,17 +900,18 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
* volumes and update the flat volume of the sink */
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE, FALSE);
} else {
/* OK, we are in normal volume mode. The volume only affects
* ourselves */
- pa_sw_cvolume_multiply(&i->soft_volume, volume, &i->volume_factor);
+ pa_sink_input_set_relative_volume(i, volume);
/* Hooks have the ability to play games with i->soft_volume */
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);
+ /* Copy the new soft_volume to the thread_info struct */
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0);
}
@@ -916,11 +920,67 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
}
/* Called from main context */
-const pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i) {
+pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute) {
pa_sink_input_assert_ref(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
- return &i->virtual_volume;
+ if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) {
+ pa_cvolume v = i->sink->reference_volume;
+ pa_cvolume_remap(&v, &i->sink->channel_map, &i->channel_map);
+ pa_sw_cvolume_divide(volume, &i->virtual_volume, &v);
+ } else
+ *volume = i->virtual_volume;
+
+ return volume;
+}
+
+/* Called from main context */
+pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v) {
+ unsigned c;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert(v);
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+
+ /* This always returns the relative volume. Converts the float
+ * version into a pa_cvolume */
+
+ v->channels = i->sample_spec.channels;
+
+ for (c = 0; c < v->channels; c++)
+ v->values[c] = pa_sw_volume_from_linear(i->relative_volume[c]);
+
+ return v;
+}
+
+/* Called from main context */
+void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v) {
+ unsigned c;
+ pa_cvolume _v;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+ pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec));
+
+ if (!v)
+ v = pa_cvolume_reset(&_v, i->sample_spec.channels);
+
+ /* This basically calculates:
+ *
+ * i->relative_volume := v
+ * i->soft_volume := i->relative_volume * i->volume_factor */
+
+ i->soft_volume.channels = i->sample_spec.channels;
+
+ for (c = 0; c < i->sample_spec.channels; c++) {
+ i->relative_volume[c] = pa_sw_volume_to_linear(v->values[c]);
+
+ i->soft_volume.values[c] = pa_sw_volume_from_linear(
+ i->relative_volume[c] *
+ pa_sw_volume_to_linear(i->volume_factor.values[c]));
+ }
+
+ /* We don't copy the data to the thread_info data. That's left for someone else to do */
}
/* Called from main context */
@@ -1090,14 +1150,16 @@ int pa_sink_input_start_move(pa_sink_input *i) {
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
pa_cvolume new_volume;
- /* Make the absolute volume relative */
- i->virtual_volume = i->soft_volume;
- i->soft_volume = i->volume_factor;
+ /* Make the virtual volume relative */
+ pa_sink_input_get_relative_volume(i, &i->virtual_volume);
+
+ /* And reset the the relative volume */
+ pa_sink_input_set_relative_volume(i, NULL);
/* We might need to update the sink's volume if we are in flat
* volume mode. */
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
}
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_START_MOVE, i, 0, NULL) == 0);
@@ -1105,6 +1167,8 @@ int pa_sink_input_start_move(pa_sink_input *i) {
pa_sink_update_status(i->sink);
i->sink = NULL;
+ pa_sink_input_unref(i);
+
return 0;
}
@@ -1147,9 +1211,12 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
} else
new_resampler = NULL;
+ if (i->moving)
+ i->moving(i, dest);
+
i->sink = dest;
i->save_sink = save;
- pa_idxset_put(dest->inputs, i, NULL);
+ pa_idxset_put(dest->inputs, pa_sink_input_ref(i), NULL);
if (pa_sink_input_get_state(i) == PA_SINK_INPUT_CORKED)
i->sink->n_corked++;
@@ -1173,20 +1240,19 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
0,
&i->sink->silence);
}
-
pa_sink_update_status(dest);
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
pa_cvolume new_volume;
/* Make relative volume absolute again */
- pa_cvolume t = dest->virtual_volume;
+ pa_cvolume t = dest->reference_volume;
pa_cvolume_remap(&t, &dest->channel_map, &i->channel_map);
pa_sw_cvolume_multiply(&i->virtual_volume, &i->virtual_volume, &t);
/* We might need to update the sink's volume if we are in flat volume mode. */
pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
}
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_FINISH_MOVE, i, 0, NULL) == 0);
@@ -1194,9 +1260,6 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
pa_log_debug("Successfully moved sink input %i to %s.", i->index, dest->name);
/* Notify everyone */
- if (i->moved)
- i->moved(i);
-
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FINISH], i);
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
@@ -1218,11 +1281,19 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
if (!pa_sink_input_may_move_to(i, dest))
return -PA_ERR_NOTSUPPORTED;
- if ((r = pa_sink_input_start_move(i)) < 0)
+ pa_sink_input_ref(i);
+
+ if ((r = pa_sink_input_start_move(i)) < 0) {
+ pa_sink_input_unref(i);
return r;
+ }
- if ((r = pa_sink_input_finish_move(i, dest, save)) < 0)
+ if ((r = pa_sink_input_finish_move(i, dest, save)) < 0) {
+ pa_sink_input_unref(i);
return r;
+ }
+
+ pa_sink_input_unref(i);
return 0;
}
@@ -1291,12 +1362,9 @@ int pa_sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int64_t
case PA_SINK_INPUT_MESSAGE_GET_LATENCY: {
pa_usec_t *r = userdata;
- pa_usec_t sink_usec = 0;
r[0] += pa_bytes_to_usec(pa_memblockq_get_length(i->thread_info.render_memblockq), &i->sink->sample_spec);
-
- if (i->sink->parent.process_msg(PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_GET_LATENCY, &sink_usec, 0, NULL) >= 0)
- r[1] += sink_usec;
+ r[1] += pa_sink_get_latency_within_thread(i->sink);
return 0;
}
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index e380168..98144d4 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -91,7 +91,11 @@ struct pa_sink_input {
pa_sink_input *sync_prev, *sync_next;
- pa_cvolume virtual_volume, soft_volume, volume_factor;
+ /* Also see http://pulseaudio.org/wiki/InternalVolumes */
+ pa_cvolume virtual_volume; /* The volume clients are informed about */
+ pa_cvolume volume_factor; /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */
+ double relative_volume[PA_CHANNELS_MAX]; /* The calculated volume relative to the sink volume as linear factors. */
+ pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as relative_volume * volume_factor */
pa_bool_t muted:1;
/* if TRUE then the source we are connected to and/or the volume
@@ -121,7 +125,7 @@ struct pa_sink_input {
* changes. Called from IO context. */
void (*update_max_rewind) (pa_sink_input *i, size_t nbytes); /* may be NULL */
- /* Called whenever the maxiumum request size of the sink
+ /* Called whenever the maximum request size of the sink
* changes. Called from IO context. */
void (*update_max_request) (pa_sink_input *i, size_t nbytes); /* may be NULL */
@@ -144,13 +148,19 @@ struct pa_sink_input {
* disconnected from its sink. Called from IO thread context */
void (*detach) (pa_sink_input *i); /* may be NULL */
- /* If non-NULL called whenever the the sink this input is attached
+ /* If non-NULL called whenever the sink this input is attached
* to suspends or resumes. Called from main context */
void (*suspend) (pa_sink_input *i, pa_bool_t b); /* may be NULL */
- /* If non-NULL called whenever the the sink this input is attached
- * to changes. Called from main context */
- void (*moved) (pa_sink_input *i); /* may be NULL */
+ /* If non-NULL called whenever the sink this input is attached
+ * to suspends or resumes. Called from IO context */
+ void (*suspend_within_thread) (pa_sink_input *i, pa_bool_t b); /* may be NULL */
+
+ /* If non-NULL called whenever the sink input is moved to a new
+ * sink. Called from main context after the sink input has been
+ * detached from the old sink and before it has been attached to
+ * the new sink. */
+ void (*moving) (pa_sink_input *i, pa_sink *dest); /* may be NULL */
/* Supposed to unlink and destroy this stream. Called from main
* context. */
@@ -300,10 +310,14 @@ void pa_sink_input_kill(pa_sink_input*i);
pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency);
-void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save);
-const pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i);
+void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute);
+pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute);
+
+pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v);
+
void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save);
pa_bool_t pa_sink_input_get_mute(pa_sink_input *i);
+
void pa_sink_input_update_proplist(pa_sink_input *i, pa_update_mode_t mode, pa_proplist *p);
pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i);
@@ -342,4 +356,7 @@ pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i);
pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret);
+/* To be used by sink.c only */
+void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v);
+
#endif
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index ff8700c..30fa557 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -48,7 +48,9 @@
#define MAX_MIX_CHANNELS 32
#define MIX_BUFFER_LENGTH (PA_PAGE_SIZE)
-#define DEFAULT_MIN_LATENCY (4*PA_USEC_PER_MSEC)
+#define ABSOLUTE_MIN_LATENCY (500)
+#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
+#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC)
static PA_DEFINE_CHECK_TYPE(pa_sink, pa_msgobject);
@@ -200,13 +202,15 @@ pa_sink* pa_sink_new(
s->inputs = pa_idxset_new(NULL, NULL);
s->n_corked = 0;
- s->virtual_volume = data->volume;
+ s->reference_volume = s->virtual_volume = data->volume;
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->base_volume = PA_VOLUME_NORM;
s->n_volume_steps = PA_VOLUME_NORM+1;
s->muted = data->muted;
s->refresh_volume = s->refresh_muted = FALSE;
+ s->fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
+
reset_callbacks(s);
s->userdata = NULL;
@@ -230,8 +234,8 @@ pa_sink* pa_sink_new(
s->thread_info.max_request = 0;
s->thread_info.requested_latency_valid = FALSE;
s->thread_info.requested_latency = 0;
- s->thread_info.min_latency = DEFAULT_MIN_LATENCY;
- s->thread_info.max_latency = 0;
+ s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY;
+ s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY;
pa_assert_se(pa_idxset_put(core->sinks, s, &s->index) >= 0);
@@ -259,7 +263,7 @@ 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, PA_SOURCE_LATENCY);
+ s->monitor_source = pa_source_new(core, &source_data, 0);
pa_source_new_data_done(&source_data);
@@ -343,16 +347,16 @@ void pa_sink_put(pa_sink* s) {
/* The following fields must be initialized properly when calling _put() */
pa_assert(s->asyncmsgq);
pa_assert(s->rtpoll);
- pa_assert(!s->thread_info.min_latency || !s->thread_info.max_latency ||
- s->thread_info.min_latency <= s->thread_info.max_latency);
+ 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->thread_info.soft_volume = s->soft_volume;
- s->thread_info.soft_muted = s->muted;
+ 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;
@@ -360,6 +364,17 @@ void pa_sink_put(pa_sink* s) {
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;
+
+ s->monitor_source->fixed_latency = s->fixed_latency;
+
pa_assert_se(sink_set_state(s, PA_SINK_IDLE) == 0);
pa_source_put(s->monitor_source);
@@ -509,8 +524,12 @@ pa_queue *pa_sink_move_all_start(pa_sink *s) {
for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = n) {
n = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx));
+ pa_sink_input_ref(i);
+
if (pa_sink_input_start_move(i) >= 0)
- pa_queue_push(q, pa_sink_input_ref(i));
+ pa_queue_push(q, i);
+ else
+ pa_sink_input_unref(i);
}
return q;
@@ -952,6 +971,72 @@ pa_usec_t pa_sink_get_latency(pa_sink *s) {
return usec;
}
+/* Called from IO thread */
+pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) {
+ pa_usec_t usec = 0;
+ pa_msgobject *o;
+
+ pa_sink_assert_ref(s);
+ pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
+
+ /* The returned value is supposed to be in the time domain of the sound card! */
+
+ if (s->thread_info.state == PA_SINK_SUSPENDED)
+ return 0;
+
+ if (!(s->flags & PA_SINK_LATENCY))
+ return 0;
+
+ o = PA_MSGOBJECT(s);
+
+ /* We probably should make this a proper vtable callback instead of going through process_msg() */
+
+ if (o->process_msg(o, PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
+ return -1;
+
+ return usec;
+}
+
+static void compute_new_soft_volume(pa_sink_input *i, const pa_cvolume *new_volume) {
+ unsigned c;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert(new_volume->channels == i->sample_spec.channels);
+
+ /*
+ * This basically calculates:
+ *
+ * i->relative_volume := i->virtual_volume / new_volume
+ * i->soft_volume := i->relative_volume * i->volume_factor
+ */
+
+ /* The new sink volume passed in here must already be remapped to
+ * the sink input's channel map! */
+
+ i->soft_volume.channels = i->sample_spec.channels;
+
+ for (c = 0; c < i->sample_spec.channels; c++)
+
+ if (new_volume->values[c] <= PA_VOLUME_MUTED)
+ /* We leave i->relative_volume untouched */
+ i->soft_volume.values[c] = PA_VOLUME_MUTED;
+ else {
+ i->relative_volume[c] =
+ pa_sw_volume_to_linear(i->virtual_volume.values[c]) /
+ pa_sw_volume_to_linear(new_volume->values[c]);
+
+ i->soft_volume.values[c] = pa_sw_volume_from_linear(
+ i->relative_volume[c] *
+ pa_sw_volume_to_linear(i->volume_factor.values[c]));
+ }
+
+ /* Hooks have the ability to play games with i->soft_volume */
+ pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);
+
+ /* We don't copy the soft_volume to the thread_info data
+ * here. That must be done by the caller */
+}
+
/* Called from main thread */
void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume) {
pa_sink_input *i;
@@ -962,16 +1047,16 @@ void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume) {
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
- /* This is called whenever a sink input volume changes and we
- * might need to fix up the sink volume accordingly. Please note
- * that we don't actually update the sinks volume here, we only
- * return how it needs to be updated. The caller should then call
- * pa_sink_set_flat_volume().*/
+ /* This is called whenever a sink input volume changes or a sink
+ * input is added/removed and we might need to fix up the sink
+ * volume accordingly. Please note that we don't actually update
+ * the sinks volume here, we only return how it needs to be
+ * updated. The caller should then call pa_sink_set_volume().*/
if (pa_idxset_isempty(s->inputs)) {
/* In the special case that we have no sink input we leave the
* volume unmodified. */
- *new_volume = s->virtual_volume;
+ *new_volume = s->reference_volume;
return;
}
@@ -998,26 +1083,22 @@ void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume) {
remapped_new_volume = *new_volume;
pa_cvolume_remap(&remapped_new_volume, &s->channel_map, &i->channel_map);
- pa_sw_cvolume_divide(&i->soft_volume, &i->virtual_volume, &remapped_new_volume);
- pa_sw_cvolume_multiply(&i->soft_volume, &i->soft_volume, &i->volume_factor);
+ compute_new_soft_volume(i, &remapped_new_volume);
- /* Hooks have the ability to play games with i->soft_volume */
- pa_hook_fire(&s->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);
-
- /* We don't issue PA_SINK_INPUT_MESSAGE_SET_VOLUME because
- * we want the update to have atomically with the sink
- * volume update, hence we do it within the
- * pa_sink_set_flat_volume() call below*/
+ /* We don't copy soft_volume to the thread_info data here
+ * (i.e. issue PA_SINK_INPUT_MESSAGE_SET_VOLUME) because we
+ * want the update to be atomically with the sink volume
+ * update, hence we do it within the pa_sink_set_volume() call
+ * below */
}
}
/* Called from main thread */
-void pa_sink_propagate_flat_volume(pa_sink *s, const pa_cvolume *old_volume) {
+void pa_sink_propagate_flat_volume(pa_sink *s) {
pa_sink_input *i;
uint32_t idx;
pa_sink_assert_ref(s);
- pa_assert(old_volume);
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
@@ -1026,39 +1107,43 @@ void pa_sink_propagate_flat_volume(pa_sink *s, const pa_cvolume *old_volume) {
* sink input volumes accordingly */
for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
- pa_cvolume remapped_old_volume, remapped_new_volume, fixed_volume;
+ pa_cvolume sink_volume, new_virtual_volume;
unsigned c;
- remapped_new_volume = s->virtual_volume;
- pa_cvolume_remap(&remapped_new_volume, &s->channel_map, &i->channel_map);
+ /* This basically calculates i->virtual_volume := i->relative_volume * s->virtual_volume */
- remapped_old_volume = *old_volume;
- pa_cvolume_remap(&remapped_old_volume, &s->channel_map, &i->channel_map);
+ sink_volume = s->virtual_volume;
+ pa_cvolume_remap(&sink_volume, &s->channel_map, &i->channel_map);
for (c = 0; c < i->sample_spec.channels; c++)
+ new_virtual_volume.values[c] = pa_sw_volume_from_linear(
+ i->relative_volume[c] *
+ pa_sw_volume_to_linear(sink_volume.values[c]));
- if (remapped_old_volume.values[c] == PA_VOLUME_MUTED)
- fixed_volume.values[c] = PA_VOLUME_MUTED;
- else
- fixed_volume.values[c] = (pa_volume_t)
- ((uint64_t) i->virtual_volume.values[c] *
- (uint64_t) remapped_new_volume.values[c] /
- (uint64_t) remapped_old_volume.values[c]);
+ new_virtual_volume.channels = i->sample_spec.channels;
- fixed_volume.channels = i->virtual_volume.channels;
+ if (!pa_cvolume_equal(&new_virtual_volume, &i->virtual_volume)) {
+ i->virtual_volume = new_virtual_volume;
- if (!pa_cvolume_equal(&fixed_volume, &i->virtual_volume)) {
- i->virtual_volume = fixed_volume;
+ /* Hmm, the soft volume might no longer actually match
+ * what has been chosen as new virtual volume here,
+ * especially when the old volume was
+ * PA_VOLUME_MUTED. Hence let's recalculate the soft
+ * volumes here. */
+ compute_new_soft_volume(i, &sink_volume);
/* The virtual volume changed, let's tell people so */
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
}
}
+
+ /* If the soft_volume of any of the sink inputs got changed, let's
+ * make sure the thread copies are synced up. */
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SYNC_VOLUMES, NULL, 0, NULL) == 0);
}
/* Called from main thread */
-void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg) {
- pa_cvolume old_virtual_volume;
+void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference) {
pa_bool_t virtual_volume_changed;
pa_sink_assert_ref(s);
@@ -1067,19 +1152,21 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat
pa_assert(pa_cvolume_valid(volume));
pa_assert(pa_cvolume_compatible(volume, &s->sample_spec));
- old_virtual_volume = s->virtual_volume;
+ virtual_volume_changed = !pa_cvolume_equal(volume, &s->virtual_volume);
s->virtual_volume = *volume;
- virtual_volume_changed = !pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume);
+
+ if (become_reference)
+ s->reference_volume = s->virtual_volume;
/* Propagate this volume change back to the inputs */
if (virtual_volume_changed)
if (propagate && (s->flags & PA_SINK_FLAT_VOLUME))
- pa_sink_propagate_flat_volume(s, &old_virtual_volume);
+ pa_sink_propagate_flat_volume(s);
if (s->set_volume) {
/* If we have a function set_volume(), then we do not apply a
- * soft volume by default. However, set_volume() is apply one
- * to s->soft_volume */
+ * soft volume by default. However, set_volume() is free to
+ * apply one to s->soft_volume */
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->set_volume(s);
@@ -1111,7 +1198,7 @@ void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume) {
}
/* Called from main thread */
-const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh) {
+const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh, pa_bool_t reference) {
pa_sink_assert_ref(s);
if (s->refresh_volume || force_refresh) {
@@ -1124,14 +1211,33 @@ const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh) {
if (!pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume)) {
+ s->reference_volume = s->virtual_volume;
+
if (s->flags & PA_SINK_FLAT_VOLUME)
- pa_sink_propagate_flat_volume(s, &old_virtual_volume);
+ pa_sink_propagate_flat_volume(s);
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
}
- return &s->virtual_volume;
+ return reference ? &s->reference_volume : &s->virtual_volume;
+}
+
+/* Called from main thread */
+void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume) {
+ pa_sink_assert_ref(s);
+
+ /* The sink implementor may call this if the volume changed to make sure everyone is notified */
+
+ if (pa_cvolume_equal(&s->virtual_volume, new_volume))
+ return;
+
+ s->reference_volume = s->virtual_volume = *new_volume;
+
+ if (s->flags & PA_SINK_FLAT_VOLUME)
+ pa_sink_propagate_flat_volume(s);
+
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
/* Called from main thread */
@@ -1174,12 +1280,24 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
}
/* Called from main thread */
-pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p) {
+void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted) {
+ pa_sink_assert_ref(s);
+
+ /* The sink implementor may call this if the volume changed to make sure everyone is notified */
+ if (s->muted == new_muted)
+ return;
+
+ s->muted = new_muted;
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+}
+
+/* Called from main thread */
+pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p) {
pa_sink_assert_ref(s);
- pa_assert(p);
- pa_proplist_update(s->proplist, mode, p);
+ if (p)
+ pa_proplist_update(s->proplist, mode, p);
if (PA_SINK_IS_LINKED(s->state)) {
pa_hook_fire(&s->core->hooks[PA_CORE_HOOK_SINK_PROPLIST_CHANGED], s);
@@ -1508,9 +1626,13 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
pa_sink_request_rewind(s, (size_t) -1);
}
- if (s->flags & PA_SINK_FLAT_VOLUME)
- sync_input_volumes_within_thread(s);
+ if (!(s->flags & PA_SINK_FLAT_VOLUME))
+ return 0;
+ /* Fall through ... */
+
+ case PA_SINK_MESSAGE_SYNC_VOLUMES:
+ sync_input_volumes_within_thread(s);
return 0;
case PA_SINK_MESSAGE_GET_VOLUME:
@@ -1528,7 +1650,11 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
case PA_SINK_MESSAGE_GET_MUTE:
return 0;
- case PA_SINK_MESSAGE_SET_STATE:
+ case PA_SINK_MESSAGE_SET_STATE: {
+
+ pa_bool_t suspend_change =
+ (s->thread_info.state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(PA_PTR_TO_UINT(userdata))) ||
+ (PA_SINK_IS_OPENED(s->thread_info.state) && PA_PTR_TO_UINT(userdata) == PA_SINK_SUSPENDED);
s->thread_info.state = PA_PTR_TO_UINT(userdata);
@@ -1537,7 +1663,17 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
s->thread_info.rewind_requested = FALSE;
}
+ if (suspend_change) {
+ pa_sink_input *i;
+ void *state = NULL;
+
+ while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ if (i->suspend_within_thread)
+ i->suspend_within_thread(i, s->thread_info.state == PA_SINK_SUSPENDED);
+ }
+
return 0;
+ }
case PA_SINK_MESSAGE_DETACH:
@@ -1565,7 +1701,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
case PA_SINK_MESSAGE_SET_LATENCY_RANGE: {
pa_usec_t *r = userdata;
- pa_sink_update_latency_range(s, r[0], r[1]);
+ pa_sink_set_latency_range_within_thread(s, r[0], r[1]);
return 0;
}
@@ -1589,6 +1725,16 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
*((size_t*) userdata) = s->thread_info.max_request;
return 0;
+ case PA_SINK_MESSAGE_SET_MAX_REWIND:
+
+ pa_sink_set_max_rewind_within_thread(s, (size_t) offset);
+ return 0;
+
+ case PA_SINK_MESSAGE_SET_MAX_REQUEST:
+
+ pa_sink_set_max_request_within_thread(s, (size_t) offset);
+ return 0;
+
case PA_SINK_MESSAGE_GET_LATENCY:
case PA_SINK_MESSAGE_MAX:
;
@@ -1696,6 +1842,9 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) {
pa_sink_assert_ref(s);
+ if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
+ return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
+
if (s->thread_info.requested_latency_valid)
return s->thread_info.requested_latency;
@@ -1711,13 +1860,8 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) {
(result == (pa_usec_t) -1 || result > monitor_latency))
result = monitor_latency;
- if (result != (pa_usec_t) -1) {
- if (s->thread_info.max_latency > 0 && result > s->thread_info.max_latency)
- result = s->thread_info.max_latency;
-
- if (s->thread_info.min_latency > 0 && result < s->thread_info.min_latency)
- result = s->thread_info.min_latency;
- }
+ 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;
@@ -1740,7 +1884,7 @@ pa_usec_t pa_sink_get_requested_latency(pa_sink *s) {
}
/* Called from IO as well as the main thread -- the latter only before the IO thread started up */
-void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) {
+void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind) {
pa_sink_input *i;
void *state = NULL;
@@ -1757,11 +1901,21 @@ void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) {
}
if (s->monitor_source)
- pa_source_set_max_rewind(s->monitor_source, s->thread_info.max_rewind);
+ pa_source_set_max_rewind_within_thread(s->monitor_source, s->thread_info.max_rewind);
+}
+
+/* Called from main thread */
+void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) {
+ pa_sink_assert_ref(s);
+
+ if (PA_SINK_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0);
+ else
+ pa_sink_set_max_rewind_within_thread(s, max_rewind);
}
/* Called from IO as well as the main thread -- the latter only before the IO thread started up */
-void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
+void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) {
void *state = NULL;
pa_sink_assert_ref(s);
@@ -1779,6 +1933,16 @@ void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
}
}
+/* Called from main thread */
+void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
+ pa_sink_assert_ref(s);
+
+ if (PA_SINK_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REQUEST, NULL, max_request, NULL) == 0);
+ else
+ pa_sink_set_max_request_within_thread(s, max_request);
+}
+
/* Called from IO thread */
void pa_sink_invalidate_requested_latency(pa_sink *s) {
pa_sink_input *i;
@@ -1786,14 +1950,20 @@ void pa_sink_invalidate_requested_latency(pa_sink *s) {
pa_sink_assert_ref(s);
+ if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
+ return;
+
s->thread_info.requested_latency_valid = FALSE;
- if (s->update_requested_latency)
- s->update_requested_latency(s);
+ if (PA_SINK_IS_LINKED(s->thread_info.state)) {
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
- if (i->update_sink_requested_latency)
- i->update_sink_requested_latency(i);
+ if (s->update_requested_latency)
+ s->update_requested_latency(s);
+
+ while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ if (i->update_sink_requested_latency)
+ i->update_sink_requested_latency(i);
+ }
}
/* Called from main thread */
@@ -1801,19 +1971,23 @@ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_
pa_sink_assert_ref(s);
/* min_latency == 0: no limit
- * min_latency == (size_t) -1: default limit
* min_latency anything else: specified limit
*
* Similar for max_latency */
- if (min_latency == (pa_usec_t) -1)
- min_latency = DEFAULT_MIN_LATENCY;
+ if (min_latency < ABSOLUTE_MIN_LATENCY)
+ min_latency = ABSOLUTE_MIN_LATENCY;
+
+ if (max_latency <= 0 ||
+ max_latency > ABSOLUTE_MAX_LATENCY)
+ max_latency = ABSOLUTE_MAX_LATENCY;
- if (max_latency == (pa_usec_t) -1)
- max_latency = min_latency;
+ pa_assert(min_latency <= max_latency);
- pa_assert(!min_latency || !max_latency ||
- min_latency <= max_latency);
+ /* Hmm, let's see if someone forgot to set PA_SINK_DYNAMIC_LATENCY here... */
+ pa_assert((min_latency == ABSOLUTE_MIN_LATENCY &&
+ max_latency == ABSOLUTE_MAX_LATENCY) ||
+ (s->flags & PA_SINK_DYNAMIC_LATENCY));
if (PA_SINK_IS_LINKED(s->state)) {
pa_usec_t r[2];
@@ -1822,15 +1996,8 @@ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_
r[1] = max_latency;
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_LATENCY_RANGE, r, 0, NULL) == 0);
- } else {
- s->thread_info.min_latency = min_latency;
- s->thread_info.max_latency = max_latency;
-
- s->monitor_source->thread_info.min_latency = min_latency;
- s->monitor_source->thread_info.max_latency = max_latency;
-
- s->thread_info.requested_latency_valid = s->monitor_source->thread_info.requested_latency_valid = FALSE;
- }
+ } else
+ pa_sink_set_latency_range_within_thread(s, min_latency, max_latency);
}
/* Called from main thread */
@@ -1853,25 +2020,34 @@ void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *ma
}
/* Called from IO thread */
-void pa_sink_update_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) {
- pa_sink_input *i;
+void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) {
void *state = NULL;
pa_sink_assert_ref(s);
- pa_assert(!min_latency || !max_latency ||
- min_latency <= max_latency);
+ pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY);
+ pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY);
+ pa_assert(min_latency <= max_latency);
+
+ /* Hmm, let's see if someone forgot to set PA_SINK_DYNAMIC_LATENCY here... */
+ pa_assert((min_latency == ABSOLUTE_MIN_LATENCY &&
+ max_latency == ABSOLUTE_MAX_LATENCY) ||
+ (s->flags & PA_SINK_DYNAMIC_LATENCY));
s->thread_info.min_latency = min_latency;
s->thread_info.max_latency = max_latency;
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
- if (i->update_sink_latency_range)
- i->update_sink_latency_range(i);
+ if (PA_SINK_IS_LINKED(s->thread_info.state)) {
+ pa_sink_input *i;
+
+ while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ if (i->update_sink_latency_range)
+ i->update_sink_latency_range(i);
+ }
pa_sink_invalidate_requested_latency(s);
- pa_source_update_latency_range(s->monitor_source, min_latency, max_latency);
+ pa_source_set_latency_range_within_thread(s->monitor_source, min_latency, max_latency);
}
/* Called from main context */
@@ -1921,6 +2097,8 @@ pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
t = "phone";
else if (pa_streq(ff, "portable"))
t = "multimedia-player";
+ else if (pa_streq(ff, "tv"))
+ t = "video-display";
}
if (!t)
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 0d33679..352282b 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -74,7 +74,10 @@ struct pa_sink {
pa_volume_t base_volume; /* shall be constant */
unsigned n_volume_steps; /* shall be constant */
- pa_cvolume virtual_volume, soft_volume;
+ /* Also see http://pulseaudio.org/wiki/InternalVolumes */
+ pa_cvolume virtual_volume; /* The volume clients are informed about */
+ pa_cvolume reference_volume; /* The volume taken as refernce base for relative sink input volumes */
+ pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through */
pa_bool_t muted:1;
pa_bool_t refresh_volume:1;
@@ -85,6 +88,8 @@ struct pa_sink {
pa_memchunk silence;
+ pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */
+
/* Called when the main loop requests a state change. Called from
* main loop context. If returns -1 the state change will be
* inhibited */
@@ -159,6 +164,7 @@ typedef enum pa_sink_message {
PA_SINK_MESSAGE_REMOVE_INPUT,
PA_SINK_MESSAGE_GET_VOLUME,
PA_SINK_MESSAGE_SET_VOLUME,
+ PA_SINK_MESSAGE_SYNC_VOLUMES,
PA_SINK_MESSAGE_GET_MUTE,
PA_SINK_MESSAGE_SET_MUTE,
PA_SINK_MESSAGE_GET_LATENCY,
@@ -172,6 +178,8 @@ typedef enum pa_sink_message {
PA_SINK_MESSAGE_GET_LATENCY_RANGE,
PA_SINK_MESSAGE_GET_MAX_REWIND,
PA_SINK_MESSAGE_GET_MAX_REQUEST,
+ PA_SINK_MESSAGE_SET_MAX_REWIND,
+ PA_SINK_MESSAGE_SET_MAX_REQUEST,
PA_SINK_MESSAGE_MAX
} pa_sink_message_t;
@@ -218,12 +226,16 @@ void pa_sink_set_description(pa_sink *s, const char *description);
void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q);
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_detach(pa_sink *s);
void pa_sink_attach(pa_sink *s);
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume);
+void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume);
+void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted);
pa_bool_t pa_device_init_description(pa_proplist *p);
pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink);
@@ -243,10 +255,11 @@ int pa_sink_suspend(pa_sink *s, pa_bool_t suspend);
int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend);
void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume);
-void pa_sink_propagate_flat_volume(pa_sink *s, const pa_cvolume *old_volume);
+void pa_sink_propagate_flat_volume(pa_sink *s);
+
+void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference);
+const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh, pa_bool_t reference);
-void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg);
-const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh);
void pa_sink_set_mute(pa_sink *sink, pa_bool_t mute);
pa_bool_t pa_sink_get_mute(pa_sink *sink, pa_bool_t force_refresh);
@@ -278,10 +291,10 @@ void pa_sink_detach_within_thread(pa_sink *s);
pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s);
-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_max_rewind_within_thread(pa_sink *s, size_t max_rewind);
+void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request);
-void pa_sink_update_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency);
/*** To be called exclusively by sink input drivers, from IO context */
@@ -289,4 +302,6 @@ void pa_sink_request_rewind(pa_sink*s, size_t nbytes);
void pa_sink_invalidate_requested_latency(pa_sink *s);
+pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s);
+
#endif
diff --git a/src/pulsecore/socket-server.c b/src/pulsecore/socket-server.c
index 6a4405e..e660700 100644
--- a/src/pulsecore/socket-server.c
+++ b/src/pulsecore/socket-server.c
@@ -467,11 +467,13 @@ char *pa_socket_server_get_address(pa_socket_server *s, char *c, size_t l) {
pa_snprintf(c, l, "tcp6:%s:%u", fqdn, (unsigned) ntohs(sa.sin6_port));
} else if (memcmp(&in6addr_loopback, &sa.sin6_addr, sizeof(in6addr_loopback)) == 0) {
- char hn[256];
- if (!pa_get_host_name(hn, sizeof(hn)))
+ char *id;
+
+ if (!(id = pa_machine_id()))
return NULL;
- pa_snprintf(c, l, "{%s}tcp6:localhost:%u", hn, (unsigned) ntohs(sa.sin6_port));
+ pa_snprintf(c, l, "{%s}tcp6:localhost:%u", id, (unsigned) ntohs(sa.sin6_port));
+ pa_xfree(id);
} else {
char ip[INET6_ADDRSTRLEN];
@@ -503,11 +505,13 @@ char *pa_socket_server_get_address(pa_socket_server *s, char *c, size_t l) {
pa_snprintf(c, l, "tcp:%s:%u", fqdn, (unsigned) ntohs(sa.sin_port));
} else if (sa.sin_addr.s_addr == INADDR_LOOPBACK) {
- char hn[256];
- if (!pa_get_host_name(hn, sizeof(hn)))
+ char *id;
+
+ if (!(id = pa_machine_id()))
return NULL;
- pa_snprintf(c, l, "{%s}tcp:localhost:%u", hn, (unsigned) ntohs(sa.sin_port));
+ pa_snprintf(c, l, "{%s}tcp:localhost:%u", id, (unsigned) ntohs(sa.sin_port));
+ pa_xfree(id);
} else {
char ip[INET_ADDRSTRLEN];
@@ -523,15 +527,16 @@ char *pa_socket_server_get_address(pa_socket_server *s, char *c, size_t l) {
}
case SOCKET_SERVER_UNIX: {
- char hn[256];
+ char *id;
if (!s->filename)
return NULL;
- if (!pa_get_host_name(hn, sizeof(hn)))
+ if (!(id = pa_machine_id()))
return NULL;
- pa_snprintf(c, l, "{%s}unix:%s", hn, s->filename);
+ pa_snprintf(c, l, "{%s}unix:%s", id, s->filename);
+ pa_xfree(id);
return c;
}
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 373d563..4ba25ae 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -87,7 +87,8 @@ static void reset_callbacks(pa_source_output *o) {
o->attach = NULL;
o->detach = NULL;
o->suspend = NULL;
- o->moved = NULL;
+ o->suspend_within_thread = NULL;
+ o->moving = NULL;
o->kill = NULL;
o->get_latency = NULL;
o->state_change = NULL;
@@ -434,11 +435,30 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {
if (pa_memblockq_push(o->thread_info.delay_memblockq, chunk) < 0) {
pa_log_debug("Delay queue overflow!");
- pa_memblockq_seek(o->thread_info.delay_memblockq, (int64_t) chunk->length, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(o->thread_info.delay_memblockq, (int64_t) chunk->length, PA_SEEK_RELATIVE, TRUE);
}
limit = o->process_rewind ? 0 : o->source->thread_info.max_rewind;
+ if (limit > 0 && o->source->monitor_of) {
+ pa_usec_t latency;
+ size_t n;
+
+ /* Hmm, check the latency for knowing how much of the buffered
+ * data is actually still unplayed and might hence still
+ * change. This is suboptimal. Ideally we'd have a call like
+ * pa_sink_get_changeable_size() or so that tells us how much
+ * of the queued data is actually still changeable. Hence
+ * FIXME! */
+
+ latency = pa_sink_get_latency_within_thread(o->source->monitor_of);
+
+ n = pa_usec_to_bytes(latency, &o->source->sample_spec);
+
+ if (n < limit)
+ limit = n;
+ }
+
/* Implement the delay queue */
while ((length = pa_memblockq_get_length(o->thread_info.delay_memblockq)) > limit) {
pa_memchunk qchunk;
@@ -516,26 +536,15 @@ void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* i
}
/* Called from thread context */
-static pa_usec_t fixup_latency(pa_source *s, pa_usec_t usec) {
- pa_source_assert_ref(s);
-
- if (usec == (pa_usec_t) -1)
- return usec;
-
- if (s->thread_info.max_latency > 0 && usec > s->thread_info.max_latency)
- usec = s->thread_info.max_latency;
-
- if (s->thread_info.min_latency > 0 && usec < s->thread_info.min_latency)
- usec = s->thread_info.min_latency;
-
- return usec;
-}
-
-/* Called from thread context */
pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output *o, pa_usec_t usec) {
pa_source_output_assert_ref(o);
- usec = fixup_latency(o->source, usec);
+ if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ usec = o->source->fixed_latency;
+
+ if (usec != (pa_usec_t) -1)
+ usec = PA_CLAMP(usec, o->source->thread_info.min_latency, o->source->thread_info.max_latency);
+
o->thread_info.requested_source_latency = usec;
pa_source_invalidate_requested_latency(o->source);
@@ -546,31 +555,44 @@ pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output
pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t usec) {
pa_source_output_assert_ref(o);
- if (PA_SOURCE_OUTPUT_IS_LINKED(o->state))
+ if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) {
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
- else
- /* If this source output is not realized yet, we have to touch
- * the thread info data directly */
+ return usec;
+ }
- o->thread_info.requested_source_latency = usec;
+ /* If this source output is not realized yet or is being moved, we
+ * have to touch the thread info data directly */
+
+ if (o->source) {
+ if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ usec = o->source->fixed_latency;
+
+ if (usec != (pa_usec_t) -1) {
+ pa_usec_t min_latency, max_latency;
+ pa_source_get_latency_range(o->source, &min_latency, &max_latency);
+ usec = PA_CLAMP(usec, min_latency, max_latency);
+ }
+ }
+
+ o->thread_info.requested_source_latency = usec;
return usec;
}
/* Called from main context */
pa_usec_t pa_source_output_get_requested_latency(pa_source_output *o) {
- pa_usec_t usec = 0;
-
pa_source_output_assert_ref(o);
- if (PA_SOURCE_OUTPUT_IS_LINKED(o->state))
+ if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) {
+ pa_usec_t usec = 0;
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_GET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
- else
- /* If this source output is not realized yet, we have to touch
- * the thread info data directly */
- usec = o->thread_info.requested_source_latency;
+ return usec;
+ }
- return usec;
+ /* If this source output is not realized yet or is being moved, we
+ * have to touch the thread info data directly */
+
+ return o->thread_info.requested_source_latency;
}
/* Called from main context */
@@ -707,6 +729,8 @@ int pa_source_output_start_move(pa_source_output *o) {
pa_source_update_status(o->source);
o->source = NULL;
+ pa_source_output_unref(o);
+
return 0;
}
@@ -749,9 +773,12 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t
} else
new_resampler = NULL;
+ if (o->moving)
+ o->moving(o, dest);
+
o->source = dest;
o->save_source = save;
- pa_idxset_put(o->source->outputs, o, NULL);
+ pa_idxset_put(o->source->outputs, pa_source_output_ref(o), NULL);
if (pa_source_output_get_state(o) == PA_SOURCE_OUTPUT_CORKED)
o->source->n_corked++;
@@ -776,14 +803,12 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t
}
pa_source_update_status(dest);
+
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o->source), PA_SOURCE_MESSAGE_ADD_OUTPUT, o, 0, NULL) == 0);
pa_log_debug("Successfully moved source output %i to %s.", o->index, dest->name);
/* Notify everyone */
- if (o->moved)
- o->moved(o);
-
pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FINISH], o);
pa_subscription_post(o->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_CHANGE, o->index);
@@ -805,11 +830,19 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
if (!pa_source_output_may_move_to(o, dest))
return -PA_ERR_NOTSUPPORTED;
- if ((r = pa_source_output_start_move(o)) < 0)
+ pa_source_output_ref(o);
+
+ if ((r = pa_source_output_start_move(o)) < 0) {
+ pa_source_output_unref(o);
return r;
+ }
- if ((r = pa_source_output_finish_move(o, dest, save)) < 0)
+ if ((r = pa_source_output_finish_move(o, dest, save)) < 0) {
+ pa_source_output_unref(o);
return r;
+ }
+
+ pa_source_output_unref(o);
return 0;
}
@@ -836,12 +869,9 @@ int pa_source_output_process_msg(pa_msgobject *mo, int code, void *userdata, int
case PA_SOURCE_OUTPUT_MESSAGE_GET_LATENCY: {
pa_usec_t *r = userdata;
- pa_usec_t source_usec = 0;
r[0] += pa_bytes_to_usec(pa_memblockq_get_length(o->thread_info.delay_memblockq), &o->source->sample_spec);
-
- if (o->source->parent.process_msg(PA_MSGOBJECT(o->source), PA_SOURCE_MESSAGE_GET_LATENCY, &source_usec, 0, NULL) >= 0)
- r[1] += source_usec;
+ r[1] += pa_source_get_latency_within_thread(o->source);
return 0;
}
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 018ec88..9824e16 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -116,13 +116,19 @@ struct pa_source_output {
* disconnected from its source. Called from IO thread context */
void (*detach) (pa_source_output *o); /* may be NULL */
- /* If non-NULL called whenever the the source this output is attached
+ /* If non-NULL called whenever the source this output is attached
* to suspends or resumes. Called from main context */
void (*suspend) (pa_source_output *o, pa_bool_t b); /* may be NULL */
- /* If non-NULL called whenever the the source this output is attached
- * to changes. Called from main context */
- void (*moved) (pa_source_output *o); /* may be NULL */
+ /* If non-NULL called whenever the source this output is attached
+ * to suspends or resumes. Called from IO context */
+ void (*suspend_within_thread) (pa_source_output *o, pa_bool_t b); /* may be NULL */
+
+ /* If non-NULL called whenever the source output is moved to a new
+ * source. Called from main context after the stream was detached
+ * from the old source and before it is attached to the new
+ * source. */
+ void (*moving) (pa_source_output *o, pa_source *dest); /* may be NULL */
/* Supposed to unlink and destroy this stream. Called from main
* context. */
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index cc6dfc4..2190250 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -41,7 +41,9 @@
#include "source.h"
-#define DEFAULT_MIN_LATENCY (4*PA_USEC_PER_MSEC)
+#define ABSOLUTE_MIN_LATENCY (500)
+#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
+#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC)
static PA_DEFINE_CHECK_TYPE(pa_source, pa_msgobject);
@@ -198,6 +200,8 @@ pa_source* pa_source_new(
s->muted = data->muted;
s->refresh_volume = s->refresh_muted = FALSE;
+ s->fixed_latency = flags & PA_SOURCE_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
+
reset_callbacks(s);
s->userdata = NULL;
@@ -218,8 +222,8 @@ pa_source* pa_source_new(
s->thread_info.max_rewind = 0;
s->thread_info.requested_latency_valid = FALSE;
s->thread_info.requested_latency = 0;
- s->thread_info.min_latency = DEFAULT_MIN_LATENCY;
- s->thread_info.max_latency = 0;
+ s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY;
+ s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY;
pa_assert_se(pa_idxset_put(core->sources, s, &s->index) >= 0);
@@ -302,8 +306,7 @@ void pa_source_put(pa_source *s) {
/* The following fields must be initialized properly when calling _put() */
pa_assert(s->asyncmsgq);
pa_assert(s->rtpoll);
- pa_assert(!s->thread_info.min_latency || !s->thread_info.max_latency ||
- s->thread_info.min_latency <= s->thread_info.max_latency);
+ 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;
@@ -315,6 +318,11 @@ void pa_source_put(pa_source *s) {
if (s->flags & PA_SOURCE_DECIBEL_VOLUME)
s->n_volume_steps = PA_VOLUME_NORM+1;
+ 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_se(source_set_state(s, PA_SOURCE_IDLE) == 0);
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE | PA_SUBSCRIPTION_EVENT_NEW, s->index);
@@ -465,8 +473,12 @@ pa_queue *pa_source_move_all_start(pa_source *s) {
for (o = PA_SOURCE_OUTPUT(pa_idxset_first(s->outputs, &idx)); o; o = n) {
n = PA_SOURCE_OUTPUT(pa_idxset_next(s->outputs, &idx));
+ pa_source_output_ref(o);
+
if (pa_source_output_start_move(o) >= 0)
- pa_queue_push(q, pa_source_output_ref(o));
+ pa_queue_push(q, o);
+ else
+ pa_source_output_unref(o);
}
return q;
@@ -616,6 +628,32 @@ pa_usec_t pa_source_get_latency(pa_source *s) {
return usec;
}
+/* Called from IO thread */
+pa_usec_t pa_source_get_latency_within_thread(pa_source *s) {
+ pa_usec_t usec = 0;
+ pa_msgobject *o;
+
+ pa_source_assert_ref(s);
+ pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
+
+ /* The returned value is supposed to be in the time domain of the sound card! */
+
+ if (s->thread_info.state == PA_SOURCE_SUSPENDED)
+ return 0;
+
+ if (!(s->flags & PA_SOURCE_LATENCY))
+ return 0;
+
+ o = PA_MSGOBJECT(s);
+
+ /* We probably should make this a proper vtable callback instead of going through process_msg() */
+
+ if (o->process_msg(o, PA_SOURCE_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
+ return -1;
+
+ return usec;
+}
+
/* Called from main thread */
void pa_source_set_volume(pa_source *s, const pa_cvolume *volume) {
pa_cvolume old_virtual_volume;
@@ -675,6 +713,19 @@ const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) {
}
/* Called from main thread */
+void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume) {
+ pa_source_assert_ref(s);
+
+ /* The source implementor may call this if the volume changed to make sure everyone is notified */
+
+ if (pa_cvolume_equal(&s->virtual_volume, new_volume))
+ return;
+
+ s->virtual_volume = *new_volume;
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+}
+
+/* Called from main thread */
void pa_source_set_mute(pa_source *s, pa_bool_t mute) {
pa_bool_t old_muted;
@@ -695,7 +746,6 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute) {
/* Called from main thread */
pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
-
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
@@ -715,11 +765,24 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
}
/* Called from main thread */
+void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted) {
+ pa_source_assert_ref(s);
+
+ /* The source implementor may call this if the mute state changed to make sure everyone is notified */
+
+ if (s->muted == new_muted)
+ return;
+
+ s->muted = new_muted;
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+}
+
+/* Called from main thread */
pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p) {
pa_source_assert_ref(s);
- pa_assert(p);
- pa_proplist_update(s->proplist, mode, p);
+ if (p)
+ pa_proplist_update(s->proplist, mode, p);
if (PA_SOURCE_IS_LINKED(s->state)) {
pa_hook_fire(&s->core->hooks[PA_CORE_HOOK_SOURCE_PROPLIST_CHANGED], s);
@@ -881,9 +944,26 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
case PA_SOURCE_MESSAGE_GET_MUTE:
return 0;
- case PA_SOURCE_MESSAGE_SET_STATE:
+ case PA_SOURCE_MESSAGE_SET_STATE: {
+
+ pa_bool_t suspend_change =
+ (s->thread_info.state == PA_SOURCE_SUSPENDED && PA_SOURCE_IS_OPENED(PA_PTR_TO_UINT(userdata))) ||
+ (PA_SOURCE_IS_OPENED(s->thread_info.state) && PA_PTR_TO_UINT(userdata) == PA_SOURCE_SUSPENDED);
+
s->thread_info.state = PA_PTR_TO_UINT(userdata);
+
+ if (suspend_change) {
+ pa_source_output *o;
+ void *state = NULL;
+
+ while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ if (o->suspend_within_thread)
+ o->suspend_within_thread(o, s->thread_info.state == PA_SOURCE_SUSPENDED);
+ }
+
+
return 0;
+ }
case PA_SOURCE_MESSAGE_DETACH:
@@ -911,7 +991,7 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
case PA_SOURCE_MESSAGE_SET_LATENCY_RANGE: {
pa_usec_t *r = userdata;
- pa_source_update_latency_range(s, r[0], r[1]);
+ pa_source_set_latency_range_within_thread(s, r[0], r[1]);
return 0;
}
@@ -930,6 +1010,11 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
*((size_t*) userdata) = s->thread_info.max_rewind;
return 0;
+ case PA_SOURCE_MESSAGE_SET_MAX_REWIND:
+
+ pa_source_set_max_rewind_within_thread(s, (size_t) offset);
+ return 0;
+
case PA_SOURCE_MESSAGE_GET_LATENCY:
if (s->monitor_of) {
@@ -1018,6 +1103,9 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
pa_source_assert_ref(s);
+ if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
+
if (s->thread_info.requested_latency_valid)
return s->thread_info.requested_latency;
@@ -1027,13 +1115,8 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
(result == (pa_usec_t) -1 || result > o->thread_info.requested_source_latency))
result = o->thread_info.requested_source_latency;
- if (result != (pa_usec_t) -1) {
- if (s->thread_info.max_latency > 0 && result > s->thread_info.max_latency)
- result = s->thread_info.max_latency;
-
- if (s->thread_info.min_latency > 0 && result < s->thread_info.min_latency)
- result = s->thread_info.min_latency;
- }
+ 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;
@@ -1043,7 +1126,7 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
/* Called from main thread */
pa_usec_t pa_source_get_requested_latency(pa_source *s) {
- pa_usec_t usec;
+ pa_usec_t usec = 0;
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
@@ -1057,7 +1140,7 @@ pa_usec_t pa_source_get_requested_latency(pa_source *s) {
}
/* Called from IO thread */
-void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) {
+void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind) {
pa_source_output *o;
void *state = NULL;
@@ -1074,42 +1157,64 @@ void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) {
}
}
+/* Called from main thread */
+void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) {
+ pa_source_assert_ref(s);
+
+ if (PA_SOURCE_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0);
+ else
+ pa_source_set_max_rewind_within_thread(s, max_rewind);
+}
+
+/* Called from IO thread */
void pa_source_invalidate_requested_latency(pa_source *s) {
pa_source_output *o;
void *state = NULL;
pa_source_assert_ref(s);
+ if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ return;
+
s->thread_info.requested_latency_valid = FALSE;
- if (s->update_requested_latency)
- s->update_requested_latency(s);
+ if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
- if (o->update_source_requested_latency)
- o->update_source_requested_latency(o);
+ if (s->update_requested_latency)
+ s->update_requested_latency(s);
+
+ while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ if (o->update_source_requested_latency)
+ o->update_source_requested_latency(o);
+ }
if (s->monitor_of)
pa_sink_invalidate_requested_latency(s->monitor_of);
}
+/* Called from main thread */
void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) {
pa_source_assert_ref(s);
/* min_latency == 0: no limit
- * min_latency == (size_t) -1: default limit
* min_latency anything else: specified limit
*
* Similar for max_latency */
- if (min_latency == (pa_usec_t) -1)
- min_latency = DEFAULT_MIN_LATENCY;
+ if (min_latency < ABSOLUTE_MIN_LATENCY)
+ min_latency = ABSOLUTE_MIN_LATENCY;
- if (max_latency == (pa_usec_t) -1)
- max_latency = min_latency;
+ if (max_latency <= 0 ||
+ max_latency > ABSOLUTE_MAX_LATENCY)
+ max_latency = ABSOLUTE_MAX_LATENCY;
- pa_assert(!min_latency || !max_latency ||
- min_latency <= max_latency);
+ pa_assert(min_latency <= max_latency);
+
+ /* Hmm, let's see if someone forgot to set PA_SOURCE_DYNAMIC_LATENCY here... */
+ pa_assert((min_latency == ABSOLUTE_MIN_LATENCY &&
+ max_latency == ABSOLUTE_MAX_LATENCY) ||
+ (s->flags & PA_SOURCE_DYNAMIC_LATENCY));
if (PA_SOURCE_IS_LINKED(s->state)) {
pa_usec_t r[2];
@@ -1118,14 +1223,11 @@ void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t
r[1] = max_latency;
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_LATENCY_RANGE, r, 0, NULL) == 0);
- } else {
- s->thread_info.min_latency = min_latency;
- s->thread_info.max_latency = max_latency;
-
- s->thread_info.requested_latency_valid = FALSE;
- }
+ } else
+ pa_source_set_latency_range_within_thread(s, min_latency, max_latency);
}
+/* Called from main thread */
void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t *max_latency) {
pa_source_assert_ref(s);
pa_assert(min_latency);
@@ -1144,26 +1246,37 @@ void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t
}
}
-/* Called from IO thread */
-void pa_source_update_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) {
- pa_source_output *o;
+/* Called from IO thread, and from main thread before pa_source_put() is called */
+void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) {
void *state = NULL;
pa_source_assert_ref(s);
- pa_assert(!min_latency || !max_latency ||
- min_latency <= max_latency);
+ pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY);
+ pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY);
+ pa_assert(min_latency <= max_latency);
+
+ /* Hmm, let's see if someone forgot to set PA_SOURCE_DYNAMIC_LATENCY here... */
+ pa_assert((min_latency == ABSOLUTE_MIN_LATENCY &&
+ max_latency == ABSOLUTE_MAX_LATENCY) ||
+ (s->flags & PA_SOURCE_DYNAMIC_LATENCY) ||
+ s->monitor_of);
s->thread_info.min_latency = min_latency;
s->thread_info.max_latency = max_latency;
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
- if (o->update_source_latency_range)
- o->update_source_latency_range(o);
+ if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
+ pa_source_output *o;
+
+ while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ if (o->update_source_latency_range)
+ o->update_source_latency_range(o);
+ }
pa_source_invalidate_requested_latency(s);
}
+/* Called from main thread */
size_t pa_source_get_max_rewind(pa_source *s) {
size_t r;
pa_source_assert_ref(s);
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 26471de..b502c22 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -87,6 +87,8 @@ struct pa_source {
pa_memchunk silence;
+ pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */
+
/* Called when the main loop requests a state change. Called from
* main loop context. If returns -1 the state change will be
* inhibited */
@@ -159,6 +161,7 @@ typedef enum pa_source_message {
PA_SOURCE_MESSAGE_SET_LATENCY_RANGE,
PA_SOURCE_MESSAGE_GET_LATENCY_RANGE,
PA_SOURCE_MESSAGE_GET_MAX_REWIND,
+ PA_SOURCE_MESSAGE_SET_MAX_REWIND,
PA_SOURCE_MESSAGE_MAX
} pa_source_message_t;
@@ -205,12 +208,15 @@ void pa_source_set_description(pa_source *s, const char *description);
void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q);
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_detach(pa_source *s);
void pa_source_attach(pa_source *s);
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume);
+void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume);
+void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted);
int pa_source_sync_suspend(pa_source *s);
@@ -257,11 +263,12 @@ void pa_source_detach_within_thread(pa_source *s);
pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s);
-void pa_source_set_max_rewind(pa_source *s, size_t max_rewind);
-void pa_source_update_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind);
+void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency);
/*** To be called exclusively by source output drivers, from IO context */
void pa_source_invalidate_requested_latency(pa_source *s);
+pa_usec_t pa_source_get_latency_within_thread(pa_source *s);
#endif
diff --git a/src/pulsecore/time-smoother.c b/src/pulsecore/time-smoother.c
index 6562194..9d5a070 100644
--- a/src/pulsecore/time-smoother.c
+++ b/src/pulsecore/time-smoother.c
@@ -78,17 +78,26 @@ struct pa_smoother {
/* Cached parameters for our interpolation polynomial y=ax^3+b^2+cx */
double a, b, c;
- pa_bool_t abc_valid;
+ pa_bool_t abc_valid:1;
pa_bool_t monotonic:1;
pa_bool_t paused:1;
+ pa_bool_t smoothing:1; /* If FALSE we skip the polonyomial interpolation step */
pa_usec_t pause_time;
unsigned min_history;
};
-pa_smoother* pa_smoother_new(pa_usec_t adjust_time, pa_usec_t history_time, pa_bool_t monotonic, unsigned min_history) {
+pa_smoother* pa_smoother_new(
+ pa_usec_t adjust_time,
+ pa_usec_t history_time,
+ pa_bool_t monotonic,
+ pa_bool_t smoothing,
+ unsigned min_history,
+ pa_usec_t time_offset,
+ pa_bool_t paused) {
+
pa_smoother *s;
pa_assert(adjust_time > 0);
@@ -116,9 +125,13 @@ pa_smoother* pa_smoother_new(pa_usec_t adjust_time, pa_usec_t history_time, pa_b
s->abc_valid = FALSE;
s->paused = FALSE;
+ s->smoothing = smoothing;
s->min_history = min_history;
+ s->paused = paused;
+ s->time_offset = s->pause_time = time_offset;
+
return s;
}
@@ -279,6 +292,7 @@ static void estimate(pa_smoother *s, pa_usec_t x, pa_usec_t *y, double *deriv) {
pa_assert(y);
if (x >= s->px) {
+ /* Linear interpolation right from px */
int64_t t;
/* The requested point is right of the point where we wanted
@@ -294,7 +308,22 @@ static void estimate(pa_smoother *s, pa_usec_t x, pa_usec_t *y, double *deriv) {
if (deriv)
*deriv = s->dp;
+ } else if (x <= s->ex) {
+ /* Linear interpolation left from ex */
+ int64_t t;
+
+ t = (int64_t) s->ey - (int64_t) llrint(s->de * (double) (s->ex - x));
+
+ if (t < 0)
+ t = 0;
+
+ *y = (pa_usec_t) t;
+
+ if (deriv)
+ *deriv = s->de;
+
} else {
+ /* Spline interpolation between ex and px */
double tx, ty;
/* Ok, we're not yet on track, thus let's interpolate, and
@@ -348,7 +377,6 @@ void pa_smoother_put(pa_smoother *s, pa_usec_t x, pa_usec_t y) {
* we can adjust our position smoothly from this one */
estimate(s, x, &ney, &nde);
s->ex = x; s->ey = ney; s->de = nde;
-
s->ry = y;
}
@@ -359,12 +387,19 @@ void pa_smoother_put(pa_smoother *s, pa_usec_t x, pa_usec_t y) {
s->dp = avg_gradient(s, x);
/* And calculate when we want to be on track again */
- s->px = s->ex + s->adjust_time;
- s->py = s->ry + (pa_usec_t) llrint(s->dp * (double) s->adjust_time);
+ if (s->smoothing) {
+ s->px = s->ex + s->adjust_time;
+ s->py = s->ry + (pa_usec_t) llrint(s->dp * (double) s->adjust_time);
+ } else {
+ s->px = s->ex;
+ s->py = s->ry;
+ }
s->abc_valid = FALSE;
-/* pa_log_debug("put(%llu | %llu) = %llu", (unsigned long long) (x + s->time_offset), (unsigned long long) x, (unsigned long long) y); */
+#ifdef DEBUG_DATA
+ pa_log_debug("%p, put(%llu | %llu) = %llu", s, (unsigned long long) (x + s->time_offset), (unsigned long long) x, (unsigned long long) y);
+#endif
}
pa_usec_t pa_smoother_get(pa_smoother *s, pa_usec_t x) {
@@ -395,7 +430,9 @@ pa_usec_t pa_smoother_get(pa_smoother *s, pa_usec_t x) {
s->last_y = y;
}
-/* pa_log_debug("get(%llu | %llu) = %llu", (unsigned long long) (x + s->time_offset), (unsigned long long) x, (unsigned long long) y); */
+#ifdef DEBUG_DATA
+ pa_log_debug("%p, get(%llu | %llu) = %llu", s, (unsigned long long) (x + s->time_offset), (unsigned long long) x, (unsigned long long) y);
+#endif
return y;
}
@@ -405,7 +442,9 @@ void pa_smoother_set_time_offset(pa_smoother *s, pa_usec_t offset) {
s->time_offset = offset;
-/* pa_log_debug("offset(%llu)", (unsigned long long) offset); */
+#ifdef DEBUG_DATA
+ pa_log_debug("offset(%llu)", (unsigned long long) offset);
+#endif
}
void pa_smoother_pause(pa_smoother *s, pa_usec_t x) {
@@ -414,13 +453,15 @@ void pa_smoother_pause(pa_smoother *s, pa_usec_t x) {
if (s->paused)
return;
-/* pa_log_debug("pause(%llu)", (unsigned long long) x); */
+#ifdef DEBUG_DATA
+ pa_log_debug("pause(%llu)", (unsigned long long) x);
+#endif
s->paused = TRUE;
s->pause_time = x;
}
-void pa_smoother_resume(pa_smoother *s, pa_usec_t x) {
+void pa_smoother_resume(pa_smoother *s, pa_usec_t x, pa_bool_t fix_now) {
pa_assert(s);
if (!s->paused)
@@ -429,10 +470,22 @@ void pa_smoother_resume(pa_smoother *s, pa_usec_t x) {
if (x < s->pause_time)
x = s->pause_time;
-/* pa_log_debug("resume(%llu)", (unsigned long long) x); */
+#ifdef DEBUG_DATA
+ pa_log_debug("resume(%llu)", (unsigned long long) x);
+#endif
s->paused = FALSE;
s->time_offset += x - s->pause_time;
+
+ if (fix_now)
+ pa_smoother_fix_now(s);
+}
+
+void pa_smoother_fix_now(pa_smoother *s) {
+ pa_assert(s);
+
+ s->px = s->ex;
+ s->py = s->ry;
}
pa_usec_t pa_smoother_translate(pa_smoother *s, pa_usec_t x, pa_usec_t y_delay) {
@@ -454,7 +507,9 @@ pa_usec_t pa_smoother_translate(pa_smoother *s, pa_usec_t x, pa_usec_t y_delay)
if (s->dp > nde)
nde = s->dp;
-/* pa_log_debug("translate(%llu) = %llu (%0.2f)", (unsigned long long) y_delay, (unsigned long long) ((double) y_delay / nde), nde); */
+#ifdef DEBUG_DATA
+ pa_log_debug("translate(%llu) = %llu (%0.2f)", (unsigned long long) y_delay, (unsigned long long) ((double) y_delay / nde), nde);
+#endif
return (pa_usec_t) llrint((double) y_delay / nde);
}
diff --git a/src/pulsecore/time-smoother.h b/src/pulsecore/time-smoother.h
index 2051e64..5244a7e 100644
--- a/src/pulsecore/time-smoother.h
+++ b/src/pulsecore/time-smoother.h
@@ -27,7 +27,15 @@
typedef struct pa_smoother pa_smoother;
-pa_smoother* pa_smoother_new(pa_usec_t x_adjust_time, pa_usec_t x_history_time, pa_bool_t monotonic, unsigned min_history);
+pa_smoother* pa_smoother_new(
+ pa_usec_t x_adjust_time,
+ pa_usec_t x_history_time,
+ pa_bool_t monotonic,
+ pa_bool_t smoothing,
+ unsigned min_history,
+ pa_usec_t x_offset,
+ pa_bool_t paused);
+
void pa_smoother_free(pa_smoother* s);
/* Adds a new value to our dataset. x = local/system time, y = remote time */
@@ -42,8 +50,10 @@ pa_usec_t pa_smoother_translate(pa_smoother *s, pa_usec_t x, pa_usec_t y_delay);
void pa_smoother_set_time_offset(pa_smoother *s, pa_usec_t x_offset);
void pa_smoother_pause(pa_smoother *s, pa_usec_t x);
-void pa_smoother_resume(pa_smoother *s, pa_usec_t x);
+void pa_smoother_resume(pa_smoother *s, pa_usec_t x, pa_bool_t abrupt);
void pa_smoother_reset(pa_smoother *s);
+void pa_smoother_fix_now(pa_smoother *s);
+
#endif
diff --git a/src/tests/alsa-time-test.c b/src/tests/alsa-time-test.c
index e852c3f..233bbe6 100644
--- a/src/tests/alsa-time-test.c
+++ b/src/tests/alsa-time-test.c
@@ -23,7 +23,7 @@ int main(int argc, char *argv[]) {
int dir = 1;
struct timespec start, last_timestamp = { 0, 0 };
uint64_t start_us;
- snd_pcm_sframes_t last_avail, last_delay;
+ snd_pcm_sframes_t last_avail = 0, last_delay = 0;
struct pollfd *pollfds;
int n_pollfd;
int64_t sample_count = 0;
diff --git a/src/tests/gtk-test.c b/src/tests/gtk-test.c
index f82aca5..6470e48 100644
--- a/src/tests/gtk-test.c
+++ b/src/tests/gtk-test.c
@@ -29,12 +29,38 @@
#include <pulse/context.h>
#include <pulse/glib-mainloop.h>
+pa_context *ctxt;
+pa_glib_mainloop *m;
+
+static void context_state_callback(pa_context *c, void *userdata);
+
+static void connect(void) {
+ int r;
+
+ ctxt = pa_context_new(pa_glib_mainloop_get_api(m), NULL);
+ g_assert(ctxt);
+
+ r = pa_context_connect(ctxt, NULL, PA_CONTEXT_NOAUTOSPAWN|PA_CONTEXT_NOFAIL, NULL);
+ g_assert(r == 0);
+
+ pa_context_set_state_callback(ctxt, context_state_callback, NULL);
+}
+
+static void context_state_callback(pa_context *c, void *userdata) {
+ switch (pa_context_get_state(c)) {
+ case PA_CONTEXT_FAILED:
+ pa_context_unref(ctxt);
+ ctxt = NULL;
+ connect();
+ break;
+ default:
+ break;
+ }
+}
+
int main(int argc, char *argv[]) {
- pa_context *c;
- pa_glib_mainloop *m;
GtkWidget *window;
- int r;
gtk_init(&argc, &argv);
@@ -49,15 +75,10 @@ int main(int argc, char *argv[]) {
m = pa_glib_mainloop_new(NULL);
g_assert(m);
- c = pa_context_new(pa_glib_mainloop_get_api(m), NULL);
- g_assert(c);
-
- r = pa_context_connect(c, NULL, 0, NULL);
- g_assert(r == 0);
-
+ connect();
gtk_main();
- pa_context_unref(c);
+ pa_context_unref(ctxt);
pa_glib_mainloop_free(m);
return 0;
diff --git a/src/tests/interpol-test.c b/src/tests/interpol-test.c
index dd24e82..0c906d3 100644
--- a/src/tests/interpol-test.c
+++ b/src/tests/interpol-test.c
@@ -36,6 +36,9 @@
#include <pulsecore/thread.h>
+#define INTERPOLATE
+//#define CORK
+
static pa_context *context = NULL;
static pa_stream *stream = NULL;
static pa_mainloop_api *mainloop_api = NULL;
@@ -58,6 +61,15 @@ static void stream_read_cb(pa_stream *p, size_t nbytes, void *userdata) {
}
}
+static void stream_latency_cb(pa_stream *p, void *userdata) {
+#ifndef INTERPOLATE
+ pa_operation *o;
+
+ o = pa_stream_update_timing_info(p, NULL, NULL);
+ pa_operation_unref(o);
+#endif
+}
+
/* This is called whenever the context status changes */
static void context_state_callback(pa_context *c, void *userdata) {
assert(c);
@@ -69,6 +81,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
break;
case PA_CONTEXT_READY: {
+ pa_stream_flags_t flags = PA_STREAM_AUTO_TIMING_UPDATE;
static const pa_sample_spec ss = {
.format = PA_SAMPLE_S16LE,
@@ -76,19 +89,25 @@ static void context_state_callback(pa_context *c, void *userdata) {
.channels = 2
};
+#ifdef INTERPOLATE
+ flags |= PA_STREAM_INTERPOLATE_TIMING;
+#endif
+
fprintf(stderr, "Connection established.\n");
stream = pa_stream_new(c, "interpol-test", &ss, NULL);
assert(stream);
if (playback) {
- pa_assert_se(pa_stream_connect_playback(stream, NULL, NULL, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL) == 0);
+ pa_assert_se(pa_stream_connect_playback(stream, NULL, NULL, flags, NULL, NULL) == 0);
pa_stream_set_write_callback(stream, stream_write_cb, NULL);
} else {
- pa_assert_se(pa_stream_connect_record(stream, NULL, NULL, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE) == 0);
+ pa_assert_se(pa_stream_connect_record(stream, NULL, NULL, flags) == 0);
pa_stream_set_read_callback(stream, stream_read_cb, NULL);
}
+ pa_stream_set_latency_update_callback(stream, stream_latency_cb, NULL);
+
break;
}
@@ -107,7 +126,11 @@ int main(int argc, char *argv[]) {
int k, r;
struct timeval start, last_info = { 0, 0 };
pa_usec_t old_t = 0, old_rtc = 0;
+#ifdef CORK
pa_bool_t corked = FALSE;
+#endif
+
+ pa_log_set_level(PA_LOG_DEBUG);
playback = argc <= 1 || !pa_streq(argv[1], "-r");
@@ -130,7 +153,12 @@ int main(int argc, char *argv[]) {
r = pa_threaded_mainloop_start(m);
assert(r >= 0);
- for (k = 0; k < 20000; k++) {
+/* #ifdef CORK */
+ for (k = 0; k < 20000; k++)
+/* #else */
+/* for (k = 0; k < 2000; k++) */
+/* #endif */
+ {
pa_bool_t success = FALSE, changed = FALSE;
pa_usec_t t, rtc;
struct timeval now, tv;
@@ -159,14 +187,16 @@ int main(int argc, char *argv[]) {
pa_gettimeofday(&now);
if (success) {
+#ifdef CORK
pa_bool_t cork_now;
-
+#endif
rtc = pa_timeval_diff(&now, &start);
- printf("%i\t%llu\t%llu\t%llu\t%llu\t%u\t%u\n", k,
+ printf("%i\t%llu\t%llu\t%llu\t%llu\t%lli\t%u\t%u\n", k,
(unsigned long long) rtc,
(unsigned long long) t,
(unsigned long long) (rtc-old_rtc),
(unsigned long long) (t-old_t),
+ (signed long long) rtc - (signed long long) t,
changed,
playing);
@@ -174,6 +204,7 @@ int main(int argc, char *argv[]) {
old_t = t;
old_rtc = rtc;
+#ifdef CORK
cork_now = (rtc / (2*PA_USEC_PER_SEC)) % 2 == 1;
if (corked != cork_now) {
@@ -185,6 +216,7 @@ int main(int argc, char *argv[]) {
corked = cork_now;
}
+#endif
}
/* Spin loop, ugly but normal usleep() is just too badly grained */
diff --git a/src/tests/mainloop-test.c b/src/tests/mainloop-test.c
index d892623..4ca6351 100644
--- a/src/tests/mainloop-test.c
+++ b/src/tests/mainloop-test.c
@@ -46,7 +46,7 @@ static pa_defer_event *de;
static void iocb(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_event_flags_t f, void *userdata) {
unsigned char c;
- read(fd, &c, sizeof(c));
+ (void) read(fd, &c, sizeof(c));
fprintf(stderr, "IO EVENT: %c\n", c < 32 ? '.' : c);
a->defer_enable(de, 1);
}
diff --git a/src/tests/memblockq-test.c b/src/tests/memblockq-test.c
index 127fb19..ec3f542 100644
--- a/src/tests/memblockq-test.c
+++ b/src/tests/memblockq-test.c
@@ -105,45 +105,45 @@ int main(int argc, char *argv[]) {
ret = pa_memblockq_push(bq, &chunk4);
assert(ret == 0);
- pa_memblockq_seek(bq, -6, 0);
+ pa_memblockq_seek(bq, -6, 0, TRUE);
ret = pa_memblockq_push(bq, &chunk3);
assert(ret == 0);
- pa_memblockq_seek(bq, -2, 0);
+ pa_memblockq_seek(bq, -2, 0, TRUE);
ret = pa_memblockq_push(bq, &chunk1);
assert(ret == 0);
- pa_memblockq_seek(bq, -10, 0);
+ pa_memblockq_seek(bq, -10, 0, TRUE);
ret = pa_memblockq_push(bq, &chunk4);
assert(ret == 0);
- pa_memblockq_seek(bq, 10, 0);
+ pa_memblockq_seek(bq, 10, 0, TRUE);
ret = pa_memblockq_push(bq, &chunk1);
assert(ret == 0);
- pa_memblockq_seek(bq, -6, 0);
+ pa_memblockq_seek(bq, -6, 0, TRUE);
ret = pa_memblockq_push(bq, &chunk2);
assert(ret == 0);
/* Test splitting */
- pa_memblockq_seek(bq, -12, 0);
+ pa_memblockq_seek(bq, -12, 0, TRUE);
ret = pa_memblockq_push(bq, &chunk1);
assert(ret == 0);
- pa_memblockq_seek(bq, 20, 0);
+ pa_memblockq_seek(bq, 20, 0, TRUE);
/* Test merging */
ret = pa_memblockq_push(bq, &chunk3);
assert(ret == 0);
- pa_memblockq_seek(bq, -2, 0);
+ pa_memblockq_seek(bq, -2, 0, TRUE);
chunk3.index += 2;
chunk3.length -= 2;
ret = pa_memblockq_push(bq, &chunk3);
assert(ret == 0);
- pa_memblockq_seek(bq, 30, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(bq, 30, PA_SEEK_RELATIVE, TRUE);
dump(bq);
diff --git a/src/tests/smoother-test.c b/src/tests/smoother-test.c
index 798dfed..2cc9f58 100644
--- a/src/tests/smoother-test.c
+++ b/src/tests/smoother-test.c
@@ -45,10 +45,12 @@ int main(int argc, char*argv[]) {
srand(0);
+ pa_log_set_level(PA_LOG_DEBUG);
+
for (m = 0, u = 0; u < PA_ELEMENTSOF(msec); u+= 2) {
msec[u] = m+1 + (rand() % 100) - 50;
- msec[u+1] = m + (rand() % 2000) - 1000;
+ msec[u+1] = m + (rand() % 2000) - 1000 + 5000;
m += rand() % 100;
@@ -59,7 +61,7 @@ int main(int argc, char*argv[]) {
msec[u+1] = 0;
}
- s = pa_smoother_new(700*PA_USEC_PER_MSEC, 2000*PA_USEC_PER_MSEC, TRUE, 6);
+ s = pa_smoother_new(700*PA_USEC_PER_MSEC, 2000*PA_USEC_PER_MSEC, FALSE, TRUE, 6, 0, TRUE);
for (x = 0, u = 0; x < PA_USEC_PER_SEC * 10; x += PA_USEC_PER_MSEC) {
@@ -67,6 +69,8 @@ int main(int argc, char*argv[]) {
pa_smoother_put(s, (pa_usec_t) msec[u] * PA_USEC_PER_MSEC, (pa_usec_t) msec[u+1] * PA_USEC_PER_MSEC);
printf("%i\t\t%i\n", msec[u], msec[u+1]);
u += 2;
+
+ pa_smoother_resume(s, (pa_usec_t) msec[u] * PA_USEC_PER_MSEC, TRUE);
}
printf("%llu\t%llu\n", (unsigned long long) (x/PA_USEC_PER_MSEC), (unsigned long long) (pa_smoother_get(s, x)/PA_USEC_PER_MSEC));
diff --git a/src/tests/voltest.c b/src/tests/voltest.c
index 0c6d2ea..2dcfa53 100644
--- a/src/tests/voltest.c
+++ b/src/tests/voltest.c
@@ -9,6 +9,9 @@ int main(int argc, char *argv[]) {
float b;
pa_channel_map map;
+ printf("Attenuation of sample 1 against 32767: %g dB\n", 20.0*log10(1.0/32767.0));
+ printf("Smallest possible attenutation > 0 applied to 32767: %li\n", lrint(32767.0*pa_sw_volume_to_linear(1)));
+
for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 256) {
double dB = pa_sw_volume_to_dB(v);
diff --git a/src/utils/pacat.c b/src/utils/pacat.c
index e886c15..15e842f 100644
--- a/src/utils/pacat.c
+++ b/src/utils/pacat.c
@@ -238,6 +238,13 @@ static void stream_moved_callback(pa_stream *s, void *userdata) {
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);
}
+static void stream_buffer_attr_callback(pa_stream *s, void *userdata) {
+ assert(s);
+
+ if (verbose)
+ fprintf(stderr, _("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;
@@ -284,6 +291,7 @@ static void context_state_callback(pa_context *c, void *userdata) {
pa_stream_set_overflow_callback(stream, stream_overflow_callback, NULL);
pa_stream_set_started_callback(stream, stream_started_callback, NULL);
pa_stream_set_event_callback(stream, stream_event_callback, NULL);
+ pa_stream_set_buffer_attr_callback(stream, stream_buffer_attr_callback, NULL);
if (latency > 0) {
memset(&buffer_attr, 0, sizeof(buffer_attr));
@@ -788,7 +796,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"), pa_strerror(pa_context_errno(context)));
+ fprintf(stderr, _("pa_context_connect() failed: %s\n"), pa_strerror(pa_context_errno(context)));
goto quit;
}