diff options
author | Sjoerd Simons <sjoerd@debian.org> | 2009-04-15 22:50:00 +0100 |
---|---|---|
committer | Sjoerd Simons <sjoerd@debian.org> | 2009-04-15 22:50:00 +0100 |
commit | 2333d7cffc05252fa3185ca126ef1ff0b5d73aa6 (patch) | |
tree | e2014ac84fbfcd8bda713784aa64edc4f061af93 | |
parent | 897e73dc49c7f4019450a21fec07d054d769d1dc (diff) |
Imported Upstream version 0.9.15
160 files changed, 37284 insertions, 4786 deletions
@@ -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@ @@ -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. @@ -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 শব্দের সার্ভার" @@ -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" @@ -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 " @@ -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 " @@ -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 "" @@ -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 " @@ -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" @@ -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 સાઉન્ડ સર્વર" @@ -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 "ਸਰੋਤ" @@ -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" @@ -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; } |